From 3046d7d33c45cbcc2cfed8ba1913201bdd10fc79 Mon Sep 17 00:00:00 2001 From: snipe <snipe@snipe.net> Date: Fri, 9 Jun 2017 18:53:19 -0700 Subject: [PATCH] Fixes #3644 - broken datepicker --- build/mix.js | 112 ++++- build/vue.js | 475 +++++++++++++++--- public/css/dist/all.css | Bin 305312 -> 306178 bytes public/js/dist/all.js | Bin 1512979 -> 5789550 bytes resources/lang/en/general.php | 2 +- resources/views/hardware/checkout.blade.php | 16 +- resources/views/hardware/edit.blade.php | 5 - resources/views/layouts/default.blade.php | 7 +- resources/views/licenses/edit.blade.php | 18 +- .../forms/edit/purchase_date.blade.php | 7 +- webpack.mix.js | 4 +- 11 files changed, 554 insertions(+), 92 deletions(-) diff --git a/build/mix.js b/build/mix.js index 3790cd1d5..fadc97d94 100644 --- a/build/mix.js +++ b/build/mix.js @@ -1,2 +1,110 @@ -!function(n){function t(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=n,t.c=r,t.i=function(n){return n},t.d=function(n,r,e){t.o(n,r)||Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:e})},t.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(r,"a",r),r},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="",t(t.s=58)}({58:function(n,t,r){r(9),r(7),r(8),n.exports=r(6)},6:function(n,t){},7:function(n,t){},8:function(n,t){},9:function(n,t){}}); -//# sourceMappingURL=mix.js.map \ No newline at end of file +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 58); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 58: +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(9); +__webpack_require__(7); +__webpack_require__(8); +module.exports = __webpack_require__(6); + + +/***/ }), + +/***/ 6: +/***/ (function(module, exports) { + +eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvbGVzcy9vdmVycmlkZXMubGVzcz9lNDcxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9yZXNvdXJjZXMvYXNzZXRzL2xlc3Mvb3ZlcnJpZGVzLmxlc3Ncbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), + +/***/ 7: +/***/ (function(module, exports) { + +eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvbGVzcy9BZG1pbkxURS5sZXNzP2U4YTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvbGVzcy9BZG1pbkxURS5sZXNzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMSJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), + +/***/ 8: +/***/ (function(module, exports) { + +eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvbGVzcy9hcHAubGVzcz80OTY1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9yZXNvdXJjZXMvYXNzZXRzL2xlc3MvYXBwLmxlc3Ncbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), + +/***/ 9: +/***/ (function(module, exports) { + +eval("//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }) + +/******/ }); \ No newline at end of file diff --git a/build/vue.js b/build/vue.js index 115dae3af..454c71937 100644 --- a/build/vue.js +++ b/build/vue.js @@ -1,60 +1,415 @@ -!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=59)}([function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(t,e){t.exports=function(t,e,n,r){var i,o=t=t||{},a=typeof t.default;"object"!==a&&"function"!==a||(i=t,o=t.default);var s="function"==typeof o?o.options:o;if(e&&(s.render=e.render,s.staticRenderFns=e.staticRenderFns),n&&(s._scopeId=n),r){var l=Object.create(s.computed||null);Object.keys(r).forEach(function(t){var e=r[t];l[t]=function(){return e}}),s.computed=l}return{esModule:i,exports:o,options:s}}},function(t,e,n){function r(t){for(var e=0;e<t.length;e++){var n=t[e],r=c[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(o(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i<n.parts.length;i++)a.push(o(n.parts[i]));c[n.id]={id:n.id,refs:1,parts:a}}}}function i(){var t=document.createElement("style");return t.type="text/css",f.appendChild(t),t}function o(t){var e,n,r=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(r){if(h)return v;r.parentNode.removeChild(r)}if(g){var o=d++;r=p||(p=i()),e=a.bind(null,r,o,!1),n=a.bind(null,r,o,!0)}else r=i(),e=s.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}function a(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=m(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function s(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var u=n(54),c={},f=l&&(document.head||document.getElementsByTagName("head")[0]),p=null,d=0,h=!1,v=function(){},g="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,n){h=n;var i=u(t,e);return r(i),function(e){for(var n=[],o=0;o<i.length;o++){var a=i[o],s=c[a.id];s.refs--,n.push(s)}e?(i=u(t,e),r(i)):i=[];for(var o=0;o<n.length;o++){var s=n[o];if(0===s.refs){for(var l=0;l<s.parts.length;l++)s.parts[l]();delete c[s.id]}}}};var m=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e,n){var r,i;/*! - * jQuery JavaScript Library v3.2.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2017-03-20T18:59Z - */ -!function(e,n){"use strict";"object"==typeof t&&"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,function(n,o){"use strict";function a(t,e){e=e||at;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function s(t){var e=!!t&&"length"in t&&t.length,n=yt.type(t);return"function"!==n&&!yt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function l(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function u(t,e,n){return yt.isFunction(e)?yt.grep(t,function(t,r){return!!e.call(t,r,t)!==n}):e.nodeType?yt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?yt.grep(t,function(t){return ft.call(e,t)>-1!==n}):At.test(e)?yt.filter(e,t,n):(e=yt.filter(e,t),yt.grep(t,function(t){return ft.call(e,t)>-1!==n&&1===t.nodeType}))}function c(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function f(t){var e={};return yt.each(t.match(Nt)||[],function(t,n){e[n]=!0}),e}function p(t){return t}function d(t){throw t}function h(t,e,n,r){var i;try{t&&yt.isFunction(i=t.promise)?i.call(t).done(e).fail(n):t&&yt.isFunction(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}function v(){at.removeEventListener("DOMContentLoaded",v),n.removeEventListener("load",v),yt.ready()}function g(){this.expando=yt.expando+g.uid++}function m(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:qt.test(t)?JSON.parse(t):t)}function y(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+e.replace(Bt,"-$&").toLowerCase(),"string"==typeof(n=t.getAttribute(r))){try{n=m(n)}catch(t){}Ft.set(t,e,n)}else n=void 0;return n}function b(t,e,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return yt.css(t,e,"")},l=s(),u=n&&n[3]||(yt.cssNumber[e]?"":"px"),c=(yt.cssNumber[e]||"px"!==u&&+l)&&Ut.exec(yt.css(t,e));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do{o=o||".5",c/=o,yt.style(t,e,c+u)}while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(c=+c||+l||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=u,r.start=c,r.end=i)),i}function _(t){var e,n=t.ownerDocument,r=t.nodeName,i=Xt[r];return i||(e=n.body.appendChild(n.createElement(r)),i=yt.css(e,"display"),e.parentNode.removeChild(e),"none"===i&&(i="block"),Xt[r]=i,i)}function x(t,e){for(var n,r,i=[],o=0,a=t.length;o<a;o++)r=t[o],r.style&&(n=r.style.display,e?("none"===n&&(i[o]=Mt.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&Wt(r)&&(i[o]=_(r))):"none"!==n&&(i[o]="none",Mt.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(t[o].style.display=i[o]);return t}function w(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&l(t,e)?yt.merge([t],n):n}function k(t,e){for(var n=0,r=t.length;n<r;n++)Mt.set(t[n],"globalEval",!e||Mt.get(e[n],"globalEval"))}function C(t,e,n,r,i){for(var o,a,s,l,u,c,f=e.createDocumentFragment(),p=[],d=0,h=t.length;d<h;d++)if((o=t[d])||0===o)if("object"===yt.type(o))yt.merge(p,o.nodeType?[o]:o);else if(Kt.test(o)){for(a=a||f.appendChild(e.createElement("div")),s=(Gt.exec(o)||["",""])[1].toLowerCase(),l=Jt[s]||Jt._default,a.innerHTML=l[1]+yt.htmlPrefilter(o)+l[2],c=l[0];c--;)a=a.lastChild;yt.merge(p,a.childNodes),a=f.firstChild,a.textContent=""}else p.push(e.createTextNode(o));for(f.textContent="",d=0;o=p[d++];)if(r&&yt.inArray(o,r)>-1)i&&i.push(o);else if(u=yt.contains(o.ownerDocument,o),a=w(f.appendChild(o),"script"),u&&k(a),n)for(c=0;o=a[c++];)Zt.test(o.type||"")&&n.push(o);return f}function $(){return!0}function T(){return!1}function S(){try{return at.activeElement}catch(t){}}function A(t,e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=void 0);for(s in e)A(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=T;else if(!i)return t;return 1===o&&(a=i,i=function(t){return yt().off(t),a.apply(this,arguments)},i.guid=a.guid||(a.guid=yt.guid++)),t.each(function(){yt.event.add(this,e,i,r,n)})}function E(t,e){return l(t,"table")&&l(11!==e.nodeType?e:e.firstChild,"tr")?yt(">tbody",t)[0]||t:t}function O(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function j(t){var e=ae.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function D(t,e){var n,r,i,o,a,s,l,u;if(1===e.nodeType){if(Mt.hasData(t)&&(o=Mt.access(t),a=Mt.set(e,o),u=o.events)){delete a.handle,a.events={};for(i in u)for(n=0,r=u[i].length;n<r;n++)yt.event.add(e,i,u[i][n])}Ft.hasData(t)&&(s=Ft.access(t),l=yt.extend({},s),Ft.set(e,l))}}function N(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Yt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function I(t,e,n,r){e=ut.apply([],e);var i,o,s,l,u,c,f=0,p=t.length,d=p-1,h=e[0],v=yt.isFunction(h);if(v||p>1&&"string"==typeof h&&!mt.checkClone&&oe.test(h))return t.each(function(i){var o=t.eq(i);v&&(e[0]=h.call(this,i,o.html())),I(o,e,n,r)});if(p&&(i=C(e,t[0].ownerDocument,!1,t,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=yt.map(w(i,"script"),O),l=s.length;f<p;f++)u=i,f!==d&&(u=yt.clone(u,!0,!0),l&&yt.merge(s,w(u,"script"))),n.call(t[f],u,f);if(l)for(c=s[s.length-1].ownerDocument,yt.map(s,j),f=0;f<l;f++)u=s[f],Zt.test(u.type||"")&&!Mt.access(u,"globalEval")&&yt.contains(c,u)&&(u.src?yt._evalUrl&&yt._evalUrl(u.src):a(u.textContent.replace(se,""),c))}return t}function P(t,e,n){for(var r,i=e?yt.filter(e,t):t,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||yt.cleanData(w(r)),r.parentNode&&(n&&yt.contains(r.ownerDocument,r)&&k(w(r,"script")),r.parentNode.removeChild(r));return t}function L(t,e,n){var r,i,o,a,s=t.style;return n=n||ce(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||yt.contains(t.ownerDocument,t)||(a=yt.style(t,e)),!mt.pixelMarginRight()&&ue.test(a)&&le.test(e)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function R(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function M(t){if(t in ge)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=ve.length;n--;)if((t=ve[n]+e)in ge)return t}function F(t){var e=yt.cssProps[t];return e||(e=yt.cssProps[t]=M(t)||t),e}function q(t,e,n){var r=Ut.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function B(t,e,n,r,i){var o,a=0;for(o=n===(r?"border":"content")?4:"width"===e?1:0;o<4;o+=2)"margin"===n&&(a+=yt.css(t,n+zt[o],!0,i)),r?("content"===n&&(a-=yt.css(t,"padding"+zt[o],!0,i)),"margin"!==n&&(a-=yt.css(t,"border"+zt[o]+"Width",!0,i))):(a+=yt.css(t,"padding"+zt[o],!0,i),"padding"!==n&&(a+=yt.css(t,"border"+zt[o]+"Width",!0,i)));return a}function H(t,e,n){var r,i=ce(t),o=L(t,e,i),a="border-box"===yt.css(t,"boxSizing",!1,i);return ue.test(o)?o:(r=a&&(mt.boxSizingReliable()||o===t.style[e]),"auto"===o&&(o=t["offset"+e[0].toUpperCase()+e.slice(1)]),(o=parseFloat(o)||0)+B(t,e,n||(a?"border":"content"),r,i)+"px")}function U(t,e,n,r,i){return new U.prototype.init(t,e,n,r,i)}function z(){ye&&(!1===at.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(z):n.setTimeout(z,yt.fx.interval),yt.fx.tick())}function W(){return n.setTimeout(function(){me=void 0}),me=yt.now()}function V(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)n=zt[r],i["margin"+n]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function X(t,e,n){for(var r,i=(Z.tweeners[e]||[]).concat(Z.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,e,t))return r}function Y(t,e,n){var r,i,o,a,s,l,u,c,f="width"in e||"height"in e,p=this,d={},h=t.style,v=t.nodeType&&Wt(t),g=Mt.get(t,"fxshow");n.queue||(a=yt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,yt.queue(t,"fx").length||a.empty.fire()})}));for(r in e)if(i=e[r],be.test(i)){if(delete e[r],o=o||"toggle"===i,i===(v?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;v=!0}d[r]=g&&g[r]||yt.style(t,r)}if((l=!yt.isEmptyObject(e))||!yt.isEmptyObject(d)){f&&1===t.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],u=g&&g.display,null==u&&(u=Mt.get(t,"display")),c=yt.css(t,"display"),"none"===c&&(u?c=u:(x([t],!0),u=t.style.display||u,c=yt.css(t,"display"),x([t]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===yt.css(t,"float")&&(l||(p.done(function(){h.display=u}),null==u&&(c=h.display,u="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),l=!1;for(r in d)l||(g?"hidden"in g&&(v=g.hidden):g=Mt.access(t,"fxshow",{display:u}),o&&(g.hidden=!v),v&&x([t],!0),p.done(function(){v||x([t]),Mt.remove(t,"fxshow");for(r in d)yt.style(t,r,d[r])})),l=X(v?g[r]:0,r,p),r in g||(g[r]=l.start,v&&(l.end=l.start,l.start=0))}}function G(t,e){var n,r,i,o,a;for(n in t)if(r=yt.camelCase(n),i=e[r],o=t[n],Array.isArray(o)&&(i=o[1],o=t[n]=o[0]),n!==r&&(t[r]=o,delete t[n]),(a=yt.cssHooks[r])&&"expand"in a){o=a.expand(o),delete t[r];for(n in o)n in t||(t[n]=o[n],e[n]=i)}else e[r]=i}function Z(t,e,n){var r,i,o=0,a=Z.prefilters.length,s=yt.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var e=me||W(),n=Math.max(0,u.startTime+u.duration-e),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;a<l;a++)u.tweens[a].run(o);return s.notifyWith(t,[u,o,n]),o<1&&l?n:(l||s.notifyWith(t,[u,1,0]),s.resolveWith(t,[u]),!1)},u=s.promise({elem:t,props:yt.extend({},e),opts:yt.extend(!0,{specialEasing:{},easing:yt.easing._default},n),originalProperties:e,originalOptions:n,startTime:me||W(),duration:n.duration,tweens:[],createTween:function(e,n){var r=yt.Tween(t,u.opts,e,n,u.opts.specialEasing[e]||u.opts.easing);return u.tweens.push(r),r},stop:function(e){var n=0,r=e?u.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)u.tweens[n].run(1);return e?(s.notifyWith(t,[u,1,0]),s.resolveWith(t,[u,e])):s.rejectWith(t,[u,e]),this}}),c=u.props;for(G(c,u.opts.specialEasing);o<a;o++)if(r=Z.prefilters[o].call(u,t,c,u.opts))return yt.isFunction(r.stop)&&(yt._queueHooks(u.elem,u.opts.queue).stop=yt.proxy(r.stop,r)),r;return yt.map(c,X,u),yt.isFunction(u.opts.start)&&u.opts.start.call(t,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),yt.fx.timer(yt.extend(l,{elem:t,anim:u,queue:u.opts.queue})),u}function J(t){return(t.match(Nt)||[]).join(" ")}function K(t){return t.getAttribute&&t.getAttribute("class")||""}function Q(t,e,n,r){var i;if(Array.isArray(e))yt.each(e,function(e,i){n||Oe.test(t)?r(t,i):Q(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)});else if(n||"object"!==yt.type(e))r(t,e);else for(i in e)Q(t+"["+i+"]",e[i],n,r)}function tt(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(Nt)||[];if(yt.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function et(t,e,n,r){function i(s){var l;return o[s]=!0,yt.each(t[s]||[],function(t,s){var u=s(e,n,r);return"string"!=typeof u||a||o[u]?a?!(l=u):void 0:(e.dataTypes.unshift(u),i(u),!1)}),l}var o={},a=t===He;return i(e.dataTypes[0])||!o["*"]&&i("*")}function nt(t,e){var n,r,i=yt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&yt.extend(!0,t,r),t}function rt(t,e,n){for(var r,i,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||t.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function it(t,e,n,r){var i,o,a,s,l,u={},c=t.dataTypes.slice();if(c[1])for(a in t.converters)u[a.toLowerCase()]=t.converters[a];for(o=c.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}var ot=[],at=n.document,st=Object.getPrototypeOf,lt=ot.slice,ut=ot.concat,ct=ot.push,ft=ot.indexOf,pt={},dt=pt.toString,ht=pt.hasOwnProperty,vt=ht.toString,gt=vt.call(Object),mt={},yt=function(t,e){return new yt.fn.init(t,e)},bt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,_t=/^-ms-/,xt=/-([a-z])/g,wt=function(t,e){return e.toUpperCase()};yt.fn=yt.prototype={jquery:"3.2.1",constructor:yt,length:0,toArray:function(){return lt.call(this)},get:function(t){return null==t?lt.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=yt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return yt.each(this,t)},map:function(t){return this.pushStack(yt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(lt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ct,sort:ot.sort,splice:ot.splice},yt.extend=yt.fn.extend=function(){var t,e,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[s]||{},s++),"object"==typeof a||yt.isFunction(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(t=arguments[s]))for(e in t)n=a[e],r=t[e],a!==r&&(u&&r&&(yt.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&yt.isPlainObject(n)?n:{},a[e]=yt.extend(u,o,r)):void 0!==r&&(a[e]=r));return a},yt.extend({expando:"jQuery"+("3.2.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===yt.type(t)},isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=yt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==dt.call(t))&&(!(e=st(t))||"function"==typeof(n=ht.call(e,"constructor")&&e.constructor)&&vt.call(n)===gt)},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?pt[dt.call(t)]||"object":typeof t},globalEval:function(t){a(t)},camelCase:function(t){return t.replace(_t,"ms-").replace(xt,wt)},each:function(t,e){var n,r=0;if(s(t))for(n=t.length;r<n&&!1!==e.call(t[r],r,t[r]);r++);else for(r in t)if(!1===e.call(t[r],r,t[r]))break;return t},trim:function(t){return null==t?"":(t+"").replace(bt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(s(Object(t))?yt.merge(n,"string"==typeof t?[t]:t):ct.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:ft.call(e,t,n)},merge:function(t,e){for(var n=+e.length,r=0,i=t.length;r<n;r++)t[i++]=e[r];return t.length=i,t},grep:function(t,e,n){for(var r=[],i=0,o=t.length,a=!n;i<o;i++)!e(t[i],i)!==a&&r.push(t[i]);return r},map:function(t,e,n){var r,i,o=0,a=[];if(s(t))for(r=t.length;o<r;o++)null!=(i=e(t[o],o,n))&&a.push(i);else for(o in t)null!=(i=e(t[o],o,n))&&a.push(i);return ut.apply([],a)},guid:1,proxy:function(t,e){var n,r,i;if("string"==typeof e&&(n=t[e],e=t,t=n),yt.isFunction(t))return r=lt.call(arguments,2),i=function(){return t.apply(e||this,r.concat(lt.call(arguments)))},i.guid=t.guid=t.guid||yt.guid++,i},now:Date.now,support:mt}),"function"==typeof Symbol&&(yt.fn[Symbol.iterator]=ot[Symbol.iterator]),yt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){pt["[object "+e+"]"]=e.toLowerCase()});var kt=/*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ -function(t){function e(t,e,n,r){var i,o,a,s,l,c,p,d=e&&e.ownerDocument,h=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==h&&9!==h&&11!==h)return n;if(!r&&((e?e.ownerDocument||e:F)!==j&&O(e),e=e||j,N)){if(11!==h&&(l=vt.exec(t)))if(i=l[1]){if(9===h){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&R(e,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Z.apply(n,e.getElementsByTagName(t)),n;if((i=l[3])&&_.getElementsByClassName&&e.getElementsByClassName)return Z.apply(n,e.getElementsByClassName(i)),n}if(_.qsa&&!z[t+" "]&&(!I||!I.test(t))){if(1!==h)d=e,p=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(bt,_t):e.setAttribute("id",s=M),c=C(t),o=c.length;o--;)c[o]="#"+s+" "+f(c[o]);p=c.join(","),d=gt.test(t)&&u(e.parentNode)||e}if(p)try{return Z.apply(n,d.querySelectorAll(p)),n}catch(t){}finally{s===M&&e.removeAttribute("id")}}}return T(t.replace(ot,"$1"),e,n,r)}function n(){function t(n,r){return e.push(n+" ")>x.cacheLength&&delete t[e.shift()],t[n+" "]=r}var e=[];return t}function r(t){return t[M]=!0,t}function i(t){var e=j.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),r=n.length;r--;)x.attrHandle[n[r]]=e}function a(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&wt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function l(t){return r(function(e){return e=+e,r(function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(t){return t&&void 0!==t.getElementsByTagName&&t}function c(){}function f(t){for(var e=0,n=t.length,r="";e<n;e++)r+=t[e].value;return r}function p(t,e,n){var r=e.dir,i=e.next,o=i||r,a=n&&"parentNode"===o,s=B++;return e.first?function(e,n,i){for(;e=e[r];)if(1===e.nodeType||a)return t(e,n,i);return!1}:function(e,n,l){var u,c,f,p=[q,s];if(l){for(;e=e[r];)if((1===e.nodeType||a)&&t(e,n,l))return!0}else for(;e=e[r];)if(1===e.nodeType||a)if(f=e[M]||(e[M]={}),c=f[e.uniqueID]||(f[e.uniqueID]={}),i&&i===e.nodeName.toLowerCase())e=e[r]||e;else{if((u=c[o])&&u[0]===q&&u[1]===s)return p[2]=u[2];if(c[o]=p,p[2]=t(e,n,l))return!0}return!1}}function d(t){return t.length>1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function h(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function v(t,e,n,r,i){for(var o,a=[],s=0,l=t.length,u=null!=e;s<l;s++)(o=t[s])&&(n&&!n(o,r,i)||(a.push(o),u&&e.push(s)));return a}function g(t,e,n,i,o,a){return i&&!i[M]&&(i=g(i)),o&&!o[M]&&(o=g(o,a)),r(function(r,a,s,l){var u,c,f,p=[],d=[],g=a.length,m=r||h(e||"*",s.nodeType?[s]:s,[]),y=!t||!r&&e?m:v(m,p,t,s,l),b=n?o||(r?t:g||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(u=v(b,d),i(u,[],s,l),c=u.length;c--;)(f=u[c])&&(b[d[c]]=!(y[d[c]]=f));if(r){if(o||t){if(o){for(u=[],c=b.length;c--;)(f=b[c])&&u.push(y[c]=f);o(null,b=[],u,l)}for(c=b.length;c--;)(f=b[c])&&(u=o?K(r,f):p[c])>-1&&(r[u]=!(a[u]=f))}}else b=v(b===a?b.splice(g,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function m(t){for(var e,n,r,i=t.length,o=x.relative[t[0].type],a=o||x.relative[" "],s=o?1:0,l=p(function(t){return t===e},a,!0),u=p(function(t){return K(e,t)>-1},a,!0),c=[function(t,n,r){var i=!o&&(r||n!==S)||((e=n).nodeType?l(t,n,r):u(t,n,r));return e=null,i}];s<i;s++)if(n=x.relative[t[s].type])c=[p(d(c),n)];else{if(n=x.filter[t[s].type].apply(null,t[s].matches),n[M]){for(r=++s;r<i&&!x.relative[t[r].type];r++);return g(s>1&&d(c),s>1&&f(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(ot,"$1"),n,s<r&&m(t.slice(s,r)),r<i&&m(t=t.slice(r)),r<i&&f(t))}c.push(n)}return d(c)}function y(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,u){var c,f,p,d=0,h="0",g=r&&[],m=[],y=S,b=r||o&&x.find.TAG("*",u),_=q+=null==y?1:Math.random()||.1,w=b.length;for(u&&(S=a===j||a||u);h!==w&&null!=(c=b[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===j||(O(c),s=!N);p=t[f++];)if(p(c,a||j,s)){l.push(c);break}u&&(q=_)}i&&((c=!p&&c)&&d--,r&&g.push(c))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(g,m,a,s);if(r){if(d>0)for(;h--;)g[h]||m[h]||(m[h]=Y.call(l));m=v(m)}Z.apply(l,m),u&&!r&&m.length>0&&d+n.length>1&&e.uniqueSort(l)}return u&&(q=_,S=y),g};return i?r(a):a}var b,_,x,w,k,C,$,T,S,A,E,O,j,D,N,I,P,L,R,M="sizzle"+1*new Date,F=t.document,q=0,B=0,H=n(),U=n(),z=n(),W=function(t,e){return t===e&&(E=!0),0},V={}.hasOwnProperty,X=[],Y=X.pop,G=X.push,Z=X.push,J=X.slice,K=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},Q="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",tt="[\\x20\\t\\r\\n\\f]",et="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",nt="\\["+tt+"*("+et+")(?:"+tt+"*([*^$|!~]?=)"+tt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+et+"))|)"+tt+"*\\]",rt=":("+et+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+nt+")*)|.*)\\)|)",it=new RegExp(tt+"+","g"),ot=new RegExp("^"+tt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+tt+"+$","g"),at=new RegExp("^"+tt+"*,"+tt+"*"),st=new RegExp("^"+tt+"*([>+~]|"+tt+")"+tt+"*"),lt=new RegExp("="+tt+"*([^\\]'\"]*?)"+tt+"*\\]","g"),ut=new RegExp(rt),ct=new RegExp("^"+et+"$"),ft={ID:new RegExp("^#("+et+")"),CLASS:new RegExp("^\\.("+et+")"),TAG:new RegExp("^("+et+"|[*])"),ATTR:new RegExp("^"+nt),PSEUDO:new RegExp("^"+rt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),bool:new RegExp("^(?:"+Q+")$","i"),needsContext:new RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,dt=/^h\d$/i,ht=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,gt=/[+~]/,mt=new RegExp("\\\\([\\da-f]{1,6}"+tt+"?|("+tt+")|.)","ig"),yt=function(t,e,n){var r="0x"+e-65536;return r!==r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},bt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,_t=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},xt=function(){O()},wt=p(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{Z.apply(X=J.call(F.childNodes),F.childNodes),X[F.childNodes.length].nodeType}catch(t){Z={apply:X.length?function(t,e){G.apply(t,J.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}_=e.support={},k=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},O=e.setDocument=function(t){var e,n,r=t?t.ownerDocument||t:F;return r!==j&&9===r.nodeType&&r.documentElement?(j=r,D=j.documentElement,N=!k(j),F!==j&&(n=j.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",xt,!1):n.attachEvent&&n.attachEvent("onunload",xt)),_.attributes=i(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=i(function(t){return t.appendChild(j.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=ht.test(j.getElementsByClassName),_.getById=i(function(t){return D.appendChild(t).id=M,!j.getElementsByName||!j.getElementsByName(M).length}),_.getById?(x.filter.ID=function(t){var e=t.replace(mt,yt);return function(t){return t.getAttribute("id")===e}},x.find.ID=function(t,e){if(void 0!==e.getElementById&&N){var n=e.getElementById(t);return n?[n]:[]}}):(x.filter.ID=function(t){var e=t.replace(mt,yt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},x.find.ID=function(t,e){if(void 0!==e.getElementById&&N){var n,r,i,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),x.find.TAG=_.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=_.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&N)return e.getElementsByClassName(t)},P=[],I=[],(_.qsa=ht.test(j.querySelectorAll))&&(i(function(t){D.appendChild(t).innerHTML="<a id='"+M+"'></a><select id='"+M+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+tt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+tt+"*(?:value|"+Q+")"),t.querySelectorAll("[id~="+M+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+M+"+*").length||I.push(".#.+[+~]")}),i(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=j.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+tt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),D.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(_.matchesSelector=ht.test(L=D.matches||D.webkitMatchesSelector||D.mozMatchesSelector||D.oMatchesSelector||D.msMatchesSelector))&&i(function(t){_.disconnectedMatch=L.call(t,"*"),L.call(t,"[s!='']:x"),P.push("!=",rt)}),I=I.length&&new RegExp(I.join("|")),P=P.length&&new RegExp(P.join("|")),e=ht.test(D.compareDocumentPosition),R=e||ht.test(D.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},W=e?function(t,e){if(t===e)return E=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===j||t.ownerDocument===F&&R(F,t)?-1:e===j||e.ownerDocument===F&&R(F,e)?1:A?K(A,t)-K(A,e):0:4&n?-1:1)}:function(t,e){if(t===e)return E=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],l=[e];if(!i||!o)return t===j?-1:e===j?1:i?-1:o?1:A?K(A,t)-K(A,e):0;if(i===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===F?-1:l[r]===F?1:0},j):j},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==j&&O(t),n=n.replace(lt,"='$1']"),_.matchesSelector&&N&&!z[n+" "]&&(!P||!P.test(n))&&(!I||!I.test(n)))try{var r=L.call(t,n);if(r||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return e(n,j,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==j&&O(t),R(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==j&&O(t);var n=x.attrHandle[e.toLowerCase()],r=n&&V.call(x.attrHandle,e.toLowerCase())?n(t,e,!N):void 0;return void 0!==r?r:_.attributes||!N?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},e.escape=function(t){return(t+"").replace(bt,_t)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],r=0,i=0;if(E=!_.detectDuplicates,A=!_.sortStable&&t.slice(0),t.sort(W),E){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return A=null,t},w=e.getText=function(t){var e,n="",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=w(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=w(e);return n},x=e.selectors={cacheLength:50,createPseudo:r,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(mt,yt),t[3]=(t[3]||t[4]||t[5]||"").replace(mt,yt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ut.test(n)&&(e=C(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(mt,yt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=H[t+" "];return e||(e=new RegExp("(^|"+tt+")"+t+"("+tt+"|$)"))&&H(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(it," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,p,d,h,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;v;){for(p=e;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(p=g,f=p[M]||(p[M]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),u=c[t]||[],d=u[0]===q&&u[1],b=d&&u[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(b=d=0)||h.pop();)if(1===p.nodeType&&++b&&p===e){c[t]=[q,d,b];break}}else if(y&&(p=e,f=p[M]||(p[M]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),u=c[t]||[],d=u[0]===q&&u[1],b=d),!1===b)for(;(p=++d&&p&&p[v]||(b=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++b||(y&&(f=p[M]||(p[M]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),c[t]=[q,b]),p!==e)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(t,n){var i,o=x.pseudos[t]||x.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[M]?o(n):o.length>1?(i=[t,t,"",n],x.setFilters.hasOwnProperty(t.toLowerCase())?r(function(t,e){for(var r,i=o(t,n),a=i.length;a--;)r=K(t,i[a]),t[r]=!(e[r]=i[a])}):function(t){return o(t,0,i)}):o}},pseudos:{not:r(function(t){var e=[],n=[],i=$(t.replace(ot,"$1"));return i[M]?r(function(t,e,n,r){for(var o,a=i(t,null,r,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,r,o){return e[0]=t,i(e,null,o,n),e[0]=null,!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(t){return t=t.replace(mt,yt),function(e){return(e.textContent||e.innerText||w(e)).indexOf(t)>-1}}),lang:r(function(t){return ct.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(mt,yt).toLowerCase(),function(e){var n;do{if(n=N?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===D},focus:function(t){return t===j.activeElement&&(!j.hasFocus||j.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!x.pseudos.empty(t)},header:function(t){return dt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,n){return[n<0?n+e:n]}),even:l(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:l(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:l(function(t,e,n){for(var r=n<0?n+e:n;--r>=0;)t.push(r);return t}),gt:l(function(t,e,n){for(var r=n<0?n+e:n;++r<e;)t.push(r);return t})}},x.pseudos.nth=x.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[b]=function(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}(b);for(b in{submit:!0,reset:!0})x.pseudos[b]=function(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}(b);return c.prototype=x.filters=x.pseudos,x.setFilters=new c,C=e.tokenize=function(t,n){var r,i,o,a,s,l,u,c=U[t+" "];if(c)return n?0:c.slice(0);for(s=t,l=[],u=x.preFilter;s;){r&&!(i=at.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=st.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(ot," ")}),s=s.slice(r.length));for(a in x.filter)!(i=ft[a].exec(s))||u[a]&&!(i=u[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):U(t,l).slice(0)},$=e.compile=function(t,e){var n,r=[],i=[],o=z[t+" "];if(!o){for(e||(e=C(t)),n=e.length;n--;)o=m(e[n]),o[M]?r.push(o):i.push(o);o=z(t,y(i,r)),o.selector=t}return o},T=e.select=function(t,e,n,r){var i,o,a,s,l,c="function"==typeof t&&t,p=!r&&C(t=c.selector||t);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===e.nodeType&&N&&x.relative[o[1].type]){if(!(e=(x.find.ID(a.matches[0].replace(mt,yt),e)||[])[0]))return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=ft.needsContext.test(t)?0:o.length;i--&&(a=o[i],!x.relative[s=a.type]);)if((l=x.find[s])&&(r=l(a.matches[0].replace(mt,yt),gt.test(o[0].type)&&u(e.parentNode)||e))){if(o.splice(i,1),!(t=r.length&&f(o)))return Z.apply(n,r),n;break}}return(c||$(t,p))(r,e,!N,n,!e||gt.test(t)&&u(e.parentNode)||e),n},_.sortStable=M.split("").sort(W).join("")===M,_.detectDuplicates=!!E,O(),_.sortDetached=i(function(t){return 1&t.compareDocumentPosition(j.createElement("fieldset"))}),i(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&i(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),i(function(t){return null==t.getAttribute("disabled")})||o(Q,function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),e}(n);yt.find=kt,yt.expr=kt.selectors,yt.expr[":"]=yt.expr.pseudos,yt.uniqueSort=yt.unique=kt.uniqueSort,yt.text=kt.getText,yt.isXMLDoc=kt.isXML,yt.contains=kt.contains,yt.escapeSelector=kt.escape;var Ct=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&yt(t).is(n))break;r.push(t)}return r},$t=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},Tt=yt.expr.match.needsContext,St=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,At=/^.[^:#\[\.,]*$/;yt.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?yt.find.matchesSelector(r,t)?[r]:[]:yt.find.matches(t,yt.grep(e,function(t){return 1===t.nodeType}))},yt.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(yt(t).filter(function(){for(e=0;e<r;e++)if(yt.contains(i[e],this))return!0}));for(n=this.pushStack([]),e=0;e<r;e++)yt.find(t,i[e],n);return r>1?yt.uniqueSort(n):n},filter:function(t){return this.pushStack(u(this,t||[],!1))},not:function(t){return this.pushStack(u(this,t||[],!0))},is:function(t){return!!u(this,"string"==typeof t&&Tt.test(t)?yt(t):t||[],!1).length}});var Et,Ot=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(yt.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||Et,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:Ot.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof yt?e[0]:e,yt.merge(this,yt.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:at,!0)),St.test(r[1])&&yt.isPlainObject(e))for(r in e)yt.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return i=at.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):yt.isFunction(t)?void 0!==n.ready?n.ready(t):t(yt):yt.makeArray(t,this)}).prototype=yt.fn,Et=yt(at);var jt=/^(?:parents|prev(?:Until|All))/,Dt={children:!0,contents:!0,next:!0,prev:!0};yt.fn.extend({has:function(t){var e=yt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(yt.contains(this,e[t]))return!0})},closest:function(t,e){var n,r=0,i=this.length,o=[],a="string"!=typeof t&&yt(t);if(!Tt.test(t))for(;r<i;r++)for(n=this[r];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&yt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?yt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?ft.call(yt(t),this[0]):ft.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(yt.uniqueSort(yt.merge(this.get(),yt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),yt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return Ct(t,"parentNode")},parentsUntil:function(t,e,n){return Ct(t,"parentNode",n)},next:function(t){return c(t,"nextSibling")},prev:function(t){return c(t,"previousSibling")},nextAll:function(t){return Ct(t,"nextSibling")},prevAll:function(t){return Ct(t,"previousSibling")},nextUntil:function(t,e,n){return Ct(t,"nextSibling",n)},prevUntil:function(t,e,n){return Ct(t,"previousSibling",n)},siblings:function(t){return $t((t.parentNode||{}).firstChild,t)},children:function(t){return $t(t.firstChild)},contents:function(t){return l(t,"iframe")?t.contentDocument:(l(t,"template")&&(t=t.content||t),yt.merge([],t.childNodes))}},function(t,e){yt.fn[t]=function(n,r){var i=yt.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=yt.filter(r,i)),this.length>1&&(Dt[t]||yt.uniqueSort(i),jt.test(t)&&i.reverse()),this.pushStack(i)}});var Nt=/[^\x20\t\r\n\f]+/g;yt.Callbacks=function(t){t="string"==typeof t?f(t):yt.extend({},t);var e,n,r,i,o=[],a=[],s=-1,l=function(){for(i=i||t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)!1===o[s].apply(n[0],n[1])&&t.stopOnFalse&&(s=o.length,n=!1);t.memory||(n=!1),e=!1,i&&(o=n?[]:"")},u={add:function(){return o&&(n&&!e&&(s=o.length-1,a.push(n)),function e(n){yt.each(n,function(n,r){yt.isFunction(r)?t.unique&&u.has(r)||o.push(r):r&&r.length&&"string"!==yt.type(r)&&e(r)})}(arguments),n&&!e&&l()),this},remove:function(){return yt.each(arguments,function(t,e){for(var n;(n=yt.inArray(e,o,n))>-1;)o.splice(n,1),n<=s&&s--}),this},has:function(t){return t?yt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},yt.extend({Deferred:function(t){var e=[["notify","progress",yt.Callbacks("memory"),yt.Callbacks("memory"),2],["resolve","done",yt.Callbacks("once memory"),yt.Callbacks("once memory"),0,"resolved"],["reject","fail",yt.Callbacks("once memory"),yt.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return yt.Deferred(function(n){yt.each(e,function(e,r){var i=yt.isFunction(t[r[4]])&&t[r[4]];o[r[1]](function(){var t=i&&i.apply(this,arguments);t&&yt.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,r,i){function o(t,e,r,i){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(t<a)){if((n=r.apply(s,l))===e.promise())throw new TypeError("Thenable self-resolution");u=n&&("object"==typeof n||"function"==typeof n)&&n.then,yt.isFunction(u)?i?u.call(n,o(a,e,p,i),o(a,e,d,i)):(a++,u.call(n,o(a,e,p,i),o(a,e,d,i),o(a,e,p,e.notifyWith))):(r!==p&&(s=void 0,l=[n]),(i||e.resolveWith)(s,l))}},c=i?u:function(){try{u()}catch(n){yt.Deferred.exceptionHook&&yt.Deferred.exceptionHook(n,c.stackTrace),t+1>=a&&(r!==d&&(s=void 0,l=[n]),e.rejectWith(s,l))}};t?c():(yt.Deferred.getStackHook&&(c.stackTrace=yt.Deferred.getStackHook()),n.setTimeout(c))}}var a=0;return yt.Deferred(function(n){e[0][3].add(o(0,n,yt.isFunction(i)?i:p,n.notifyWith)),e[1][3].add(o(0,n,yt.isFunction(t)?t:p)),e[2][3].add(o(0,n,yt.isFunction(r)?r:d))}).promise()},promise:function(t){return null!=t?yt.extend(t,i):i}},o={};return yt.each(e,function(t,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add(function(){r=s},e[3-t][2].disable,e[0][2].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(t){var e=arguments.length,n=e,r=Array(n),i=lt.call(arguments),o=yt.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?lt.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(h(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||yt.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)h(i[n],a(n),o.reject);return o.promise()}});var It=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;yt.Deferred.exceptionHook=function(t,e){n.console&&n.console.warn&&t&&It.test(t.name)&&n.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},yt.readyException=function(t){n.setTimeout(function(){throw t})};var Pt=yt.Deferred();yt.fn.ready=function(t){return Pt.then(t).catch(function(t){yt.readyException(t)}),this},yt.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--yt.readyWait:yt.isReady)||(yt.isReady=!0,!0!==t&&--yt.readyWait>0||Pt.resolveWith(at,[yt]))}}),yt.ready.then=Pt.then,"complete"===at.readyState||"loading"!==at.readyState&&!at.documentElement.doScroll?n.setTimeout(yt.ready):(at.addEventListener("DOMContentLoaded",v),n.addEventListener("load",v));var Lt=function(t,e,n,r,i,o,a){var s=0,l=t.length,u=null==n;if("object"===yt.type(n)){i=!0;for(s in n)Lt(t,e,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,yt.isFunction(r)||(a=!0),u&&(a?(e.call(t,r),e=null):(u=e,e=function(t,e,n){return u.call(yt(t),n)})),e))for(;s<l;s++)e(t[s],n,a?r:r.call(t[s],s,e(t[s],n)));return i?t:u?e.call(t):l?e(t[0],n):o},Rt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};g.uid=1,g.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Rt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var r,i=this.cache(t);if("string"==typeof e)i[yt.camelCase(e)]=n;else for(r in e)i[yt.camelCase(r)]=e[r];return i},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][yt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,r=t[this.expando];if(void 0!==r){if(void 0!==e){Array.isArray(e)?e=e.map(yt.camelCase):(e=yt.camelCase(e),e=e in r?[e]:e.match(Nt)||[]),n=e.length;for(;n--;)delete r[e[n]]}(void 0===e||yt.isEmptyObject(r))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!yt.isEmptyObject(e)}};var Mt=new g,Ft=new g,qt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Bt=/[A-Z]/g;yt.extend({hasData:function(t){return Ft.hasData(t)||Mt.hasData(t)},data:function(t,e,n){return Ft.access(t,e,n)},removeData:function(t,e){Ft.remove(t,e)},_data:function(t,e,n){return Mt.access(t,e,n)},_removeData:function(t,e){Mt.remove(t,e)}}),yt.fn.extend({data:function(t,e){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(i=Ft.get(o),1===o.nodeType&&!Mt.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=yt.camelCase(r.slice(5)),y(o,r,i[r])));Mt.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof t?this.each(function(){Ft.set(this,t)}):Lt(this,function(e){var n;if(o&&void 0===e){if(void 0!==(n=Ft.get(o,t)))return n;if(void 0!==(n=y(o,t)))return n}else this.each(function(){Ft.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){Ft.remove(this,t)})}}),yt.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Mt.get(t,e),n&&(!r||Array.isArray(n)?r=Mt.access(t,e,yt.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=yt.queue(t,e),r=n.length,i=n.shift(),o=yt._queueHooks(t,e),a=function(){yt.dequeue(t,e)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Mt.get(t,n)||Mt.access(t,n,{empty:yt.Callbacks("once memory").add(function(){Mt.remove(t,[e+"queue",n])})})}}),yt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?yt.queue(this[0],t):void 0===e?this:this.each(function(){var n=yt.queue(this,t,e);yt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&yt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){yt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,r=1,i=yt.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)(n=Mt.get(o[a],t+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(e)}});var Ht=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Ut=new RegExp("^(?:([+-])=|)("+Ht+")([a-z%]*)$","i"),zt=["Top","Right","Bottom","Left"],Wt=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&yt.contains(t.ownerDocument,t)&&"none"===yt.css(t,"display")},Vt=function(t,e,n,r){var i,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];i=n.apply(t,r||[]);for(o in e)t.style[o]=a[o];return i},Xt={};yt.fn.extend({show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Wt(this)?yt(this).show():yt(this).hide()})}});var Yt=/^(?:checkbox|radio)$/i,Gt=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Zt=/^$|\/(?:java|ecma)script/i,Jt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Jt.optgroup=Jt.option,Jt.tbody=Jt.tfoot=Jt.colgroup=Jt.caption=Jt.thead,Jt.th=Jt.td;var Kt=/<|&#?\w+;/;!function(){var t=at.createDocumentFragment(),e=t.appendChild(at.createElement("div")),n=at.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),mt.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",mt.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Qt=at.documentElement,te=/^key/,ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ne=/^([^.]*)(?:\.(.+)|)/;yt.event={global:{},add:function(t,e,n,r,i){var o,a,s,l,u,c,f,p,d,h,v,g=Mt.get(t);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&yt.find.matchesSelector(Qt,i),n.guid||(n.guid=yt.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(e){return void 0!==yt&&yt.event.triggered!==e.type?yt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Nt)||[""],u=e.length;u--;)s=ne.exec(e[u])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d&&(f=yt.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=yt.event.special[d]||{},c=yt.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&yt.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=l[d])||(p=l[d]=[],p.delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),yt.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,l,u,c,f,p,d,h,v,g=Mt.hasData(t)&&Mt.get(t);if(g&&(l=g.events)){for(e=(e||"").match(Nt)||[""],u=e.length;u--;)if(s=ne.exec(e[u])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d){for(f=yt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=l[d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&v!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(t,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(t,h,g.handle)||yt.removeEvent(t,d,g.handle),delete l[d])}else for(d in l)yt.event.remove(t,d+e[u],n,r,!0);yt.isEmptyObject(l)&&Mt.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=yt.event.fix(t),l=new Array(arguments.length),u=(Mt.get(this,"events")||{})[s.type]||[],c=yt.event.special[s.type]||{};for(l[0]=s,e=1;e<arguments.length;e++)l[e]=arguments[e];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){for(a=yt.event.handlers.call(this,s,u),e=0;(i=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((yt.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,l))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,r,i,o,a,s=[],l=e.delegateCount,u=t.target;if(l&&u.nodeType&&!("click"===t.type&&t.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],a={},n=0;n<l;n++)r=e[n],i=r.selector+" ",void 0===a[i]&&(a[i]=r.needsContext?yt(i,this).index(u)>-1:yt.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l<e.length&&s.push({elem:u,handlers:e.slice(l)}),s},addProp:function(t,e){Object.defineProperty(yt.Event.prototype,t,{enumerable:!0,configurable:!0,get:yt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[yt.expando]?t:new yt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==S()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===S()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&l(this,"input"))return this.click(),!1},_default:function(t){return l(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},yt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},yt.Event=function(t,e){if(!(this instanceof yt.Event))return new yt.Event(t,e);t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&!1===t.returnValue?$:T,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&yt.extend(this,e),this.timeStamp=t&&t.timeStamp||yt.now(),this[yt.expando]=!0},yt.Event.prototype={constructor:yt.Event,isDefaultPrevented:T,isPropagationStopped:T,isImmediatePropagationStopped:T,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=$,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=$,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=$,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},yt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&te.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&ee.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},yt.event.addProp),yt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){yt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,r=this,i=t.relatedTarget,o=t.handleObj;return i&&(i===r||yt.contains(r,i))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),yt.fn.extend({on:function(t,e,n,r){return A(this,t,e,n,r)},one:function(t,e,n,r){return A(this,t,e,n,r,1)},off:function(t,e,n){var r,i;if(t&&t.preventDefault&&t.handleObj)return r=t.handleObj,yt(t.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof t){for(i in t)this.off(i,e,t[i]);return this}return!1!==e&&"function"!=typeof e||(n=e,e=void 0),!1===n&&(n=T),this.each(function(){yt.event.remove(this,t,n,e)})}});var re=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ie=/<script|<style|<link/i,oe=/checked\s*(?:[^=]|=\s*.checked.)/i,ae=/^true\/(.*)/,se=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;yt.extend({htmlPrefilter:function(t){return t.replace(re,"<$1></$2>")},clone:function(t,e,n){var r,i,o,a,s=t.cloneNode(!0),l=yt.contains(t.ownerDocument,t);if(!(mt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||yt.isXMLDoc(t)))for(a=w(s),o=w(t),r=0,i=o.length;r<i;r++)N(o[r],a[r]);if(e)if(n)for(o=o||w(t),a=a||w(s),r=0,i=o.length;r<i;r++)D(o[r],a[r]);else D(t,s);return a=w(s,"script"),a.length>0&&k(a,!l&&w(t,"script")),s},cleanData:function(t){for(var e,n,r,i=yt.event.special,o=0;void 0!==(n=t[o]);o++)if(Rt(n)){if(e=n[Mt.expando]){if(e.events)for(r in e.events)i[r]?yt.event.remove(n,r):yt.removeEvent(n,r,e.handle);n[Mt.expando]=void 0}n[Ft.expando]&&(n[Ft.expando]=void 0)}}}),yt.fn.extend({detach:function(t){return P(this,t,!0)},remove:function(t){return P(this,t)},text:function(t){return Lt(this,function(t){return void 0===t?yt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return I(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){E(this,t).appendChild(t)}})},prepend:function(){return I(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=E(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return I(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return I(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(yt.cleanData(w(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return yt.clone(this,t,e)})},html:function(t){return Lt(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ie.test(t)&&!Jt[(Gt.exec(t)||["",""])[1].toLowerCase()]){t=yt.htmlPrefilter(t);try{for(;n<r;n++)e=this[n]||{},1===e.nodeType&&(yt.cleanData(w(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return I(this,arguments,function(e){var n=this.parentNode;yt.inArray(this,t)<0&&(yt.cleanData(w(this)),n&&n.replaceChild(e,this))},t)}}),yt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){yt.fn[t]=function(t){for(var n,r=[],i=yt(t),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),yt(i[a])[e](n),ct.apply(r,n.get());return this.pushStack(r)}});var le=/^margin/,ue=new RegExp("^("+Ht+")(?!px)[a-z%]+$","i"),ce=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=n),e.getComputedStyle(t)};!function(){function t(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Qt.appendChild(a);var t=n.getComputedStyle(s);e="1%"!==t.top,o="2px"===t.marginLeft,r="4px"===t.width,s.style.marginRight="50%",i="4px"===t.marginRight,Qt.removeChild(a),s=null}}var e,r,i,o,a=at.createElement("div"),s=at.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",mt.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),yt.extend(mt,{pixelPosition:function(){return t(),e},boxSizingReliable:function(){return t(),r},pixelMarginRight:function(){return t(),i},reliableMarginLeft:function(){return t(),o}}))}();var fe=/^(none|table(?!-c[ea]).+)/,pe=/^--/,de={position:"absolute",visibility:"hidden",display:"block"},he={letterSpacing:"0",fontWeight:"400"},ve=["Webkit","Moz","ms"],ge=at.createElement("div").style;yt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=L(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,a,s=yt.camelCase(e),l=pe.test(e),u=t.style;if(l||(e=F(s)),a=yt.cssHooks[e]||yt.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(t,!1,r))?i:u[e];o=typeof n,"string"===o&&(i=Ut.exec(n))&&i[1]&&(n=b(t,e,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(yt.cssNumber[s]?"":"px")),mt.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,r){var i,o,a,s=yt.camelCase(e);return pe.test(e)||(e=F(s)),a=yt.cssHooks[e]||yt.cssHooks[s],a&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=L(t,e,r)),"normal"===i&&e in he&&(i=he[e]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),yt.each(["height","width"],function(t,e){yt.cssHooks[e]={get:function(t,n,r){if(n)return!fe.test(yt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?H(t,e,r):Vt(t,de,function(){return H(t,e,r)})},set:function(t,n,r){var i,o=r&&ce(t),a=r&&B(t,e,r,"border-box"===yt.css(t,"boxSizing",!1,o),o);return a&&(i=Ut.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=yt.css(t,e)),q(t,n,a)}}}),yt.cssHooks.marginLeft=R(mt.reliableMarginLeft,function(t,e){if(e)return(parseFloat(L(t,"marginLeft"))||t.getBoundingClientRect().left-Vt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),yt.each({margin:"",padding:"",border:"Width"},function(t,e){yt.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+zt[r]+e]=o[r]||o[r-2]||o[0];return i}},le.test(t)||(yt.cssHooks[t+e].set=q)}),yt.fn.extend({css:function(t,e){return Lt(this,function(t,e,n){var r,i,o={},a=0;if(Array.isArray(e)){for(r=ce(t),i=e.length;a<i;a++)o[e[a]]=yt.css(t,e[a],!1,r);return o}return void 0!==n?yt.style(t,e,n):yt.css(t,e)},t,e,arguments.length>1)}}),yt.Tween=U,U.prototype={constructor:U,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||yt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(yt.cssNumber[n]?"":"px")},cur:function(){var t=U.propHooks[this.prop];return t&&t.get?t.get(this):U.propHooks._default.get(this)},run:function(t){var e,n=U.propHooks[this.prop];return this.options.duration?this.pos=e=yt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):U.propHooks._default.set(this),this}},U.prototype.init.prototype=U.prototype,U.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=yt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){yt.fx.step[t.prop]?yt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[yt.cssProps[t.prop]]&&!yt.cssHooks[t.prop]?t.elem[t.prop]=t.now:yt.style(t.elem,t.prop,t.now+t.unit)}}},U.propHooks.scrollTop=U.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},yt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},yt.fx=U.prototype.init,yt.fx.step={};var me,ye,be=/^(?:toggle|show|hide)$/,_e=/queueHooks$/;yt.Animation=yt.extend(Z,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return b(n.elem,t,Ut.exec(e),n),n}]},tweener:function(t,e){yt.isFunction(t)?(e=t,t=["*"]):t=t.match(Nt);for(var n,r=0,i=t.length;r<i;r++)n=t[r],Z.tweeners[n]=Z.tweeners[n]||[],Z.tweeners[n].unshift(e)},prefilters:[Y],prefilter:function(t,e){e?Z.prefilters.unshift(t):Z.prefilters.push(t)}}),yt.speed=function(t,e,n){var r=t&&"object"==typeof t?yt.extend({},t):{complete:n||!n&&e||yt.isFunction(t)&&t,duration:t,easing:n&&e||e&&!yt.isFunction(e)&&e};return yt.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in yt.fx.speeds?r.duration=yt.fx.speeds[r.duration]:r.duration=yt.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){yt.isFunction(r.old)&&r.old.call(this),r.queue&&yt.dequeue(this,r.queue)},r},yt.fn.extend({fadeTo:function(t,e,n,r){return this.filter(Wt).css("opacity",0).show().end().animate({opacity:e},t,n,r)},animate:function(t,e,n,r){var i=yt.isEmptyObject(t),o=yt.speed(e,n,r),a=function(){var e=Z(this,yt.extend({},t),o);(i||Mt.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var r=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&!1!==t&&this.queue(t||"fx",[]),this.each(function(){var e=!0,i=null!=t&&t+"queueHooks",o=yt.timers,a=Mt.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&_e.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=t&&o[i].queue!==t||(o[i].anim.stop(n),e=!1,o.splice(i,1));!e&&n||yt.dequeue(this,t)})},finish:function(t){return!1!==t&&(t=t||"fx"),this.each(function(){var e,n=Mt.get(this),r=n[t+"queue"],i=n[t+"queueHooks"],o=yt.timers,a=r?r.length:0;for(n.finish=!0,yt.queue(this,t,[]),i&&i.stop&&i.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)r[e]&&r[e].finish&&r[e].finish.call(this);delete n.finish})}}),yt.each(["toggle","show","hide"],function(t,e){var n=yt.fn[e];yt.fn[e]=function(t,r,i){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(V(e,!0),t,r,i)}}),yt.each({slideDown:V("show"),slideUp:V("hide"),slideToggle:V("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){yt.fn[t]=function(t,n,r){return this.animate(e,t,n,r)}}),yt.timers=[],yt.fx.tick=function(){var t,e=0,n=yt.timers;for(me=yt.now();e<n.length;e++)(t=n[e])()||n[e]!==t||n.splice(e--,1);n.length||yt.fx.stop(),me=void 0},yt.fx.timer=function(t){yt.timers.push(t),yt.fx.start()},yt.fx.interval=13,yt.fx.start=function(){ye||(ye=!0,z())},yt.fx.stop=function(){ye=null},yt.fx.speeds={slow:600,fast:200,_default:400},yt.fn.delay=function(t,e){return t=yt.fx?yt.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,r){var i=n.setTimeout(e,t);r.stop=function(){n.clearTimeout(i)}})},function(){var t=at.createElement("input"),e=at.createElement("select"),n=e.appendChild(at.createElement("option"));t.type="checkbox",mt.checkOn=""!==t.value,mt.optSelected=n.selected,t=at.createElement("input"),t.value="t",t.type="radio",mt.radioValue="t"===t.value}();var xe,we=yt.expr.attrHandle;yt.fn.extend({attr:function(t,e){return Lt(this,yt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){yt.removeAttr(this,t)})}}),yt.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?yt.prop(t,e,n):(1===o&&yt.isXMLDoc(t)||(i=yt.attrHooks[e.toLowerCase()]||(yt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void yt.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:(r=yt.find.attr(t,e),null==r?void 0:r))},attrHooks:{type:{set:function(t,e){if(!mt.radioValue&&"radio"===e&&l(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(Nt);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return!1===e?yt.removeAttr(t,n):t.setAttribute(n,n),n}},yt.each(yt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=we[e]||yt.find.attr;we[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=we[a],we[a]=i,i=null!=n(t,e,r)?a:null,we[a]=o),i}});var ke=/^(?:input|select|textarea|button)$/i,Ce=/^(?:a|area)$/i;yt.fn.extend({prop:function(t,e){return Lt(this,yt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[yt.propFix[t]||t]})}}),yt.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&yt.isXMLDoc(t)||(e=yt.propFix[e]||e,i=yt.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=yt.find.attr(t,"tabindex");return e?parseInt(e,10):ke.test(t.nodeName)||Ce.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),mt.optSelected||(yt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),yt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){yt.propFix[this.toLowerCase()]=this}),yt.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,l=0;if(yt.isFunction(t))return this.each(function(e){yt(this).addClass(t.call(this,e,K(this)))});if("string"==typeof t&&t)for(e=t.match(Nt)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&" "+J(i)+" "){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=J(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,l=0;if(yt.isFunction(t))return this.each(function(e){yt(this).removeClass(t.call(this,e,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Nt)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&" "+J(i)+" "){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=J(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):yt.isFunction(t)?this.each(function(n){yt(this).toggleClass(t.call(this,n,K(this),e),e)}):this.each(function(){var e,r,i,o;if("string"===n)for(r=0,i=yt(this),o=t.match(Nt)||[];e=o[r++];)i.hasClass(e)?i.removeClass(e):i.addClass(e);else void 0!==t&&"boolean"!==n||(e=K(this),e&&Mt.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Mt.get(this,"__className__")||""))})},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+J(K(n))+" ").indexOf(e)>-1)return!0;return!1}});var $e=/\r/g;yt.fn.extend({val:function(t){var e,n,r,i=this[0];{if(arguments.length)return r=yt.isFunction(t),this.each(function(n){var i;1===this.nodeType&&(i=r?t.call(this,n,yt(this).val()):t,null==i?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=yt.map(i,function(t){return null==t?"":t+""})),(e=yt.valHooks[this.type]||yt.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))});if(i)return(e=yt.valHooks[i.type]||yt.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace($e,""):null==n?"":n)}}}),yt.extend({valHooks:{option:{get:function(t){var e=yt.find.attr(t,"value");return null!=e?e:J(yt.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(n=i[r],(n.selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!l(n.parentNode,"optgroup"))){if(e=yt(n).val(),a)return e;s.push(e)}return s},set:function(t,e){for(var n,r,i=t.options,o=yt.makeArray(e),a=i.length;a--;)r=i[a],(r.selected=yt.inArray(yt.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),yt.each(["radio","checkbox"],function(){yt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=yt.inArray(yt(t).val(),e)>-1}},mt.checkOn||(yt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Te=/^(?:focusinfocus|focusoutblur)$/;yt.extend(yt.event,{trigger:function(t,e,r,i){var o,a,s,l,u,c,f,p=[r||at],d=ht.call(t,"type")?t.type:t,h=ht.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||at,3!==r.nodeType&&8!==r.nodeType&&!Te.test(d+yt.event.triggered)&&(d.indexOf(".")>-1&&(h=d.split("."),d=h.shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,t=t[yt.expando]?t:new yt.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:yt.makeArray(e,[t]),f=yt.event.special[d]||{},i||!f.trigger||!1!==f.trigger.apply(r,e))){if(!i&&!f.noBubble&&!yt.isWindow(r)){for(l=f.delegateType||d,Te.test(l+d)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||at)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)t.type=o>1?l:f.bindType||d,c=(Mt.get(a,"events")||{})[t.type]&&Mt.get(a,"handle"),c&&c.apply(a,e),(c=u&&a[u])&&c.apply&&Rt(a)&&(t.result=c.apply(a,e),!1===t.result&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!Rt(r)||u&&yt.isFunction(r[d])&&!yt.isWindow(r)&&(s=r[u],s&&(r[u]=null),yt.event.triggered=d,r[d](),yt.event.triggered=void 0,s&&(r[u]=s)),t.result}},simulate:function(t,e,n){var r=yt.extend(new yt.Event,n,{type:t,isSimulated:!0});yt.event.trigger(r,null,e)}}),yt.fn.extend({trigger:function(t,e){return this.each(function(){yt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return yt.event.trigger(t,e,n,!0)}}),yt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){yt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),yt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),mt.focusin="onfocusin"in n,mt.focusin||yt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){yt.event.simulate(e,t.target,yt.event.fix(t))};yt.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=Mt.access(r,e);i||r.addEventListener(t,n,!0),Mt.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Mt.access(r,e)-1;i?Mt.access(r,e,i):(r.removeEventListener(t,n,!0),Mt.remove(r,e))}}});var Se=n.location,Ae=yt.now(),Ee=/\?/;yt.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new n.DOMParser).parseFromString(t,"text/xml")}catch(t){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||yt.error("Invalid XML: "+t),e};var Oe=/\[\]$/,je=/\r?\n/g,De=/^(?:submit|button|image|reset|file)$/i,Ne=/^(?:input|select|textarea|keygen)/i;yt.param=function(t,e){var n,r=[],i=function(t,e){var n=yt.isFunction(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!yt.isPlainObject(t))yt.each(t,function(){i(this.name,this.value)});else for(n in t)Q(n,t[n],e,i);return r.join("&")},yt.fn.extend({serialize:function(){return yt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=yt.prop(this,"elements");return t?yt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!yt(this).is(":disabled")&&Ne.test(this.nodeName)&&!De.test(t)&&(this.checked||!Yt.test(t))}).map(function(t,e){var n=yt(this).val();return null==n?null:Array.isArray(n)?yt.map(n,function(t){return{name:e.name,value:t.replace(je,"\r\n")}}):{name:e.name,value:n.replace(je,"\r\n")}}).get()}});var Ie=/%20/g,Pe=/#.*$/,Le=/([?&])_=[^&]*/,Re=/^(.*?):[ \t]*([^\r\n]*)$/gm,Me=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fe=/^(?:GET|HEAD)$/,qe=/^\/\//,Be={},He={},Ue="*/".concat("*"),ze=at.createElement("a");ze.href=Se.href,yt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Se.href,type:"GET",isLocal:Me.test(Se.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ue,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":yt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?nt(nt(t,yt.ajaxSettings),e):nt(yt.ajaxSettings,t)},ajaxPrefilter:tt(Be),ajaxTransport:tt(He),ajax:function(t,e){function r(t,e,r,s){var u,p,d,_,x,w=e;c||(c=!0,l&&n.clearTimeout(l),i=void 0,a=s||"",k.readyState=t>0?4:0,u=t>=200&&t<300||304===t,r&&(_=rt(h,k,r)),_=it(h,_,k,u),u?(h.ifModified&&(x=k.getResponseHeader("Last-Modified"),x&&(yt.lastModified[o]=x),(x=k.getResponseHeader("etag"))&&(yt.etag[o]=x)),204===t||"HEAD"===h.type?w="nocontent":304===t?w="notmodified":(w=_.state,p=_.data,d=_.error,u=!d)):(d=w,!t&&w||(w="error",t<0&&(t=0))),k.status=t,k.statusText=(e||w)+"",u?m.resolveWith(v,[p,w,k]):m.rejectWith(v,[k,w,d]),k.statusCode(b),b=void 0,f&&g.trigger(u?"ajaxSuccess":"ajaxError",[k,h,u?p:d]),y.fireWith(v,[k,w]),f&&(g.trigger("ajaxComplete",[k,h]),--yt.active||yt.event.trigger("ajaxStop")))}"object"==typeof t&&(e=t,t=void 0),e=e||{};var i,o,a,s,l,u,c,f,p,d,h=yt.ajaxSetup({},e),v=h.context||h,g=h.context&&(v.nodeType||v.jquery)?yt(v):yt.event,m=yt.Deferred(),y=yt.Callbacks("once memory"),b=h.statusCode||{},_={},x={},w="canceled",k={readyState:0,getResponseHeader:function(t){var e;if(c){if(!s)for(s={};e=Re.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(t,e){return null==c&&(t=x[t.toLowerCase()]=x[t.toLowerCase()]||t,_[t]=e),this},overrideMimeType:function(t){return null==c&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(c)k.always(t[k.status]);else for(e in t)b[e]=[b[e],t[e]];return this},abort:function(t){var e=t||w;return i&&i.abort(e),r(0,e),this}};if(m.promise(k),h.url=((t||h.url||Se.href)+"").replace(qe,Se.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(Nt)||[""],null==h.crossDomain){u=at.createElement("a");try{u.href=h.url,u.href=u.href,h.crossDomain=ze.protocol+"//"+ze.host!=u.protocol+"//"+u.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=yt.param(h.data,h.traditional)),et(Be,h,e,k),c)return k;f=yt.event&&h.global,f&&0==yt.active++&&yt.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Fe.test(h.type),o=h.url.replace(Pe,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Ie,"+")):(d=h.url.slice(o.length),h.data&&(o+=(Ee.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Le,"$1"),d=(Ee.test(o)?"&":"?")+"_="+Ae+++d),h.url=o+d),h.ifModified&&(yt.lastModified[o]&&k.setRequestHeader("If-Modified-Since",yt.lastModified[o]),yt.etag[o]&&k.setRequestHeader("If-None-Match",yt.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ue+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)k.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(v,k,h)||c))return k.abort();if(w="abort",y.add(h.complete),k.done(h.success),k.fail(h.error),i=et(He,h,e,k)){if(k.readyState=1,f&&g.trigger("ajaxSend",[k,h]),c)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{c=!1,i.send(_,r)}catch(t){if(c)throw t;r(-1,t)}}else r(-1,"No Transport");return k},getJSON:function(t,e,n){return yt.get(t,e,n,"json")},getScript:function(t,e){return yt.get(t,void 0,e,"script")}}),yt.each(["get","post"],function(t,e){yt[e]=function(t,n,r,i){return yt.isFunction(n)&&(i=i||r,r=n,n=void 0),yt.ajax(yt.extend({url:t,type:e,dataType:i,data:n,success:r},yt.isPlainObject(t)&&t))}}),yt._evalUrl=function(t){return yt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},yt.fn.extend({wrapAll:function(t){var e;return this[0]&&(yt.isFunction(t)&&(t=t.call(this[0])),e=yt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return yt.isFunction(t)?this.each(function(e){yt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=yt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=yt.isFunction(t);return this.each(function(n){yt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){yt(this).replaceWith(this.childNodes)}),this}}),yt.expr.pseudos.hidden=function(t){return!yt.expr.pseudos.visible(t)},yt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},yt.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Ve=yt.ajaxSettings.xhr();mt.cors=!!Ve&&"withCredentials"in Ve,mt.ajax=Ve=!!Ve,yt.ajaxTransport(function(t){var e,r;if(mt.cors||Ve&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(We[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),r=s.onerror=e("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){e&&r()})},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}}),yt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),yt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return yt.globalEval(t),t}}}),yt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),yt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(r,i){e=yt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&i("error"===t.type?404:200,t.type)}),at.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Xe=[],Ye=/(=)\?(?=&|$)|\?\?/;yt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Xe.pop()||yt.expando+"_"+Ae++;return this[t]=!0,t}}),yt.ajaxPrefilter("json jsonp",function(t,e,r){var i,o,a,s=!1!==t.jsonp&&(Ye.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ye.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=yt.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Ye,"$1"+i):!1!==t.jsonp&&(t.url+=(Ee.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||yt.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=n[i],n[i]=function(){a=arguments},r.always(function(){void 0===o?yt(n).removeProp(i):n[i]=o,t[i]&&(t.jsonpCallback=e.jsonpCallback,Xe.push(i)),a&&yt.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),mt.createHTMLDocument=function(){var t=at.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),yt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var r,i,o;return e||(mt.createHTMLDocument?(e=at.implementation.createHTMLDocument(""),r=e.createElement("base"),r.href=at.location.href,e.head.appendChild(r)):e=at),i=St.exec(t),o=!n&&[],i?[e.createElement(i[1])]:(i=C([t],e,o),o&&o.length&&yt(o).remove(),yt.merge([],i.childNodes))},yt.fn.load=function(t,e,n){var r,i,o,a=this,s=t.indexOf(" ");return s>-1&&(r=J(t.slice(s)),t=t.slice(0,s)),yt.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(i="POST"),a.length>0&&yt.ajax({url:t,type:i||"GET",dataType:"html",data:e}).done(function(t){o=arguments,a.html(r?yt("<div>").append(yt.parseHTML(t)).find(r):t)}).always(n&&function(t,e){a.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},yt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){yt.fn[e]=function(t){return this.on(e,t)}}),yt.expr.pseudos.animated=function(t){return yt.grep(yt.timers,function(e){return t===e.elem}).length},yt.offset={setOffset:function(t,e,n){var r,i,o,a,s,l,u,c=yt.css(t,"position"),f=yt(t),p={};"static"===c&&(t.style.position="relative"),s=f.offset(),o=yt.css(t,"top"),l=yt.css(t,"left"),u=("absolute"===c||"fixed"===c)&&(o+l).indexOf("auto")>-1,u?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(l)||0),yt.isFunction(e)&&(e=e.call(t,n,yt.extend({},s))),null!=e.top&&(p.top=e.top-s.top+a),null!=e.left&&(p.left=e.left-s.left+i),"using"in e?e.using.call(t,p):f.css(p)}},yt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){yt.offset.setOffset(this,t,e)});var e,n,r,i,o=this[0];if(o)return o.getClientRects().length?(r=o.getBoundingClientRect(),e=o.ownerDocument,n=e.documentElement,i=e.defaultView,{top:r.top+i.pageYOffset-n.clientTop,left:r.left+i.pageXOffset-n.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var t,e,n=this[0],r={top:0,left:0};return"fixed"===yt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),l(t[0],"html")||(r=t.offset()),r={top:r.top+yt.css(t[0],"borderTopWidth",!0),left:r.left+yt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-r.top-yt.css(n,"marginTop",!0),left:e.left-r.left-yt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===yt.css(t,"position");)t=t.offsetParent;return t||Qt})}}),yt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;yt.fn[t]=function(r){return Lt(this,function(t,r,i){var o;if(yt.isWindow(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===i)return o?o[e]:t[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):t[r]=i},t,r,arguments.length)}}),yt.each(["top","left"],function(t,e){yt.cssHooks[e]=R(mt.pixelPosition,function(t,n){if(n)return n=L(t,e),ue.test(n)?yt(t).position()[e]+"px":n})}),yt.each({Height:"height",Width:"width"},function(t,e){yt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,r){yt.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return Lt(this,function(e,n,i){var o;return yt.isWindow(e)?0===r.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===i?yt.css(e,n,s):yt.style(e,n,i,s)},e,a?i:void 0,a)}})}),yt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),yt.holdReady=function(t){t?yt.readyWait++:yt.ready(!0)},yt.isArray=Array.isArray,yt.parseJSON=JSON.parse,yt.nodeName=l,r=[],void 0!==(i=function(){return yt}.apply(e,r))&&(t.exports=i);var Ge=n.jQuery,Ze=n.$;return yt.noConflict=function(t){return n.$===yt&&(n.$=Ze),t&&n.jQuery===yt&&(n.jQuery=Ge),yt},o||(n.jQuery=n.$=yt),yt})},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){n(17),Vue.component("passport-clients",n(35)),Vue.component("passport-authorized-clients",n(34)),Vue.component("passport-personal-access-tokens",n(36)),Vue.component("importer",n(33))},,,,,function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:["alertType","title"],computed:{alertClassName:function(){return"alert-"+this.alertType}},methods:{hideEvent:function(){this.$emit("hide")}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:["errors"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n(18);var r=n(46).modal;e.default={data:function(){return{files:[],displayImportModal:!1,activeFile:null,alert:{type:null,message:null,visible:!1},modal:{importType:"asset",update:!1,importTypes:[{id:"asset",text:"Assets"},{id:"accessory",text:"Accessories"},{id:"consumable",text:"Consumable"},{id:"component",text:"Components"},{id:"license",text:"Licenses"}],statusText:null},importErrors:null,progress:{currentClass:"progress-bar-warning",currentPercent:"0",statusText:"",visible:!1}}},mounted:function(){this.fetchFiles();var t=this;$("#fileupload").fileupload({dataType:"json",done:function(e,n){t.progress.currentClass="progress-bar-success",t.progress.statusText="Success!",t.files=n.result.files.concat(t.files)},add:function(e,n){n.headers={"X-Requested-With":"XMLHttpRequest","X-CSRF-TOKEN":Laravel.csrfToken},n.process().done(function(){n.submit()}),t.progress.visible=!0},progress:function(e,n){var r=parseInt((n.loaded,n.total,10));t.progress.currentPercent=r,t.progress.statusText=r+"% Complete"},fail:function(e,n){t.progress.currentClass="progress-bar-danger",t.progress.statusText=n.jqXHR.responseJSON.messages}})},methods:{fetchFiles:function(){var t=this;this.$http.get("/api/v1/imports").then(function(e){var n=e.data;return t.files=n},function(e){t.alert.type="danger",t.alert.visible=!0,t.alert.message="Something went wrong fetching files..."})},deleteFile:function(t,e){var n=this;this.$http.delete("/api/v1/imports/"+t.id).then(function(t){return n.files.splice(e,1)},function(t){n.alert.type="danger",n.alert.visible=!0,n.alert.message=t.body.messages})},showModal:function(t){this.activeFile=t,this.displayImportModal=!0},postSave:function(){var t=this;this.modal.statusText="Processing...",this.$http.post("/api/v1/imports/process/"+this.activeFile.id,{"import-update":this.modal.update,"import-type":this.modal.importType}).then(function(e){t.modal.statusText="Success... Redirecting.",window.location.href=e.body.messages.redirect_url},function(e){"import-errors"==e.body.status?t.importErrors=e.body.messages:(t.alert.message=e.body.messages,t.alert.type="danger",t.alert.visible=!0),t.displayImportModal=!1})}},computed:{progressWidth:function(){return"width: "+10*this.progress.currentPercent+"%"}},components:{modal:r,errors:n(32),alert:n(31),select2:n(37)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={data:function(){return{tokens:[]}},ready:function(){this.prepareComponent()},mounted:function(){this.prepareComponent()},methods:{prepareComponent:function(){this.getTokens()},getTokens:function(){var t=this;this.$http.get("/oauth/tokens").then(function(e){t.tokens=e.data})},revoke:function(t){var e=this;this.$http.delete("/oauth/tokens/"+t.id).then(function(t){e.getTokens()})}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.default={data:function(){return{clients:[],createForm:{errors:[],name:"",redirect:""},editForm:{errors:[],name:"",redirect:""}}},ready:function(){this.prepareComponent()},mounted:function(){this.prepareComponent()},methods:{prepareComponent:function(){this.getClients(),$("#modal-create-client").on("shown.bs.modal",function(){$("#create-client-name").focus()}),$("#modal-edit-client").on("shown.bs.modal",function(){$("#edit-client-name").focus()})},getClients:function(){var t=this;this.$http.get("/oauth/clients").then(function(e){t.clients=e.data})},showCreateClientForm:function(){$("#modal-create-client").modal("show")},store:function(){this.persistClient("post","/oauth/clients",this.createForm,"#modal-create-client")},edit:function(t){this.editForm.id=t.id,this.editForm.name=t.name,this.editForm.redirect=t.redirect,$("#modal-edit-client").modal("show")},update:function(){this.persistClient("put","/oauth/clients/"+this.editForm.id,this.editForm,"#modal-edit-client")},persistClient:function(t,e,n,i){var o=this;n.errors=[],this.$http[t](e,n).then(function(t){o.getClients(),n.name="",n.redirect="",n.errors=[],$(i).modal("hide")}).catch(function(t){"object"===r(t.data)?n.errors=_.flatten(_.toArray(t.data)):n.errors=["Something went wrong. Please try again."]})},destroy:function(t){var e=this;this.$http.delete("/oauth/clients/"+t.id).then(function(t){e.getClients()})}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.default={data:function(){return{accessToken:null,tokens:[],scopes:[],form:{name:"",scopes:[],errors:[]}}},ready:function(){this.prepareComponent()},mounted:function(){this.prepareComponent()},methods:{prepareComponent:function(){this.getTokens(),this.getScopes(),$("#modal-create-token").on("shown.bs.modal",function(){$("#create-token-name").focus()})},getTokens:function(){var t=this;this.$http.get("/oauth/personal-access-tokens").then(function(e){t.tokens=e.data})},getScopes:function(){var t=this;this.$http.get("/oauth/scopes").then(function(e){t.scopes=e.data})},showCreateTokenForm:function(){$("#modal-create-token").modal("show")},store:function(){var t=this;this.accessToken=null,this.form.errors=[],this.$http.post("/oauth/personal-access-tokens",this.form).then(function(e){t.form.name="",t.form.scopes=[],t.form.errors=[],t.tokens.push(e.data.token),t.showAccessToken(e.data.accessToken)}).catch(function(e){"object"===r(e.data)?t.form.errors=_.flatten(_.toArray(e.data)):t.form.errors=["Something went wrong. Please try again."]})},toggleScope:function(t){this.scopeIsAssigned(t)?this.form.scopes=_.reject(this.form.scopes,function(e){return e==t}):this.form.scopes.push(t)},scopeIsAssigned:function(t){return _.indexOf(this.form.scopes,t)>=0},showAccessToken:function(t){$("#modal-create-token").modal("hide"),this.accessToken=t,$("#modal-access-token").modal("show")},revoke:function(t){var e=this;this.$http.delete("/oauth/personal-access-tokens/"+t.id).then(function(t){e.getTokens()})}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n(30),e.default={props:["options","value"],mounted:function(){var t=this;$(this.$el).select2({data:this.options}).on("change",function(){t.$emit("input",this.value)})},watch:{value:function(t){$(this.$el).val(t)},options:function(t){$(this.$el).select2({data:t})},destroyed:function(){$(this.$el).off().select2("destroy")}}}},function(t,e,n){window._=n(29),window.$=window.jQuery=n(3),n(19),window.Vue=n(55),n(45),Vue.http.interceptors.push(function(t,e){t.headers.set("X-CSRF-TOKEN",Laravel.csrfToken),e()})},function(t,e,n){var r,i,o;!function(a){"use strict";i=[n(3),n(28)],r=a,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(function(t){"use strict";function e(e){var n="dragover"===e;return function(r){r.dataTransfer=r.originalEvent&&r.originalEvent.dataTransfer;var i=r.dataTransfer;i&&-1!==t.inArray("Files",i.types)&&!1!==this._trigger(e,t.Event(e,{delegatedEvent:r}))&&(r.preventDefault(),n&&(i.dropEffect="copy"))}}t.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||t('<input type="file">').prop("disabled")),t.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),t.support.xhrFormDataFileUpload=!!window.FormData,t.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),t.widget("blueimp.fileupload",{options:{dropZone:t(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(e,n){return e=this.messages[e]||e.toString(),n&&t.each(n,function(t,n){e=e.replace("{"+t+"}",n)}),e},formData:function(t){return t.serializeArray()},add:function(e,n){if(e.isDefaultPrevented())return!1;(n.autoUpload||!1!==n.autoUpload&&t(this).fileupload("option","autoUpload"))&&n.process().done(function(){n.submit()})},processData:!1,contentType:!1,cache:!1,timeout:0},_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:t.support.blobSlice&&function(){return(this.slice||this.webkitSlice||this.mozSlice).apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(t,e,n){var r=t-this.timestamp;return(!this.bitrate||!n||r>n)&&(this.bitrate=(e-this.loaded)*(1e3/r)*8,this.loaded=e,this.timestamp=t),this.bitrate}},_isXHRUpload:function(e){return!e.forceIframeTransport&&(!e.multipart&&t.support.xhrFileUpload||t.support.xhrFormDataFileUpload)},_getFormData:function(e){var n;return"function"===t.type(e.formData)?e.formData(e.form):t.isArray(e.formData)?e.formData:"object"===t.type(e.formData)?(n=[],t.each(e.formData,function(t,e){n.push({name:t,value:e})}),n):[]},_getTotal:function(e){var n=0;return t.each(e,function(t,e){n+=e.size||1}),n},_initProgressObject:function(e){var n={loaded:0,total:0,bitrate:0};e._progress?t.extend(e._progress,n):e._progress=n},_initResponseObject:function(t){var e;if(t._response)for(e in t._response)t._response.hasOwnProperty(e)&&delete t._response[e];else t._response={}},_onProgress:function(e,n){if(e.lengthComputable){var r,i=Date.now?Date.now():(new Date).getTime();if(n._time&&n.progressInterval&&i-n._time<n.progressInterval&&e.loaded!==e.total)return;n._time=i,r=Math.floor(e.loaded/e.total*(n.chunkSize||n._progress.total))+(n.uploadedBytes||0),this._progress.loaded+=r-n._progress.loaded,this._progress.bitrate=this._bitrateTimer.getBitrate(i,this._progress.loaded,n.bitrateInterval),n._progress.loaded=n.loaded=r,n._progress.bitrate=n.bitrate=n._bitrateTimer.getBitrate(i,r,n.bitrateInterval),this._trigger("progress",t.Event("progress",{delegatedEvent:e}),n),this._trigger("progressall",t.Event("progressall",{delegatedEvent:e}),this._progress)}},_initProgressListener:function(e){var n=this,r=e.xhr?e.xhr():t.ajaxSettings.xhr();r.upload&&(t(r.upload).bind("progress",function(t){var r=t.originalEvent;t.lengthComputable=r.lengthComputable,t.loaded=r.loaded,t.total=r.total,n._onProgress(t,e)}),e.xhr=function(){return r})},_isInstanceOf:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"},_initXHRData:function(e){var n,r=this,i=e.files[0],o=e.multipart||!t.support.xhrFileUpload,a="array"===t.type(e.paramName)?e.paramName[0]:e.paramName;e.headers=t.extend({},e.headers),e.contentRange&&(e.headers["Content-Range"]=e.contentRange),o&&!e.blob&&this._isInstanceOf("File",i)||(e.headers["Content-Disposition"]='attachment; filename="'+encodeURI(i.name)+'"'),o?t.support.xhrFormDataFileUpload&&(e.postMessage?(n=this._getFormData(e),e.blob?n.push({name:a,value:e.blob}):t.each(e.files,function(r,i){n.push({name:"array"===t.type(e.paramName)&&e.paramName[r]||a,value:i})})):(r._isInstanceOf("FormData",e.formData)?n=e.formData:(n=new FormData,t.each(this._getFormData(e),function(t,e){n.append(e.name,e.value)})),e.blob?n.append(a,e.blob,i.name):t.each(e.files,function(i,o){(r._isInstanceOf("File",o)||r._isInstanceOf("Blob",o))&&n.append("array"===t.type(e.paramName)&&e.paramName[i]||a,o,o.uploadName||o.name)})),e.data=n):(e.contentType=i.type||"application/octet-stream",e.data=e.blob||i),e.blob=null},_initIframeSettings:function(e){var n=t("<a></a>").prop("href",e.url).prop("host");e.dataType="iframe "+(e.dataType||""),e.formData=this._getFormData(e),e.redirect&&n&&n!==location.host&&e.formData.push({name:e.redirectParamName||"redirect",value:e.redirect})},_initDataSettings:function(t){this._isXHRUpload(t)?(this._chunkedUpload(t,!0)||(t.data||this._initXHRData(t),this._initProgressListener(t)),t.postMessage&&(t.dataType="postmessage "+(t.dataType||""))):this._initIframeSettings(t)},_getParamName:function(e){var n=t(e.fileInput),r=e.paramName;return r?t.isArray(r)||(r=[r]):(r=[],n.each(function(){for(var e=t(this),n=e.prop("name")||"files[]",i=(e.prop("files")||[1]).length;i;)r.push(n),i-=1}),r.length||(r=[n.prop("name")||"files[]"])),r},_initFormSettings:function(e){e.form&&e.form.length||(e.form=t(e.fileInput.prop("form")),e.form.length||(e.form=t(this.options.fileInput.prop("form")))),e.paramName=this._getParamName(e),e.url||(e.url=e.form.prop("action")||location.href),e.type=(e.type||"string"===t.type(e.form.prop("method"))&&e.form.prop("method")||"").toUpperCase(),"POST"!==e.type&&"PUT"!==e.type&&"PATCH"!==e.type&&(e.type="POST"),e.formAcceptCharset||(e.formAcceptCharset=e.form.attr("accept-charset"))},_getAJAXSettings:function(e){var n=t.extend({},this.options,e);return this._initFormSettings(n),this._initDataSettings(n),n},_getDeferredState:function(t){return t.state?t.state():t.isResolved()?"resolved":t.isRejected()?"rejected":"pending"},_enhancePromise:function(t){return t.success=t.done,t.error=t.fail,t.complete=t.always,t},_getXHRPromise:function(e,n,r){var i=t.Deferred(),o=i.promise();return n=n||this.options.context||o,!0===e?i.resolveWith(n,r):!1===e&&i.rejectWith(n,r),o.abort=i.promise,this._enhancePromise(o)},_addConvenienceMethods:function(e,n){var r=this,i=function(e){return t.Deferred().resolveWith(r,e).promise()};n.process=function(e,o){return(e||o)&&(n._processQueue=this._processQueue=(this._processQueue||i([this])).then(function(){return n.errorThrown?t.Deferred().rejectWith(r,[n]).promise():i(arguments)}).then(e,o)),this._processQueue||i([this])},n.submit=function(){return"pending"!==this.state()&&(n.jqXHR=this.jqXHR=!1!==r._trigger("submit",t.Event("submit",{delegatedEvent:e}),this)&&r._onSend(e,this)),this.jqXHR||r._getXHRPromise()},n.abort=function(){return this.jqXHR?this.jqXHR.abort():(this.errorThrown="abort",r._trigger("fail",null,this),r._getXHRPromise(!1))},n.state=function(){return this.jqXHR?r._getDeferredState(this.jqXHR):this._processQueue?r._getDeferredState(this._processQueue):void 0},n.processing=function(){return!this.jqXHR&&this._processQueue&&"pending"===r._getDeferredState(this._processQueue)},n.progress=function(){return this._progress},n.response=function(){return this._response}},_getUploadedBytes:function(t){var e=t.getResponseHeader("Range"),n=e&&e.split("-"),r=n&&n.length>1&&parseInt(n[1],10);return r&&r+1},_chunkedUpload:function(e,n){e.uploadedBytes=e.uploadedBytes||0;var r,i,o=this,a=e.files[0],s=a.size,l=e.uploadedBytes,u=e.maxChunkSize||s,c=this._blobSlice,f=t.Deferred(),p=f.promise();return!(!(this._isXHRUpload(e)&&c&&(l||u<s))||e.data)&&(!!n||(l>=s?(a.error=e.i18n("uploadedBytes"),this._getXHRPromise(!1,e.context,[null,"error",a.error])):(i=function(){var n=t.extend({},e),p=n._progress.loaded;n.blob=c.call(a,l,l+u,a.type),n.chunkSize=n.blob.size,n.contentRange="bytes "+l+"-"+(l+n.chunkSize-1)+"/"+s,o._initXHRData(n),o._initProgressListener(n),r=(!1!==o._trigger("chunksend",null,n)&&t.ajax(n)||o._getXHRPromise(!1,n.context)).done(function(r,a,u){l=o._getUploadedBytes(u)||l+n.chunkSize,p+n.chunkSize-n._progress.loaded&&o._onProgress(t.Event("progress",{lengthComputable:!0,loaded:l-n.uploadedBytes,total:l-n.uploadedBytes}),n),e.uploadedBytes=n.uploadedBytes=l,n.result=r,n.textStatus=a,n.jqXHR=u,o._trigger("chunkdone",null,n),o._trigger("chunkalways",null,n),l<s?i():f.resolveWith(n.context,[r,a,u])}).fail(function(t,e,r){n.jqXHR=t,n.textStatus=e,n.errorThrown=r,o._trigger("chunkfail",null,n),o._trigger("chunkalways",null,n),f.rejectWith(n.context,[t,e,r])})},this._enhancePromise(p),p.abort=function(){return r.abort()},i(),p)))},_beforeSend:function(t,e){0===this._active&&(this._trigger("start"),this._bitrateTimer=new this._BitrateTimer,this._progress.loaded=this._progress.total=0,this._progress.bitrate=0),this._initResponseObject(e),this._initProgressObject(e),e._progress.loaded=e.loaded=e.uploadedBytes||0,e._progress.total=e.total=this._getTotal(e.files)||1,e._progress.bitrate=e.bitrate=0,this._active+=1,this._progress.loaded+=e.loaded,this._progress.total+=e.total},_onDone:function(e,n,r,i){var o=i._progress.total,a=i._response;i._progress.loaded<o&&this._onProgress(t.Event("progress",{lengthComputable:!0,loaded:o,total:o}),i),a.result=i.result=e,a.textStatus=i.textStatus=n,a.jqXHR=i.jqXHR=r,this._trigger("done",null,i)},_onFail:function(t,e,n,r){var i=r._response;r.recalculateProgress&&(this._progress.loaded-=r._progress.loaded,this._progress.total-=r._progress.total),i.jqXHR=r.jqXHR=t,i.textStatus=r.textStatus=e,i.errorThrown=r.errorThrown=n,this._trigger("fail",null,r)},_onAlways:function(t,e,n,r){this._trigger("always",null,r)},_onSend:function(e,n){n.submit||this._addConvenienceMethods(e,n);var r,i,o,a,s=this,l=s._getAJAXSettings(n),u=function(){return s._sending+=1,l._bitrateTimer=new s._BitrateTimer,r=r||((i||!1===s._trigger("send",t.Event("send",{delegatedEvent:e}),l))&&s._getXHRPromise(!1,l.context,i)||s._chunkedUpload(l)||t.ajax(l)).done(function(t,e,n){s._onDone(t,e,n,l)}).fail(function(t,e,n){s._onFail(t,e,n,l)}).always(function(t,e,n){if(s._onAlways(t,e,n,l),s._sending-=1,s._active-=1,l.limitConcurrentUploads&&l.limitConcurrentUploads>s._sending)for(var r=s._slots.shift();r;){if("pending"===s._getDeferredState(r)){r.resolve();break}r=s._slots.shift()}0===s._active&&s._trigger("stop")})};return this._beforeSend(e,l),this.options.sequentialUploads||this.options.limitConcurrentUploads&&this.options.limitConcurrentUploads<=this._sending?(this.options.limitConcurrentUploads>1?(o=t.Deferred(),this._slots.push(o),a=o.then(u)):(this._sequence=this._sequence.then(u,u),a=this._sequence),a.abort=function(){return i=[void 0,"abort","abort"],r?r.abort():(o&&o.rejectWith(l.context,i),u())},this._enhancePromise(a)):u()},_onAdd:function(e,n){var r,i,o,a,s=this,l=!0,u=t.extend({},this.options,n),c=n.files,f=c.length,p=u.limitMultiFileUploads,d=u.limitMultiFileUploadSize,h=u.limitMultiFileUploadSizeOverhead,v=0,g=this._getParamName(u),m=0;if(!f)return!1;if(d&&void 0===c[0].size&&(d=void 0),(u.singleFileUploads||p||d)&&this._isXHRUpload(u))if(u.singleFileUploads||d||!p)if(!u.singleFileUploads&&d)for(o=[],r=[],a=0;a<f;a+=1)v+=c[a].size+h,(a+1===f||v+c[a+1].size+h>d||p&&a+1-m>=p)&&(o.push(c.slice(m,a+1)),i=g.slice(m,a+1),i.length||(i=g),r.push(i),m=a+1,v=0);else r=g;else for(o=[],r=[],a=0;a<f;a+=p)o.push(c.slice(a,a+p)),i=g.slice(a,a+p),i.length||(i=g),r.push(i);else o=[c],r=[g];return n.originalFiles=c,t.each(o||c,function(i,a){var u=t.extend({},n);return u.files=o?a:[a],u.paramName=r[i],s._initResponseObject(u),s._initProgressObject(u),s._addConvenienceMethods(e,u),l=s._trigger("add",t.Event("add",{delegatedEvent:e}),u)}),l},_replaceFileInput:function(e){var n=e.fileInput,r=n.clone(!0),i=n.is(document.activeElement);e.fileInputClone=r,t("<form></form>").append(r)[0].reset(),n.after(r).detach(),i&&r.focus(),t.cleanData(n.unbind("remove")),this.options.fileInput=this.options.fileInput.map(function(t,e){return e===n[0]?r[0]:e}),n[0]===this.element[0]&&(this.element=r)},_handleFileTreeEntry:function(e,n){var r,i=this,o=t.Deferred(),a=[],s=function(t){t&&!t.entry&&(t.entry=e),o.resolve([t])},l=function(t){i._handleFileTreeEntries(t,n+e.name+"/").done(function(t){o.resolve(t)}).fail(s)},u=function(){r.readEntries(function(t){t.length?(a=a.concat(t),u()):l(a)},s)};return n=n||"",e.isFile?e._file?(e._file.relativePath=n,o.resolve(e._file)):e.file(function(t){t.relativePath=n,o.resolve(t)},s):e.isDirectory?(r=e.createReader(),u()):o.resolve([]),o.promise()},_handleFileTreeEntries:function(e,n){var r=this;return t.when.apply(t,t.map(e,function(t){return r._handleFileTreeEntry(t,n)})).then(function(){return Array.prototype.concat.apply([],arguments)})},_getDroppedFiles:function(e){e=e||{};var n=e.items;return n&&n.length&&(n[0].webkitGetAsEntry||n[0].getAsEntry)?this._handleFileTreeEntries(t.map(n,function(t){var e;return t.webkitGetAsEntry?(e=t.webkitGetAsEntry(),e&&(e._file=t.getAsFile()),e):t.getAsEntry()})):t.Deferred().resolve(t.makeArray(e.files)).promise()},_getSingleFileInputFiles:function(e){e=t(e);var n,r,i=e.prop("webkitEntries")||e.prop("entries");if(i&&i.length)return this._handleFileTreeEntries(i);if(n=t.makeArray(e.prop("files")),n.length)void 0===n[0].name&&n[0].fileName&&t.each(n,function(t,e){e.name=e.fileName,e.size=e.fileSize});else{if(!(r=e.prop("value")))return t.Deferred().resolve([]).promise();n=[{name:r.replace(/^.*\\/,"")}]}return t.Deferred().resolve(n).promise()},_getFileInputFiles:function(e){return e instanceof t&&1!==e.length?t.when.apply(t,t.map(e,this._getSingleFileInputFiles)).then(function(){return Array.prototype.concat.apply([],arguments)}):this._getSingleFileInputFiles(e)},_onChange:function(e){var n=this,r={fileInput:t(e.target),form:t(e.target.form)};this._getFileInputFiles(r.fileInput).always(function(i){r.files=i,n.options.replaceFileInput&&n._replaceFileInput(r),!1!==n._trigger("change",t.Event("change",{delegatedEvent:e}),r)&&n._onAdd(e,r)})},_onPaste:function(e){var n=e.originalEvent&&e.originalEvent.clipboardData&&e.originalEvent.clipboardData.items,r={files:[]};n&&n.length&&(t.each(n,function(t,e){var n=e.getAsFile&&e.getAsFile();n&&r.files.push(n)}),!1!==this._trigger("paste",t.Event("paste",{delegatedEvent:e}),r)&&this._onAdd(e,r))},_onDrop:function(e){e.dataTransfer=e.originalEvent&&e.originalEvent.dataTransfer;var n=this,r=e.dataTransfer,i={};r&&r.files&&r.files.length&&(e.preventDefault(),this._getDroppedFiles(r).always(function(r){i.files=r,!1!==n._trigger("drop",t.Event("drop",{delegatedEvent:e}),i)&&n._onAdd(e,i)}))},_onDragOver:e("dragover"),_onDragEnter:e("dragenter"),_onDragLeave:e("dragleave"),_initEventHandlers:function(){this._isXHRUpload(this.options)&&(this._on(this.options.dropZone,{dragover:this._onDragOver,drop:this._onDrop,dragenter:this._onDragEnter,dragleave:this._onDragLeave}),this._on(this.options.pasteZone,{paste:this._onPaste})),t.support.fileInput&&this._on(this.options.fileInput,{change:this._onChange})},_destroyEventHandlers:function(){this._off(this.options.dropZone,"dragenter dragleave dragover drop"),this._off(this.options.pasteZone,"paste"),this._off(this.options.fileInput,"change")},_destroy:function(){this._destroyEventHandlers()},_setOption:function(e,n){var r=-1!==t.inArray(e,this._specialOptions);r&&this._destroyEventHandlers(),this._super(e,n),r&&(this._initSpecialOptions(),this._initEventHandlers())},_initSpecialOptions:function(){var e=this.options;void 0===e.fileInput?e.fileInput=this.element.is('input[type="file"]')?this.element:this.element.find('input[type="file"]'):e.fileInput instanceof t||(e.fileInput=t(e.fileInput)),e.dropZone instanceof t||(e.dropZone=t(e.dropZone)),e.pasteZone instanceof t||(e.pasteZone=t(e.pasteZone))},_getRegExp:function(t){var e=t.split("/"),n=e.pop();return e.shift(),new RegExp(e.join("/"),n)},_isRegExpOption:function(e,n){return"url"!==e&&"string"===t.type(n)&&/^\/.*\/[igm]{0,3}$/.test(n)},_initDataAttributes:function(){var e=this,n=this.options,r=this.element.data();t.each(this.element[0].attributes,function(t,i){var o,a=i.name.toLowerCase();/^data-/.test(a)&&(a=a.slice(5).replace(/-[a-z]/g,function(t){return t.charAt(1).toUpperCase()}),o=r[a],e._isRegExpOption(a,o)&&(o=e._getRegExp(o)),n[a]=o)})},_create:function(){this._initDataAttributes(),this._initSpecialOptions(),this._slots=[],this._sequence=this._getXHRPromise(!0),this._sending=this._active=0,this._initProgressObject(this),this._initEventHandlers()},active:function(){return this._active},progress:function(){return this._progress},add:function(e){var n=this;e&&!this.options.disabled&&(e.fileInput&&!e.files?this._getFileInputFiles(e.fileInput).always(function(t){e.files=t,n._onAdd(null,e)}):(e.files=t.makeArray(e.files),this._onAdd(null,e)))},send:function(e){if(e&&!this.options.disabled){if(e.fileInput&&!e.files){var n,r,i=this,o=t.Deferred(),a=o.promise();return a.abort=function(){return r=!0,n?n.abort():(o.reject(null,"abort","abort"),a)},this._getFileInputFiles(e.fileInput).always(function(t){if(!r){if(!t.length)return void o.reject();e.files=t,n=i._onSend(null,e),n.then(function(t,e,n){o.resolve(t,e,n)},function(t,e,n){o.reject(t,e,n)})}}),this._enhancePromise(a)}if(e.files=t.makeArray(e.files),e.files.length)return this._onSend(null,e)}return this._getXHRPromise(!1,e&&e.context)}})})},function(t,e){"format global";"deps jquery";"exports $";/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,r=this;t(this).one("bsTransitionEnd",function(){n=!0});var i=function(){n||t(r).trigger(t.support.transition.end)};return setTimeout(i,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var n=t(this),i=n.data("bs.alert");i||n.data("bs.alert",i=new r(this)),"string"==typeof e&&i[e].call(n)})}var n='[data-dismiss="alert"]',r=function(e){t(e).on("click",n,this.close)};r.VERSION="3.3.4",r.TRANSITION_DURATION=150,r.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var i=t(this),o=i.attr("data-target");o||(o=i.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t(o);e&&e.preventDefault(),a.length||(a=i.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(r.TRANSITION_DURATION):n())};var i=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=r,t.fn.alert.noConflict=function(){return t.fn.alert=i,this},t(document).on("click.bs.alert.data-api",n,r.prototype.close)}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.button"),o="object"==typeof e&&e;i||r.data("bs.button",i=new n(this,o)),"toggle"==e?i.toggle():e&&i.setState(e)})}var n=function(e,r){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,r),this.isLoading=!1};n.VERSION="3.3.4",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",r=this.$element,i=r.is("input")?"val":"html",o=r.data();e+="Text",null==o.resetText&&r.data("resetText",r[i]()),setTimeout(t.proxy(function(){r[i](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,r.addClass(n).attr(n,n)):this.isLoading&&(this.isLoading=!1,r.removeClass(n).removeAttr(n))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")&&(n.prop("checked")&&this.$element.hasClass("active")?t=!1:e.find(".active").removeClass("active")),t&&n.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));t&&this.$element.toggleClass("active")};var r=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=r,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var r=t(n.target);r.hasClass("btn")||(r=r.closest(".btn")),e.call(r,"toggle"),n.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.carousel"),o=t.extend({},n.DEFAULTS,r.data(),"object"==typeof e&&e),a="string"==typeof e?e:o.slide;i||r.data("bs.carousel",i=new n(this,o)),"number"==typeof e?i.to(e):a?i[a]():o.interval&&i.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.4",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e);if(("prev"==t&&0===n||"next"==t&&n==this.$items.length-1)&&!this.options.wrap)return e;var r="prev"==t?-1:1,i=(n+r)%this.$items.length;return this.$items.eq(i)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,r){var i=this.$element.find(".item.active"),o=r||this.getItemForDirection(e,i),a=this.interval,s="next"==e?"left":"right",l=this;if(o.hasClass("active"))return this.sliding=!1;var u=o[0],c=t.Event("slide.bs.carousel",{relatedTarget:u,direction:s});if(this.$element.trigger(c),!c.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var f=t(this.$indicators.children()[this.getItemIndex(o)]);f&&f.addClass("active")}var p=t.Event("slid.bs.carousel",{relatedTarget:u,direction:s});return t.support.transition&&this.$element.hasClass("slide")?(o.addClass(e),o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([e,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(p)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(p)),a&&this.cycle(),this}};var r=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=r,this};var i=function(n){var r,i=t(this),o=t(i.attr("data-target")||(r=i.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var a=t.extend({},o.data(),i.data()),s=i.attr("data-slide-to");s&&(a.interval=!1),e.call(o,a),s&&o.data("bs.carousel").to(s),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",i).on("click.bs.carousel.data-api","[data-slide-to]",i),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),function(t){"use strict";function e(e){var n,r=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(r)}function n(e){return this.each(function(){var n=t(this),i=n.data("bs.collapse"),o=t.extend({},r.DEFAULTS,n.data(),"object"==typeof e&&e);!i&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),i||n.data("bs.collapse",i=new r(this,o)),"string"==typeof e&&i[e]()})}var r=function(e,n){this.$element=t(e),this.options=t.extend({},r.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};r.VERSION="3.3.4",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,i=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(i&&i.length&&(e=i.data("bs.collapse"))&&e.transitioning)){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){i&&i.length&&(n.call(i,"hide"),e||i.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[a](this.$element[0][l])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!t.support.transition)return i.call(this);this.$element[n](0).one("bsTransitionEnd",t.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,r){var i=t(r);this.addAriaAndCollapsedClass(e(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var i=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=r,t.fn.collapse.noConflict=function(){return t.fn.collapse=i,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(r){var i=t(this);i.attr("data-target")||r.preventDefault();var o=e(i),a=o.data("bs.collapse"),s=a?"toggle":i.data();n.call(o,s)})}(jQuery),function(t){"use strict";function e(e){e&&3===e.which||(t(i).remove(),t(o).each(function(){var r=t(this),i=n(r),o={relatedTarget:this};i.hasClass("open")&&(i.trigger(e=t.Event("hide.bs.dropdown",o)),e.isDefaultPrevented()||(r.attr("aria-expanded","false"),i.removeClass("open").trigger("hidden.bs.dropdown",o)))}))}function n(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var r=n&&t(n);return r&&r.length?r:e.parent()}function r(e){return this.each(function(){var n=t(this),r=n.data("bs.dropdown");r||n.data("bs.dropdown",r=new a(this)),"string"==typeof e&&r[e].call(n)})}var i=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.4",a.prototype.toggle=function(r){var i=t(this);if(!i.is(".disabled, :disabled")){var o=n(i),a=o.hasClass("open");if(e(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t('<div class="dropdown-backdrop"/>').insertAfter(t(this)).on("click",e);var s={relatedTarget:this};if(o.trigger(r=t.Event("show.bs.dropdown",s)),r.isDefaultPrevented())return;i.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger("shown.bs.dropdown",s)}return!1}},a.prototype.keydown=function(e){if(/(38|40|27|32)/.test(e.which)&&!/input|textarea/i.test(e.target.tagName)){var r=t(this);if(e.preventDefault(),e.stopPropagation(),!r.is(".disabled, :disabled")){var i=n(r),a=i.hasClass("open");if(!a&&27!=e.which||a&&27==e.which)return 27==e.which&&i.find(o).trigger("focus"),r.trigger("click");var s=" li:not(.disabled):visible a",l=i.find('[role="menu"]'+s+', [role="listbox"]'+s);if(l.length){var u=l.index(e.target);38==e.which&&u>0&&u--,40==e.which&&u<l.length-1&&u++,~u||(u=0),l.eq(u).trigger("focus")}}}};var s=t.fn.dropdown;t.fn.dropdown=r,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=s,this},t(document).on("click.bs.dropdown.data-api",e).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",o,a.prototype.toggle).on("keydown.bs.dropdown.data-api",o,a.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',a.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',a.prototype.keydown)}(jQuery),function(t){"use strict";function e(e,r){return this.each(function(){var i=t(this),o=i.data("bs.modal"),a=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e);o||i.data("bs.modal",o=new n(this,a)),"string"==typeof e?o[e](r):a.show&&o.show(r)})}var n=function(e,n){this.options=n,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.4",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},n.prototype.show=function(e){var r=this,i=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(i),this.isShown||i.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){r.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(r.$element)&&(r.ignoreBackdropClick=!0)})}),this.backdrop(function(){var i=t.support.transition&&r.$element.hasClass("fade");r.$element.parent().length||r.$element.appendTo(r.$body),r.$element.show().scrollTop(0),r.adjustDialog(),i&&r.$element[0].offsetWidth,r.$element.addClass("in").attr("aria-hidden",!1),r.enforceFocus();var o=t.Event("shown.bs.modal",{relatedTarget:e});i?r.$dialog.one("bsTransitionEnd",function(){r.$element.trigger("focus").trigger(o)}).emulateTransitionEnd(n.TRANSITION_DURATION):r.$element.trigger("focus").trigger(o)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var r=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=t.support.transition&&i;if(this.$backdrop=t('<div class="modal-backdrop '+i+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){if(this.ignoreBackdropClick)return void(this.ignoreBackdropClick=!1);t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;o?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){r.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var r=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=n,t.fn.modal.noConflict=function(){return t.fn.modal=r,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var r=t(this),i=r.attr("href"),o=t(r.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,"")),a=o.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(i)&&i},o.data(),r.data());r.is("a")&&n.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){r.is(":visible")&&r.trigger("focus")})}),e.call(o,a,this)})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.tooltip"),o="object"==typeof e&&e;!i&&/destroy|hide/.test(e)||(i||r.data("bs.tooltip",i=new n(this,o)),"string"==typeof e&&i[e]())})}var n=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",t,e)};n.VERSION="3.3.4",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(e,n,r){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(r),this.$viewport=this.options.viewport&&t(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var i=this.options.trigger.split(" "),o=i.length;o--;){var a=i[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},n.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,function(t,r){n[t]!=r&&(e[t]=r)}),e},n.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return n&&n.$tip&&n.$tip.is(":visible")?void(n.hoverState="in"):(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void(n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),clearTimeout(n.timeout),n.hoverState="out",!n.options.delay||!n.options.delay.hide)return n.hide();n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)},n.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var r=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!r)return;var i=this,o=this.tip(),a=this.getUID(this.type);this.setContent(),o.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,u=l.test(s);u&&(s=s.replace(l,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element);var c=this.getPosition(),f=o[0].offsetWidth,p=o[0].offsetHeight;if(u){var d=s,h=this.options.container?t(this.options.container):this.$element.parent(),v=this.getPosition(h);s="bottom"==s&&c.bottom+p>v.bottom?"top":"top"==s&&c.top-p<v.top?"bottom":"right"==s&&c.right+f>v.width?"left":"left"==s&&c.left-f<v.left?"right":s,o.removeClass(d).addClass(s)}var g=this.getCalculatedOffset(s,c,f,p);this.applyPlacement(g,s);var m=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};t.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",m).emulateTransitionEnd(n.TRANSITION_DURATION):m()}},n.prototype.applyPlacement=function(e,n){var r=this.tip(),i=r[0].offsetWidth,o=r[0].offsetHeight,a=parseInt(r.css("margin-top"),10),s=parseInt(r.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(s)&&(s=0),e.top=e.top+a,e.left=e.left+s,t.offset.setOffset(r[0],t.extend({using:function(t){r.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),r.addClass("in");var l=r[0].offsetWidth,u=r[0].offsetHeight;"top"==n&&u!=o&&(e.top=e.top+o-u);var c=this.getViewportAdjustedDelta(n,e,l,u);c.left?e.left+=c.left:e.top+=c.top;var f=/top|bottom/.test(n),p=f?2*c.left-i+l:2*c.top-o+u,d=f?"offsetWidth":"offsetHeight";r.offset(e),this.replaceArrow(p,r[0][d],f)},n.prototype.replaceArrow=function(t,e,n){this.arrow().css(n?"left":"top",50*(1-t/e)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},n.prototype.hide=function(e){function r(){"in"!=i.hoverState&&o.detach(),i.$element.removeAttr("aria-describedby").trigger("hidden.bs."+i.type),e&&e()}var i=this,o=t(this.$tip),a=t.Event("hide.bs."+this.type);if(this.$element.trigger(a),!a.isDefaultPrevented())return o.removeClass("in"),t.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",r).emulateTransitionEnd(n.TRANSITION_DURATION):r(),this.hoverState=null,this},n.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],r="BODY"==n.tagName,i=n.getBoundingClientRect();null==i.width&&(i=t.extend({},i,{width:i.right-i.left,height:i.bottom-i.top}));var o=r?{top:0,left:0}:e.offset(),a={scroll:r?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},s=r?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},i,a,s,o)},n.prototype.getCalculatedOffset=function(t,e,n,r){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-n/2}:"top"==t?{top:e.top-r,left:e.left+e.width/2-n/2}:"left"==t?{top:e.top+e.height/2-r/2,left:e.left-n}:{top:e.top+e.height/2-r/2,left:e.left+e.width}},n.prototype.getViewportAdjustedDelta=function(t,e,n,r){var i={top:0,left:0};if(!this.$viewport)return i;var o=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var s=e.top-o-a.scroll,l=e.top+o-a.scroll+r;s<a.top?i.top=a.top-s:l>a.top+a.height&&(i.top=a.top+a.height-l)}else{var u=e.left-o,c=e.left+o+n;u<a.left?i.left=a.left-u:c>a.width&&(i.left=a.left+a.width-c)}return i},n.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},n.prototype.getUID=function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},n.prototype.tip=function(){return this.$tip=this.$tip||t(this.options.template)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(e){var n=this;e&&((n=t(e.currentTarget).data("bs."+this.type))||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type)})};var r=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=n,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=r,this}}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.popover"),o="object"==typeof e&&e;!i&&/destroy|hide/.test(e)||(i||r.data("bs.popover",i=new n(this,o)),"string"==typeof e&&i[e]())})}var n=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.4",n.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var r=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=n,t.fn.popover.noConflict=function(){return t.fn.popover=r,this}}(jQuery),function(t){"use strict";function e(n,r){this.$body=t(document.body),this.$scrollElement=t(t(n).is(document.body)?window:n),this.options=t.extend({},e.DEFAULTS,r),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var r=t(this),i=r.data("bs.scrollspy"),o="object"==typeof n&&n;i||r.data("bs.scrollspy",i=new e(this,o)),"string"==typeof n&&i[n]()})}e.VERSION="3.3.4",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",r=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",r=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),i=e.data("target")||e.attr("href"),o=/^#./.test(i)&&t(i);return o&&o.length&&o.is(":visible")&&[[o[n]().top+r,i]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),r=this.options.offset+n-this.$scrollElement.height(),i=this.offsets,o=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=r)return a!=(t=o[o.length-1])&&this.activate(t);if(a&&e<i[0])return this.activeTarget=null,this.clear();for(t=i.length;t--;)a!=o[t]&&e>=i[t]&&(void 0===i[t+1]||e<i[t+1])&&this.activate(o[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',r=t(n).parents("li").addClass("active");r.parent(".dropdown-menu").length&&(r=r.closest("li.dropdown").addClass("active")),r.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var r=t.fn.scrollspy;t.fn.scrollspy=n,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=r,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);n.call(e,e.data())})})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.tab");i||r.data("bs.tab",i=new n(this)),"string"==typeof e&&i[e]()})}var n=function(e){this.element=t(e)};n.VERSION="3.3.4",n.TRANSITION_DURATION=150,n.prototype.show=function(){var e=this.element,n=e.closest("ul:not(.dropdown-menu)"),r=e.data("target");if(r||(r=e.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var i=n.find(".active:last a"),o=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:i[0]});if(i.trigger(o),e.trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){var s=t(r);this.activate(e.closest("li"),n),this.activate(s,s.parent(),function(){i.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:i[0]})})}}},n.prototype.activate=function(e,r,i){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}var a=r.find("> .active"),s=i&&t.support.transition&&(a.length&&a.hasClass("fade")||!!r.find("> .fade").length);a.length&&s?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var r=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=r,this};var i=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var r=t(this),i=r.data("bs.affix"),o="object"==typeof e&&e;i||r.data("bs.affix",i=new n(this,o)),"string"==typeof e&&i[e]()})}var n=function(e,r){this.options=t.extend({},n.DEFAULTS,r),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.4",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(t,e,n,r){var i=this.$target.scrollTop(),o=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return i<n&&"top";if("bottom"==this.affixed)return null!=n?!(i+this.unpin<=o.top)&&"bottom":!(i+a<=t-r)&&"bottom";var s=null==this.affixed,l=s?i:o.top,u=s?a:e;return null!=n&&i<=n?"top":null!=r&&l+u>=t-r&&"bottom"},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},n.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),r=this.options.offset,i=r.top,o=r.bottom,a=t(document.body).height();"object"!=typeof r&&(o=i=r),"function"==typeof i&&(i=r.top(this.$element)),"function"==typeof o&&(o=r.bottom(this.$element));var s=this.getState(a,e,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var l="affix"+(s?"-"+s:""),u=t.Event(l+".bs.affix");if(this.$element.trigger(u),u.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-e-o})}};var r=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=n,t.fn.affix.noConflict=function(){return t.fn.affix=r,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var n=t(this),r=n.data();r.offset=r.offset||{},null!=r.offsetBottom&&(r.offset.bottom=r.offsetBottom),null!=r.offsetTop&&(r.offset.top=r.offsetTop),e.call(n,r)})})}(jQuery)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,".action-link[data-v-225778c2]{cursor:pointer}.m-b-none[data-v-225778c2]{margin-bottom:0}",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"td[data-v-5301a236],th[data-v-5301a236]{font-size:13px}",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,".action-link[data-v-de0d0e4e]{cursor:pointer}.m-b-none[data-v-de0d0e4e]{margin-bottom:0}",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,".action-link[data-v-e9c80318]{cursor:pointer}.m-b-none[data-v-e9c80318]{margin-bottom:0}",""])},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"",""])},function(t,e,n){var r,i,o;!function(a){i=[n(3)],r=a,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(function(t){return t.ui=t.ui||{},t.ui.version="1.12.1"})},function(t,e,n){var r,i,o;/*! - * jQuery UI Widget 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ -!function(a){i=[n(3),n(27)],r=a,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(function(t){var e=0,n=Array.prototype.slice;return t.cleanData=function(e){return function(n){var r,i,o;for(o=0;null!=(i=n[o]);o++)try{r=t._data(i,"events"),r&&r.remove&&t(i).triggerHandler("remove")}catch(t){}e(n)}}(t.cleanData),t.widget=function(e,n,r){var i,o,a,s={},l=e.split(".")[0];e=e.split(".")[1];var u=l+"-"+e;return r||(r=n,n=t.Widget),t.isArray(r)&&(r=t.extend.apply(null,[{}].concat(r))),t.expr[":"][u.toLowerCase()]=function(e){return!!t.data(e,u)},t[l]=t[l]||{},i=t[l][e],o=t[l][e]=function(t,e){if(!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},t.extend(o,i,{version:r.version,_proto:t.extend({},r),_childConstructors:[]}),a=new n,a.options=t.widget.extend({},a.options),t.each(r,function(e,r){if(!t.isFunction(r))return void(s[e]=r);s[e]=function(){function t(){return n.prototype[e].apply(this,arguments)}function i(t){return n.prototype[e].apply(this,t)}return function(){var e,n=this._super,o=this._superApply;return this._super=t,this._superApply=i,e=r.apply(this,arguments),this._super=n,this._superApply=o,e}}()}),o.prototype=t.widget.extend(a,{widgetEventPrefix:i?a.widgetEventPrefix||e:e},s,{constructor:o,namespace:l,widgetName:e,widgetFullName:u}),i?(t.each(i._childConstructors,function(e,n){var r=n.prototype;t.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete i._childConstructors):n._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var r,i,o=n.call(arguments,1),a=0,s=o.length;a<s;a++)for(r in o[a])i=o[a][r],o[a].hasOwnProperty(r)&&void 0!==i&&(t.isPlainObject(i)?e[r]=t.isPlainObject(e[r])?t.widget.extend({},e[r],i):t.widget.extend({},i):e[r]=i);return e},t.widget.bridge=function(e,r){var i=r.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,s=n.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var n,r=t.data(this,i);return"instance"===o?(l=r,!1):r?t.isFunction(r[o])&&"_"!==o.charAt(0)?(n=r[o].apply(r,s),n!==r&&void 0!==n?(l=n&&n.jquery?l.pushStack(n.get()):n,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; attempted to call method '"+o+"'")}):l=void 0:(s.length&&(o=t.widget.extend.apply(null,[o].concat(s))),this.each(function(){var e=t.data(this,i);e?(e.option(o||{}),e._init&&e._init()):t.data(this,i,new r(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(n,r){r=t(r||this.defaultElement||this)[0],this.element=t(r),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},r!==this&&(t.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===r&&this.destroy()}}),this.document=t(r.style?r.ownerDocument:r.document||r),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),n),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,n){e._removeClass(n,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,n){var r,i,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},r=e.split("."),e=r.shift(),r.length){for(i=a[e]=t.widget.extend({},this.options[e]),o=0;o<r.length-1;o++)i[r[o]]=i[r[o]]||{},i=i[r[o]];if(e=r.pop(),1===arguments.length)return void 0===i[e]?null:i[e];i[e]=n}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=n}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var n,r,i;for(n in e)i=this.classesElementLookup[n],e[n]!==this.options.classes[n]&&i&&i.length&&(r=t(i.get()),this._removeClass(i,n),r.addClass(this._classes({element:r,keys:n,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function n(n,o){var a,s;for(s=0;s<n.length;s++)a=i.classesElementLookup[n[s]]||t(),a=t(e.add?t.unique(a.get().concat(e.element.get())):a.not(e.element).get()),i.classesElementLookup[n[s]]=a,r.push(n[s]),o&&e.classes[n[s]]&&r.push(e.classes[n[s]])}var r=[],i=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&n(e.keys.match(/\S+/g)||[],!0),e.extra&&n(e.extra.match(/\S+/g)||[]),r.join(" ")},_untrackClassesElement:function(e){var n=this;t.each(n.classesElementLookup,function(r,i){-1!==t.inArray(e.target,i)&&(n.classesElementLookup[r]=t(i.not(e.target).get()))})},_removeClass:function(t,e,n){return this._toggleClass(t,e,n,!1)},_addClass:function(t,e,n){return this._toggleClass(t,e,n,!0)},_toggleClass:function(t,e,n,r){r="boolean"==typeof r?r:n;var i="string"==typeof t||null===t,o={extra:i?e:n,keys:i?t:e,element:i?this.element:t,add:r};return o.element.toggleClass(this._classes(o),r),this},_on:function(e,n,r){var i,o=this;"boolean"!=typeof e&&(r=n,n=e,e=!1),r?(n=i=t(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),t.each(r,function(r,a){function s(){if(e||!0!==o.options.disabled&&!t(this).hasClass("ui-state-disabled"))return("string"==typeof a?o[a]:a).apply(o,arguments)}"string"!=typeof a&&(s.guid=a.guid=a.guid||s.guid||t.guid++);var l=r.match(/^([\w:-]*)\s*(.*)$/),u=l[1]+o.eventNamespace,c=l[2];c?i.on(u,c,s):n.on(u,s)})},_off:function(e,n){n=(n||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(n).off(n),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function n(){return("string"==typeof t?r[t]:t).apply(r,arguments)}var r=this;return setTimeout(n,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,n,r){var i,o,a=this.options[e];if(r=r||{},n=t.Event(n),n.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),n.target=this.element[0],o=n.originalEvent)for(i in o)i in n||(n[i]=o[i]);return this.element.trigger(n,r),!(t.isFunction(a)&&!1===a.apply(this.element[0],[n].concat(r))||n.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,n){t.Widget.prototype["_"+e]=function(r,i,o){"string"==typeof i&&(i={effect:i});var a,s=i?!0===i||"number"==typeof i?n:i.effect||n:e;i=i||{},"number"==typeof i&&(i={duration:i}),a=!t.isEmptyObject(i),i.complete=o,i.delay&&r.delay(i.delay),a&&t.effects&&t.effects.effect[s]?r[e](i):s!==e&&r[s]?r[s](i.duration,i.easing,o):r.queue(function(n){t(this)[e](),o&&o.call(r[0]),n()})}}),t.widget})},function(t,e,n){(function(t,r){var i;(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function l(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function u(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function c(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function f(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function p(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function d(t,e){return!!(null==t?0:t.length)&&C(t,e,0)>-1}function h(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function v(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function g(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function m(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function y(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function b(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function _(t){return t.split("")}function x(t){return t.match(qe)||[]}function w(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function k(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function C(t,e,n){return e===e?J(t,e,n):k(t,T,n)}function $(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function T(t){return t!==t}function S(t,e){var n=null==t?0:t.length;return n?D(t,e)/n:Pt}function A(t){return function(e){return null==e?it:e[t]}}function E(t){return function(e){return null==t?it:t[e]}}function O(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function j(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function D(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==it&&(n=n===it?o:n+o)}return n}function N(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function I(t,e){return v(e,function(e){return[e,t[e]]})}function P(t){return function(e){return t(e)}}function L(t,e){return v(e,function(e){return t[e]})}function R(t,e){return t.has(e)}function M(t,e){for(var n=-1,r=t.length;++n<r&&C(e,t[n],0)>-1;);return n}function F(t,e){for(var n=t.length;n--&&C(e,t[n],0)>-1;);return n}function q(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function B(t){return"\\"+An[t]}function H(t,e){return null==t?it:t[e]}function U(t){return bn.test(t)}function z(t){return _n.test(t)}function W(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function V(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function X(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ct||(t[n]=ct,o[i++]=n)}return o}function G(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function Z(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function J(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function K(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return U(t)?et(t):Wn(t)}function tt(t){return U(t)?nt(t):_(t)}function et(t){for(var e=mn.lastIndex=0;mn.test(t);)++e;return e}function nt(t){return t.match(mn)||[]}function rt(t){return t.match(yn)||[]}var it,ot=200,at="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",st="Expected a function",lt="__lodash_hash_undefined__",ut=500,ct="__lodash_placeholder__",ft=1,pt=2,dt=4,ht=1,vt=2,gt=1,mt=2,yt=4,bt=8,_t=16,xt=32,wt=64,kt=128,Ct=256,$t=512,Tt=30,St="...",At=800,Et=16,Ot=1,jt=2,Dt=1/0,Nt=9007199254740991,It=1.7976931348623157e308,Pt=NaN,Lt=4294967295,Rt=Lt-1,Mt=Lt>>>1,Ft=[["ary",kt],["bind",gt],["bindKey",mt],["curry",bt],["curryRight",_t],["flip",$t],["partial",xt],["partialRight",wt],["rearg",Ct]],qt="[object Arguments]",Bt="[object Array]",Ht="[object AsyncFunction]",Ut="[object Boolean]",zt="[object Date]",Wt="[object DOMException]",Vt="[object Error]",Xt="[object Function]",Yt="[object GeneratorFunction]",Gt="[object Map]",Zt="[object Number]",Jt="[object Null]",Kt="[object Object]",Qt="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",le="[object DataView]",ue="[object Float32Array]",ce="[object Float64Array]",fe="[object Int8Array]",pe="[object Int16Array]",de="[object Int32Array]",he="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",me="[object Uint32Array]",ye=/\b__p \+= '';/g,be=/\b(__p \+=) '' \+/g,_e=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,we=/[&<>"']/g,ke=RegExp(xe.source),Ce=RegExp(we.source),$e=/<%-([\s\S]+?)%>/g,Te=/<%([\s\S]+?)%>/g,Se=/<%=([\s\S]+?)%>/g,Ae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ee=/^\w*$/,Oe=/^\./,je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,De=/[\\^$.*+?()[\]{}|]/g,Ne=RegExp(De.source),Ie=/^\s+|\s+$/g,Pe=/^\s+/,Le=/\s+$/,Re=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,Fe=/,? & /,qe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Be=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ue=/\w*$/,ze=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ve=/^\[object .+?Constructor\]$/,Xe=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Ge=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ze=/($^)/,Je=/['\n\r\u2028\u2029\\]/g,Ke="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+Qe+"]",en="["+Ke+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+Qe+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",ln="[A-Z\\xc0-\\xd6\\xd8-\\xde]",un="(?:"+nn+"|"+rn+")",cn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",fn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+cn+")*",pn="[\\ufe0e\\ufe0f]?"+cn+fn,dn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+pn,hn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",vn=RegExp("['’]","g"),gn=RegExp(en,"g"),mn=RegExp(on+"(?="+on+")|"+hn+pn,"g"),yn=RegExp([ln+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,ln,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,ln+un,"$"].join("|")+")",ln+"?"+un+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ln+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",dn].join("|"),"g"),bn=RegExp("[\\u200d\\ud800-\\udfff"+Ke+"\\ufe0e\\ufe0f]"),_n=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],wn=-1,kn={};kn[ue]=kn[ce]=kn[fe]=kn[pe]=kn[de]=kn[he]=kn[ve]=kn[ge]=kn[me]=!0,kn[qt]=kn[Bt]=kn[se]=kn[Ut]=kn[le]=kn[zt]=kn[Vt]=kn[Xt]=kn[Gt]=kn[Zt]=kn[Kt]=kn[te]=kn[ee]=kn[ne]=kn[oe]=!1;var Cn={};Cn[qt]=Cn[Bt]=Cn[se]=Cn[le]=Cn[Ut]=Cn[zt]=Cn[ue]=Cn[ce]=Cn[fe]=Cn[pe]=Cn[de]=Cn[Gt]=Cn[Zt]=Cn[Kt]=Cn[te]=Cn[ee]=Cn[ne]=Cn[re]=Cn[he]=Cn[ve]=Cn[ge]=Cn[me]=!0,Cn[Vt]=Cn[Xt]=Cn[oe]=!1;var $n={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Tn={"&":"&","<":"<",">":">",'"':""","'":"'"},Sn={"&":"&","<":"<",">":">",""":'"',"'":"'"},An={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},En=parseFloat,On=parseInt,jn="object"==typeof t&&t&&t.Object===Object&&t,Dn="object"==typeof self&&self&&self.Object===Object&&self,Nn=jn||Dn||Function("return this")(),In="object"==typeof e&&e&&!e.nodeType&&e,Pn=In&&"object"==typeof r&&r&&!r.nodeType&&r,Ln=Pn&&Pn.exports===In,Rn=Ln&&jn.process,Mn=function(){try{return Rn&&Rn.binding&&Rn.binding("util")}catch(t){}}(),Fn=Mn&&Mn.isArrayBuffer,qn=Mn&&Mn.isDate,Bn=Mn&&Mn.isMap,Hn=Mn&&Mn.isRegExp,Un=Mn&&Mn.isSet,zn=Mn&&Mn.isTypedArray,Wn=A("length"),Vn=E($n),Xn=E(Tn),Yn=E(Sn),Gn=function t(e){function n(t){if(ol(t)&&!mp(t)&&!(t instanceof _)){if(t instanceof i)return t;if(gc.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function _(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Lt,this.__views__=[]}function E(){var t=new _(this.__wrapped__);return t.__actions__=Ri(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ri(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ri(this.__views__),t}function J(){if(this.__filtered__){var t=new _(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=mp(t),r=e<0,i=n?t.length:0,o=So(0,i,this.__views__),a=o.start,s=o.end,l=s-a,u=r?s:a-1,c=this.__iteratees__,f=c.length,p=0,d=Vc(l,this.__takeCount__);if(!n||!r&&i==l&&d==l)return yi(t,this.__actions__);var h=[];t:for(;l--&&p<d;){u+=e;for(var v=-1,g=t[u];++v<f;){var m=c[v],y=m.iteratee,b=m.type,_=y(g);if(b==jt)g=_;else if(!_){if(b==Ot)continue t;break t}}h[p++]=g}return h}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function qe(){this.__data__=nf?nf(null):{},this.size=0}function Ke(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function Qe(t){var e=this.__data__;if(nf){var n=e[t];return n===lt?it:n}return gc.call(e,t)?e[t]:it}function tn(t){var e=this.__data__;return nf?e[t]!==it:gc.call(e,t)}function en(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nf&&e===it?lt:e,this}function nn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function rn(){this.__data__=[],this.size=0}function on(t){var e=this.__data__,n=Zn(e,t);return!(n<0)&&(n==e.length-1?e.pop():Oc.call(e,n,1),--this.size,!0)}function an(t){var e=this.__data__,n=Zn(e,t);return n<0?it:e[n][1]}function sn(t){return Zn(this.__data__,t)>-1}function ln(t,e){var n=this.__data__,r=Zn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function un(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function cn(){this.size=0,this.__data__={hash:new nt,map:new(Kc||nn),string:new nt}}function fn(t){var e=ko(this,t).delete(t);return this.size-=e?1:0,e}function pn(t){return ko(this,t).get(t)}function dn(t){return ko(this,t).has(t)}function hn(t,e){var n=ko(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function mn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new un;++e<n;)this.add(t[e])}function yn(t){return this.__data__.set(t,lt),this}function bn(t){return this.__data__.has(t)}function _n(t){var e=this.__data__=new nn(t);this.size=e.size}function $n(){this.__data__=new nn,this.size=0}function Tn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function Sn(t){return this.__data__.get(t)}function An(t){return this.__data__.has(t)}function jn(t,e){var n=this.__data__;if(n instanceof nn){var r=n.__data__;if(!Kc||r.length<ot-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new un(r)}return n.set(t,e),this.size=n.size,this}function Dn(t,e){var n=mp(t),r=!n&&gp(t),i=!n&&!r&&bp(t),o=!n&&!r&&!i&&Cp(t),a=n||r||i||o,s=a?N(t.length,uc):[],l=s.length;for(var u in t)!e&&!gc.call(t,u)||a&&("length"==u||i&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||Po(u,l))||s.push(u);return s}function In(t){var e=t.length;return e?t[Qr(0,e-1)]:it}function Pn(t,e){return Ko(Ri(t),nr(e,0,t.length))}function Rn(t){return Ko(Ri(t))}function Mn(t,e,n){(n===it||Ws(t[e],n))&&(n!==it||e in t)||tr(t,e,n)}function Wn(t,e,n){var r=t[e];gc.call(t,e)&&Ws(r,n)&&(n!==it||e in t)||tr(t,e,n)}function Zn(t,e){for(var n=t.length;n--;)if(Ws(t[n][0],e))return n;return-1}function Jn(t,e,n,r){return vf(t,function(t,i,o){e(r,t,n(t),o)}),r}function Kn(t,e){return t&&Mi(e,ql(e),t)}function Qn(t,e){return t&&Mi(e,Bl(e),t)}function tr(t,e,n){"__proto__"==e&&Ic?Ic(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function er(t,e){for(var n=-1,r=e.length,i=nc(r),o=null==t;++n<r;)i[n]=o?it:Rl(t,e[n]);return i}function nr(t,e,n){return t===t&&(n!==it&&(t=t<=n?t:n),e!==it&&(t=t>=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e&ft,l=e&pt,c=e&dt;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!il(t))return t;var f=mp(t);if(f){if(a=Oo(t),!s)return Ri(t,a)}else{var p=Sf(t),d=p==Xt||p==Yt;if(bp(t))return $i(t,s);if(p==Kt||p==qt||d&&!i){if(a=l||d?{}:jo(t),!s)return l?qi(t,Qn(a,t)):Fi(t,Kn(a,t))}else{if(!Cn[p])return i?t:{};a=Do(t,p,rr,s)}}o||(o=new _n);var h=o.get(t);if(h)return h;o.set(t,a);var v=c?l?bo:yo:l?Bl:ql,g=f?it:v(t);return u(g||t,function(r,i){g&&(i=r,r=t[i]),Wn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=ql(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=sc(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new cc(st);return Of(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=d,a=!0,s=t.length,l=[],u=e.length;if(!s)return l;n&&(e=v(e,P(n))),r?(o=h,a=!1):e.length>=ot&&(o=R,a=!1,e=new mn(e));t:for(;++i<s;){var c=t[i],f=null==n?c:n(c);if(c=r||0!==c?c:0,a&&f===f){for(var p=u;p--;)if(e[p]===f)continue t;l.push(c)}else o(e,f,r)||l.push(c)}return l}function lr(t,e){var n=!0;return vf(t,function(t,r,i){return n=!!e(t,r,i)}),n}function ur(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(s===it?a===a&&!gl(a):n(a,s)))var s=a,l=o}return l}function cr(t,e,n,r){var i=t.length;for(n=wl(n),n<0&&(n=-n>i?0:i+n),r=r===it||r>i?i:wl(r),r<0&&(r+=i),r=n>r?0:kl(r);n<r;)t[n++]=e;return t}function fr(t,e){var n=[];return vf(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function pr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Io),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?pr(s,e-1,n,r,i):g(i,s):r||(i[i.length]=s)}return i}function dr(t,e){return t&&mf(t,e,ql)}function hr(t,e){return t&&yf(t,e,ql)}function vr(t,e){return p(e,function(e){return el(t[e])})}function gr(t,e){e=ki(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[Qo(e[n++])];return n&&n==r?t:it}function mr(t,e,n){var r=e(t);return mp(t)?r:g(r,n(t))}function yr(t){return null==t?t===it?ie:Jt:Nc&&Nc in sc(t)?To(t):Vo(t)}function br(t,e){return t>e}function _r(t,e){return null!=t&&gc.call(t,e)}function xr(t,e){return null!=t&&e in sc(t)}function wr(t,e,n){return t>=Vc(e,n)&&t<Wc(e,n)}function kr(t,e,n){for(var r=n?h:d,i=t[0].length,o=t.length,a=o,s=nc(o),l=1/0,u=[];a--;){var c=t[a];a&&e&&(c=v(c,P(e))),l=Vc(c.length,l),s[a]=!n&&(e||i>=120&&c.length>=120)?new mn(a&&c):it}c=t[0];var f=-1,p=s[0];t:for(;++f<i&&u.length<l;){var g=c[f],m=e?e(g):g;if(g=n||0!==g?g:0,!(p?R(p,m):r(u,m,n))){for(a=o;--a;){var y=s[a];if(!(y?R(y,m):r(t[a],m,n)))continue t}p&&p.push(m),u.push(g)}}return u}function Cr(t,e,n,r){return dr(t,function(t,i,o){e(r,n(t),i,o)}),r}function $r(t,e,n){e=ki(e,t),t=Yo(t,e);var r=null==t?t:t[Qo(xa(e))];return null==r?it:s(r,t,n)}function Tr(t){return ol(t)&&yr(t)==qt}function Sr(t){return ol(t)&&yr(t)==se}function Ar(t){return ol(t)&&yr(t)==zt}function Er(t,e,n,r,i){return t===e||(null==t||null==e||!ol(t)&&!ol(e)?t!==t&&e!==e:Or(t,e,n,r,Er,i))}function Or(t,e,n,r,i,o){var a=mp(t),s=mp(e),l=a?Bt:Sf(t),u=s?Bt:Sf(e);l=l==qt?Kt:l,u=u==qt?Kt:u;var c=l==Kt,f=u==Kt,p=l==u;if(p&&bp(t)){if(!bp(e))return!1;a=!0,c=!1}if(p&&!c)return o||(o=new _n),a||Cp(t)?ho(t,e,n,r,i,o):vo(t,e,l,n,r,i,o);if(!(n&ht)){var d=c&&gc.call(t,"__wrapped__"),h=f&&gc.call(e,"__wrapped__");if(d||h){var v=d?t.value():t,g=h?e.value():e;return o||(o=new _n),i(v,g,n,r,o)}}return!!p&&(o||(o=new _n),go(t,e,n,r,i,o))}function jr(t){return ol(t)&&Sf(t)==Gt}function Dr(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=sc(t);i--;){var s=n[i];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i<o;){s=n[i];var l=s[0],u=t[l],c=s[1];if(a&&s[2]){if(u===it&&!(l in t))return!1}else{var f=new _n;if(r)var p=r(u,c,l,t,e,f);if(!(p===it?Er(c,u,ht|vt,r,f):p))return!1}}return!0}function Nr(t){return!(!il(t)||qo(t))&&(el(t)?wc:Ve).test(ta(t))}function Ir(t){return ol(t)&&yr(t)==te}function Pr(t){return ol(t)&&Sf(t)==ee}function Lr(t){return ol(t)&&rl(t.length)&&!!kn[yr(t)]}function Rr(t){return"function"==typeof t?t:null==t?Ou:"object"==typeof t?mp(t)?Ur(t[0],t[1]):Hr(t):Mu(t)}function Mr(t){if(!Bo(t))return zc(t);var e=[];for(var n in sc(t))gc.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Fr(t){if(!il(t))return Wo(t);var e=Bo(t),n=[];for(var r in t)("constructor"!=r||!e&&gc.call(t,r))&&n.push(r);return n}function qr(t,e){return t<e}function Br(t,e){var n=-1,r=Vs(t)?nc(t.length):[];return vf(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function Hr(t){var e=Co(t);return 1==e.length&&e[0][2]?Uo(e[0][0],e[0][1]):function(n){return n===t||Dr(n,t,e)}}function Ur(t,e){return Ro(t)&&Ho(e)?Uo(Qo(t),e):function(n){var r=Rl(n,t);return r===it&&r===e?Fl(n,t):Er(e,r,ht|vt)}}function zr(t,e,n,r,i){t!==e&&mf(e,function(o,a){if(il(o))i||(i=new _n),Wr(t,e,a,n,zr,r,i);else{var s=r?r(t[a],o,a+"",t,e,i):it;s===it&&(s=o),Mn(t,a,s)}},Bl)}function Wr(t,e,n,r,i,o,a){var s=t[n],l=e[n],u=a.get(l);if(u)return void Mn(t,n,u);var c=o?o(s,l,n+"",t,e,a):it,f=c===it;if(f){var p=mp(l),d=!p&&bp(l),h=!p&&!d&&Cp(l);c=l,p||d||h?mp(s)?c=s:Xs(s)?c=Ri(s):d?(f=!1,c=$i(l,!0)):h?(f=!1,c=Di(l,!0)):c=[]:dl(l)||gp(l)?(c=s,gp(s)?c=$l(s):(!il(s)||r&&el(s))&&(c=jo(l))):f=!1}f&&(a.set(l,c),i(c,l,r,o,a),a.delete(l)),Mn(t,n,c)}function Vr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Po(e,n)?t[e]:it}function Xr(t,e,n){var r=-1;return e=v(e.length?e:[Ou],P(wo())),j(Br(t,function(t,n,i){return{criteria:v(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return Ii(t,e,n)})}function Yr(t,e){return Gr(t,e,function(e,n){return Fl(t,n)})}function Gr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=gr(t,a);n(s,a)&&oi(o,ki(a,t),s)}return o}function Zr(t){return function(e){return gr(e,t)}}function Jr(t,e,n,r){var i=r?$:C,o=-1,a=e.length,s=t;for(t===e&&(e=Ri(e)),n&&(s=v(t,P(n)));++o<a;)for(var l=0,u=e[o],c=n?n(u):u;(l=i(s,c,l,r))>-1;)s!==t&&Oc.call(s,l,1),Oc.call(t,l,1);return t}function Kr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Po(i)?Oc.call(t,i,1):vi(t,i)}}return t}function Qr(t,e){return t+Fc(Gc()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=Wc(Mc((e-t)/(n||1)),0),a=nc(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Nt)return n;do{e%2&&(n+=t),(e=Fc(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return jf(Xo(t,e,Ou),t+"")}function ri(t){return In(Ql(t))}function ii(t,e){var n=Ql(t);return Ko(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!il(t))return t;e=ki(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++i<o;){var l=Qo(e[i]),u=n;if(i!=a){var c=s[l];u=r?r(c,l,s):it,u===it&&(u=il(c)?c:Po(e[i+1])?[]:{})}Wn(s,l,u),s=s[l]}return t}function ai(t){return Ko(Ql(t))}function si(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nc(i);++r<i;)o[r]=t[r+e];return o}function li(t,e){var n;return vf(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function ui(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Mt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!gl(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return ci(t,e,Ou,n)}function ci(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,s=null===e,l=gl(e),u=e===it;i<o;){var c=Fc((i+o)/2),f=n(t[c]),p=f!==it,d=null===f,h=f===f,v=gl(f);if(a)var g=r||h;else g=u?h&&(r||p):s?h&&p&&(r||!d):l?h&&p&&!d&&(r||!v):!d&&!v&&(r?f<=e:f<e);g?i=c+1:o=c}return Vc(o,Rt)}function fi(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!Ws(s,l)){var l=s;o[i++]=0===a?0:a}}return o}function pi(t){return"number"==typeof t?t:gl(t)?Pt:+t}function di(t){if("string"==typeof t)return t;if(mp(t))return v(t,di)+"";if(gl(t))return df?df.call(t):"";var e=t+"";return"0"==e&&1/t==-Dt?"-0":e}function hi(t,e,n){var r=-1,i=d,o=t.length,a=!0,s=[],l=s;if(n)a=!1,i=h;else if(o>=ot){var u=e?null:kf(t);if(u)return G(u);a=!1,i=R,l=new mn}else l=e?[]:s;t:for(;++r<o;){var c=t[r],f=e?e(c):c;if(c=n||0!==c?c:0,a&&f===f){for(var p=l.length;p--;)if(l[p]===f)continue t;e&&l.push(f),s.push(c)}else i(l,f,n)||(l!==s&&l.push(f),s.push(c))}return s}function vi(t,e){return e=ki(e,t),null==(t=Yo(t,e))||delete t[Qo(xa(e))]}function gi(t,e,n,r){return oi(t,e,n(gr(t,e)),r)}function mi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?si(t,r?0:o,r?o+1:i):si(t,r?o+1:0,r?i:o)}function yi(t,e){var n=t;return n instanceof _&&(n=n.value()),m(e,function(t,e){return e.func.apply(e.thisArg,g([t],e.args))},n)}function bi(t,e,n){var r=t.length;if(r<2)return r?hi(t[0]):[];for(var i=-1,o=nc(r);++i<r;)for(var a=t[i],s=-1;++s<r;)s!=i&&(o[i]=sr(o[i]||a,t[s],e,n));return hi(pr(o,1),e,n)}function _i(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var s=r<o?e[r]:it;n(a,t[r],s)}return a}function xi(t){return Xs(t)?t:[]}function wi(t){return"function"==typeof t?t:Ou}function ki(t,e){return mp(t)?t:Ro(t,e)?[t]:Df(Sl(t))}function Ci(t,e,n){var r=t.length;return n=n===it?r:n,!e&&n>=r?t:si(t,e,n)}function $i(t,e){if(e)return t.slice();var n=t.length,r=Tc?Tc(n):new t.constructor(n);return t.copy(r),r}function Ti(t){var e=new t.constructor(t.byteLength);return new $c(e).set(new $c(t)),e}function Si(t,e){var n=e?Ti(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ai(t,e,n){return m(e?n(V(t),ft):V(t),o,new t.constructor)}function Ei(t){var e=new t.constructor(t.source,Ue.exec(t));return e.lastIndex=t.lastIndex,e}function Oi(t,e,n){return m(e?n(G(t),ft):G(t),a,new t.constructor)}function ji(t){return pf?sc(pf.call(t)):{}}function Di(t,e){var n=e?Ti(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ni(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=gl(t),a=e!==it,s=null===e,l=e===e,u=gl(e);if(!s&&!u&&!o&&t>e||o&&a&&l&&!s&&!u||r&&a&&l||!n&&l||!i)return 1;if(!r&&!o&&!u&&t<e||u&&n&&i&&!r&&!o||s&&n&&i||!a&&i||!l)return-1}return 0}function Ii(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;++r<a;){var l=Ni(i[r],o[r]);if(l){if(r>=s)return l;return l*("desc"==n[r]?-1:1)}}return t.index-e.index}function Pi(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,l=e.length,u=Wc(o-a,0),c=nc(l+u),f=!r;++s<l;)c[s]=e[s];for(;++i<a;)(f||i<o)&&(c[n[i]]=t[i]);for(;u--;)c[s++]=t[i++];return c}function Li(t,e,n,r){for(var i=-1,o=t.length,a=-1,s=n.length,l=-1,u=e.length,c=Wc(o-s,0),f=nc(c+u),p=!r;++i<c;)f[i]=t[i];for(var d=i;++l<u;)f[d+l]=e[l];for(;++a<s;)(p||i<o)&&(f[d+n[a]]=t[i++]);return f}function Ri(t,e){var n=-1,r=t.length;for(e||(e=nc(r));++n<r;)e[n]=t[n];return e}function Mi(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],l=r?r(n[s],t[s],s,n,t):it;l===it&&(l=t[s]),i?tr(n,s,l):Wn(n,s,l)}return n}function Fi(t,e){return Mi(t,$f(t),e)}function qi(t,e){return Mi(t,Tf(t),e)}function Bi(t,e){return function(n,r){var i=mp(n)?l:Jn,o=e?e():{};return i(n,t,wo(r,2),o)}}function Hi(t){return ni(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Lo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=sc(e);++r<i;){var s=n[r];s&&t(e,s,r,o)}return e})}function Ui(t,e){return function(n,r){if(null==n)return n;if(!Vs(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=sc(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function zi(t){return function(e,n,r){for(var i=-1,o=sc(e),a=r(e),s=a.length;s--;){var l=a[t?s:++i];if(!1===n(o[l],l,o))break}return e}}function Wi(t,e,n){function r(){return(this&&this!==Nn&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e>,o=Yi(t);return r}function Vi(t){return function(e){e=Sl(e);var n=U(e)?tt(e):it,r=n?n[0]:e.charAt(0),i=n?Ci(n,1).join(""):e.slice(1);return r[t]()+i}}function Xi(t){return function(e){return m($u(ou(e).replace(vn,"")),t,"")}}function Yi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=hf(t.prototype),r=t.apply(n,e);return il(r)?r:n}}function Gi(t,e,n){function r(){for(var o=arguments.length,a=nc(o),l=o,u=xo(r);l--;)a[l]=arguments[l];var c=o<3&&a[0]!==u&&a[o-1]!==u?[]:Y(a,u);return(o-=c.length)<n?ao(t,e,Ki,r.placeholder,it,a,c,it,it,n-o):s(this&&this!==Nn&&this instanceof r?i:t,this,a)}var i=Yi(t);return r}function Zi(t){return function(e,n,r){var i=sc(e);if(!Vs(e)){var o=wo(n,3);e=ql(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:it}}function Ji(t){return mo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new cc(st);if(o&&!s&&"wrapper"==_o(a))var s=new i([],!0)}for(r=s?r:n;++r<n;){a=e[r];var l=_o(a),u="wrapper"==l?Cf(a):it;s=u&&Fo(u[0])&&u[1]==(kt|bt|xt|Ct)&&!u[4].length&&1==u[9]?s[_o(u[0])].apply(s,u[3]):1==a.length&&Fo(a)?s[l]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&mp(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Ki(t,e,n,r,i,o,a,s,l,u){function c(){for(var m=arguments.length,y=nc(m),b=m;b--;)y[b]=arguments[b];if(h)var _=xo(c),x=q(y,_);if(r&&(y=Pi(y,r,i,h)),o&&(y=Li(y,o,a,h)),m-=x,h&&m<u){var w=Y(y,_);return ao(t,e,Ki,c.placeholder,n,y,w,s,l,u-m)}var k=p?n:this,C=d?k[t]:t;return m=y.length,s?y=Go(y,s):v&&m>1&&y.reverse(),f&&l<m&&(y.length=l),this&&this!==Nn&&this instanceof c&&(C=g||Yi(C)),C.apply(k,y)}var f=e&kt,p=e>,d=e&mt,h=e&(bt|_t),v=e&$t,g=d?it:Yi(t);return c}function Qi(t,e){return function(n,r){return Cr(n,t,e(r),{})}}function to(t,e){return function(n,r){var i;if(n===it&&r===it)return e;if(n!==it&&(i=n),r!==it){if(i===it)return r;"string"==typeof n||"string"==typeof r?(n=di(n),r=di(r)):(n=pi(n),r=pi(r)),i=t(n,r)}return i}}function eo(t){return mo(function(e){return e=v(e,P(wo())),ni(function(n){var r=this;return t(e,function(t){return s(t,r,n)})})})}function no(t,e){e=e===it?" ":di(e);var n=e.length;if(n<2)return n?ei(e,t):e;var r=ei(e,Mc(t/Q(e)));return U(e)?Ci(tt(r),0,t).join(""):r.slice(0,t)}function ro(t,e,n,r){function i(){for(var e=-1,l=arguments.length,u=-1,c=r.length,f=nc(c+l),p=this&&this!==Nn&&this instanceof i?a:t;++u<c;)f[u]=r[u];for(;l--;)f[u++]=arguments[++e];return s(p,o?n:this,f)}var o=e>,a=Yi(t);return i}function io(t){return function(e,n,r){return r&&"number"!=typeof r&&Lo(e,n,r)&&(n=r=it),e=xl(e),n===it?(n=e,e=0):n=xl(n),r=r===it?e<n?1:-1:xl(r),ti(e,n,r,t)}}function oo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Cl(e),n=Cl(n)),t(e,n)}}function ao(t,e,n,r,i,o,a,s,l,u){var c=e&bt,f=c?a:it,p=c?it:a,d=c?o:it,h=c?it:o;e|=c?xt:wt,(e&=~(c?wt:xt))&yt||(e&=~(gt|mt));var v=[t,e,i,d,f,h,p,s,l,u],g=n.apply(it,v);return Fo(t)&&Ef(g,v),g.placeholder=r,Zo(g,t,e)}function so(t){var e=ac[t];return function(t,n){if(t=Cl(t),n=null==n?0:Vc(wl(n),292)){var r=(Sl(t)+"e").split("e");return r=(Sl(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function lo(t){return function(e){var n=Sf(e);return n==Gt?V(e):n==ee?Z(e):I(e,t(e))}}function uo(t,e,n,r,i,o,a,s){var l=e&mt;if(!l&&"function"!=typeof t)throw new cc(st);var u=r?r.length:0;if(u||(e&=~(xt|wt),r=i=it),a=a===it?a:Wc(wl(a),0),s=s===it?s:wl(s),u-=i?i.length:0,e&wt){var c=r,f=i;r=i=it}var p=l?it:Cf(t),d=[t,e,n,r,i,c,f,o,a,s];if(p&&zo(d,p),t=d[0],e=d[1],n=d[2],r=d[3],i=d[4],s=d[9]=d[9]===it?l?0:t.length:Wc(d[9]-u,0),!s&&e&(bt|_t)&&(e&=~(bt|_t)),e&&e!=gt)h=e==bt||e==_t?Gi(t,e,s):e!=xt&&e!=(gt|xt)||i.length?Ki.apply(it,d):ro(t,e,n,r);else var h=Wi(t,e,n);return Zo((p?bf:Ef)(h,d),t,e)}function co(t,e,n,r){return t===it||Ws(t,dc[n])&&!gc.call(r,n)?e:t}function fo(t,e,n,r,i,o){return il(t)&&il(e)&&(o.set(e,t),zr(t,e,it,fo,o),o.delete(e)),t}function po(t){return dl(t)?it:t}function ho(t,e,n,r,i,o){var a=n&ht,s=t.length,l=e.length;if(s!=l&&!(a&&l>s))return!1;var u=o.get(t);if(u&&o.get(e))return u==e;var c=-1,f=!0,p=n&vt?new mn:it;for(o.set(t,e),o.set(e,t);++c<s;){var d=t[c],h=e[c];if(r)var v=a?r(h,d,c,e,t,o):r(d,h,c,t,e,o);if(v!==it){if(v)continue;f=!1;break}if(p){if(!b(e,function(t,e){if(!R(p,e)&&(d===t||i(d,t,n,r,o)))return p.push(e)})){f=!1;break}}else if(d!==h&&!i(d,h,n,r,o)){f=!1;break}}return o.delete(t),o.delete(e),f}function vo(t,e,n,r,i,o,a){switch(n){case le:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case se:return!(t.byteLength!=e.byteLength||!o(new $c(t),new $c(e)));case Ut:case zt:case Zt:return Ws(+t,+e);case Vt:return t.name==e.name&&t.message==e.message;case te:case ne:return t==e+"";case Gt:var s=V;case ee:var l=r&ht;if(s||(s=G),t.size!=e.size&&!l)return!1;var u=a.get(t);if(u)return u==e;r|=vt,a.set(t,e);var c=ho(s(t),s(e),r,i,o,a);return a.delete(t),c;case re:if(pf)return pf.call(t)==pf.call(e)}return!1}function go(t,e,n,r,i,o){var a=n&ht,s=yo(t),l=s.length;if(l!=yo(e).length&&!a)return!1;for(var u=l;u--;){var c=s[u];if(!(a?c in e:gc.call(e,c)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var p=!0;o.set(t,e),o.set(e,t);for(var d=a;++u<l;){c=s[u];var h=t[c],v=e[c];if(r)var g=a?r(v,h,c,e,t,o):r(h,v,c,t,e,o);if(!(g===it?h===v||i(h,v,n,r,o):g)){p=!1;break}d||(d="constructor"==c)}if(p&&!d){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(e),p}function mo(t){return jf(Xo(t,it,da),t+"")}function yo(t){return mr(t,ql,$f)}function bo(t){return mr(t,Bl,Tf)}function _o(t){for(var e=t.name+"",n=of[e],r=gc.call(of,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function xo(t){return(gc.call(n,"placeholder")?n:t).placeholder}function wo(){var t=n.iteratee||ju;return t=t===ju?Rr:t,arguments.length?t(arguments[0],arguments[1]):t}function ko(t,e){var n=t.__data__;return Mo(e)?n["string"==typeof e?"string":"hash"]:n.map}function Co(t){for(var e=ql(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Ho(i)]}return e}function $o(t,e){var n=H(t,e);return Nr(n)?n:it}function To(t){var e=gc.call(t,Nc),n=t[Nc];try{t[Nc]=it;var r=!0}catch(t){}var i=bc.call(t);return r&&(e?t[Nc]=n:delete t[Nc]),i}function So(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Vc(e,t+a);break;case"takeRight":t=Wc(t,e-a)}}return{start:t,end:e}}function Ao(t){var e=t.match(Me);return e?e[1].split(Fe):[]}function Eo(t,e,n){e=ki(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=Qo(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&rl(i)&&Po(a,i)&&(mp(t)||gp(t))}function Oo(t){var e=t.length,n=t.constructor(e);return e&&"string"==typeof t[0]&&gc.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function jo(t){return"function"!=typeof t.constructor||Bo(t)?{}:hf(Sc(t))}function Do(t,e,n,r){var i=t.constructor;switch(e){case se:return Ti(t);case Ut:case zt:return new i(+t);case le:return Si(t,r);case ue:case ce:case fe:case pe:case de:case he:case ve:case ge:case me:return Di(t,r);case Gt:return Ai(t,r,n);case Zt:case ne:return new i(t);case te:return Ei(t);case ee:return Oi(t,r,n);case re:return ji(t)}}function No(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Re,"{\n/* [wrapped with "+e+"] */\n")}function Io(t){return mp(t)||gp(t)||!!(jc&&t&&t[jc])}function Po(t,e){return!!(e=null==e?Nt:e)&&("number"==typeof t||Ye.test(t))&&t>-1&&t%1==0&&t<e}function Lo(t,e,n){if(!il(n))return!1;var r=typeof e;return!!("number"==r?Vs(n)&&Po(e,n.length):"string"==r&&e in n)&&Ws(n[e],t)}function Ro(t,e){if(mp(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!gl(t))||(Ee.test(t)||!Ae.test(t)||null!=e&&t in sc(e))}function Mo(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function Fo(t){var e=_o(t),r=n[e];if("function"!=typeof r||!(e in _.prototype))return!1;if(t===r)return!0;var i=Cf(r);return!!i&&t===i[0]}function qo(t){return!!yc&&yc in t}function Bo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||dc)}function Ho(t){return t===t&&!il(t)}function Uo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==it||t in sc(n)))}}function zo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(gt|mt|kt),a=r==kt&&n==bt||r==kt&&n==Ct&&t[7].length<=e[8]||r==(kt|Ct)&&e[7].length<=e[8]&&n==bt;if(!o&&!a)return t;r>&&(t[2]=e[2],i|=n>?0:yt);var s=e[3];if(s){var l=t[3];t[3]=l?Pi(l,s,e[4]):s,t[4]=l?Y(t[3],ct):e[4]}return s=e[5],s&&(l=t[5],t[5]=l?Li(l,s,e[6]):s,t[6]=l?Y(t[5],ct):e[6]),s=e[7],s&&(t[7]=s),r&kt&&(t[8]=null==t[8]?e[8]:Vc(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Wo(t){var e=[];if(null!=t)for(var n in sc(t))e.push(n);return e}function Vo(t){return bc.call(t)}function Xo(t,e,n){return e=Wc(e===it?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Wc(r.length-e,0),a=nc(o);++i<o;)a[i]=r[e+i];i=-1;for(var l=nc(e+1);++i<e;)l[i]=r[i];return l[e]=n(a),s(t,this,l)}}function Yo(t,e){return e.length<2?t:gr(t,si(e,0,-1))}function Go(t,e){for(var n=t.length,r=Vc(e.length,n),i=Ri(t);r--;){var o=e[r];t[r]=Po(o,n)?i[o]:it}return t}function Zo(t,e,n){var r=e+"";return jf(t,No(r,ea(Ao(r),n)))}function Jo(t){var e=0,n=0;return function(){var r=Xc(),i=Et-(r-n);if(n=r,i>0){if(++e>=At)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Ko(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n<e;){var o=Qr(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function Qo(t){if("string"==typeof t||gl(t))return t;var e=t+"";return"0"==e&&1/t==-Dt?"-0":e}function ta(t){if(null!=t){try{return vc.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function ea(t,e){return u(Ft,function(n){var r="_."+n[0];e&n[1]&&!d(t,r)&&t.push(r)}),t.sort()}function na(t){if(t instanceof _)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=Ri(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function ra(t,e,n){e=(n?Lo(t,e,n):e===it)?1:Wc(wl(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=nc(Mc(r/e));i<r;)a[o++]=si(t,i,i+=e);return a}function ia(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function oa(){var t=arguments.length;if(!t)return[];for(var e=nc(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return g(mp(n)?Ri(n):[n],pr(e,1))}function aa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:wl(e),si(t,e<0?0:e,r)):[]}function sa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:wl(e),e=r-e,si(t,0,e<0?0:e)):[]}function la(t,e){return t&&t.length?mi(t,wo(e,3),!0,!0):[]}function ua(t,e){return t&&t.length?mi(t,wo(e,3),!0):[]}function ca(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Lo(t,e,n)&&(n=0,r=i),cr(t,e,n,r)):[]}function fa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:wl(n);return i<0&&(i=Wc(r+i,0)),k(t,wo(e,3),i)}function pa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==it&&(i=wl(n),i=n<0?Wc(r+i,0):Vc(i,r-1)),k(t,wo(e,3),i,!0)}function da(t){return(null==t?0:t.length)?pr(t,1):[]}function ha(t){return(null==t?0:t.length)?pr(t,Dt):[]}function va(t,e){return(null==t?0:t.length)?(e=e===it?1:wl(e),pr(t,e)):[]}function ga(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function ma(t){return t&&t.length?t[0]:it}function ya(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:wl(n);return i<0&&(i=Wc(r+i,0)),C(t,e,i)}function ba(t){return(null==t?0:t.length)?si(t,0,-1):[]}function _a(t,e){return null==t?"":Uc.call(t,e)}function xa(t){var e=null==t?0:t.length;return e?t[e-1]:it}function wa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==it&&(i=wl(n),i=i<0?Wc(r+i,0):Vc(i,r-1)),e===e?K(t,e,i):k(t,T,i,!0)}function ka(t,e){return t&&t.length?Vr(t,wl(e)):it}function Ca(t,e){return t&&t.length&&e&&e.length?Jr(t,e):t}function $a(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,wo(n,2)):t}function Ta(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,it,n):t}function Sa(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=wo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return Kr(t,i),n}function Aa(t){return null==t?t:Zc.call(t)}function Ea(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Lo(t,e,n)?(e=0,n=r):(e=null==e?0:wl(e),n=n===it?r:wl(n)),si(t,e,n)):[]}function Oa(t,e){return ui(t,e)}function ja(t,e,n){return ci(t,e,wo(n,2))}function Da(t,e){var n=null==t?0:t.length;if(n){var r=ui(t,e);if(r<n&&Ws(t[r],e))return r}return-1}function Na(t,e){return ui(t,e,!0)}function Ia(t,e,n){return ci(t,e,wo(n,2),!0)}function Pa(t,e){if(null==t?0:t.length){var n=ui(t,e,!0)-1;if(Ws(t[n],e))return n}return-1}function La(t){return t&&t.length?fi(t):[]}function Ra(t,e){return t&&t.length?fi(t,wo(e,2)):[]}function Ma(t){var e=null==t?0:t.length;return e?si(t,1,e):[]}function Fa(t,e,n){return t&&t.length?(e=n||e===it?1:wl(e),si(t,0,e<0?0:e)):[]}function qa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:wl(e),e=r-e,si(t,e<0?0:e,r)):[]}function Ba(t,e){return t&&t.length?mi(t,wo(e,3),!1,!0):[]}function Ha(t,e){return t&&t.length?mi(t,wo(e,3)):[]}function Ua(t){return t&&t.length?hi(t):[]}function za(t,e){return t&&t.length?hi(t,wo(e,2)):[]}function Wa(t,e){return e="function"==typeof e?e:it,t&&t.length?hi(t,it,e):[]}function Va(t){if(!t||!t.length)return[];var e=0;return t=p(t,function(t){if(Xs(t))return e=Wc(t.length,e),!0}),N(e,function(e){return v(t,A(e))})}function Xa(t,e){if(!t||!t.length)return[];var n=Va(t);return null==e?n:v(n,function(t){return s(e,it,t)})}function Ya(t,e){return _i(t||[],e||[],Wn)}function Ga(t,e){return _i(t||[],e||[],oi)}function Za(t){var e=n(t);return e.__chain__=!0,e}function Ja(t,e){return e(t),t}function Ka(t,e){return e(t)}function Qa(){return Za(this)}function ts(){return new i(this.value(),this.__chain__)}function es(){this.__values__===it&&(this.__values__=_l(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof _){var e=t;return this.__actions__.length&&(e=new _(this)),e=e.reverse(),e.__actions__.push({func:Ka,args:[Aa],thisArg:it}),new i(e,this.__chain__)}return this.thru(Aa)}function os(){return yi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=mp(t)?f:lr;return n&&Lo(t,e,n)&&(e=it),r(t,wo(e,3))}function ss(t,e){return(mp(t)?p:fr)(t,wo(e,3))}function ls(t,e){return pr(hs(t,e),1)}function us(t,e){return pr(hs(t,e),Dt)}function cs(t,e,n){return n=n===it?1:wl(n),pr(hs(t,e),n)}function fs(t,e){return(mp(t)?u:vf)(t,wo(e,3))}function ps(t,e){return(mp(t)?c:gf)(t,wo(e,3))}function ds(t,e,n,r){t=Vs(t)?t:Ql(t),n=n&&!r?wl(n):0;var i=t.length;return n<0&&(n=Wc(i+n,0)),vl(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&C(t,e,n)>-1}function hs(t,e){return(mp(t)?v:Br)(t,wo(e,3))}function vs(t,e,n,r){return null==t?[]:(mp(e)||(e=null==e?[]:[e]),n=r?it:n,mp(n)||(n=null==n?[]:[n]),Xr(t,e,n))}function gs(t,e,n){var r=mp(t)?m:O,i=arguments.length<3;return r(t,wo(e,4),n,i,vf)}function ms(t,e,n){var r=mp(t)?y:O,i=arguments.length<3;return r(t,wo(e,4),n,i,gf)}function ys(t,e){return(mp(t)?p:fr)(t,Ds(wo(e,3)))}function bs(t){return(mp(t)?In:ri)(t)}function _s(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:wl(e),(mp(t)?Pn:ii)(t,e)}function xs(t){return(mp(t)?Rn:ai)(t)}function ws(t){if(null==t)return 0;if(Vs(t))return vl(t)?Q(t):t.length;var e=Sf(t);return e==Gt||e==ee?t.size:Mr(t).length}function ks(t,e,n){var r=mp(t)?b:li;return n&&Lo(t,e,n)&&(e=it),r(t,wo(e,3))}function Cs(t,e){if("function"!=typeof e)throw new cc(st);return t=wl(t),function(){if(--t<1)return e.apply(this,arguments)}}function $s(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,uo(t,kt,it,it,it,it,e)}function Ts(t,e){var n;if("function"!=typeof e)throw new cc(st);return t=wl(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function Ss(t,e,n){e=n?it:e;var r=uo(t,bt,it,it,it,it,it,e);return r.placeholder=Ss.placeholder,r}function As(t,e,n){e=n?it:e;var r=uo(t,_t,it,it,it,it,it,e);return r.placeholder=As.placeholder,r}function Es(t,e,n){function r(e){var n=p,r=d;return p=d=it,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Of(s,e),b?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return _?Vc(i,h-r):i}function a(t){var n=t-m,r=t-y;return m===it||n>=e||n<0||_&&r>=h}function s(){var t=op();if(a(t))return l(t);g=Of(s,o(t))}function l(t){return g=it,x&&p?r(t):(p=d=it,v)}function u(){g!==it&&wf(g),y=0,p=m=d=g=it}function c(){return g===it?v:l(op())}function f(){var t=op(),n=a(t);if(p=arguments,d=this,m=t,n){if(g===it)return i(m);if(_)return g=Of(s,e),r(m)}return g===it&&(g=Of(s,e)),v}var p,d,h,v,g,m,y=0,b=!1,_=!1,x=!0;if("function"!=typeof t)throw new cc(st);return e=Cl(e)||0,il(n)&&(b=!!n.leading,_="maxWait"in n,h=_?Wc(Cl(n.maxWait)||0,e):h,x="trailing"in n?!!n.trailing:x),f.cancel=u,f.flush=c,f}function Os(t){return uo(t,$t)}function js(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new cc(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(js.Cache||un),n}function Ds(t){if("function"!=typeof t)throw new cc(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ns(t){return Ts(2,t)}function Is(t,e){if("function"!=typeof t)throw new cc(st);return e=e===it?e:wl(e),ni(t,e)}function Ps(t,e){if("function"!=typeof t)throw new cc(st);return e=null==e?0:Wc(wl(e),0),ni(function(n){var r=n[e],i=Ci(n,0,e);return r&&g(i,r),s(t,this,i)})}function Ls(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new cc(st);return il(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Es(t,e,{leading:r,maxWait:e,trailing:i})}function Rs(t){return $s(t,1)}function Ms(t,e){return fp(wi(e),t)}function Fs(){if(!arguments.length)return[];var t=arguments[0];return mp(t)?t:[t]}function qs(t){return rr(t,dt)}function Bs(t,e){return e="function"==typeof e?e:it,rr(t,dt,e)}function Hs(t){return rr(t,ft|dt)}function Us(t,e){return e="function"==typeof e?e:it,rr(t,ft|dt,e)}function zs(t,e){return null==e||or(t,e,ql(e))}function Ws(t,e){return t===e||t!==t&&e!==e}function Vs(t){return null!=t&&rl(t.length)&&!el(t)}function Xs(t){return ol(t)&&Vs(t)}function Ys(t){return!0===t||!1===t||ol(t)&&yr(t)==Ut}function Gs(t){return ol(t)&&1===t.nodeType&&!dl(t)}function Zs(t){if(null==t)return!0;if(Vs(t)&&(mp(t)||"string"==typeof t||"function"==typeof t.splice||bp(t)||Cp(t)||gp(t)))return!t.length;var e=Sf(t);if(e==Gt||e==ee)return!t.size;if(Bo(t))return!Mr(t).length;for(var n in t)if(gc.call(t,n))return!1;return!0}function Js(t,e){return Er(t,e)}function Ks(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Er(t,e,it,n):!!r}function Qs(t){if(!ol(t))return!1;var e=yr(t);return e==Vt||e==Wt||"string"==typeof t.message&&"string"==typeof t.name&&!dl(t)}function tl(t){return"number"==typeof t&&Hc(t)}function el(t){if(!il(t))return!1;var e=yr(t);return e==Xt||e==Yt||e==Ht||e==Qt}function nl(t){return"number"==typeof t&&t==wl(t)}function rl(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Nt}function il(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ol(t){return null!=t&&"object"==typeof t}function al(t,e){return t===e||Dr(t,e,Co(e))}function sl(t,e,n){return n="function"==typeof n?n:it,Dr(t,e,Co(e),n)}function ll(t){return pl(t)&&t!=+t}function ul(t){if(Af(t))throw new ic(at);return Nr(t)}function cl(t){return null===t}function fl(t){return null==t}function pl(t){return"number"==typeof t||ol(t)&&yr(t)==Zt}function dl(t){if(!ol(t)||yr(t)!=Kt)return!1;var e=Sc(t);if(null===e)return!0;var n=gc.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&vc.call(n)==_c}function hl(t){return nl(t)&&t>=-Nt&&t<=Nt}function vl(t){return"string"==typeof t||!mp(t)&&ol(t)&&yr(t)==ne}function gl(t){return"symbol"==typeof t||ol(t)&&yr(t)==re}function ml(t){return t===it}function yl(t){return ol(t)&&Sf(t)==oe}function bl(t){return ol(t)&&yr(t)==ae}function _l(t){if(!t)return[];if(Vs(t))return vl(t)?tt(t):Ri(t);if(Dc&&t[Dc])return W(t[Dc]());var e=Sf(t);return(e==Gt?V:e==ee?G:Ql)(t)}function xl(t){if(!t)return 0===t?t:0;if((t=Cl(t))===Dt||t===-Dt){return(t<0?-1:1)*It}return t===t?t:0}function wl(t){var e=xl(t),n=e%1;return e===e?n?e-n:e:0}function kl(t){return t?nr(wl(t),0,Lt):0}function Cl(t){if("number"==typeof t)return t;if(gl(t))return Pt;if(il(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=il(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Ie,"");var n=We.test(t);return n||Xe.test(t)?On(t.slice(2),n?2:8):ze.test(t)?Pt:+t}function $l(t){return Mi(t,Bl(t))}function Tl(t){return t?nr(wl(t),-Nt,Nt):0===t?t:0}function Sl(t){return null==t?"":di(t)}function Al(t,e){var n=hf(t);return null==e?n:Kn(n,e)}function El(t,e){return w(t,wo(e,3),dr)}function Ol(t,e){return w(t,wo(e,3),hr)}function jl(t,e){return null==t?t:mf(t,wo(e,3),Bl)}function Dl(t,e){return null==t?t:yf(t,wo(e,3),Bl)}function Nl(t,e){return t&&dr(t,wo(e,3))}function Il(t,e){return t&&hr(t,wo(e,3))}function Pl(t){return null==t?[]:vr(t,ql(t))}function Ll(t){return null==t?[]:vr(t,Bl(t))}function Rl(t,e,n){var r=null==t?it:gr(t,e);return r===it?n:r}function Ml(t,e){return null!=t&&Eo(t,e,_r)}function Fl(t,e){return null!=t&&Eo(t,e,xr)}function ql(t){return Vs(t)?Dn(t):Mr(t)}function Bl(t){return Vs(t)?Dn(t,!0):Fr(t)}function Hl(t,e){var n={};return e=wo(e,3),dr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function Ul(t,e){var n={};return e=wo(e,3),dr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function zl(t,e){return Wl(t,Ds(wo(e)))}function Wl(t,e){if(null==t)return{};var n=v(bo(t),function(t){return[t]});return e=wo(e),Gr(t,n,function(t,n){return e(t,n[0])})}function Vl(t,e,n){e=ki(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++r<i;){var o=null==t?it:t[Qo(e[r])];o===it&&(r=i,o=n),t=el(o)?o.call(t):o}return t}function Xl(t,e,n){return null==t?t:oi(t,e,n)}function Yl(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:oi(t,e,n,r)}function Gl(t,e,n){var r=mp(t),i=r||bp(t)||Cp(t);if(e=wo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:il(t)&&el(o)?hf(Sc(t)):{}}return(i?u:dr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Zl(t,e){return null==t||vi(t,e)}function Jl(t,e,n){return null==t?t:gi(t,e,wi(n))}function Kl(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:gi(t,e,wi(n),r)}function Ql(t){return null==t?[]:L(t,ql(t))}function tu(t){return null==t?[]:L(t,Bl(t))}function eu(t,e,n){return n===it&&(n=e,e=it),n!==it&&(n=Cl(n),n=n===n?n:0),e!==it&&(e=Cl(e),e=e===e?e:0),nr(Cl(t),e,n)}function nu(t,e,n){return e=xl(e),n===it?(n=e,e=0):n=xl(n),t=Cl(t),wr(t,e,n)}function ru(t,e,n){if(n&&"boolean"!=typeof n&&Lo(t,e,n)&&(e=n=it),n===it&&("boolean"==typeof e?(n=e,e=it):"boolean"==typeof t&&(n=t,t=it)),t===it&&e===it?(t=0,e=1):(t=xl(t),e===it?(e=t,t=0):e=xl(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Gc();return Vc(t+i*(e-t+En("1e-"+((i+"").length-1))),e)}return Qr(t,e)}function iu(t){return Zp(Sl(t).toLowerCase())}function ou(t){return(t=Sl(t))&&t.replace(Ge,Vn).replace(gn,"")}function au(t,e,n){t=Sl(t),e=di(e);var r=t.length;n=n===it?r:nr(wl(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function su(t){return t=Sl(t),t&&Ce.test(t)?t.replace(we,Xn):t}function lu(t){return t=Sl(t),t&&Ne.test(t)?t.replace(De,"\\$&"):t}function uu(t,e,n){t=Sl(t),e=wl(e);var r=e?Q(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Fc(i),n)+t+no(Mc(i),n)}function cu(t,e,n){t=Sl(t),e=wl(e);var r=e?Q(t):0;return e&&r<e?t+no(e-r,n):t}function fu(t,e,n){t=Sl(t),e=wl(e);var r=e?Q(t):0;return e&&r<e?no(e-r,n)+t:t}function pu(t,e,n){return n||null==e?e=0:e&&(e=+e),Yc(Sl(t).replace(Pe,""),e||0)}function du(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:wl(e),ei(Sl(t),e)}function hu(){var t=arguments,e=Sl(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function vu(t,e,n){return n&&"number"!=typeof n&&Lo(t,e,n)&&(e=n=it),(n=n===it?Lt:n>>>0)?(t=Sl(t),t&&("string"==typeof e||null!=e&&!wp(e))&&!(e=di(e))&&U(t)?Ci(tt(t),0,n):t.split(e,n)):[]}function gu(t,e,n){return t=Sl(t),n=null==n?0:nr(wl(n),0,t.length),e=di(e),t.slice(n,n+e.length)==e}function mu(t,e,r){var i=n.templateSettings;r&&Lo(t,e,r)&&(e=it),t=Sl(t),e=Ep({},e,i,co);var o,a,s=Ep({},e.imports,i.imports,co),l=ql(s),u=L(s,l),c=0,f=e.interpolate||Ze,p="__p += '",d=lc((e.escape||Ze).source+"|"+f.source+"|"+(f===Se?He:Ze).source+"|"+(e.evaluate||Ze).source+"|$","g"),h="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++wn+"]")+"\n";t.replace(d,function(e,n,r,i,s,l){return r||(r=i),p+=t.slice(c,l).replace(Je,B),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),s&&(a=!0,p+="';\n"+s+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=l+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ye,""):p).replace(be,"$1").replace(_e,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Jp(function(){return oc(l,h+"return "+p).apply(it,u)});if(g.source=p,Qs(g))throw g;return g}function yu(t){return Sl(t).toLowerCase()}function bu(t){return Sl(t).toUpperCase()}function _u(t,e,n){if((t=Sl(t))&&(n||e===it))return t.replace(Ie,"");if(!t||!(e=di(e)))return t;var r=tt(t),i=tt(e);return Ci(r,M(r,i),F(r,i)+1).join("")}function xu(t,e,n){if((t=Sl(t))&&(n||e===it))return t.replace(Le,"");if(!t||!(e=di(e)))return t;var r=tt(t);return Ci(r,0,F(r,tt(e))+1).join("")}function wu(t,e,n){if((t=Sl(t))&&(n||e===it))return t.replace(Pe,"");if(!t||!(e=di(e)))return t;var r=tt(t);return Ci(r,M(r,tt(e))).join("")}function ku(t,e){var n=Tt,r=St;if(il(e)){var i="separator"in e?e.separator:i;n="length"in e?wl(e.length):n,r="omission"in e?di(e.omission):r}t=Sl(t);var o=t.length;if(U(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-Q(r);if(s<1)return r;var l=a?Ci(a,0,s).join(""):t.slice(0,s);if(i===it)return l+r;if(a&&(s+=l.length-s),wp(i)){if(t.slice(s).search(i)){var u,c=l;for(i.global||(i=lc(i.source,Sl(Ue.exec(i))+"g")),i.lastIndex=0;u=i.exec(c);)var f=u.index;l=l.slice(0,f===it?s:f)}}else if(t.indexOf(di(i),s)!=s){var p=l.lastIndexOf(i);p>-1&&(l=l.slice(0,p))}return l+r}function Cu(t){return t=Sl(t),t&&ke.test(t)?t.replace(xe,Yn):t}function $u(t,e,n){return t=Sl(t),e=n?it:e,e===it?z(t)?rt(t):x(t):t.match(e)||[]}function Tu(t){var e=null==t?0:t.length,n=wo();return t=e?v(t,function(t){if("function"!=typeof t[1])throw new cc(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++r<e;){var i=t[r];if(s(i[0],this,n))return s(i[1],this,n)}})}function Su(t){return ir(rr(t,ft))}function Au(t){return function(){return t}}function Eu(t,e){return null==t||t!==t?e:t}function Ou(t){return t}function ju(t){return Rr("function"==typeof t?t:rr(t,ft))}function Du(t){return Hr(rr(t,ft))}function Nu(t,e){return Ur(t,rr(e,ft))}function Iu(t,e,n){var r=ql(e),i=vr(e,r);null!=n||il(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=vr(e,ql(e)));var o=!(il(n)&&"chain"in n&&!n.chain),a=el(t);return u(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=Ri(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,g([this.value()],arguments))})}),t}function Pu(){return Nn._===this&&(Nn._=xc),this}function Lu(){}function Ru(t){return t=wl(t),ni(function(e){return Vr(e,t)})}function Mu(t){return Ro(t)?A(Qo(t)):Zr(t)}function Fu(t){return function(e){return null==t?it:gr(t,e)}}function qu(){return[]}function Bu(){return!1}function Hu(){return{}}function Uu(){return""}function zu(){return!0}function Wu(t,e){if((t=wl(t))<1||t>Nt)return[];var n=Lt,r=Vc(t,Lt);e=wo(e),t-=Lt;for(var i=N(r,e);++n<t;)e(n);return i}function Vu(t){return mp(t)?v(t,Qo):gl(t)?[t]:Ri(Df(Sl(t)))}function Xu(t){var e=++mc;return Sl(t)+e}function Yu(t){return t&&t.length?ur(t,Ou,br):it}function Gu(t,e){return t&&t.length?ur(t,wo(e,2),br):it}function Zu(t){return S(t,Ou)}function Ju(t,e){return S(t,wo(e,2))}function Ku(t){return t&&t.length?ur(t,Ou,qr):it}function Qu(t,e){return t&&t.length?ur(t,wo(e,2),qr):it}function tc(t){return t&&t.length?D(t,Ou):0}function ec(t,e){return t&&t.length?D(t,wo(e,2)):0}e=null==e?Nn:Gn.defaults(Nn.Object(),e,Gn.pick(Nn,xn));var nc=e.Array,rc=e.Date,ic=e.Error,oc=e.Function,ac=e.Math,sc=e.Object,lc=e.RegExp,uc=e.String,cc=e.TypeError,fc=nc.prototype,pc=oc.prototype,dc=sc.prototype,hc=e["__core-js_shared__"],vc=pc.toString,gc=dc.hasOwnProperty,mc=0,yc=function(){var t=/[^.]+$/.exec(hc&&hc.keys&&hc.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),bc=dc.toString,_c=vc.call(sc),xc=Nn._,wc=lc("^"+vc.call(gc).replace(De,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),kc=Ln?e.Buffer:it,Cc=e.Symbol,$c=e.Uint8Array,Tc=kc?kc.allocUnsafe:it,Sc=X(sc.getPrototypeOf,sc),Ac=sc.create,Ec=dc.propertyIsEnumerable,Oc=fc.splice,jc=Cc?Cc.isConcatSpreadable:it,Dc=Cc?Cc.iterator:it,Nc=Cc?Cc.toStringTag:it,Ic=function(){try{var t=$o(sc,"defineProperty");return t({},"",{}),t}catch(t){}}(),Pc=e.clearTimeout!==Nn.clearTimeout&&e.clearTimeout,Lc=rc&&rc.now!==Nn.Date.now&&rc.now,Rc=e.setTimeout!==Nn.setTimeout&&e.setTimeout,Mc=ac.ceil,Fc=ac.floor,qc=sc.getOwnPropertySymbols,Bc=kc?kc.isBuffer:it,Hc=e.isFinite,Uc=fc.join,zc=X(sc.keys,sc),Wc=ac.max,Vc=ac.min,Xc=rc.now,Yc=e.parseInt,Gc=ac.random,Zc=fc.reverse,Jc=$o(e,"DataView"),Kc=$o(e,"Map"),Qc=$o(e,"Promise"),tf=$o(e,"Set"),ef=$o(e,"WeakMap"),nf=$o(sc,"create"),rf=ef&&new ef,of={},af=ta(Jc),sf=ta(Kc),lf=ta(Qc),uf=ta(tf),cf=ta(ef),ff=Cc?Cc.prototype:it,pf=ff?ff.valueOf:it,df=ff?ff.toString:it,hf=function(){function t(){}return function(e){if(!il(e))return{};if(Ac)return Ac(e);t.prototype=e;var n=new t;return t.prototype=it,n}}();n.templateSettings={escape:$e,evaluate:Te,interpolate:Se,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=hf(r.prototype),i.prototype.constructor=i,_.prototype=hf(r.prototype),_.prototype.constructor=_,nt.prototype.clear=qe,nt.prototype.delete=Ke,nt.prototype.get=Qe,nt.prototype.has=tn,nt.prototype.set=en,nn.prototype.clear=rn,nn.prototype.delete=on,nn.prototype.get=an,nn.prototype.has=sn,nn.prototype.set=ln,un.prototype.clear=cn,un.prototype.delete=fn,un.prototype.get=pn,un.prototype.has=dn,un.prototype.set=hn,mn.prototype.add=mn.prototype.push=yn,mn.prototype.has=bn,_n.prototype.clear=$n,_n.prototype.delete=Tn,_n.prototype.get=Sn,_n.prototype.has=An,_n.prototype.set=jn;var vf=Ui(dr),gf=Ui(hr,!0),mf=zi(),yf=zi(!0),bf=rf?function(t,e){return rf.set(t,e),t}:Ou,_f=Ic?function(t,e){return Ic(t,"toString",{configurable:!0,enumerable:!1,value:Au(e),writable:!0})}:Ou,xf=ni,wf=Pc||function(t){return Nn.clearTimeout(t)},kf=tf&&1/G(new tf([,-0]))[1]==Dt?function(t){return new tf(t)}:Lu,Cf=rf?function(t){return rf.get(t)}:Lu,$f=qc?function(t){return null==t?[]:(t=sc(t),p(qc(t),function(e){return Ec.call(t,e)}))}:qu,Tf=qc?function(t){for(var e=[];t;)g(e,$f(t)),t=Sc(t);return e}:qu,Sf=yr;(Jc&&Sf(new Jc(new ArrayBuffer(1)))!=le||Kc&&Sf(new Kc)!=Gt||Qc&&"[object Promise]"!=Sf(Qc.resolve())||tf&&Sf(new tf)!=ee||ef&&Sf(new ef)!=oe)&&(Sf=function(t){var e=yr(t),n=e==Kt?t.constructor:it,r=n?ta(n):"";if(r)switch(r){case af:return le;case sf:return Gt;case lf:return"[object Promise]";case uf:return ee;case cf:return oe}return e});var Af=hc?el:Bu,Ef=Jo(bf),Of=Rc||function(t,e){return Nn.setTimeout(t,e)},jf=Jo(_f),Df=function(t){var e=js(t,function(t){return n.size===ut&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Oe.test(t)&&e.push(""),t.replace(je,function(t,n,r,i){e.push(r?i.replace(Be,"$1"):n||t)}),e}),Nf=ni(function(t,e){return Xs(t)?sr(t,pr(e,1,Xs,!0)):[]}),If=ni(function(t,e){var n=xa(e);return Xs(n)&&(n=it),Xs(t)?sr(t,pr(e,1,Xs,!0),wo(n,2)):[]}),Pf=ni(function(t,e){var n=xa(e);return Xs(n)&&(n=it),Xs(t)?sr(t,pr(e,1,Xs,!0),it,n):[]}),Lf=ni(function(t){var e=v(t,xi);return e.length&&e[0]===t[0]?kr(e):[]}),Rf=ni(function(t){var e=xa(t),n=v(t,xi);return e===xa(n)?e=it:n.pop(),n.length&&n[0]===t[0]?kr(n,wo(e,2)):[]}),Mf=ni(function(t){var e=xa(t),n=v(t,xi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?kr(n,it,e):[]}),Ff=ni(Ca),qf=mo(function(t,e){var n=null==t?0:t.length,r=er(t,e);return Kr(t,v(e,function(t){return Po(t,n)?+t:t}).sort(Ni)),r}),Bf=ni(function(t){return hi(pr(t,1,Xs,!0))}),Hf=ni(function(t){var e=xa(t);return Xs(e)&&(e=it),hi(pr(t,1,Xs,!0),wo(e,2))}),Uf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,hi(pr(t,1,Xs,!0),it,e)}),zf=ni(function(t,e){return Xs(t)?sr(t,e):[]}),Wf=ni(function(t){return bi(p(t,Xs))}),Vf=ni(function(t){var e=xa(t);return Xs(e)&&(e=it),bi(p(t,Xs),wo(e,2))}),Xf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,bi(p(t,Xs),it,e)}),Yf=ni(Va),Gf=ni(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Xa(t,n)}),Zf=mo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof _&&Po(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Ka,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Jf=Bi(function(t,e,n){gc.call(t,n)?++t[n]:tr(t,n,1)}),Kf=Zi(fa),Qf=Zi(pa),tp=Bi(function(t,e,n){gc.call(t,n)?t[n].push(e):tr(t,n,[e])}),ep=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=Vs(t)?nc(t.length):[];return vf(t,function(t){o[++r]=i?s(e,t,n):$r(t,e,n)}),o}),np=Bi(function(t,e,n){tr(t,n,e)}),rp=Bi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ip=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Lo(t,e[0],e[1])?e=[]:n>2&&Lo(e[0],e[1],e[2])&&(e=[e[0]]),Xr(t,pr(e,1),[])}),op=Lc||function(){return Nn.Date.now()},ap=ni(function(t,e,n){var r=gt;if(n.length){var i=Y(n,xo(ap));r|=xt}return uo(t,r,e,n,i)}),sp=ni(function(t,e,n){var r=gt|mt;if(n.length){var i=Y(n,xo(sp));r|=xt}return uo(e,r,t,n,i)}),lp=ni(function(t,e){return ar(t,1,e)}),up=ni(function(t,e,n){return ar(t,Cl(e)||0,n)});js.Cache=un;var cp=xf(function(t,e){e=1==e.length&&mp(e[0])?v(e[0],P(wo())):v(pr(e,1),P(wo()));var n=e.length;return ni(function(r){for(var i=-1,o=Vc(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return s(t,this,r)})}),fp=ni(function(t,e){var n=Y(e,xo(fp));return uo(t,xt,it,e,n)}),pp=ni(function(t,e){var n=Y(e,xo(pp));return uo(t,wt,it,e,n)}),dp=mo(function(t,e){return uo(t,Ct,it,it,it,e)}),hp=oo(br),vp=oo(function(t,e){return t>=e}),gp=Tr(function(){return arguments}())?Tr:function(t){return ol(t)&&gc.call(t,"callee")&&!Ec.call(t,"callee")},mp=nc.isArray,yp=Fn?P(Fn):Sr,bp=Bc||Bu,_p=qn?P(qn):Ar,xp=Bn?P(Bn):jr,wp=Hn?P(Hn):Ir,kp=Un?P(Un):Pr,Cp=zn?P(zn):Lr,$p=oo(qr),Tp=oo(function(t,e){return t<=e}),Sp=Hi(function(t,e){if(Bo(e)||Vs(e))return void Mi(e,ql(e),t);for(var n in e)gc.call(e,n)&&Wn(t,n,e[n])}),Ap=Hi(function(t,e){Mi(e,Bl(e),t)}),Ep=Hi(function(t,e,n,r){Mi(e,Bl(e),t,r)}),Op=Hi(function(t,e,n,r){Mi(e,ql(e),t,r)}),jp=mo(er),Dp=ni(function(t){return t.push(it,co),s(Ep,it,t)}),Np=ni(function(t){return t.push(it,fo),s(Mp,it,t)}),Ip=Qi(function(t,e,n){t[e]=n},Au(Ou)),Pp=Qi(function(t,e,n){gc.call(t,e)?t[e].push(n):t[e]=[n]},wo),Lp=ni($r),Rp=Hi(function(t,e,n){zr(t,e,n)}),Mp=Hi(function(t,e,n,r){zr(t,e,n,r)}),Fp=mo(function(t,e){var n={};if(null==t)return n;var r=!1;e=v(e,function(e){return e=ki(e,t),r||(r=e.length>1),e}),Mi(t,bo(t),n),r&&(n=rr(n,ft|pt|dt,po));for(var i=e.length;i--;)vi(n,e[i]);return n}),qp=mo(function(t,e){return null==t?{}:Yr(t,e)}),Bp=lo(ql),Hp=lo(Bl),Up=Xi(function(t,e,n){return e=e.toLowerCase(),t+(n?iu(e):e)}),zp=Xi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Wp=Xi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Vp=Vi("toLowerCase"),Xp=Xi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Yp=Xi(function(t,e,n){return t+(n?" ":"")+Zp(e)}),Gp=Xi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Zp=Vi("toUpperCase"),Jp=ni(function(t,e){try{return s(t,it,e)}catch(t){return Qs(t)?t:new ic(t)}}),Kp=mo(function(t,e){return u(e,function(e){e=Qo(e),tr(t,e,ap(t[e],t))}),t}),Qp=Ji(),td=Ji(!0),ed=ni(function(t,e){return function(n){return $r(n,t,e)}}),nd=ni(function(t,e){return function(n){return $r(t,n,e)}}),rd=eo(v),id=eo(f),od=eo(b),ad=io(),sd=io(!0),ld=to(function(t,e){return t+e},0),ud=so("ceil"),cd=to(function(t,e){return t/e},1),fd=so("floor"),pd=to(function(t,e){return t*e},1),dd=so("round"),hd=to(function(t,e){return t-e},0);return n.after=Cs,n.ary=$s,n.assign=Sp,n.assignIn=Ap,n.assignInWith=Ep,n.assignWith=Op,n.at=jp,n.before=Ts,n.bind=ap,n.bindAll=Kp,n.bindKey=sp,n.castArray=Fs,n.chain=Za,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Tu,n.conforms=Su,n.constant=Au,n.countBy=Jf,n.create=Al,n.curry=Ss,n.curryRight=As,n.debounce=Es,n.defaults=Dp,n.defaultsDeep=Np,n.defer=lp,n.delay=up,n.difference=Nf,n.differenceBy=If,n.differenceWith=Pf,n.drop=aa,n.dropRight=sa,n.dropRightWhile=la,n.dropWhile=ua,n.fill=ca,n.filter=ss,n.flatMap=ls,n.flatMapDeep=us,n.flatMapDepth=cs,n.flatten=da,n.flattenDeep=ha,n.flattenDepth=va,n.flip=Os,n.flow=Qp,n.flowRight=td,n.fromPairs=ga,n.functions=Pl,n.functionsIn=Ll,n.groupBy=tp,n.initial=ba,n.intersection=Lf,n.intersectionBy=Rf,n.intersectionWith=Mf,n.invert=Ip,n.invertBy=Pp,n.invokeMap=ep,n.iteratee=ju,n.keyBy=np,n.keys=ql,n.keysIn=Bl,n.map=hs,n.mapKeys=Hl,n.mapValues=Ul,n.matches=Du,n.matchesProperty=Nu,n.memoize=js,n.merge=Rp,n.mergeWith=Mp,n.method=ed,n.methodOf=nd,n.mixin=Iu,n.negate=Ds,n.nthArg=Ru,n.omit=Fp,n.omitBy=zl,n.once=Ns,n.orderBy=vs,n.over=rd,n.overArgs=cp,n.overEvery=id,n.overSome=od,n.partial=fp,n.partialRight=pp,n.partition=rp,n.pick=qp,n.pickBy=Wl,n.property=Mu,n.propertyOf=Fu,n.pull=Ff,n.pullAll=Ca,n.pullAllBy=$a,n.pullAllWith=Ta,n.pullAt=qf,n.range=ad,n.rangeRight=sd,n.rearg=dp,n.reject=ys,n.remove=Sa,n.rest=Is,n.reverse=Aa,n.sampleSize=_s,n.set=Xl,n.setWith=Yl,n.shuffle=xs,n.slice=Ea,n.sortBy=ip,n.sortedUniq=La,n.sortedUniqBy=Ra,n.split=vu,n.spread=Ps,n.tail=Ma,n.take=Fa,n.takeRight=qa,n.takeRightWhile=Ba,n.takeWhile=Ha,n.tap=Ja,n.throttle=Ls,n.thru=Ka,n.toArray=_l,n.toPairs=Bp,n.toPairsIn=Hp,n.toPath=Vu,n.toPlainObject=$l,n.transform=Gl,n.unary=Rs,n.union=Bf,n.unionBy=Hf,n.unionWith=Uf,n.uniq=Ua,n.uniqBy=za,n.uniqWith=Wa,n.unset=Zl,n.unzip=Va,n.unzipWith=Xa,n.update=Jl,n.updateWith=Kl,n.values=Ql,n.valuesIn=tu,n.without=zf,n.words=$u,n.wrap=Ms,n.xor=Wf,n.xorBy=Vf,n.xorWith=Xf,n.zip=Yf,n.zipObject=Ya,n.zipObjectDeep=Ga,n.zipWith=Gf,n.entries=Bp,n.entriesIn=Hp,n.extend=Ap,n.extendWith=Ep,Iu(n,n),n.add=ld,n.attempt=Jp,n.camelCase=Up,n.capitalize=iu,n.ceil=ud,n.clamp=eu,n.clone=qs,n.cloneDeep=Hs,n.cloneDeepWith=Us,n.cloneWith=Bs,n.conformsTo=zs,n.deburr=ou,n.defaultTo=Eu,n.divide=cd,n.endsWith=au,n.eq=Ws,n.escape=su,n.escapeRegExp=lu,n.every=as,n.find=Kf,n.findIndex=fa,n.findKey=El,n.findLast=Qf,n.findLastIndex=pa,n.findLastKey=Ol,n.floor=fd,n.forEach=fs,n.forEachRight=ps,n.forIn=jl,n.forInRight=Dl,n.forOwn=Nl,n.forOwnRight=Il,n.get=Rl,n.gt=hp,n.gte=vp,n.has=Ml,n.hasIn=Fl,n.head=ma,n.identity=Ou,n.includes=ds,n.indexOf=ya,n.inRange=nu,n.invoke=Lp,n.isArguments=gp,n.isArray=mp,n.isArrayBuffer=yp,n.isArrayLike=Vs,n.isArrayLikeObject=Xs,n.isBoolean=Ys,n.isBuffer=bp,n.isDate=_p,n.isElement=Gs,n.isEmpty=Zs,n.isEqual=Js,n.isEqualWith=Ks,n.isError=Qs,n.isFinite=tl,n.isFunction=el,n.isInteger=nl,n.isLength=rl,n.isMap=xp,n.isMatch=al,n.isMatchWith=sl,n.isNaN=ll,n.isNative=ul,n.isNil=fl,n.isNull=cl,n.isNumber=pl,n.isObject=il,n.isObjectLike=ol,n.isPlainObject=dl,n.isRegExp=wp,n.isSafeInteger=hl,n.isSet=kp,n.isString=vl,n.isSymbol=gl,n.isTypedArray=Cp,n.isUndefined=ml,n.isWeakMap=yl,n.isWeakSet=bl,n.join=_a,n.kebabCase=zp,n.last=xa,n.lastIndexOf=wa,n.lowerCase=Wp,n.lowerFirst=Vp,n.lt=$p,n.lte=Tp,n.max=Yu,n.maxBy=Gu,n.mean=Zu,n.meanBy=Ju,n.min=Ku,n.minBy=Qu,n.stubArray=qu,n.stubFalse=Bu,n.stubObject=Hu,n.stubString=Uu,n.stubTrue=zu,n.multiply=pd,n.nth=ka,n.noConflict=Pu,n.noop=Lu,n.now=op,n.pad=uu,n.padEnd=cu,n.padStart=fu,n.parseInt=pu,n.random=ru,n.reduce=gs,n.reduceRight=ms,n.repeat=du,n.replace=hu,n.result=Vl,n.round=dd,n.runInContext=t,n.sample=bs,n.size=ws,n.snakeCase=Xp,n.some=ks,n.sortedIndex=Oa,n.sortedIndexBy=ja,n.sortedIndexOf=Da,n.sortedLastIndex=Na,n.sortedLastIndexBy=Ia,n.sortedLastIndexOf=Pa,n.startCase=Yp,n.startsWith=gu,n.subtract=hd,n.sum=tc,n.sumBy=ec,n.template=mu,n.times=Wu,n.toFinite=xl,n.toInteger=wl,n.toLength=kl,n.toLower=yu,n.toNumber=Cl,n.toSafeInteger=Tl,n.toString=Sl,n.toUpper=bu,n.trim=_u,n.trimEnd=xu,n.trimStart=wu,n.truncate=ku,n.unescape=Cu,n.uniqueId=Xu,n.upperCase=Gp,n.upperFirst=Zp,n.each=fs,n.eachRight=ps,n.first=ma,Iu(n,function(){var t={};return dr(n,function(e,r){gc.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",u(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),u(["drop","take"],function(t,e){_.prototype[t]=function(n){n=n===it?1:Wc(wl(n),0);var r=this.__filtered__&&!e?new _(this):this.clone();return r.__filtered__?r.__takeCount__=Vc(n,r.__takeCount__):r.__views__.push({size:Vc(n,Lt),type:t+(r.__dir__<0?"Right":"")}),r},_.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),u(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Ot||3==n;_.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:wo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),u(["head","last"],function(t,e){var n="take"+(e?"Right":"");_.prototype[t]=function(){return this[n](1).value()[0]}}),u(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");_.prototype[t]=function(){return this.__filtered__?new _(this):this[n](1)}}),_.prototype.compact=function(){return this.filter(Ou)},_.prototype.find=function(t){return this.filter(t).head()},_.prototype.findLast=function(t){return this.reverse().find(t)},_.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new _(this):this.map(function(n){return $r(n,t,e)})}),_.prototype.reject=function(t){return this.filter(Ds(wo(t)))},_.prototype.slice=function(t,e){t=wl(t);var n=this;return n.__filtered__&&(t>0||e<0)?new _(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=wl(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},_.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},_.prototype.toArray=function(){return this.take(Lt)},dr(_.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,l=o?[1]:arguments,u=e instanceof _,c=l[0],f=u||mp(e),p=function(t){var e=a.apply(n,g([t],l));return o&&d?e[0]:e};f&&r&&"function"==typeof c&&1!=c.length&&(u=f=!1);var d=this.__chain__,h=!!this.__actions__.length,v=s&&!d,m=u&&!h;if(!s&&f){e=m?e:new _(this);var y=t.apply(e,l);return y.__actions__.push({func:Ka,args:[p],thisArg:it}),new i(y,d)}return v&&m?t.apply(this,l):(y=this.thru(p),v?o?y.value()[0]:y.value():y)})}),u(["pop","push","shift","sort","splice","unshift"],function(t){var e=fc[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(mp(n)?n:[],t)}return this[r](function(n){return e.apply(mp(n)?n:[],t)})}}),dr(_.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(of[i]||(of[i]=[])).push({name:e,func:r})}}),of[Ki(it,mt).name]=[{name:"wrapper",func:it}],_.prototype.clone=E,_.prototype.reverse=J,_.prototype.value=et,n.prototype.at=Zf,n.prototype.chain=Qa,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Dc&&(n.prototype[Dc]=ns),n}();Nn._=Gn,(i=function(){return Gn}.call(e,n,e,r))!==it&&(r.exports=i)}).call(this)}).call(e,n(4),n(56)(t))},function(t,e,n){var r,i,o;/*! - * Select2 4.0.3 - * https://select2.github.io - * - * Released under the MIT license - * https://github.com/select2/select2/blob/master/LICENSE.md - */ -!function(a){i=[n(3)],r=a,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(function(t){var e=function(){if(t&&t.fn&&t.fn.select2&&t.fn.select2.amd)var e=t.fn.select2.amd;var e;return function(){if(!e||!e.requirejs){e?n=e:e={};/** - * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/almond for details - */ -var t,n,r;!function(e){function i(t,e){return _.call(t,e)}function o(t,e){var n,r,i,o,a,s,l,u,c,f,p,d=e&&e.split("/"),h=y.map,v=h&&h["*"]||{};if(t&&"."===t.charAt(0))if(e){for(t=t.split("/"),a=t.length-1,y.nodeIdCompat&&w.test(t[a])&&(t[a]=t[a].replace(w,"")),t=d.slice(0,d.length-1).concat(t),c=0;c<t.length;c+=1)if("."===(p=t[c]))t.splice(c,1),c-=1;else if(".."===p){if(1===c&&(".."===t[2]||".."===t[0]))break;c>0&&(t.splice(c-1,2),c-=2)}t=t.join("/")}else 0===t.indexOf("./")&&(t=t.substring(2));if((d||v)&&h){for(n=t.split("/"),c=n.length;c>0;c-=1){if(r=n.slice(0,c).join("/"),d)for(f=d.length;f>0;f-=1)if((i=h[d.slice(0,f).join("/")])&&(i=i[r])){o=i,s=c;break}if(o)break;!l&&v&&v[r]&&(l=v[r],u=c)}!o&&l&&(o=l,s=u),o&&(n.splice(0,s,o),t=n.join("/"))}return t}function a(t,n){return function(){var r=x.call(arguments,0);return"string"!=typeof r[0]&&1===r.length&&r.push(null),d.apply(e,r.concat([t,n]))}}function s(t){return function(e){return o(e,t)}}function l(t){return function(e){g[t]=e}}function u(t){if(i(m,t)){var n=m[t];delete m[t],b[t]=!0,p.apply(e,n)}if(!i(g,t)&&!i(b,t))throw new Error("No "+t);return g[t]}function c(t){var e,n=t?t.indexOf("!"):-1;return n>-1&&(e=t.substring(0,n),t=t.substring(n+1,t.length)),[e,t]}function f(t){return function(){return y&&y.config&&y.config[t]||{}}}var p,d,h,v,g={},m={},y={},b={},_=Object.prototype.hasOwnProperty,x=[].slice,w=/\.js$/;h=function(t,e){var n,r=c(t),i=r[0];return t=r[1],i&&(i=o(i,e),n=u(i)),i?t=n&&n.normalize?n.normalize(t,s(e)):o(t,e):(t=o(t,e),r=c(t),i=r[0],t=r[1],i&&(n=u(i))),{f:i?i+"!"+t:t,n:t,pr:i,p:n}},v={require:function(t){return a(t)},exports:function(t){var e=g[t];return void 0!==e?e:g[t]={}},module:function(t){return{id:t,uri:"",exports:g[t],config:f(t)}}},p=function(t,n,r,o){var s,c,f,p,d,y,_=[],x=typeof r;if(o=o||t,"undefined"===x||"function"===x){for(n=!n.length&&r.length?["require","exports","module"]:n,d=0;d<n.length;d+=1)if(p=h(n[d],o),"require"===(c=p.f))_[d]=v.require(t);else if("exports"===c)_[d]=v.exports(t),y=!0;else if("module"===c)s=_[d]=v.module(t);else if(i(g,c)||i(m,c)||i(b,c))_[d]=u(c);else{if(!p.p)throw new Error(t+" missing "+c);p.p.load(p.n,a(o,!0),l(c),{}),_[d]=g[c]}f=r?r.apply(g[t],_):void 0,t&&(s&&s.exports!==e&&s.exports!==g[t]?g[t]=s.exports:f===e&&y||(g[t]=f))}else t&&(g[t]=r)},t=n=d=function(t,n,r,i,o){if("string"==typeof t)return v[t]?v[t](n):u(h(t,n).f);if(!t.splice){if(y=t,y.deps&&d(y.deps,y.callback),!n)return;n.splice?(t=n,n=r,r=null):t=e}return n=n||function(){},"function"==typeof r&&(r=i,i=o),i?p(e,t,n,r):setTimeout(function(){p(e,t,n,r)},4),d},d.config=function(t){return d(t)},t._defined=g,r=function(t,e,n){if("string"!=typeof t)throw new Error("See almond README: incorrect module build, no module name");e.splice||(n=e,e=[]),i(g,t)||i(m,t)||(m[t]=[t,e,n])},r.amd={jQuery:!0}}(),e.requirejs=t,e.require=n,e.define=r}}(),e.define("almond",function(){}),e.define("jquery",[],function(){var e=t||$;return null==e&&console&&console.error,e}),e.define("select2/utils",["jquery"],function(t){function e(t){var e=t.prototype,n=[];for(var r in e){"function"==typeof e[r]&&("constructor"!==r&&n.push(r))}return n}var n={};n.Extend=function(t,e){function n(){this.constructor=t}var r={}.hasOwnProperty;for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},n.Decorate=function(t,n){function r(){var e=Array.prototype.unshift,r=n.prototype.constructor.length,i=t.prototype.constructor;r>0&&(e.call(arguments,t.prototype.constructor),i=n.prototype.constructor),i.apply(this,arguments)}function i(){this.constructor=r}var o=e(n),a=e(t);n.displayName=t.displayName,r.prototype=new i;for(var s=0;s<a.length;s++){var l=a[s];r.prototype[l]=t.prototype[l]}for(var u=0;u<o.length;u++){var c=o[u];r.prototype[c]=function(t){var e=function(){};t in r.prototype&&(e=r.prototype[t]);var i=n.prototype[t];return function(){return Array.prototype.unshift.call(arguments,e),i.apply(this,arguments)}}(c)}return r};var r=function(){this.listeners={}};return r.prototype.on=function(t,e){this.listeners=this.listeners||{},t in this.listeners?this.listeners[t].push(e):this.listeners[t]=[e]},r.prototype.trigger=function(t){var e=Array.prototype.slice,n=e.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),n[0]._type=t,t in this.listeners&&this.invoke(this.listeners[t],e.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},r.prototype.invoke=function(t,e){for(var n=0,r=t.length;n<r;n++)t[n].apply(this,e)},n.Observable=r,n.generateChars=function(t){for(var e="",n=0;n<t;n++){e+=Math.floor(36*Math.random()).toString(36)}return e},n.bind=function(t,e){return function(){t.apply(e,arguments)}},n._convertData=function(t){for(var e in t){var n=e.split("-"),r=t;if(1!==n.length){for(var i=0;i<n.length;i++){var o=n[i];o=o.substring(0,1).toLowerCase()+o.substring(1),o in r||(r[o]={}),i==n.length-1&&(r[o]=t[e]),r=r[o]}delete t[e]}}return t},n.hasScroll=function(e,n){var r=t(n),i=n.style.overflowX,o=n.style.overflowY;return(i!==o||"hidden"!==o&&"visible"!==o)&&("scroll"===i||"scroll"===o||(r.innerHeight()<n.scrollHeight||r.innerWidth()<n.scrollWidth))},n.escapeMarkup=function(t){var e={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof t?t:String(t).replace(/[&<>"'\/\\]/g,function(t){return e[t]})},n.appendMany=function(e,n){if("1.7"===t.fn.jquery.substr(0,3)){var r=t();t.map(n,function(t){r=r.add(t)}),n=r}e.append(n)},n}),e.define("select2/results",["jquery","./utils"],function(t,e){function n(t,e,r){this.$element=t,this.data=r,this.options=e,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e,e},n.prototype.clear=function(){this.$results.empty()},n.prototype.displayMessage=function(e){var n=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var r=t('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),i=this.options.get("translations").get(e.message);r.append(n(i(e.args))),r[0].className+=" select2-results__message",this.$results.append(r)},n.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},n.prototype.append=function(t){this.hideLoading();var e=[];if(null==t.results||0===t.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));t.results=this.sort(t.results);for(var n=0;n<t.results.length;n++){var r=t.results[n],i=this.option(r);e.push(i)}this.$results.append(e)},n.prototype.position=function(t,e){e.find(".select2-results").append(t)},n.prototype.sort=function(t){return this.options.get("sorter")(t)},n.prototype.highlightFirstItem=function(){var t=this.$results.find(".select2-results__option[aria-selected]"),e=t.filter("[aria-selected=true]");e.length>0?e.first().trigger("mouseenter"):t.first().trigger("mouseenter"),this.ensureHighlightVisible()},n.prototype.setClasses=function(){var e=this;this.data.current(function(n){var r=t.map(n,function(t){return t.id.toString()});e.$results.find(".select2-results__option[aria-selected]").each(function(){var e=t(this),n=t.data(this,"data"),i=""+n.id;null!=n.element&&n.element.selected||null==n.element&&t.inArray(i,r)>-1?e.attr("aria-selected","true"):e.attr("aria-selected","false")})})},n.prototype.showLoading=function(t){this.hideLoading();var e=this.options.get("translations").get("searching"),n={disabled:!0,loading:!0,text:e(t)},r=this.option(n);r.className+=" loading-results",this.$results.prepend(r)},n.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},n.prototype.option=function(e){var n=document.createElement("li");n.className="select2-results__option";var r={role:"treeitem","aria-selected":"false"};e.disabled&&(delete r["aria-selected"],r["aria-disabled"]="true"),null==e.id&&delete r["aria-selected"],null!=e._resultId&&(n.id=e._resultId),e.title&&(n.title=e.title),e.children&&(r.role="group",r["aria-label"]=e.text,delete r["aria-selected"]);for(var i in r){var o=r[i];n.setAttribute(i,o)}if(e.children){var a=t(n),s=document.createElement("strong");s.className="select2-results__group";t(s);this.template(e,s);for(var l=[],u=0;u<e.children.length;u++){var c=e.children[u],f=this.option(c);l.push(f)}var p=t("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});p.append(l),a.append(s),a.append(p)}else this.template(e,n);return t.data(n,"data",e),n},n.prototype.bind=function(e,n){var r=this,i=e.id+"-results";this.$results.attr("id",i),e.on("results:all",function(t){r.clear(),r.append(t.data),e.isOpen()&&(r.setClasses(),r.highlightFirstItem())}),e.on("results:append",function(t){r.append(t.data),e.isOpen()&&r.setClasses()}),e.on("query",function(t){r.hideMessages(),r.showLoading(t)}),e.on("select",function(){e.isOpen()&&(r.setClasses(),r.highlightFirstItem())}),e.on("unselect",function(){e.isOpen()&&(r.setClasses(),r.highlightFirstItem())}),e.on("open",function(){r.$results.attr("aria-expanded","true"),r.$results.attr("aria-hidden","false"),r.setClasses(),r.ensureHighlightVisible()}),e.on("close",function(){r.$results.attr("aria-expanded","false"),r.$results.attr("aria-hidden","true"),r.$results.removeAttr("aria-activedescendant")}),e.on("results:toggle",function(){var t=r.getHighlightedResults();0!==t.length&&t.trigger("mouseup")}),e.on("results:select",function(){var t=r.getHighlightedResults();if(0!==t.length){var e=t.data("data");"true"==t.attr("aria-selected")?r.trigger("close",{}):r.trigger("select",{data:e})}}),e.on("results:previous",function(){var t=r.getHighlightedResults(),e=r.$results.find("[aria-selected]"),n=e.index(t);if(0!==n){var i=n-1;0===t.length&&(i=0);var o=e.eq(i);o.trigger("mouseenter");var a=r.$results.offset().top,s=o.offset().top,l=r.$results.scrollTop()+(s-a);0===i?r.$results.scrollTop(0):s-a<0&&r.$results.scrollTop(l)}}),e.on("results:next",function(){var t=r.getHighlightedResults(),e=r.$results.find("[aria-selected]"),n=e.index(t),i=n+1;if(!(i>=e.length)){var o=e.eq(i);o.trigger("mouseenter");var a=r.$results.offset().top+r.$results.outerHeight(!1),s=o.offset().top+o.outerHeight(!1),l=r.$results.scrollTop()+s-a;0===i?r.$results.scrollTop(0):s>a&&r.$results.scrollTop(l)}}),e.on("results:focus",function(t){t.element.addClass("select2-results__option--highlighted")}),e.on("results:message",function(t){r.displayMessage(t)}),t.fn.mousewheel&&this.$results.on("mousewheel",function(t){var e=r.$results.scrollTop(),n=r.$results.get(0).scrollHeight-e+t.deltaY,i=t.deltaY>0&&e-t.deltaY<=0,o=t.deltaY<0&&n<=r.$results.height();i?(r.$results.scrollTop(0),t.preventDefault(),t.stopPropagation()):o&&(r.$results.scrollTop(r.$results.get(0).scrollHeight-r.$results.height()),t.preventDefault(),t.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(e){var n=t(this),i=n.data("data");if("true"===n.attr("aria-selected"))return void(r.options.get("multiple")?r.trigger("unselect",{originalEvent:e,data:i}):r.trigger("close",{}));r.trigger("select",{originalEvent:e,data:i})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(e){var n=t(this).data("data");r.getHighlightedResults().removeClass("select2-results__option--highlighted"),r.trigger("results:focus",{data:n,element:t(this)})})},n.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},n.prototype.destroy=function(){this.$results.remove()},n.prototype.ensureHighlightVisible=function(){var t=this.getHighlightedResults();if(0!==t.length){var e=this.$results.find("[aria-selected]"),n=e.index(t),r=this.$results.offset().top,i=t.offset().top,o=this.$results.scrollTop()+(i-r),a=i-r;o-=2*t.outerHeight(!1),n<=2?this.$results.scrollTop(0):(a>this.$results.outerHeight()||a<0)&&this.$results.scrollTop(o)}},n.prototype.template=function(e,n){var r=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),o=r(e,n);null==o?n.style.display="none":"string"==typeof o?n.innerHTML=i(o):t(n).append(o)},n}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(t,e,n){function r(t,e){this.$element=t,this.options=e,r.__super__.constructor.call(this)}return e.Extend(r,e.Observable),r.prototype.render=function(){var e=t('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),this.$selection=e,e},r.prototype.bind=function(t,e){var r=this,i=(t.id,t.id+"-results");this.container=t,this.$selection.on("focus",function(t){r.trigger("focus",t)}),this.$selection.on("blur",function(t){r._handleBlur(t)}),this.$selection.on("keydown",function(t){r.trigger("keypress",t),t.which===n.SPACE&&t.preventDefault()}),t.on("results:focus",function(t){r.$selection.attr("aria-activedescendant",t.data._resultId)}),t.on("selection:update",function(t){r.update(t.data)}),t.on("open",function(){r.$selection.attr("aria-expanded","true"),r.$selection.attr("aria-owns",i),r._attachCloseHandler(t)}),t.on("close",function(){r.$selection.attr("aria-expanded","false"),r.$selection.removeAttr("aria-activedescendant"),r.$selection.removeAttr("aria-owns"),r.$selection.focus(),r._detachCloseHandler(t)}),t.on("enable",function(){r.$selection.attr("tabindex",r._tabindex)}),t.on("disable",function(){r.$selection.attr("tabindex","-1")})},r.prototype._handleBlur=function(e){var n=this;window.setTimeout(function(){document.activeElement==n.$selection[0]||t.contains(n.$selection[0],document.activeElement)||n.trigger("blur",e)},1)},r.prototype._attachCloseHandler=function(e){t(document.body).on("mousedown.select2."+e.id,function(e){var n=t(e.target),r=n.closest(".select2");t(".select2.select2-container--open").each(function(){var e=t(this);this!=r[0]&&e.data("element").select2("close")})})},r.prototype._detachCloseHandler=function(e){t(document.body).off("mousedown.select2."+e.id)},r.prototype.position=function(t,e){e.find(".selection").append(t)},r.prototype.destroy=function(){this._detachCloseHandler(this.container)},r.prototype.update=function(t){throw new Error("The `update` method must be defined in child classes.")},r}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(t,e,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,e),i.prototype.render=function(){var t=i.__super__.render.call(this);return t.addClass("select2-selection--single"),t.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),t},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(t){1===t.which&&n.trigger("toggle",{originalEvent:t})}),this.$selection.on("focus",function(t){}),this.$selection.on("blur",function(t){}),t.on("focus",function(e){t.isOpen()||n.$selection.focus()}),t.on("selection:update",function(t){n.update(t.data)})},i.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},i.prototype.display=function(t,e){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(t,e))},i.prototype.selectionContainer=function(){return t("<span></span>")},i.prototype.update=function(t){if(0===t.length)return void this.clear();var e=t[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(e,n);n.empty().append(r),n.prop("title",e.title||e.text)},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(t,e,n){function r(t,e){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,e),r.prototype.render=function(){var t=r.__super__.render.call(this);return t.addClass("select2-selection--multiple"),t.html('<ul class="select2-selection__rendered"></ul>'),t},r.prototype.bind=function(e,n){var i=this;r.__super__.bind.apply(this,arguments),this.$selection.on("click",function(t){i.trigger("toggle",{originalEvent:t})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!i.options.get("disabled")){var n=t(this),r=n.parent(),o=r.data("data");i.trigger("unselect",{originalEvent:e,data:o})}})},r.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},r.prototype.display=function(t,e){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(t,e))},r.prototype.selectionContainer=function(){return t('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},r.prototype.update=function(t){if(this.clear(),0!==t.length){for(var e=[],r=0;r<t.length;r++){var i=t[r],o=this.selectionContainer(),a=this.display(i,o);o.append(a),o.prop("title",i.title||i.text),o.data("data",i),e.push(o)}var s=this.$selection.find(".select2-selection__rendered");n.appendMany(s,e)}},r}),e.define("select2/selection/placeholder",["../utils"],function(t){function e(t,e,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),t.call(this,e,n)}return e.prototype.normalizePlaceholder=function(t,e){return"string"==typeof e&&(e={id:"",text:e}),e},e.prototype.createPlaceholder=function(t,e){var n=this.selectionContainer();return n.html(this.display(e)),n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),n},e.prototype.update=function(t,e){var n=1==e.length&&e[0].id!=this.placeholder.id;if(e.length>1||n)return t.call(this,e);this.clear();var r=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(r)},e}),e.define("select2/selection/allowClear",["jquery","../keys"],function(t,e){function n(){}return n.prototype.bind=function(t,e,n){var r=this;t.call(this,e,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error,this.$selection.on("mousedown",".select2-selection__clear",function(t){r._handleClear(t)}),e.on("keypress",function(t){r._handleKeyboardClear(t,e)})},n.prototype._handleClear=function(t,e){if(!this.options.get("disabled")){var n=this.$selection.find(".select2-selection__clear");if(0!==n.length){e.stopPropagation();for(var r=n.data("data"),i=0;i<r.length;i++){var o={data:r[i]};if(this.trigger("unselect",o),o.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},n.prototype._handleKeyboardClear=function(t,n,r){r.isOpen()||n.which!=e.DELETE&&n.which!=e.BACKSPACE||this._handleClear(n)},n.prototype.update=function(e,n){if(e.call(this,n),!(this.$selection.find(".select2-selection__placeholder").length>0||0===n.length)){var r=t('<span class="select2-selection__clear">×</span>');r.data("data",n),this.$selection.find(".select2-selection__rendered").prepend(r)}},n}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(t,e,n){function r(t,e,n){t.call(this,e,n)}return r.prototype.render=function(e){var n=t('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=n,this.$search=n.find("input");var r=e.call(this);return this._transferTabIndex(),r},r.prototype.bind=function(t,e,r){var i=this;t.call(this,e,r),e.on("open",function(){i.$search.trigger("focus")}),e.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),e.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),e.on("disable",function(){i.$search.prop("disabled",!0)}),e.on("focus",function(t){i.$search.trigger("focus")}),e.on("results:focus",function(t){i.$search.attr("aria-activedescendant",t.id)}),this.$selection.on("focusin",".select2-search--inline",function(t){i.trigger("focus",t)}),this.$selection.on("focusout",".select2-search--inline",function(t){i._handleBlur(t)}),this.$selection.on("keydown",".select2-search--inline",function(t){if(t.stopPropagation(),i.trigger("keypress",t),i._keyUpPrevented=t.isDefaultPrevented(),t.which===n.BACKSPACE&&""===i.$search.val()){var e=i.$searchContainer.prev(".select2-selection__choice");if(e.length>0){var r=e.data("data");i.searchRemoveChoice(r),t.preventDefault()}}});var o=document.documentMode,a=o&&o<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(t){if(a)return void i.$selection.off("input.search input.searchcheck");i.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(t){if(a&&"input"===t.type)return void i.$selection.off("input.search input.searchcheck");var e=t.which;e!=n.SHIFT&&e!=n.CTRL&&e!=n.ALT&&e!=n.TAB&&i.handleSearch(t)})},r.prototype._transferTabIndex=function(t){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},r.prototype.createPlaceholder=function(t,e){this.$search.attr("placeholder",e.text)},r.prototype.update=function(t,e){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),t.call(this,e),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.focus()},r.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},r.prototype.searchRemoveChoice=function(t,e){this.trigger("unselect",{data:e}),this.$search.val(e.text),this.handleSearch()},r.prototype.resizeSearch=function(){this.$search.css("width","25px");var t="";if(""!==this.$search.attr("placeholder"))t=this.$selection.find(".select2-selection__rendered").innerWidth();else{t=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",t)},r}),e.define("select2/selection/eventRelay",["jquery"],function(t){function e(){}return e.prototype.bind=function(e,n,r){var i=this,o=["open","opening","close","closing","select","selecting","unselect","unselecting"],a=["opening","closing","selecting","unselecting"];e.call(this,n,r),n.on("*",function(e,n){if(-1!==t.inArray(e,o)){n=n||{};var r=t.Event("select2:"+e,{params:n});i.$element.trigger(r),-1!==t.inArray(e,a)&&(n.prevented=r.isDefaultPrevented())}})},e}),e.define("select2/translation",["jquery","require"],function(t,e){function n(t){this.dict=t||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(t){return this.dict[t]},n.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},n._cache={},n.loadPath=function(t){if(!(t in n._cache)){var r=e(t);n._cache[t]=r}return new n(n._cache[t])},n}),e.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),e.define("select2/data/base",["../utils"],function(t){function e(t,n){e.__super__.constructor.call(this)}return t.Extend(e,t.Observable),e.prototype.current=function(t){throw new Error("The `current` method must be defined in child classes.")},e.prototype.query=function(t,e){throw new Error("The `query` method must be defined in child classes.")},e.prototype.bind=function(t,e){},e.prototype.destroy=function(){},e.prototype.generateResultId=function(e,n){var r=e.id+"-result-";return r+=t.generateChars(4),null!=n.id?r+="-"+n.id.toString():r+="-"+t.generateChars(4),r},e}),e.define("select2/data/select",["./base","../utils","jquery"],function(t,e,n){function r(t,e){this.$element=t,this.options=e,r.__super__.constructor.call(this)}return e.Extend(r,t),r.prototype.current=function(t){var e=[],r=this;this.$element.find(":selected").each(function(){var t=n(this),i=r.item(t);e.push(i)}),t(e)},r.prototype.select=function(t){var e=this;if(t.selected=!0,n(t.element).is("option"))return t.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(r){var i=[];t=[t],t.push.apply(t,r);for(var o=0;o<t.length;o++){var a=t[o].id;-1===n.inArray(a,i)&&i.push(a)}e.$element.val(i),e.$element.trigger("change")});else{var r=t.id;this.$element.val(r),this.$element.trigger("change")}},r.prototype.unselect=function(t){var e=this;if(this.$element.prop("multiple")){if(t.selected=!1,n(t.element).is("option"))return t.element.selected=!1,void this.$element.trigger("change");this.current(function(r){for(var i=[],o=0;o<r.length;o++){var a=r[o].id;a!==t.id&&-1===n.inArray(a,i)&&i.push(a)}e.$element.val(i),e.$element.trigger("change")})}},r.prototype.bind=function(t,e){var n=this;this.container=t,t.on("select",function(t){n.select(t.data)}),t.on("unselect",function(t){n.unselect(t.data)})},r.prototype.destroy=function(){this.$element.find("*").each(function(){n.removeData(this,"data")})},r.prototype.query=function(t,e){var r=[],i=this;this.$element.children().each(function(){var e=n(this);if(e.is("option")||e.is("optgroup")){var o=i.item(e),a=i.matches(t,o);null!==a&&r.push(a)}}),e({results:r})},r.prototype.addOptions=function(t){e.appendMany(this.$element,t)},r.prototype.option=function(t){var e;t.children?(e=document.createElement("optgroup"),e.label=t.text):(e=document.createElement("option"),void 0!==e.textContent?e.textContent=t.text:e.innerText=t.text),t.id&&(e.value=t.id),t.disabled&&(e.disabled=!0),t.selected&&(e.selected=!0),t.title&&(e.title=t.title);var r=n(e),i=this._normalizeItem(t);return i.element=e,n.data(e,"data",i),r},r.prototype.item=function(t){var e={};if(null!=(e=n.data(t[0],"data")))return e;if(t.is("option"))e={id:t.val(),text:t.text(),disabled:t.prop("disabled"),selected:t.prop("selected"),title:t.prop("title")};else if(t.is("optgroup")){e={text:t.prop("label"),children:[],title:t.prop("title")};for(var r=t.children("option"),i=[],o=0;o<r.length;o++){var a=n(r[o]),s=this.item(a);i.push(s)}e.children=i}return e=this._normalizeItem(e),e.element=t[0],n.data(t[0],"data",e),e},r.prototype._normalizeItem=function(t){n.isPlainObject(t)||(t={id:t,text:t}),t=n.extend({},{text:""},t);var e={selected:!1,disabled:!1};return null!=t.id&&(t.id=t.id.toString()),null!=t.text&&(t.text=t.text.toString()),null==t._resultId&&t.id&&null!=this.container&&(t._resultId=this.generateResultId(this.container,t)),n.extend({},e,t)},r.prototype.matches=function(t,e){return this.options.get("matcher")(t,e)},r}),e.define("select2/data/array",["./select","../utils","jquery"],function(t,e,n){function r(t,e){var n=e.get("data")||[];r.__super__.constructor.call(this,t,e),this.addOptions(this.convertToOptions(n))}return e.Extend(r,t),r.prototype.select=function(t){var e=this.$element.find("option").filter(function(e,n){return n.value==t.id.toString()});0===e.length&&(e=this.option(t),this.addOptions(e)),r.__super__.select.call(this,t)},r.prototype.convertToOptions=function(t){for(var r=this,i=this.$element.find("option"),o=i.map(function(){return r.item(n(this)).id}).get(),a=[],s=0;s<t.length;s++){var l=this._normalizeItem(t[s]);if(n.inArray(l.id,o)>=0){var u=i.filter(function(t){return function(){return n(this).val()==t.id}}(l)),c=this.item(u),f=n.extend(!0,{},l,c),p=this.option(f);u.replaceWith(p)}else{var d=this.option(l);if(l.children){var h=this.convertToOptions(l.children);e.appendMany(d,h)}a.push(d)}}return a},r}),e.define("select2/data/ajax",["./array","../utils","jquery"],function(t,e,n){function r(t,e){this.ajaxOptions=this._applyDefaults(e.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),r.__super__.constructor.call(this,t,e)}return e.Extend(r,t),r.prototype._applyDefaults=function(t){var e={data:function(t){return n.extend({},t,{q:t.term})},transport:function(t,e,r){var i=n.ajax(t);return i.then(e),i.fail(r),i}};return n.extend({},e,t,!0)},r.prototype.processResults=function(t){return t},r.prototype.query=function(t,e){function r(){var r=o.transport(o,function(r){var o=i.processResults(r,t);i.options.get("debug")&&window.console&&console.error&&(!o||!o.results||n.isArray(o.results)),e(o)},function(){r.status&&"0"===r.status||i.trigger("results:message",{message:"errorLoading"})});i._request=r}var i=this;null!=this._request&&(n.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var o=n.extend({type:"GET"},this.ajaxOptions);"function"==typeof o.url&&(o.url=o.url.call(this.$element,t)),"function"==typeof o.data&&(o.data=o.data.call(this.$element,t)),this.ajaxOptions.delay&&null!=t.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(r,this.ajaxOptions.delay)):r()},r}),e.define("select2/data/tags",["jquery"],function(t){function e(e,n,r){var i=r.get("tags"),o=r.get("createTag");void 0!==o&&(this.createTag=o);var a=r.get("insertTag");if(void 0!==a&&(this.insertTag=a),e.call(this,n,r),t.isArray(i))for(var s=0;s<i.length;s++){var l=i[s],u=this._normalizeItem(l),c=this.option(u);this.$element.append(c)}}return e.prototype.query=function(t,e,n){function r(t,o){for(var a=t.results,s=0;s<a.length;s++){var l=a[s],u=null!=l.children&&!r({results:l.children},!0);if(l.text===e.term||u)return!o&&(t.data=a,void n(t))}if(o)return!0;var c=i.createTag(e);if(null!=c){var f=i.option(c);f.attr("data-select2-tag",!0),i.addOptions([f]),i.insertTag(a,c)}t.results=a,n(t)}var i=this;if(this._removeOldTags(),null==e.term||null!=e.page)return void t.call(this,e,n);t.call(this,e,r)},e.prototype.createTag=function(e,n){var r=t.trim(n.term);return""===r?null:{id:r,text:r}},e.prototype.insertTag=function(t,e,n){e.unshift(n)},e.prototype._removeOldTags=function(e){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||t(this).remove()})},e}),e.define("select2/data/tokenizer",["jquery"],function(t){function e(t,e,n){var r=n.get("tokenizer");void 0!==r&&(this.tokenizer=r),t.call(this,e,n)}return e.prototype.bind=function(t,e,n){t.call(this,e,n),this.$search=e.dropdown.$search||e.selection.$search||n.find(".select2-search__field")},e.prototype.query=function(e,n,r){function i(e){var n=a._normalizeItem(e);if(!a.$element.find("option").filter(function(){return t(this).val()===n.id}).length){var r=a.option(n);r.attr("data-select2-tag",!0),a._removeOldTags(),a.addOptions([r])}o(n)}function o(t){a.trigger("select",{data:t})}var a=this;n.term=n.term||"";var s=this.tokenizer(n,this.options,i);s.term!==n.term&&(this.$search.length&&(this.$search.val(s.term),this.$search.focus()),n.term=s.term),e.call(this,n,r)},e.prototype.tokenizer=function(e,n,r,i){for(var o=r.get("tokenSeparators")||[],a=n.term,s=0,l=this.createTag||function(t){return{id:t.term,text:t.term}};s<a.length;){var u=a[s];if(-1!==t.inArray(u,o)){var c=a.substr(0,s),f=t.extend({},n,{term:c}),p=l(f);null!=p?(i(p),a=a.substr(s+1)||"",s=0):s++}else s++}return{term:a}},e}),e.define("select2/data/minimumInputLength",[],function(){function t(t,e,n){this.minimumInputLength=n.get("minimumInputLength"),t.call(this,e,n)}return t.prototype.query=function(t,e,n){if(e.term=e.term||"",e.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:e.term,params:e}});t.call(this,e,n)},t}),e.define("select2/data/maximumInputLength",[],function(){function t(t,e,n){this.maximumInputLength=n.get("maximumInputLength"),t.call(this,e,n)}return t.prototype.query=function(t,e,n){if(e.term=e.term||"",this.maximumInputLength>0&&e.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:e.term,params:e}});t.call(this,e,n)},t}),e.define("select2/data/maximumSelectionLength",[],function(){function t(t,e,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),t.call(this,e,n)}return t.prototype.query=function(t,e,n){var r=this;this.current(function(i){var o=null!=i?i.length:0;if(r.maximumSelectionLength>0&&o>=r.maximumSelectionLength)return void r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}});t.call(r,e,n)})},t}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(t,e){this.$element=t,this.options=e,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class="select2-dropdown"><span class="select2-results"></span></span>');return e.attr("dir",this.options.get("dir")),this.$dropdown=e,e},n.prototype.bind=function(){},n.prototype.position=function(t,e){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(t,e){function n(){}return n.prototype.render=function(e){var n=e.call(this),r=t('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=r,this.$search=r.find("input"),n.prepend(r),n},n.prototype.bind=function(e,n,r){var i=this;e.call(this,n,r),this.$search.on("keydown",function(t){i.trigger("keypress",t),i._keyUpPrevented=t.isDefaultPrevented()}),this.$search.on("input",function(e){t(this).off("keyup")}),this.$search.on("keyup input",function(t){i.handleSearch(t)}),n.on("open",function(){i.$search.attr("tabindex",0),i.$search.focus(),window.setTimeout(function(){i.$search.focus()},0)}),n.on("close",function(){i.$search.attr("tabindex",-1),i.$search.val("")}),n.on("focus",function(){n.isOpen()&&i.$search.focus()}),n.on("results:all",function(t){if(null==t.query.term||""===t.query.term){i.showSearch(t)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide")}})},n.prototype.handleSearch=function(t){if(!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},n.prototype.showSearch=function(t,e){return!0},n}),e.define("select2/dropdown/hidePlaceholder",[],function(){function t(t,e,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),t.call(this,e,n,r)}return t.prototype.append=function(t,e){e.results=this.removePlaceholder(e.results),t.call(this,e)},t.prototype.normalizePlaceholder=function(t,e){return"string"==typeof e&&(e={id:"",text:e}),e},t.prototype.removePlaceholder=function(t,e){for(var n=e.slice(0),r=e.length-1;r>=0;r--){var i=e[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},t}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(t){function e(t,e,n,r){this.lastParams={},t.call(this,e,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(t,e){this.$loadingMore.remove(),this.loading=!1,t.call(this,e),this.showLoadingMore(e)&&this.$results.append(this.$loadingMore)},e.prototype.bind=function(e,n,r){var i=this;e.call(this,n,r),n.on("query",function(t){i.lastParams=t,i.loading=!0}),n.on("query:append",function(t){i.lastParams=t,i.loading=!0}),this.$results.on("scroll",function(){var e=t.contains(document.documentElement,i.$loadingMore[0]);if(!i.loading&&e){i.$results.offset().top+i.$results.outerHeight(!1)+50>=i.$loadingMore.offset().top+i.$loadingMore.outerHeight(!1)&&i.loadMore()}})},e.prototype.loadMore=function(){this.loading=!0;var e=t.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(t,e){return e.pagination&&e.pagination.more},e.prototype.createLoadingMore=function(){var e=t('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),n=this.options.get("translations").get("loadingMore");return e.html(n(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(t,e){function n(e,n,r){this.$dropdownParent=r.get("dropdownParent")||t(document.body),e.call(this,n,r)}return n.prototype.bind=function(t,e,n){var r=this,i=!1;t.call(this,e,n),e.on("open",function(){r._showDropdown(),r._attachPositioningHandler(e),i||(i=!0,e.on("results:all",function(){r._positionDropdown(),r._resizeDropdown()}),e.on("results:append",function(){r._positionDropdown(),r._resizeDropdown()}))}),e.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(e)}),this.$dropdownContainer.on("mousedown",function(t){t.stopPropagation()})},n.prototype.destroy=function(t){t.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(t,e,n){e.attr("class",n.attr("class")),e.removeClass("select2"),e.addClass("select2-container--open"),e.css({position:"absolute",top:-999999}),this.$container=n},n.prototype.render=function(e){var n=t("<span></span>"),r=e.call(this);return n.append(r),this.$dropdownContainer=n,n},n.prototype._hideDropdown=function(t){this.$dropdownContainer.detach()},n.prototype._attachPositioningHandler=function(n,r){var i=this,o="scroll.select2."+r.id,a="resize.select2."+r.id,s="orientationchange.select2."+r.id,l=this.$container.parents().filter(e.hasScroll);l.each(function(){t(this).data("select2-scroll-position",{x:t(this).scrollLeft(),y:t(this).scrollTop()})}),l.on(o,function(e){var n=t(this).data("select2-scroll-position");t(this).scrollTop(n.y)}),t(window).on(o+" "+a+" "+s,function(t){i._positionDropdown(),i._resizeDropdown()})},n.prototype._detachPositioningHandler=function(n,r){var i="scroll.select2."+r.id,o="resize.select2."+r.id,a="orientationchange.select2."+r.id;this.$container.parents().filter(e.hasScroll).off(i),t(window).off(i+" "+o+" "+a)},n.prototype._positionDropdown=function(){var e=t(window),n=this.$dropdown.hasClass("select2-dropdown--above"),r=this.$dropdown.hasClass("select2-dropdown--below"),i=null,o=this.$container.offset();o.bottom=o.top+this.$container.outerHeight(!1);var a={height:this.$container.outerHeight(!1)};a.top=o.top,a.bottom=o.top+a.height;var s={height:this.$dropdown.outerHeight(!1)},l={top:e.scrollTop(),bottom:e.scrollTop()+e.height()},u=l.top<o.top-s.height,c=l.bottom>o.bottom+s.height,f={left:o.left,top:a.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var d=p.offset();f.top-=d.top,f.left-=d.left,n||r||(i="below"),c||!u||n?!u&&c&&n&&(i="below"):i="above",("above"==i||n&&"below"!==i)&&(f.top=a.top-d.top-s.height),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(f)},n.prototype._resizeDropdown=function(){var t={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(t.minWidth=t.width,t.position="relative",t.width="auto"),this.$dropdown.css(t)},n.prototype._showDropdown=function(t){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function t(e){for(var n=0,r=0;r<e.length;r++){var i=e[r];i.children?n+=t(i.children):n++}return n}function e(t,e,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),t.call(this,e,n,r)}return e.prototype.showSearch=function(e,n){return!(t(n.data.results)<this.minimumResultsForSearch)&&e.call(this,n)},e}),e.define("select2/dropdown/selectOnClose",[],function(){function t(){}return t.prototype.bind=function(t,e,n){var r=this;t.call(this,e,n),e.on("close",function(t){r._handleSelectOnClose(t)})},t.prototype._handleSelectOnClose=function(t,e){if(e&&null!=e.originalSelect2Event){var n=e.originalSelect2Event;if("select"===n._type||"unselect"===n._type)return}var r=this.getHighlightedResults();if(!(r.length<1)){var i=r.data("data");null!=i.element&&i.element.selected||null==i.element&&i.selected||this.trigger("select",{data:i})}},t}),e.define("select2/dropdown/closeOnSelect",[],function(){function t(){}return t.prototype.bind=function(t,e,n){var r=this;t.call(this,e,n),e.on("select",function(t){r._selectTriggered(t)}),e.on("unselect",function(t){r._selectTriggered(t)})},t.prototype._selectTriggered=function(t,e){var n=e.originalEvent;n&&n.ctrlKey||this.trigger("close",{originalEvent:n,originalSelect2Event:e})},t}),e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(t){var e=t.input.length-t.maximum,n="Please delete "+e+" character";return 1!=e&&(n+="s"),n},inputTooShort:function(t){return"Please enter "+(t.minimum-t.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){var e="You can only select "+t.maximum+" item";return 1!=t.maximum&&(e+="s"),e},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),e.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(t,e,n,r,i,o,a,s,l,u,c,f,p,d,h,v,g,m,y,b,_,x,w,k,C,$,T,S,A){function E(){this.reset()}return E.prototype.apply=function(f){if(f=t.extend(!0,{},this.defaults,f),null==f.dataAdapter){if(null!=f.ajax?f.dataAdapter=h:null!=f.data?f.dataAdapter=d:f.dataAdapter=p,f.minimumInputLength>0&&(f.dataAdapter=u.Decorate(f.dataAdapter,m)),f.maximumInputLength>0&&(f.dataAdapter=u.Decorate(f.dataAdapter,y)),f.maximumSelectionLength>0&&(f.dataAdapter=u.Decorate(f.dataAdapter,b)),f.tags&&(f.dataAdapter=u.Decorate(f.dataAdapter,v)),null==f.tokenSeparators&&null==f.tokenizer||(f.dataAdapter=u.Decorate(f.dataAdapter,g)),null!=f.query){var A=e(f.amdBase+"compat/query");f.dataAdapter=u.Decorate(f.dataAdapter,A)}if(null!=f.initSelection){var E=e(f.amdBase+"compat/initSelection");f.dataAdapter=u.Decorate(f.dataAdapter,E)}}if(null==f.resultsAdapter&&(f.resultsAdapter=n,null!=f.ajax&&(f.resultsAdapter=u.Decorate(f.resultsAdapter,k)),null!=f.placeholder&&(f.resultsAdapter=u.Decorate(f.resultsAdapter,w)),f.selectOnClose&&(f.resultsAdapter=u.Decorate(f.resultsAdapter,T))),null==f.dropdownAdapter){if(f.multiple)f.dropdownAdapter=_;else{var O=u.Decorate(_,x);f.dropdownAdapter=O}if(0!==f.minimumResultsForSearch&&(f.dropdownAdapter=u.Decorate(f.dropdownAdapter,$)),f.closeOnSelect&&(f.dropdownAdapter=u.Decorate(f.dropdownAdapter,S)),null!=f.dropdownCssClass||null!=f.dropdownCss||null!=f.adaptDropdownCssClass){var j=e(f.amdBase+"compat/dropdownCss");f.dropdownAdapter=u.Decorate(f.dropdownAdapter,j)}f.dropdownAdapter=u.Decorate(f.dropdownAdapter,C)}if(null==f.selectionAdapter){if(f.multiple?f.selectionAdapter=i:f.selectionAdapter=r,null!=f.placeholder&&(f.selectionAdapter=u.Decorate(f.selectionAdapter,o)),f.allowClear&&(f.selectionAdapter=u.Decorate(f.selectionAdapter,a)),f.multiple&&(f.selectionAdapter=u.Decorate(f.selectionAdapter,s)),null!=f.containerCssClass||null!=f.containerCss||null!=f.adaptContainerCssClass){var D=e(f.amdBase+"compat/containerCss");f.selectionAdapter=u.Decorate(f.selectionAdapter,D)}f.selectionAdapter=u.Decorate(f.selectionAdapter,l)}if("string"==typeof f.language)if(f.language.indexOf("-")>0){var N=f.language.split("-"),I=N[0];f.language=[f.language,I]}else f.language=[f.language];if(t.isArray(f.language)){var P=new c;f.language.push("en");for(var L=f.language,R=0;R<L.length;R++){var M=L[R],F={};try{F=c.loadPath(M)}catch(t){try{M=this.defaults.amdLanguageBase+M,F=c.loadPath(M)}catch(t){f.debug&&window.console&&console.warn;continue}}P.extend(F)}f.translations=P}else{var q=c.loadPath(this.defaults.amdLanguageBase+"en"),B=new c(f.language);B.extend(q),f.translations=B}return f},E.prototype.reset=function(){function e(t){function e(t){return f[t]||t}return t.replace(/[^\u0000-\u007E]/g,e)}function n(r,i){if(""===t.trim(r.term))return i;if(i.children&&i.children.length>0){for(var o=t.extend(!0,{},i),a=i.children.length-1;a>=0;a--){null==n(r,i.children[a])&&o.children.splice(a,1)}return o.children.length>0?o:n(r,o)}var s=e(i.text).toUpperCase(),l=e(r.term).toUpperCase();return s.indexOf(l)>-1?i:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:u.escapeMarkup,language:A,matcher:n,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(t){return t},templateResult:function(t){return t.text},templateSelection:function(t){return t.text},theme:"default",width:"resolve"}},E.prototype.set=function(e,n){var r=t.camelCase(e),i={};i[r]=n;var o=u._convertData(i);t.extend(this.defaults,o)},new E}),e.define("select2/options",["require","jquery","./defaults","./utils"],function(t,e,n,r){function i(e,i){if(this.options=e,null!=i&&this.fromElement(i),this.options=n.apply(this.options),i&&i.is("input")){var o=t(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=r.Decorate(this.options.dataAdapter,o)}}return i.prototype.fromElement=function(t){var n=["select2"];null==this.options.multiple&&(this.options.multiple=t.prop("multiple")),null==this.options.disabled&&(this.options.disabled=t.prop("disabled")),null==this.options.language&&(t.prop("lang")?this.options.language=t.prop("lang").toLowerCase():t.closest("[lang]").prop("lang")&&(this.options.language=t.closest("[lang]").prop("lang"))),null==this.options.dir&&(t.prop("dir")?this.options.dir=t.prop("dir"):t.closest("[dir]").prop("dir")?this.options.dir=t.closest("[dir]").prop("dir"):this.options.dir="ltr"),t.prop("disabled",this.options.disabled),t.prop("multiple",this.options.multiple),t.data("select2Tags")&&(this.options.debug&&window.console&&console.warn,t.data("data",t.data("select2Tags")),t.data("tags",!0)),t.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn,t.attr("ajax--url",t.data("ajaxUrl")),t.data("ajax--url",t.data("ajaxUrl")));var i={};i=e.fn.jquery&&"1."==e.fn.jquery.substr(0,2)&&t[0].dataset?e.extend(!0,{},t[0].dataset,t.data()):t.data();var o=e.extend(!0,{},i);o=r._convertData(o);for(var a in o)e.inArray(a,n)>-1||(e.isPlainObject(this.options[a])?e.extend(this.options[a],o[a]):this.options[a]=o[a]);return this},i.prototype.get=function(t){return this.options[t]},i.prototype.set=function(t,e){this.options[t]=e},i}),e.define("select2/core",["jquery","./options","./utils","./keys"],function(t,e,n,r){var i=function(t,n){null!=t.data("select2")&&t.data("select2").destroy(),this.$element=t,this.id=this._generateId(t),n=n||{},this.options=new e(n,t),i.__super__.constructor.call(this);var r=t.attr("tabindex")||0;t.data("old-tabindex",r),t.attr("tabindex","-1");var o=this.options.get("dataAdapter");this.dataAdapter=new o(t,this.options);var a=this.render();this._placeContainer(a);var s=this.options.get("selectionAdapter");this.selection=new s(t,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,a);var l=this.options.get("dropdownAdapter");this.dropdown=new l(t,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,a);var u=this.options.get("resultsAdapter");this.results=new u(t,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var c=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(t){c.trigger("selection:update",{data:t})}),t.addClass("select2-hidden-accessible"),t.attr("aria-hidden","true"),this._syncAttributes(),t.data("select2",this)};return n.Extend(i,n.Observable),i.prototype._generateId=function(t){var e="";return e=null!=t.attr("id")?t.attr("id"):null!=t.attr("name")?t.attr("name")+"-"+n.generateChars(2):n.generateChars(4),e=e.replace(/(:|\.|\[|\]|,)/g,""),e="select2-"+e},i.prototype._placeContainer=function(t){t.insertAfter(this.$element);var e=this._resolveWidth(this.$element,this.options.get("width"));null!=e&&t.css("width",e)},i.prototype._resolveWidth=function(t,e){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==e){var r=this._resolveWidth(t,"style");return null!=r?r:this._resolveWidth(t,"element")}if("element"==e){var i=t.outerWidth(!1);return i<=0?"auto":i+"px"}if("style"==e){var o=t.attr("style");if("string"!=typeof o)return null;for(var a=o.split(";"),s=0,l=a.length;s<l;s+=1){var u=a[s].replace(/\s/g,""),c=u.match(n);if(null!==c&&c.length>=1)return c[1]}return null}return e},i.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},i.prototype._registerDomEvents=function(){var e=this;this.$element.on("change.select2",function(){e.dataAdapter.current(function(t){e.trigger("selection:update",{data:t})})}),this.$element.on("focus.select2",function(t){e.trigger("focus",t)}),this._syncA=n.bind(this._syncAttributes,this),this._syncS=n.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=r?(this._observer=new r(function(n){t.each(n,e._syncA),t.each(n,e._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",e._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",e._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",e._syncS,!1))},i.prototype._registerDataEvents=function(){var t=this;this.dataAdapter.on("*",function(e,n){t.trigger(e,n)})},i.prototype._registerSelectionEvents=function(){var e=this,n=["toggle","focus"];this.selection.on("toggle",function(){e.toggleDropdown()}),this.selection.on("focus",function(t){e.focus(t)}),this.selection.on("*",function(r,i){-1===t.inArray(r,n)&&e.trigger(r,i)})},i.prototype._registerDropdownEvents=function(){var t=this;this.dropdown.on("*",function(e,n){t.trigger(e,n)})},i.prototype._registerResultsEvents=function(){var t=this;this.results.on("*",function(e,n){t.trigger(e,n)})},i.prototype._registerEvents=function(){var t=this;this.on("open",function(){t.$container.addClass("select2-container--open")}),this.on("close",function(){t.$container.removeClass("select2-container--open")}),this.on("enable",function(){t.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){t.$container.addClass("select2-container--disabled")}),this.on("blur",function(){t.$container.removeClass("select2-container--focus")}),this.on("query",function(e){t.isOpen()||t.trigger("open",{}),this.dataAdapter.query(e,function(n){t.trigger("results:all",{data:n,query:e})})}),this.on("query:append",function(e){this.dataAdapter.query(e,function(n){t.trigger("results:append",{data:n,query:e})})}),this.on("keypress",function(e){var n=e.which;t.isOpen()?n===r.ESC||n===r.TAB||n===r.UP&&e.altKey?(t.close(),e.preventDefault()):n===r.ENTER?(t.trigger("results:select",{}),e.preventDefault()):n===r.SPACE&&e.ctrlKey?(t.trigger("results:toggle",{}),e.preventDefault()):n===r.UP?(t.trigger("results:previous",{}),e.preventDefault()):n===r.DOWN&&(t.trigger("results:next",{}),e.preventDefault()):(n===r.ENTER||n===r.SPACE||n===r.DOWN&&e.altKey)&&(t.open(),e.preventDefault())})},i.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},i.prototype._syncSubtree=function(t,e){var n=!1,r=this;if(!t||!t.target||"OPTION"===t.target.nodeName||"OPTGROUP"===t.target.nodeName){if(e)if(e.addedNodes&&e.addedNodes.length>0)for(var i=0;i<e.addedNodes.length;i++){var o=e.addedNodes[i];o.selected&&(n=!0)}else e.removedNodes&&e.removedNodes.length>0&&(n=!0);else n=!0;n&&this.dataAdapter.current(function(t){r.trigger("selection:update",{data:t})})}},i.prototype.trigger=function(t,e){var n=i.__super__.trigger,r={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===e&&(e={}),t in r){var o=r[t],a={prevented:!1,name:t,args:e};if(n.call(this,o,a),a.prevented)return void(e.prevented=!0)}n.call(this,t,e)},i.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},i.prototype.open=function(){this.isOpen()||this.trigger("query",{})},i.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},i.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},i.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},i.prototype.focus=function(t){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},i.prototype.enable=function(t){this.options.get("debug")&&window.console&&console.warn,null!=t&&0!==t.length||(t=[!0]);var e=!t[0];this.$element.prop("disabled",e)},i.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn;var t=[];return this.dataAdapter.current(function(e){t=e}),t},i.prototype.val=function(e){if(this.options.get("debug")&&window.console&&console.warn,null==e||0===e.length)return this.$element.val();var n=e[0];t.isArray(n)&&(n=t.map(n,function(t){return t.toString()})),this.$element.val(n).trigger("change")},i.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},i.prototype.render=function(){var e=t('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),e.data("element",this.$element),e},i}),e.define("jquery-mousewheel",["jquery"],function(t){return t}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(t,e,n,r){if(null==t.fn.select2){var i=["open","close","destroy"];t.fn.select2=function(e){if("object"==typeof(e=e||{}))return this.each(function(){var r=t.extend(!0,{},e);new n(t(this),r)}),this;if("string"==typeof e){var r,o=Array.prototype.slice.call(arguments,1);return this.each(function(){var n=t(this).data("select2");null==n&&window.console&&console.error,r=n[e].apply(n,o)}),t.inArray(e,i)>-1?this:r}throw new Error("Invalid arguments for Select2: "+e)}}return null==t.fn.select2.defaults&&(t.fn.select2.defaults=r),n}),{define:e.define,require:e.require}}(),n=e.require("jquery.select2");return t.fn.select2.amd=e,n})},function(t,e,n){n(48);var r=n(1)(n(10),n(39),"data-v-3edef3ba",null);t.exports=r.exports},function(t,e,n){n(50);var r=n(1)(n(11),n(41),"data-v-5667c312",null);t.exports=r.exports},function(t,e,n){n(49);var r=n(1)(n(12),n(40),"data-v-5301a236",null);t.exports=r.exports},function(t,e,n){n(51);var r=n(1)(n(13),n(42),"data-v-de0d0e4e",null);t.exports=r.exports},function(t,e,n){n(52);var r=n(1)(n(14),n(43),"data-v-e9c80318",null);t.exports=r.exports},function(t,e,n){n(47);var r=n(1)(n(15),n(38),"data-v-225778c2",null);t.exports=r.exports},function(t,e,n){n(53);var r=n(1)(n(16),n(44),"data-v-ff564a86",null);t.exports=r.exports},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",[n("div",{staticClass:"panel panel-default"},[n("div",{staticClass:"panel-heading"},[n("div",{staticStyle:{display:"flex","justify-content":"space-between","align-items":"center"}},[n("span",[t._v("\n Personal Access Tokens\n ")]),t._v(" "),n("a",{staticClass:"action-link",on:{click:t.showCreateTokenForm}},[t._v("\n Create New Token\n ")])])]),t._v(" "),n("div",{staticClass:"panel-body"},[0===t.tokens.length?n("p",{staticClass:"m-b-none"},[t._v("\n You have not created any personal access tokens.\n ")]):t._e(),t._v(" "),t.tokens.length>0?n("table",{staticClass:"table table-borderless m-b-none"},[t._m(0),t._v(" "),n("tbody",t._l(t.tokens,function(e){return n("tr",[n("td",{staticStyle:{"vertical-align":"middle"}},[t._v("\n "+t._s(e.name)+"\n ")]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[n("a",{staticClass:"action-link text-danger",on:{click:function(n){t.revoke(e)}}},[t._v("\n Delete\n ")])])])}))]):t._e()])])]),t._v(" "),n("div",{staticClass:"modal fade",attrs:{id:"modal-create-token",tabindex:"-1",role:"dialog"}},[n("div",{staticClass:"modal-dialog"},[n("div",{staticClass:"modal-content"},[t._m(1),t._v(" "),n("div",{staticClass:"modal-body"},[t.form.errors.length>0?n("div",{staticClass:"alert alert-danger"},[t._m(2),t._v(" "),n("br"),t._v(" "),n("ul",t._l(t.form.errors,function(e){return n("li",[t._v("\n "+t._s(e)+"\n ")])}))]):t._e(),t._v(" "),n("form",{staticClass:"form-horizontal",attrs:{role:"form"},on:{submit:function(e){e.preventDefault(),t.store(e)}}},[n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-4 control-label"},[t._v("Name")]),t._v(" "),n("div",{staticClass:"col-md-6"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.form.name,expression:"form.name"}],staticClass:"form-control",attrs:{id:"create-token-name",type:"text",name:"name"},domProps:{value:t.form.name},on:{input:function(e){e.target.composing||(t.form.name=e.target.value)}}})])]),t._v(" "),t.scopes.length>0?n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-4 control-label"},[t._v("Scopes")]),t._v(" "),n("div",{staticClass:"col-md-6"},t._l(t.scopes,function(e){return n("div",[n("div",{staticClass:"checkbox"},[n("label",[n("input",{attrs:{type:"checkbox"},domProps:{checked:t.scopeIsAssigned(e.id)},on:{click:function(n){t.toggleScope(e.id)}}}),t._v("\n\n "+t._s(e.id)+"\n ")])])])}))]):t._e()])]),t._v(" "),n("div",{staticClass:"modal-footer"},[n("button",{staticClass:"btn btn-default",attrs:{type:"button","data-dismiss":"modal"}},[t._v("Close")]),t._v(" "),n("button",{staticClass:"btn btn-primary",attrs:{type:"button"},on:{click:t.store}},[t._v("\n Create\n ")])])])])]),t._v(" "),n("div",{staticClass:"modal fade",attrs:{id:"modal-access-token",tabindex:"-1",role:"dialog"}},[n("div",{staticClass:"modal-dialog"},[n("div",{staticClass:"modal-content"},[t._m(3),t._v(" "),n("div",{staticClass:"modal-body"},[n("p",[t._v("\n Here is your new personal access token. This is the only time it will be shown so don't lose it!\n You may now use this token to make API requests.\n ")]),t._v(" "),n("pre",[n("code",[t._v(t._s(t.accessToken))])])]),t._v(" "),t._m(4)])])])])},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("tr",[n("th",[t._v("Name")]),t._v(" "),n("th")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"modal-header"},[n("button",{staticClass:"close",attrs:{type:"button ","data-dismiss":"modal","aria-hidden":"true"}},[t._v("×")]),t._v(" "),n("h4",{staticClass:"modal-title"},[t._v("\n Create Token\n ")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("p",[n("strong",[t._v("Whoops!")]),t._v(" Something went wrong!")])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"modal-header"},[n("button",{staticClass:"close",attrs:{type:"button ","data-dismiss":"modal","aria-hidden":"true"}},[t._v("×")]),t._v(" "),n("h4",{staticClass:"modal-title"},[t._v("\n Personal Access Token\n ")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"modal-footer"},[n("button",{staticClass:"btn btn-default",attrs:{type:"button","data-dismiss":"modal"}},[t._v("Close")])])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"col-md-12",class:t.alertType},[n("div",{staticClass:"alert",class:t.alertClassName},[n("button",{staticClass:"close",attrs:{type:"button"},on:{click:t.hideEvent}},[t._v("×")]),t._v(" "),n("i",{directives:[{name:"show",rawName:"v-show",value:"success"==t.alertType,expression:"alertType == 'success'"}],staticClass:"fa fa-check faa-pulse animated"}),t._v(" "),n("strong",[t._v(t._s(t.title)+" ")]),t._v(" "),t._t("default")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"row"},[n("alert",{directives:[{name:"show",rawName:"v-show",value:t.alert.visible,expression:"alert.visible"}],attrs:{alertType:t.alert.type},on:{hide:function(e){t.alert.visible=!1}}},[t._v(t._s(t.alert.message))]),t._v(" "),n("errors",{attrs:{errors:t.importErrors}}),t._v(" "),n("modal",{attrs:{effect:"fade"},model:{value:t.displayImportModal,callback:function(e){t.displayImportModal=e},expression:"displayImportModal"}},[n("div",{staticClass:"modal-header",slot:"modal-header"},[n("h4",{staticClass:"modal-title"},[t._v("Import File:")])]),t._v(" "),n("div",{staticClass:"modal-body",slot:"modal-body"},[n("div",{staticClass:"dynamic-form-row"},[n("div",{staticClass:"col-md-4 col-xs-12"},[n("label",{attrs:{for:"import-type"}},[t._v("Import Type:")])]),t._v(" "),n("div",{staticClass:"col-md-8 col-xs-12"},[n("select2",{attrs:{options:t.modal.importTypes},model:{value:t.modal.importType,callback:function(e){t.modal.importType=e},expression:"modal.importType"}},[n("option",{attrs:{disabled:"",value:"0"}})])],1)]),t._v(" "),n("div",{staticClass:"dynamic-form-row"},[n("div",{staticClass:"col-md-4 col-xs-12"},[n("label",{attrs:{for:"import-update"}},[t._v("Update Existing Values?:")])]),t._v(" "),n("div",{staticClass:"col-md-8 col-xs-12"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.modal.update,expression:"modal.update"}],attrs:{type:"checkbox",name:"import-update"},domProps:{checked:Array.isArray(t.modal.update)?t._i(t.modal.update,null)>-1:t.modal.update},on:{__c:function(e){var n=t.modal.update,r=e.target,i=!!r.checked;if(Array.isArray(n)){var o=t._i(n,null);i?o<0&&(t.modal.update=n.concat(null)):o>-1&&(t.modal.update=n.slice(0,o).concat(n.slice(o+1)))}else t.modal.update=i}}})])])]),t._v(" "),n("div",{staticClass:"modal-footer",slot:"modal-footer"},[t.modal.statusText?n("div",{staticClass:"alert alert-success col-md-5 col-md-offset-1",staticStyle:{"text-align":"left"}},[t._v(t._s(this.modal.statusText))]):t._e(),t._v(" "),n("button",{staticClass:"btn btn-default",attrs:{type:"button"},on:{click:function(e){t.displayImportModal=!1}}},[t._v("Cancel")]),t._v(" "),n("button",{staticClass:"btn btn-primary",attrs:{type:"submit"},on:{click:t.postSave}},[t._v("Process")])])]),t._v(" "),n("div",{staticClass:"col-md-12"},[n("div",{staticClass:"box"},[n("div",{staticClass:"box-body"},[n("div",{staticClass:"row"},[t._m(0),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.progress.visible,expression:"progress.visible"}],staticClass:"col-md-9",staticStyle:{"padding-bottom":"20px"}},[n("div",{staticClass:"col-md-11"},[n("div",{staticClass:"progress progress-striped-active",staticStyle:{"margin-top":"8px"}},[n("div",{staticClass:"progress-bar",class:t.progress.currentClass,style:t.progressWidth,attrs:{role:"progressbar"}},[n("span",[t._v(t._s(t.progress.statusText))])])])])])]),t._v(" "),n("div",{staticClass:"row"},[n("div",{staticClass:"col-md-12",staticStyle:{"padding-top":"30px"}},[n("table",{staticClass:"table table-striped",attrs:{id:"upload-table"}},[t._m(1),t._v(" "),n("tbody",t._l(t.files,function(e){return n("tr",[n("td",[t._v(t._s(e.file_path))]),t._v(" "),n("td",[t._v(t._s(e.created_at)+" ")]),t._v(" "),n("td",[t._v(t._s(e.filesize))]),t._v(" "),n("td",[n("button",{staticClass:"btn btn-sm btn-info",on:{click:function(n){t.showModal(e)}}},[t._v("Process")]),t._v(" "),n("button",{staticClass:"btn btn-danger",on:{click:function(n){t.deleteFile(e)}}},[n("i",{staticClass:"fa fa-trash icon-white"})])])])}))])])])])])])],1)},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"col-md-3"},[n("span",{staticClass:"btn btn-info fileinput-button"},[n("span",[t._v("Select Import File...")]),t._v(" "),n("input",{attrs:{id:"fileupload",type:"file",name:"files[]","data-url":"/api/v1/imports",accept:"text/csv"}})])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("th",[t._v("File")]),t._v(" "),n("th",[t._v("Created")]),t._v(" "),n("th",[t._v("Size")]),t._v(" "),n("th")])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.errors?n("div",{staticClass:"box"},[n("div",{staticClass:"box-body"},[t._m(0),t._v(" "),n("div",{staticClass:"errors-table"},[n("table",{staticClass:"table table-striped table-bordered",attrs:{id:"errors-table"}},[t._m(1),t._v(" "),n("tbody",t._l(t.errors,function(e,r){return n("tr",[n("td",[t._v(t._s(r))]),t._v(" "),t._l(e,function(e,r){return n("td",[n("b",[t._v(t._s(r)+":")]),t._v(" "),t._l(e,function(e){return n("span",[t._v(t._s(e[0]))])}),t._v(" "),n("br")],2)})],2)}))])])])]):t._e()},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"alert alert-warning"},[n("strong",[t._v("Warning")]),t._v(" Some Errors occured while importing\n ")])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("th",[t._v("Item")]),t._v(" "),n("th",[t._v("Errors")])])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[t.tokens.length>0?n("div",[n("div",{staticClass:"panel panel-default"},[n("div",{staticClass:"panel-heading"},[t._v("Authorized Applications")]),t._v(" "),n("div",{staticClass:"panel-body"},[n("table",{staticClass:"table table-borderless m-b-none"},[t._m(0),t._v(" "),n("tbody",t._l(t.tokens,function(e){return n("tr",[n("td",{staticStyle:{"vertical-align":"middle"}},[t._v("\n "+t._s(e.client.name)+"\n ")]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[e.scopes.length>0?n("span",[t._v("\n "+t._s(e.scopes.join(", "))+"\n ")]):t._e()]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[n("a",{staticClass:"action-link text-danger",on:{click:function(n){t.revoke(e)}}},[t._v("\n Revoke\n ")])])])}))])])])]):t._e()])},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("tr",[n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Scopes")]),t._v(" "),n("th")])])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"panel panel-default"},[n("div",{staticClass:"panel-heading"},[n("div",{staticStyle:{display:"flex","justify-content":"space-between","align-items":"center"}},[n("span",[t._v("\n OAuth Clients\n ")]),t._v(" "),n("a",{staticClass:"action-link",on:{click:t.showCreateClientForm}},[t._v("\n Create New Client\n ")])])]),t._v(" "),n("div",{staticClass:"panel-body"},[0===t.clients.length?n("p",{staticClass:"m-b-none"},[t._v("\n You have not created any OAuth clients.\n ")]):t._e(),t._v(" "),t.clients.length>0?n("table",{staticClass:"table table-borderless m-b-none"},[t._m(0),t._v(" "),n("tbody",t._l(t.clients,function(e){return n("tr",[n("td",{staticStyle:{"vertical-align":"middle"}},[t._v("\n "+t._s(e.id)+"\n ")]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[t._v("\n "+t._s(e.name)+"\n ")]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[n("code",[t._v(t._s(e.secret))])]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[n("a",{staticClass:"action-link",on:{click:function(n){t.edit(e)}}},[t._v("\n Edit\n ")])]),t._v(" "),n("td",{staticStyle:{"vertical-align":"middle"}},[n("a",{staticClass:"action-link text-danger",on:{click:function(n){t.destroy(e)}}},[t._v("\n Delete\n ")])])])}))]):t._e()])]),t._v(" "),n("div",{staticClass:"modal fade",attrs:{id:"modal-create-client",tabindex:"-1",role:"dialog"}},[n("div",{staticClass:"modal-dialog"},[n("div",{staticClass:"modal-content"},[t._m(1),t._v(" "),n("div",{staticClass:"modal-body"},[t.createForm.errors.length>0?n("div",{staticClass:"alert alert-danger"},[t._m(2),t._v(" "),n("br"),t._v(" "),n("ul",t._l(t.createForm.errors,function(e){return n("li",[t._v("\n "+t._s(e)+"\n ")])}))]):t._e(),t._v(" "),n("form",{staticClass:"form-horizontal",attrs:{role:"form"}},[n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-3 control-label"},[t._v("Name")]),t._v(" "),n("div",{staticClass:"col-md-7"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.createForm.name,expression:"createForm.name"}],staticClass:"form-control",attrs:{id:"create-client-name",type:"text"},domProps:{value:t.createForm.name},on:{keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13))return null;t.store(e)},input:function(e){e.target.composing||(t.createForm.name=e.target.value)}}}),t._v(" "),n("span",{staticClass:"help-block"},[t._v("\n Something your users will recognize and trust.\n ")])])]),t._v(" "),n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-3 control-label"},[t._v("Redirect URL")]),t._v(" "),n("div",{staticClass:"col-md-7"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.createForm.redirect,expression:"createForm.redirect"}],staticClass:"form-control",attrs:{type:"text",name:"redirect"},domProps:{value:t.createForm.redirect},on:{keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13))return null;t.store(e)},input:function(e){e.target.composing||(t.createForm.redirect=e.target.value)}}}),t._v(" "),n("span",{staticClass:"help-block"},[t._v("\n Your application's authorization callback URL.\n ")])])])])]),t._v(" "),n("div",{staticClass:"modal-footer"},[n("button",{staticClass:"btn btn-default",attrs:{type:"button","data-dismiss":"modal"}},[t._v("Close")]),t._v(" "),n("button",{staticClass:"btn btn-primary",attrs:{type:"button"},on:{click:t.store}},[t._v("\n Create\n ")])])])])]),t._v(" "),n("div",{staticClass:"modal fade",attrs:{id:"modal-edit-client",tabindex:"-1",role:"dialog"}},[n("div",{staticClass:"modal-dialog"},[n("div",{staticClass:"modal-content"},[t._m(3),t._v(" "),n("div",{staticClass:"modal-body"},[t.editForm.errors.length>0?n("div",{staticClass:"alert alert-danger"},[t._m(4),t._v(" "),n("br"),t._v(" "),n("ul",t._l(t.editForm.errors,function(e){return n("li",[t._v("\n "+t._s(e)+"\n ")])}))]):t._e(),t._v(" "),n("form",{staticClass:"form-horizontal",attrs:{role:"form"}},[n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-3 control-label"},[t._v("Name")]),t._v(" "),n("div",{staticClass:"col-md-7"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.editForm.name,expression:"editForm.name"}],staticClass:"form-control",attrs:{id:"edit-client-name",type:"text"},domProps:{value:t.editForm.name},on:{keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13))return null;t.update(e)},input:function(e){e.target.composing||(t.editForm.name=e.target.value)}}}),t._v(" "),n("span",{staticClass:"help-block"},[t._v("\n Something your users will recognize and trust.\n ")])])]),t._v(" "),n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-md-3 control-label"},[t._v("Redirect URL")]),t._v(" "),n("div",{staticClass:"col-md-7"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.editForm.redirect,expression:"editForm.redirect"}],staticClass:"form-control",attrs:{type:"text",name:"redirect"},domProps:{value:t.editForm.redirect},on:{keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13))return null;t.update(e)},input:function(e){e.target.composing||(t.editForm.redirect=e.target.value)}}}),t._v(" "),n("span",{staticClass:"help-block"},[t._v("\n Your application's authorization callback URL.\n ")])])])])]),t._v(" "),n("div",{staticClass:"modal-footer"},[n("button",{staticClass:"btn btn-default",attrs:{type:"button","data-dismiss":"modal"}},[t._v("Close")]),t._v(" "),n("button",{staticClass:"btn btn-primary",attrs:{type:"button"},on:{click:t.update}},[t._v("\n Save Changes\n ")])])])])])])},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("tr",[n("th",[t._v("Client ID")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Secret")]),t._v(" "),n("th"),t._v(" "),n("th")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"modal-header"},[n("button",{staticClass:"close",attrs:{type:"button ","data-dismiss":"modal","aria-hidden":"true"}},[t._v("×")]),t._v(" "),n("h4",{staticClass:"modal-title"},[t._v("\n Create Client\n ")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("p",[n("strong",[t._v("Whoops!")]),t._v(" Something went wrong!")])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"modal-header"},[n("button",{staticClass:"close",attrs:{type:"button ","data-dismiss":"modal","aria-hidden":"true"}},[t._v("×")]),t._v(" "),n("h4",{staticClass:"modal-title"},[t._v("\n Edit Client\n ")])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("p",[n("strong",[t._v("Whoops!")]),t._v(" Something went wrong!")])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("select",{staticStyle:{width:"100%"}},[t._t("default")],2)},staticRenderFns:[]}},function(t,e,n){"use strict";function r(t){this.state=W,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}function i(t,e){t instanceof Promise?this.promise=t:this.promise=new Promise(t.bind(e)),this.context=e}function o(t){}function a(t){}function s(t,e){return Y(t,e)}function l(t){return t?t.replace(/^\s*|\s*$/g,""):""}function u(t,e){return t&&void 0===e?t.replace(/\s+$/,""):t&&e?t.replace(new RegExp("["+e+"]+$"),""):t}function c(t){return t?t.toLowerCase():""}function f(t){return t?t.toUpperCase():""}function p(t){return"string"==typeof t}function d(t){return"function"==typeof t}function h(t){return null!==t&&"object"==typeof t}function v(t){return h(t)&&Object.getPrototypeOf(t)==Object.prototype}function g(t){return"undefined"!=typeof Blob&&t instanceof Blob}function m(t){return"undefined"!=typeof FormData&&t instanceof FormData}function y(t,e,n){var r=i.resolve(t);return arguments.length<2?r:r.then(e,n)}function b(t,e,n){return n=n||{},d(n)&&(n=n.call(e)),x(t.bind({$vm:e,$options:n}),t,{$options:n})}function _(t,e){var n,r;if(nt(t))for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(h(t))for(r in t)Z.call(t,r)&&e.call(t[r],t[r],r);return t}function x(t){return K.call(arguments,1).forEach(function(e){C(t,e,!0)}),t}function w(t){return K.call(arguments,1).forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])}),t}function k(t){return K.call(arguments,1).forEach(function(e){C(t,e)}),t}function C(t,e,n){for(var r in e)n&&(v(e[r])||nt(e[r]))?(v(e[r])&&!v(t[r])&&(t[r]={}),nt(e[r])&&!nt(t[r])&&(t[r]=[]),C(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function $(t,e,n){var r=T(t),i=r.expand(e);return n&&n.push.apply(n,r.vars),i}function T(t){var e=["+","#",".","/",";","?","&"],n=[];return{vars:n,expand:function(r){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,i,o){if(i){var a=null,s=[];if(-1!==e.indexOf(i.charAt(0))&&(a=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(t){var e=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);s.push.apply(s,S(r,a,e[1],e[2]||e[3])),n.push(e[1])}),a&&"+"!==a){var l=",";return"?"===a?l="&":"#"!==a&&(l=a),(0!==s.length?a:"")+s.join(l)}return s.join(",")}return j(o)})}}}function S(t,e,n,r){var i=t[n],o=[];if(A(i)&&""!==i)if("string"==typeof i||"number"==typeof i||"boolean"==typeof i)i=i.toString(),r&&"*"!==r&&(i=i.substring(0,parseInt(r,10))),o.push(O(e,i,E(e)?n:null));else if("*"===r)Array.isArray(i)?i.filter(A).forEach(function(t){o.push(O(e,t,E(e)?n:null))}):Object.keys(i).forEach(function(t){A(i[t])&&o.push(O(e,i[t],t))});else{var a=[];Array.isArray(i)?i.filter(A).forEach(function(t){a.push(O(e,t))}):Object.keys(i).forEach(function(t){A(i[t])&&(a.push(encodeURIComponent(t)),a.push(O(e,i[t].toString())))}),E(e)?o.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&o.push(a.join(","))}else";"===e?o.push(encodeURIComponent(n)):""!==i||"&"!==e&&"?"!==e?""===i&&o.push(""):o.push(encodeURIComponent(n)+"=");return o}function A(t){return void 0!==t&&null!==t}function E(t){return";"===t||"&"===t||"?"===t}function O(t,e,n){return e="+"===t||"#"===t?j(e):encodeURIComponent(e),n?encodeURIComponent(n)+"="+e:e}function j(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t}).join("")}function D(t,e){var n,r=this||{},i=t;return p(t)&&(i={url:t,params:e}),i=x({},D.options,r.$options,i),D.transforms.forEach(function(t){p(t)&&(t=D.transform[t]),d(t)&&(n=N(t,n,r.$vm))}),n(i)}function N(t,e,n){return function(r){return t.call(n,r,e)}}function I(t,e,n){var r,i=nt(e),o=v(e);_(e,function(e,a){r=h(e)||nt(e),n&&(a=n+"["+(o||r?a:"")+"]"),!n&&i?t.add(e.name,e.value):r?I(t,e,a):t.add(a,e)})}function P(t){var e=t.match(/^\[|^\{(?!\{)/),n={"[":/]$/,"{":/}$/};return e&&n[e[0]].test(t)}function L(t,e){e((t.client||(tt?mt:yt))(t))}function R(t,e){return Object.keys(t).reduce(function(t,n){return c(e)===c(n)?n:t},null)}function M(t){if(/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return l(t)}function F(t){return new i(function(e){var n=new FileReader;n.readAsText(t),n.onload=function(){e(n.result)}})}function q(t){return 0===t.type.indexOf("text")||-1!==t.type.indexOf("json")}function B(t){var e=this||{},n=bt(e.$vm);return w(t||{},e.$options,B.options),B.interceptors.forEach(function(t){p(t)&&(t=B.interceptor[t]),d(t)&&n.use(t)}),n(new wt(t)).then(function(t){return t.ok?t:i.reject(t)},function(t){return t instanceof Error&&a(t),i.reject(t)})}function H(t,e,n,r){var i=this||{},o={};return n=rt({},H.actions,n),_(n,function(n,a){n=x({url:t,params:rt({},e)},r,n),o[a]=function(){return(i.$http||B)(U(n,arguments))}}),o}function U(t,e){var n,r=rt({},t),i={};switch(e.length){case 2:i=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:i=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=rt({},r.params,i),r}function z(t){z.installed||(et(t),t.url=D,t.http=B,t.resource=H,t.Promise=i,Object.defineProperties(t.prototype,{$url:{get:function(){return b(t.url,this,this.$options.url)}},$http:{get:function(){return b(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"Url",function(){return D}),n.d(e,"Http",function(){return B}),n.d(e,"Resource",function(){return H});/*! - * vue-resource v1.3.3 - * https://github.com/pagekit/vue-resource - * Released under the MIT License. - */ -var W=2;r.reject=function(t){return new r(function(e,n){n(t)})},r.resolve=function(t){return new r(function(e,n){e(t)})},r.all=function(t){return new r(function(e,n){var i=0,o=[];0===t.length&&e(o);for(var a=0;a<t.length;a+=1)r.resolve(t[a]).then(function(n){return function(r){o[n]=r,(i+=1)===t.length&&e(o)}}(a),n)})},r.race=function(t){return new r(function(e,n){for(var i=0;i<t.length;i+=1)r.resolve(t[i]).then(e,n)})};var V=r.prototype;V.resolve=function(t){var e=this;if(e.state===W){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof r)return void r.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},V.reject=function(t){var e=this;if(e.state===W){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},V.notify=function(){var t=this;s(function(){if(t.state!==W)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],r=e[1],i=e[2],o=e[3];try{0===t.state?i("function"==typeof n?n.call(void 0,t.value):t.value):1===t.state&&("function"==typeof r?i(r.call(void 0,t.value)):o(t.value))}catch(t){o(t)}}})},V.then=function(t,e){var n=this;return new r(function(r,i){n.deferred.push([t,e,r,i]),n.notify()})},V.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=r),i.all=function(t,e){return new i(Promise.all(t),e)},i.resolve=function(t,e){return new i(Promise.resolve(t),e)},i.reject=function(t,e){return new i(Promise.reject(t),e)},i.race=function(t,e){return new i(Promise.race(t),e)};var X=i.prototype;X.bind=function(t){return this.context=t,this},X.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new i(this.promise.then(t,e),this.context)},X.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new i(this.promise.catch(t),this.context)},X.finally=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),Promise.reject(e)})};var Y,G={},Z=G.hasOwnProperty,J=[],K=J.slice,Q=!1,tt="undefined"!=typeof window,et=function(t){var e=t.config,n=t.nextTick;Y=n,Q=e.debug||!e.silent},nt=Array.isArray,rt=Object.assign||k,it=function(t,e){var n=e(t);return p(t.root)&&!/^(https?:)?\//.test(n)&&(n=u(t.root,"/")+"/"+n),n},ot=function(t,e){var n=Object.keys(D.options.params),r={},i=e(t);return _(t.params,function(t,e){-1===n.indexOf(e)&&(r[e]=t)}),r=D.params(r),r&&(i+=(-1==i.indexOf("?")?"?":"&")+r),i},at=function(t){var e=[],n=$(t.url,t.params,e);return e.forEach(function(e){delete t.params[e]}),n};D.options={url:"",root:null,params:{}},D.transform={template:at,query:ot,root:it},D.transforms=["template","query","root"],D.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){d(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},I(e,t),e.join("&").replace(/%20/g,"+")},D.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};var st=function(t){return new i(function(e){var n=new XDomainRequest,r=function(r){var i=r.type,o=0;"load"===i?o=200:"error"===i&&(o=500),e(t.respondWith(n.responseText,{status:o}))};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl()),t.timeout&&(n.timeout=t.timeout),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.onprogress=function(){},n.send(t.getBody())})},lt=tt&&"withCredentials"in new XMLHttpRequest,ut=function(t,e){if(tt){var n=D.parse(location.href),r=D.parse(t.getUrl());r.protocol===n.protocol&&r.host===n.host||(t.crossOrigin=!0,t.emulateHTTP=!1,lt||(t.client=st))}e()},ct=function(t,e){m(t.body)?t.headers.delete("Content-Type"):h(t.body)&&t.emulateJSON&&(t.body=D.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded")),e()},ft=function(t,e){var n=t.headers.get("Content-Type")||"";h(t.body)&&0===n.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),e(function(t){return t.bodyText?y(t.text(),function(e){if(n=t.headers.get("Content-Type")||"",0===n.indexOf("application/json")||P(e))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t}):t})},pt=function(t){return new i(function(e){var n,r,i=t.jsonp||"callback",o=t.jsonpCallback||"_jsonp"+Math.random().toString(36).substr(2),a=null;n=function(n){var i=n.type,s=0;"load"===i&&null!==a?s=200:"error"===i&&(s=500),s&&window[o]&&(delete window[o],document.body.removeChild(r)),e(t.respondWith(a,{status:s}))},window[o]=function(t){a=JSON.stringify(t)},t.abort=function(){n({type:"abort"})},t.params[i]=o,t.timeout&&setTimeout(t.abort,t.timeout),r=document.createElement("script"),r.src=t.getUrl(),r.type="text/javascript",r.async=!0,r.onload=n,r.onerror=n,document.body.appendChild(r)})},dt=function(t,e){"JSONP"==t.method&&(t.client=pt),e()},ht=function(t,e){d(t.before)&&t.before.call(this,t),e()},vt=function(t,e){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST"),e()},gt=function(t,e){_(rt({},B.headers.common,t.crossOrigin?{}:B.headers.custom,B.headers[c(t.method)]),function(e,n){t.headers.has(n)||t.headers.set(n,e)}),e()},mt=function(t){return new i(function(e){var n=new XMLHttpRequest,r=function(r){var i=t.respondWith("response"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?"No Content":l(n.statusText)});_(l(n.getAllResponseHeaders()).split("\n"),function(t){i.headers.append(t.slice(0,t.indexOf(":")),t.slice(t.indexOf(":")+1))}),e(i)};t.abort=function(){return n.abort()},t.progress&&("GET"===t.method?n.addEventListener("progress",t.progress):/^(POST|PUT)$/i.test(t.method)&&n.upload.addEventListener("progress",t.progress)),n.open(t.method,t.getUrl(),!0),t.timeout&&(n.timeout=t.timeout),t.responseType&&"responseType"in n&&(n.responseType=t.responseType),(t.withCredentials||t.credentials)&&(n.withCredentials=!0),t.crossOrigin||t.headers.set("X-Requested-With","XMLHttpRequest"),t.headers.forEach(function(t,e){n.setRequestHeader(e,t)}),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.send(t.getBody())})},yt=function(t){var e=n(57);return new i(function(n){var r,i=t.getUrl(),o=t.getBody(),a=t.method,s={};t.headers.forEach(function(t,e){s[e]=t}),e(i,{body:o,method:a,headers:s}).then(r=function(e){var r=t.respondWith(e.body,{status:e.statusCode,statusText:l(e.statusMessage)});_(e.headers,function(t,e){r.headers.set(e,t)}),n(r)},function(t){return r(t.response)})})},bt=function(t){function e(e){return new i(function(i){function s(){n=r.pop(),d(n)?n.call(t,e,l):(o("Invalid interceptor of type "+typeof n+", must be a function"),l())}function l(e){if(d(e))a.unshift(e);else if(h(e))return a.forEach(function(n){e=y(e,function(e){return n.call(t,e)||e})}),void y(e,i);s()}s()},t)}var n,r=[L],a=[];return h(t)||(t=null),e.use=function(t){r.push(t)},e},_t=function(t){var e=this;this.map={},_(t,function(t,n){return e.append(n,t)})};_t.prototype.has=function(t){return null!==R(this.map,t)},_t.prototype.get=function(t){var e=this.map[R(this.map,t)];return e?e.join():null},_t.prototype.getAll=function(t){return this.map[R(this.map,t)]||[]},_t.prototype.set=function(t,e){this.map[M(R(this.map,t)||t)]=[l(e)]},_t.prototype.append=function(t,e){var n=this.map[R(this.map,t)];n?n.push(l(e)):this.set(t,e)},_t.prototype.delete=function(t){delete this.map[R(this.map,t)]},_t.prototype.deleteAll=function(){this.map={}},_t.prototype.forEach=function(t,e){var n=this;_(this.map,function(r,i){_(r,function(r){return t.call(e,r,i,n)})})};var xt=function(t,e){var n=e.url,r=e.headers,i=e.status,o=e.statusText;this.url=n,this.ok=i>=200&&i<300,this.status=i||0,this.statusText=o||"",this.headers=new _t(r),this.body=t,p(t)?this.bodyText=t:g(t)&&(this.bodyBlob=t,q(t)&&(this.bodyText=F(t)))};xt.prototype.blob=function(){return y(this.bodyBlob)},xt.prototype.text=function(){return y(this.bodyText)},xt.prototype.json=function(){return y(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(xt.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var wt=function(t){this.body=null,this.params={},rt(this,t,{method:f(t.method||"GET")}),this.headers instanceof _t||(this.headers=new _t(this.headers))};wt.prototype.getUrl=function(){return D(this)},wt.prototype.getBody=function(){return this.body},wt.prototype.respondWith=function(t,e){return new xt(t,rt(e||{},{url:this.getUrl()}))};var kt={Accept:"application/json, text/plain, */*"},Ct={"Content-Type":"application/json;charset=utf-8"};B.options={},B.headers={put:Ct,post:Ct,patch:Ct,delete:Ct,common:kt,custom:{}},B.interceptor={before:ht,method:vt,jsonp:dt,json:ft,form:ct,header:gt,cors:ut},B.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){B[t]=function(e,n){return this(rt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){B[t]=function(e,n,r){return this(rt(r||{},{url:e,method:t,body:n}))}}),H.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(z),e.default=z},function(t,e,n){!function(e,n){t.exports=n()}(0,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(27),o=r(i),a=n(90),s=r(a),l=n(94),u=r(l),c=n(97),f=r(c),p=n(104),d=r(p),h=n(109),v=r(h),g=n(112),m=r(g),y=n(117),b=r(y),_=n(122),x=r(_),w=n(127),k=r(w),C=n(132),$=r(C),T=n(135),S=r(T),A=n(140),E=r(A),O=n(149),j=r(O),D=n(152),N=r(D),I=n(155),P=r(I),L=n(160),R=r(L),M=n(166),F=r(M),q=n(169),B=r(q),H=n(174),U=r(H),z=n(194),W=r(z),V=n(197),X=r(V),Y=n(202),G=r(Y),Z=n(205),J=r(Z),K=n(210),Q=r(K),tt=n(215),et=r(tt),nt=n(220),rt=r(nt),it={$:o.default,accordion:s.default,affix:u.default,alert:f.default,aside:d.default,buttonGroup:v.default,carousel:m.default,checkbox:b.default,datepicker:x.default,dropdown:k.default,formGroup:$.default,input:S.default,modal:E.default,navbar:j.default,option:N.default,panel:P.default,popover:R.default,progressbar:F.default,radio:B.default,select:U.default,slider:W.default,spinner:X.default,tab:G.default,tabGroup:J.default,tabset:Q.default,tooltip:et.default,typeahead:rt.default};t.exports=it},,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return t instanceof window.Node}function o(t){return t instanceof window.NodeList||t instanceof $||t instanceof window.HTMLCollection||t instanceof Array}function a(t){return t=t.trim(),t.length?t.replace(/\s+/," ").split(" "):[]}function s(t){return t.length?t.join(" "):""}function l(t,e){var n=[];return _.forEach.call(t,function(r){if(i(r))~n.indexOf(r)||n.push(r);else if(o(r))for(var a in r)n.push(r[a]);else if(null!==r)return t.get=T.get,t.set=T.set,t.call=T.call,t.owner=e,t}),u(n,e)}function u(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return new $(e)}Object.defineProperty(e,"__esModule",{value:!0});var c=n(28),f=r(c),p=n(46),d=r(p),h=n(82),v=r(h),g=n(88),m=r(g),y=n(89),b=r(y),_=Array.prototype,x=new Error("Passed arguments must be of Node"),w=void 0,k=[],C=[],$=function(){function t(e){(0,m.default)(this,t);var n=e;if(e[0]===window?n=[window]:"string"==typeof e[0]?(n=(e[1]||document).querySelectorAll(e[0]),e[1]&&(this.owner=e[1])):0 in e&&!i(e[0])&&e[0]&&"length"in e[0]&&(n=e[0],e[1]&&(this.owner=e[1])),n){for(var r in n)this[r]=n[r];this.length=n.length}else this.length=0}return(0,b.default)(t,[{key:"concat",value:function(){function t(n){_.forEach.call(n,function(n){i(n)?~e.indexOf(n)||e.push(n):o(n)&&t(n)})}for(var e=_.slice.call(this),n=arguments.length,r=Array(n),a=0;a<n;a++)r[a]=arguments[a];return _.forEach.call(r,function(n){if(i(n))~e.indexOf(n)||e.push(n);else{if(!o(n))throw Error("Concat arguments must be of a Node, NodeList, HTMLCollection, or Array of (Node, NodeList, HTMLCollection, Array)");t(n)}}),u(e,this)}},{key:"delete",value:function(){var t=l(this).filter(function(t){return t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t),document.body.contains(t)});return t.length,t}},{key:"each",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.forEach.apply(this,e),this}},{key:"filter",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return u(_.filter.apply(this,e),this)}},{key:"find",value:function(t){var e=[];return l(this).forEach(function(n){_.push.apply(e,n.querySelectorAll(t))}),l(e,this.owner)}},{key:"findChildren",value:function(t){var e=this;return t?this.find(t).filter(function(t){return e.includes(t.parentElement)}):l(this.map(function(t){return t.children}))}},{key:"forEach",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.forEach.apply(this,e),this}},{key:"includes",value:function(t,e){return~this.indexOf(t,e)}},{key:"map",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=_.map.apply(this,e);return r.some(function(t){return i(t)||o(t)})?l(r,this):r}},{key:"parent",value:function(){return l(this.map(function(t){return t.parentNode}),this)}},{key:"pop",value:function(t){"number"!=typeof t&&(t=1);for(var e=[],n=_.pop.bind(this);t--;)e.push(n());return u(e,this)}},{key:"push",value:function(){for(var t=this,e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return _.forEach.call(n,function(e){if(!i(e))throw x;~t.indexOf(e)||_.push.call(t,e)}),this}},{key:"shift",value:function(t){"number"!=typeof t&&(t=1);for(var e=[];t--;)e.push(_.shift.call(this));return 1==e.length?e[0]:u(e,this)}},{key:"slice",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return u(_.slice.apply(this,e),this)}},{key:"splice",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];for(var r=2,o=e.length;r<o;r++)if(!i(e[r]))throw x;return _.splice.apply(this,e),this}},{key:"unshift",value:function(){for(var t=this,e=_.unshift.bind(this),n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];return _.forEach.call(r,function(n){if(!i(n))throw x;~t.indexOf(n)||e(n)}),this}},{key:"addClass",value:function(t){return this.toggleClass(t,!0)}},{key:"removeClass",value:function(t){return this.toggleClass(t,!1)}},{key:"toggleClass",value:function(t,e){var n=void 0===e||null===e?"toggle":e?"add":"remove";return"string"==typeof t&&(t=a(t)),this.each(function(e){var r=a(e.className);t.forEach(function(t){var e=~r.indexOf(t);e||"remove"===n||r.push(t),e&&"add"!==n&&(r=r.filter(function(e){return e!==t}))}),r=s(r),r?e.className=r:e.removeAttribute("class")}),this}},{key:"get",value:function(t){var e=[];return this.each(function(n){null!==n&&(n=n[t]),e.push(n)}),l(e,this)}},{key:"set",value:function(t,e){return t.constructor===Object?this.each(function(e){if(e)for(var n in t)n in e&&(e[n]=t[n])}):this.each(function(n){t in n&&(n[t]=e)}),this}},{key:"call",value:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=_.shift.call(e),i=[],o=!0;return this.each(function(t){t&&t[r]instanceof Function?(t=t[r].apply(t,e),i.push(t),o&&void 0!==t&&(o=!1)):i.push(void 0)}),o?this:l(i,this)}},{key:"item",value:function(t){return u([this[t]],this)}},{key:"on",value:function(t,e,n){if("string"==typeof t&&(t=a(t)),!this||!this.length)return this;if(void 0===n&&(n=e,e=null),!n)return this;var r=n;return n=e?function(t){var n=u(e,this);n.length&&n.some(function(e){var n=e.contains(t.target);return n&&r.call(e,t,e),n})}:function(t){r.apply(this,[t,this])},this.each(function(e){t.forEach(function(t){(e===window||i(e))&&(e.addEventListener(t,n,!1),C.push({el:e,event:t,callback:n}))})}),this}},{key:"off",value:function(t,e){return t instanceof Function&&(e=t,t=null),t=t instanceof Array?t:"string"==typeof t?a(t):null,this.each(function(n){C=C.filter(function(r){return!!(!r||r.el!==n||e&&e!==r.callback||t&&!~t.indexOf(r.event))||(r.el.removeEventListener(r.event,r.callback),!1)})}),this}},{key:"onBlur",value:function(t){return this&&this.length&&t?(this.each(function(e){k.push({el:e,callback:t})}),w||(w=function(t){k.forEach(function(e){e.el.contains(t.target)||e.el===t.target||e.callback.call(e.el,t,e.el)})},document.addEventListener("click",w,!1),document.addEventListener("touchstart",w,!1)),this):this}},{key:"offBlur",value:function(t){return this.each(function(e){k=k.filter(function(n){return!(n&&n.el===e&&(!t||n.callback===t))&&e})}),this}},{key:"asArray",get:function(){return _.slice.call(this)}}]),t}(),T=$.prototype;(0,v.default)(_).forEach(function(t){"join"!==t&&"copyWithin"!==t&&"fill"!==t&&void 0===T[t]&&(T[t]=_[t])}),window.Symbol&&d.default&&(T[d.default]=T.values=_[d.default]);var S=document.createElement("div");for(var A in S)!function(t){var e=this;T[t]||(S[t]instanceof Function?T[t]=function(){for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var o=[],a=!0;for(var s in T){var u=T[s];u&&u[t]instanceof Function?(u=u[t].apply(u,r),o.push(u),a&&void 0!==u&&(a=!1)):o.push(void 0)}return a?e:l(o,e)}:(0,f.default)(T,t,{get:function(){var e=[];return this.each(function(n){null!==n&&(n=n[t]),e.push(n)}),l(e,this)},set:function(e){this.each(function(n){n&&t in n&&(n[t]=e)})}}))}(A);window.NL=u,e.default=u},function(t,e,n){t.exports={default:n(29),__esModule:!0}},function(t,e,n){n(30);var r=n(33).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(31);r(r.S+r.F*!n(41),"Object",{defineProperty:n(37).f})},function(t,e,n){var r=n(32),i=n(33),o=n(34),a=n(36),s=function(t,e,n){var l,u,c,f=t&s.F,p=t&s.G,d=t&s.S,h=t&s.P,v=t&s.B,g=t&s.W,m=p?i:i[e]||(i[e]={}),y=m.prototype,b=p?r:d?r[e]:(r[e]||{}).prototype;p&&(n=e);for(l in n)(u=!f&&b&&void 0!==b[l])&&l in m||(c=u?b[l]:n[l],m[l]=p&&"function"!=typeof b[l]?n[l]:v&&u?o(c,r):g&&b[l]==c?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(c):h&&"function"==typeof c?o(Function.call,c):c,h&&((m.virtual||(m.virtual={}))[l]=c,t&s.R&&y&&!y[l]&&a(y,l,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(35);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(37),i=n(45);t.exports=n(41)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(38),i=n(40),o=n(44),a=Object.defineProperty;e.f=n(41)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(39);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(41)&&!n(42)(function(){return 7!=Object.defineProperty(n(43)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){t.exports=!n(42)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(39),i=n(32).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(39);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){t.exports={default:n(47),__esModule:!0}},function(t,e,n){n(48),n(77),t.exports=n(81).f("iterator")},function(t,e,n){"use strict";var r=n(49)(!0);n(52)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(50),i=n(51);t.exports=function(t){return function(e,n){var o,a,s=String(i(e)),l=r(n),u=s.length;return l<0||l>=u?t?"":void 0:(o=s.charCodeAt(l),o<55296||o>56319||l+1===u||(a=s.charCodeAt(l+1))<56320||a>57343?t?s.charAt(l):o:t?s.slice(l,l+2):a-56320+(o-55296<<10)+65536)}}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var r=n(53),i=n(31),o=n(54),a=n(36),s=n(55),l=n(56),u=n(57),c=n(73),f=n(75),p=n(74)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,v,g,m,y){u(n,e,v);var b,_,x,w=function(t){if(!d&&t in T)return T[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C="values"==g,$=!1,T=t.prototype,S=T[p]||T["@@iterator"]||g&&T[g],A=S||w(g),E=g?C?w("entries"):A:void 0,O="Array"==e?T.entries||S:S;if(O&&(x=f(O.call(new t)))!==Object.prototype&&(c(x,k,!0),r||s(x,p)||a(x,p,h)),C&&S&&"values"!==S.name&&($=!0,A=function(){return S.call(this)}),r&&!y||!d&&!$&&T[p]||a(T,p,A),l[e]=A,l[k]=h,g)if(b={values:C?A:w("values"),keys:m?A:w("keys"),entries:E},y)for(_ in b)_ in T||o(T,_,b[_]);else i(i.P+i.F*(d||$),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){t.exports=n(36)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(58),i=n(45),o=n(73),a={};n(36)(a,n(74)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(38),i=n(59),o=n(71),a=n(68)("IE_PROTO"),s=function(){},l=function(){var t,e=n(43)("iframe"),r=o.length;for(e.style.display="none",n(72).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),l=t.F;r--;)delete l.prototype[o[r]];return l()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=l(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(37),i=n(38),o=n(60);t.exports=n(41)?Object.defineProperties:function(t,e){i(t);for(var n,a=o(e),s=a.length,l=0;s>l;)r.f(t,n=a[l++],e[n]);return t}},function(t,e,n){var r=n(61),i=n(71);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(55),i=n(62),o=n(65)(!1),a=n(68)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),l=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>l;)r(s,n=e[l++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var r=n(63),i=n(51);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(64);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(62),i=n(66),o=n(67);t.exports=function(t){return function(e,n,a){var s,l=r(e),u=i(l.length),c=o(a,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var r=n(50),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(50),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(69)("keys"),i=n(70);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(32),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){t.exports=n(32).document&&document.documentElement},function(t,e,n){var r=n(37).f,i=n(55),o=n(74)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(69)("wks"),i=n(70),o=n(32).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(55),i=n(76),o=n(68)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(51);t.exports=function(t){return Object(r(t))}},function(t,e,n){n(78);for(var r=n(32),i=n(36),o=n(56),a=n(74)("toStringTag"),s=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var u=s[l],c=r[u],f=c&&c.prototype;f&&!f[a]&&i(f,a,u),o[u]=o.Array}},function(t,e,n){"use strict";var r=n(79),i=n(80),o=n(56),a=n(62);t.exports=n(52)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):"keys"==e?i(0,n):"values"==e?i(0,t[n]):i(0,[n,t[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){e.f=n(74)},function(t,e,n){t.exports={default:n(83),__esModule:!0}},function(t,e,n){n(84);var r=n(33).Object;t.exports=function(t){return r.getOwnPropertyNames(t)}},function(t,e,n){n(85)("getOwnPropertyNames",function(){return n(86).f})},function(t,e,n){var r=n(31),i=n(33),o=n(42);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},function(t,e,n){var r=n(62),i=n(87).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?s(t):i(r(t))}},function(t,e,n){var r=n(61),i=n(71).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(28),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,i.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){t.exports=n(91),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(93)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{type:{type:String,default:null},oneAtAtime:{type:Boolean,coerce:r.coerce.boolean,default:!1}},created:function(){var t=this;this._isAccordion=!0,this.$on("isOpenEvent",function(e){t.oneAtAtime&&t.$children.forEach(function(t){e!==t&&(t.isOpen=!1)})})}}},function(t,e){"use strict";function n(t){var e=new window.XMLHttpRequest,n={},r={then:function(t,e){return r.done(t).fail(e)},catch:function(t){return r.fail(t)},always:function(t){return r.done(t).fail(t)}};return["done","fail"].forEach(function(t){n[t]=[],r[t]=function(e){return e instanceof Function&&n[t].push(e),r}}),r.done(JSON.parse),e.onreadystatechange=function(){if(4===e.readyState){var t,r,i;!function(){var o={status:e.status};if(200===e.status)try{t=e.responseText;for(r in n.done)void 0!==(i=n.done[r](t))&&(t=i)}catch(t){n.fail.forEach(function(e){return e(t)})}else n.fail.forEach(function(t){return t(o)})}()}},e.open("GET",t),e.setRequestHeader("Accept","application/json"),e.send(),r}function r(){if(document.documentElement.scrollHeight<=document.documentElement.clientHeight)return 0;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var r=t.offsetWidth;return n===r&&(r=e.clientWidth),document.body.removeChild(e),n-r}function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en",e={daysOfWeek:["Su","Mo","Tu","We","Th","Fr","Sa"],limit:"Limit reached ({{limit}} items max).",loading:"Loading...",minLength:"Min. Length",months:["January","February","March","April","May","June","July","August","September","October","November","December"],notSelected:"Nothing Selected",required:"Required",search:"Search"};return window.VueStrapLang?window.VueStrapLang(t):e}function o(t,e){function n(t){return/^[0-9]+$/.test(t)?Number(t)||1:null}var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;return function(){for(var o=this,a=arguments.length,s=Array(a),l=0;l<a;l++)s[l]=arguments[l];r&&clearTimeout(r),r=setTimeout(function(){t.apply(o,s)},n(e)||n(this[e])||i)}}function a(t){var e=!window.Vue||!window.Vue.partial,n={computed:{vue2:function(){return!this.$dispatch}}};return e?(t.beforeCompile&&(t.beforeMount=t.beforeCompile,delete t.beforeCompile),t.compiled&&(n.compiled=t.compiled,delete t.compiled),t.ready&&(t.mounted=t.ready,delete t.ready)):(t.beforeCreate&&(n.create=t.beforeCreate,delete t.beforeCreate),t.beforeMount&&(t.beforeCompile=t.beforeMount,delete t.beforeMount),t.mounted&&(t.ready=t.mounted,delete t.mounted)),t.mixins||(t.mixins=[]),t.mixins.unshift(n),t}Object.defineProperty(e,"__esModule",{value:!0}),e.getJSON=n,e.getScrollBarWidth=r,e.translations=i,e.delayer=o,e.VueFixer=a;e.coerce={boolean:function(t){return"string"==typeof t?""===t||"true"===t||"false"!==t&&"null"!==t&&"undefined"!==t&&t:t},number:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"number"==typeof t?t:void 0===t||null===t||isNaN(Number(t))?e:Number(t)},string:function(t){return void 0===t||null===t?"":t+""},pattern:function(t){return t instanceof Function||t instanceof RegExp?t:"string"==typeof t?new RegExp(t):null}}},function(t,e){t.exports='<div class="panel-group">\r\n <slot></slot>\r\n </div>'},function(t,e,n){t.exports=n(95),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(96)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{offset:{type:Number,coerce:r.coerce.number,default:0}},data:function(){return{affixed:!1}},computed:{top:function(){return this.offset>0?this.offset+"px":null}},methods:{checkScroll:function(){var t=this;if(this.$el.offsetWidth||this.$el.offsetHeight||this.$el.getClientRects().length){var e={},n={},r=this.$el.getBoundingClientRect(),i=document.body;["Top","Left"].forEach(function(o){var a=o.toLowerCase(),s=window["page"+("Top"===o?"Y":"X")+"Offset"],l="scroll"+o;"number"!=typeof s&&"number"!=typeof(s=document.documentElement[l])&&(s=document.body[l]),e[a]=s,n[a]=e[a]+r[a]-(t.$el["client"+o]||i["client"+o]||0)});var o=e.top>n.top-this.offset;this.affixed!==o&&(this.affixed=o)}}},ready:function(){var t=this;(0,o.default)(window).on("scroll resize",function(){return t.checkScroll()}),setTimeout(function(){return t.checkScroll()},0)},beforeDestroy:function(){var t=this;(0,o.default)(window).off("scroll resize",function(){return t.checkScroll()})}}},function(t,e){t.exports='<div class="hidden-print hidden-xs hidden-sm">\r\n <nav class="bs-docs-sidebar" :class="{affix:affixed}" :style="{marginTop:top}">\r\n <slot></slot>\r\n </nav>\r\n </div>'},function(t,e,n){n(98),t.exports=n(102),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(103)},function(t,e,n){var r=n(99);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".fade-transition {\r\n -webkit-transition: opacity .3s ease;\r\n transition: opacity .3s ease;\r\n}\r\n.fade-enter,\r\n.fade-leave {\r\n height: 0;\r\n opacity: 0;\r\n}\r\n.alert.top {\r\n position: fixed;\r\n top: 30px;\r\n margin: 0 auto;\r\n left: 0;\r\n right: 0;\r\n z-index: 1050;\r\n}\r\n.alert.top-right {\r\n position: fixed;\r\n top: 30px;\r\n right: 50px;\r\n z-index: 1050;\r\n}",""])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(t,e,n){function r(t,e){for(var n=0;n<t.length;n++){var r=t[n],i=d[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(u(r.parts[o],e))}else{for(var a=[],o=0;o<r.parts.length;o++)a.push(u(r.parts[o],e));d[r.id]={id:r.id,refs:1,parts:a}}}}function i(t){for(var e=[],n={},r=0;r<t.length;r++){var i=t[r],o=i[0],a=i[1],s=i[2],l=i[3],u={css:a,media:s,sourceMap:l};n[o]?n[o].parts.push(u):e.push(n[o]={id:o,parts:[u]})}return e}function o(t,e){var n=g(),r=b[b.length-1];if("top"===t.insertAt)r?r.nextSibling?n.insertBefore(e,r.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),b.push(e);else{if("bottom"!==t.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(e)}}function a(t){t.parentNode.removeChild(t);var e=b.indexOf(t);e>=0&&b.splice(e,1)}function s(t){var e=document.createElement("style");return e.type="text/css",o(t,e),e}function l(t){var e=document.createElement("link");return e.rel="stylesheet",o(t,e),e}function u(t,e){var n,r,i;if(e.singleton){var o=y++;n=m||(m=s(e)),r=c.bind(null,n,o,!1),i=c.bind(null,n,o,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(e),r=p.bind(null,n),i=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),r=f.bind(null,n),i=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}function c(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=_(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function f(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e){var n=e.css,r=e.sourceMap;r&&(n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var i=new Blob([n],{type:"text/css"}),o=t.href;t.href=URL.createObjectURL(i),o&&URL.revokeObjectURL(o)}var d={},h=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}},v=h(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),g=h(function(){return document.head||document.getElementsByTagName("head")[0]}),m=null,y=0,b=[];t.exports=function(t,e){e=e||{},void 0===e.singleton&&(e.singleton=v()),void 0===e.insertAt&&(e.insertAt="bottom");var n=i(t);return r(n,e),function(t){for(var o=[],a=0;a<n.length;a++){var s=n[a],l=d[s.id];l.refs--,o.push(l)}if(t){r(i(t),e)}for(var a=0;a<o.length;a++){var l=o[a];if(0===l.refs){for(var u=0;u<l.parts.length;u++)l.parts[u]();delete d[l.id]}}}};var _=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{type:{type:String},dismissable:{type:Boolean,coerce:r.coerce.boolean,default:!1},show:{type:Boolean,coerce:r.coerce.boolean,default:!0,twoWay:!0},duration:{type:Number,coerce:r.coerce.number,default:0},width:{type:String},placement:{type:String}},watch:{show:function(t){var e=this;this._timeout&&clearTimeout(this._timeout),t&&Boolean(this.duration)&&(this._timeout=setTimeout(function(){e.show=!1},this.duration))}}}},function(t,e){t.exports="<div\r\n v-show=\"show\"\r\n v-bind:class=\"{\r\n 'alert':\t\ttrue,\r\n 'alert-success':(type == 'success'),\r\n 'alert-warning':(type == 'warning'),\r\n 'alert-info':\t(type == 'info'),\r\n 'alert-danger':\t(type == 'danger'),\r\n 'top': \t\t\t(placement === 'top'),\r\n 'top-right': \t(placement === 'top-right')\r\n }\"\r\n transition=\"fade\"\r\n v-bind:style=\"{width:width}\"\r\n role=\"alert\">\r\n <button v-show=\"dismissable\" type=\"button\" class=\"close\"\r\n @click=\"show = false\">\r\n <span>×</span>\r\n </button>\r\n <slot></slot>\r\n </div>"},function(t,e,n){n(105),t.exports=n(107),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(108)},function(t,e,n){var r=n(106);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".aside-open {\r\n -webkit-transition: -webkit-transform 0.3s;\r\n transition: -webkit-transform 0.3s;\r\n transition: transform 0.3s;\r\n transition: transform 0.3s, -webkit-transform 0.3s;\r\n}\r\n.aside-open.has-push-right {\r\n -webkit-transform: translateX(-300px);\r\n transform: translateX(-300px);\r\n}\r\n.aside {\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 1049;\r\n overflow: auto;\r\n background: #fff;\r\n}\r\n.aside.left {\r\n left: 0;\r\n right: auto;\r\n}\r\n.aside.right {\r\n left: auto;\r\n right: 0;\r\n}\r\n.slideleft-enter {\r\n -webkit-animation:slideleft-in .3s;\r\n animation:slideleft-in .3s;\r\n}\r\n.slideleft-leave {\r\n -webkit-animation:slideleft-out .3s;\r\n animation:slideleft-out .3s;\r\n}\r\n@-webkit-keyframes slideleft-in {\r\n 0% {\r\n -webkit-transform: translateX(-100%);\r\n transform: translateX(-100%);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n}\r\n@keyframes slideleft-in {\r\n 0% {\r\n -webkit-transform: translateX(-100%);\r\n transform: translateX(-100%);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n}\r\n@-webkit-keyframes slideleft-out {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(-100%);\r\n transform: translateX(-100%);\r\n opacity: 0;\r\n }\r\n}\r\n@keyframes slideleft-out {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(-100%);\r\n transform: translateX(-100%);\r\n opacity: 0;\r\n }\r\n}\r\n.slideright-enter {\r\n -webkit-animation:slideright-in .3s;\r\n animation:slideright-in .3s;\r\n}\r\n.slideright-leave {\r\n -webkit-animation:slideright-out .3s;\r\n animation:slideright-out .3s;\r\n}\r\n@-webkit-keyframes slideright-in {\r\n 0% {\r\n -webkit-transform: translateX(100%);\r\n transform: translateX(100%);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n}\r\n@keyframes slideright-in {\r\n 0% {\r\n -webkit-transform: translateX(100%);\r\n transform: translateX(100%);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n}\r\n@-webkit-keyframes slideright-out {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(100%);\r\n transform: translateX(100%);\r\n opacity: 0;\r\n }\r\n}\r\n@keyframes slideright-out {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: translateX(100%);\r\n transform: translateX(100%);\r\n opacity: 0;\r\n }\r\n}\r\n.aside:focus {\r\n outline: 0\r\n}\r\n@media (max-width: 991px) {\r\n .aside {\r\n min-width:240px\r\n }\r\n}\r\n.aside.left {\r\n right: auto;\r\n left: 0\r\n}\r\n.aside.right {\r\n right: 0;\r\n left: auto\r\n}\r\n.aside .aside-dialog .aside-header {\r\n border-bottom: 1px solid #e5e5e5;\r\n min-height: 16.43px;\r\n padding: 6px 15px;\r\n background: #337ab7;\r\n color: #fff\r\n}\r\n.aside .aside-dialog .aside-header .close {\r\n margin-right: -8px;\r\n padding: 4px 8px;\r\n color: #fff;\r\n font-size: 25px;\r\n opacity: .8\r\n}\r\n.aside .aside-dialog .aside-body {\r\n position: relative;\r\n padding: 15px\r\n}\r\n.aside .aside-dialog .aside-footer {\r\n padding: 15px;\r\n text-align: right;\r\n border-top: 1px solid #e5e5e5\r\n}\r\n.aside .aside-dialog .aside-footer .btn+.btn {\r\n margin-left: 5px;\r\n margin-bottom: 0\r\n}\r\n.aside .aside-dialog .aside-footer .btn-group .btn+.btn {\r\n margin-left: -1px\r\n}\r\n.aside .aside-dialog .aside-footer .btn-block+.btn-block {\r\n margin-left: 0\r\n}\r\n.aside-backdrop {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1040;\r\n opacity: 0;\r\n -webkit-transition: opacity .3s ease;\r\n transition: opacity .3s ease;\r\n background-color: #000\r\n}\r\n.aside-backdrop.in {\r\n opacity: .5;\r\n filter: alpha(opacity=50)\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{show:{type:Boolean,coerce:r.coerce.boolean,required:!0,twoWay:!0},placement:{type:String,default:"right"},header:{type:String},width:{type:Number,coerce:r.coerce.number,default:320}},watch:{show:function(t){var e=this,n=document.body,i=(0,r.getScrollBarWidth)();if(t){this._backdrop||(this._backdrop=document.createElement("div")),this._backdrop.className="aside-backdrop",n.appendChild(this._backdrop),n.classList.add("modal-open"),0!==i&&(n.style.paddingRight=i+"px");this._backdrop.clientHeight;this._backdrop.classList.add("in"),(0,o.default)(this._backdrop).on("click",function(){return e.close()})}else(0,o.default)(this._backdrop).on("transitionend",function(){(0,o.default)(e._backdrop).off();try{n.classList.remove("modal-open"),n.style.paddingRight="0",n.removeChild(e._backdrop),e._backdrop=null}catch(t){}}),this._backdrop.className="aside-backdrop"}},methods:{close:function(){this.show=!1}}}},function(t,e){t.exports='<div class="aside"\r\n v-bind:style="{width:width + \'px\'}"\r\n v-bind:class="{\r\n left:placement === \'left\',\r\n right:placement === \'right\'\r\n }"\r\n v-show="show"\r\n :transition="(this.placement === \'left\') ? \'slideleft\' : \'slideright\'">\r\n <div class="aside-dialog">\r\n <div class="aside-content">\r\n <div class="aside-header">\r\n <button type="button" class="close" @click=\'close\'><span>×</span></button>\r\n <h4 class="aside-title">\r\n <slot name="header">\r\n {{ header }}\r\n </slot>\r\n </h4>\r\n </div>\r\n <div class="aside-body">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n </div>'},function(t,e,n){t.exports=n(110),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(111)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{value:null,buttons:{type:Boolean,coerce:r.coerce.boolean,default:!0},justified:{type:Boolean,coerce:r.coerce.boolean,default:!1},type:{type:String,default:"default"},vertical:{type:Boolean,coerce:r.coerce.boolean,default:!1}},watch:{value:{deep:!0,handler:function(t){this.$children.forEach(function(t){t.group&&t.eval&&t.eval()})}}},created:function(){this._btnGroup=!0}}},function(t,e){t.exports="<div :class=\"{'btn-group':buttons,'btn-group-justified':justified,'btn-group-vertical':vertical}\" :data-toggle=\"buttons&&'buttons'\">\r\n <slot></slot>\r\n </div>"},function(t,e,n){n(113),t.exports=n(115),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(116)},function(t,e,n){var r=n(114);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".carousel-control[_v-5afe80ab] {\r\n cursor: pointer;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{indicators:{type:Boolean,coerce:r.coerce.boolean,default:!0},controls:{type:Boolean,coerce:r.coerce.boolean,default:!0},interval:{type:Number,coerce:r.coerce.number,default:5e3}},data:function(){return{indicator:[],index:0,isAnimating:!1}},watch:{index:function(t,e){this.slide(t>e?"left":"right",t,e)}},methods:{indicatorClick:function(t){if(this.isAnimating||this.index===t)return!1;this.isAnimating=!0,this.index=t},slide:function(t,e,n){var r=this;if(this.$el){var i=(0,o.default)(".item",this.$el);if(i.length){var a=i[e]||i[0];(0,o.default)(a).addClass("left"===t?"next":"prev");a.clientHeight;(0,o.default)([i[n],a]).addClass(t).on("transitionend",function(){i.off("transitionend").className="item",(0,o.default)(a).addClass("active"),r.isAnimating=!1})}}},next:function(){if(!this.$el||this.isAnimating)return!1;this.isAnimating=!0,this.index+1<(0,o.default)(".item",this.$el).length?this.index+=1:this.index=0},prev:function(){if(!this.$el||this.isAnimating)return!1;this.isAnimating=!0,0===this.index?this.index=(0,o.default)(".item",this.$el).length-1:this.index-=1},toggleInterval:function(t){void 0===t&&(t=this._intervalID),this._intervalID&&(clearInterval(this._intervalID),delete this._intervalID),t&&this.interval>0&&(this._intervalID=setInterval(this.next,this.interval))}},ready:function(){var t=this;this.toggleInterval(!0),(0,o.default)(this.$el).on("mouseenter",function(){return t.toggleInterval(!1)}).on("mouseleave",function(){return t.toggleInterval(!0)})},beforeDestroy:function(){this.toggleInterval(!1),(0,o.default)(this.$el).off("mouseenter mouseleave")}}},function(t,e){t.exports='<div class="carousel slide" data-ride="carousel" _v-5afe80ab="">\n \x3c!-- Indicators --\x3e\n <ol class="carousel-indicators" v-show="indicators" _v-5afe80ab="">\n <li v-for="i in indicator" @click="indicatorClick($index)" v-bind:class="{active:$index === index}" _v-5afe80ab=""><span _v-5afe80ab=""></span></li>\n </ol>\n \x3c!-- Wrapper for slides --\x3e\n <div class="carousel-inner" role="listbox" _v-5afe80ab="">\n <slot _v-5afe80ab=""></slot>\n </div>\n \x3c!-- Controls --\x3e\n <div v-show="controls" class="carousel-controls hidden-xs" _v-5afe80ab="">\n <a class="left carousel-control" role="button" @click="prev" _v-5afe80ab="">\n <span class="glyphicon glyphicon-chevron-left" aria-hidden="true" _v-5afe80ab=""></span>\n </a>\n <a class="right carousel-control" role="button" @click="next" _v-5afe80ab="">\n <span class="glyphicon glyphicon-chevron-right" aria-hidden="true" _v-5afe80ab=""></span>\n </a>\n </div>\n</div>'},function(t,e,n){n(118),t.exports=n(120),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(121)},function(t,e,n){var r=n(119);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,"label.checkbox[_v-dc195ce4] {\r\n position: relative;\r\n padding-left: 18px;\r\n}\r\nlabel.checkbox > input[_v-dc195ce4] {\r\n box-sizing: border-box;\r\n position: absolute;\r\n z-index: -1;\r\n padding: 0;\r\n opacity: 0;\r\n margin: 0;\r\n}\r\nlabel.checkbox > .icon[_v-dc195ce4] {\r\n position: absolute;\r\n top: .2rem;\r\n left: 0;\r\n display: block;\r\n width: 1.4rem;\r\n height: 1.4rem;\r\n line-height:1rem;\r\n text-align: center;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n border-radius: .35rem;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n background-size: 50% 50%;\r\n}\r\nlabel.checkbox:not(.active) > .icon[_v-dc195ce4] {\r\n background-color: #ddd;\r\n border: 1px solid #bbb;\r\n}\r\nlabel.checkbox > input:focus ~ .icon[_v-dc195ce4] {\r\n outline: 0;\r\n border: 1px solid #66afe9;\r\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\r\n}\r\nlabel.checkbox.active > .icon[_v-dc195ce4] {\r\n background-size: 1rem 1rem;\r\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ij48cGF0aCBmaWxsPSIjZmZmIiBkPSJtNS43MywwLjUybC0zLjEyNDIyLDMuMzQxNjFsLTEuMzM4OTUsLTEuNDMyMTJsLTEuMjQ5NjksMS4zMzY2NWwyLjU4ODYzLDIuNzY4NzZsNC4zNzM5LC00LjY3ODI2bC0xLjI0OTY5LC0xLjMzNjY1bDAsMGwwLjAwMDAyLDAuMDAwMDF6Ii8+PC9zdmc+);\r\n}\r\nlabel.checkbox.active .btn-default[_v-dc195ce4] { -webkit-filter: brightness(75%); filter: brightness(75%); }\r\n\r\nlabel.checkbox.disabled[_v-dc195ce4],\r\nlabel.checkbox.readonly[_v-dc195ce4],\r\n.btn.readonly[_v-dc195ce4] {\r\n filter: alpha(opacity=65);\r\n box-shadow: none;\r\n opacity: .65;\r\n}\r\nlabel.btn > input[type=checkbox][_v-dc195ce4] {\r\n position: absolute;\r\n clip: rect(0,0,0,0);\r\n pointer-events: none;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{value:{default:!0},checked:{twoWay:!0},button:{type:Boolean,coerce:r.coerce.boolean,default:!1},disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1},name:{type:String,default:null},readonly:{type:Boolean,coerce:r.coerce.boolean,default:!1},type:{type:String,default:null}},computed:{active:function(){return"boolean"!=typeof this.value&&this.group?~this.$parent.value.indexOf(this.value):this.checked===this.value},isButton:function(){return this.button||this.group&&this.$parent.buttons},group:function(){return this.$parent&&this.$parent._checkboxGroup},typeColor:function(){return this.type||this.$parent&&this.$parent.type||"default"}},watch:{checked:function(t){"boolean"!=typeof this.value&&this.group&&(this.checked&&!~this.$parent.value.indexOf(this.value)&&this.$parent.value.push(this.value),!this.checked&&~this.$parent.value.indexOf(this.value)&&this.$parent.value.$remove(this.value))}},created:function(){if("boolean"!=typeof this.value){var t=this.$parent;t&&t._btnGroup&&!t._radioGroup&&(t._checkboxGroup=!0,t.value instanceof Array||(t.value=[]))}},ready:function(){this.$parent._checkboxGroup&&"boolean"!=typeof this.value&&(this.$parent.value.length?this.checked=~this.$parent.value.indexOf(this.value):this.checked&&this.$parent.value.push(this.value))},methods:{eval:function(){"boolean"!=typeof this.value&&this.group&&(this.checked=~this.$parent.value.indexOf(this.value))},focus:function(){this.$els.input.focus()},toggle:function(){if(!this.disabled&&(this.focus(),!this.readonly&&(this.checked=this.checked?null:this.value,this.group&&"boolean"!=typeof this.value))){var t=this.$parent.value.indexOf(this.value);this.$parent.value[~t?"$remove":"push"](this.value)}return!1}}}},function(t,e){t.exports='<label :class="[isButton?\'btn btn-\'+typeColor:\'open checkbox \'+typeColor,{active:checked,disabled:disabled,readonly:readonly}]" @click.prevent="toggle" _v-dc195ce4="">\n <input type="checkbox" autocomplete="off" v-el:input="" :checked="active" :value="value" :name="name" :readonly="readonly" :disabled="disabled" _v-dc195ce4="">\n <span v-if="!isButton" class="icon dropdown-toggle" :class="[active?\'btn-\'+typeColor:\'\',{bg:typeColor===\'default\'}]" _v-dc195ce4=""></span>\n <span v-if="!isButton&active&&typeColor===\'default\'" class="icon" _v-dc195ce4=""></span>\n <slot _v-dc195ce4=""></slot>\n </label>'},function(t,e,n){n(123),t.exports=n(125),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(126)},function(t,e,n){var r=n(124);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".datepicker{\r\n position: relative;\r\n display: inline-block;\r\n}\r\ninput.datepicker-input.with-reset-button {\r\n padding-right: 25px;\r\n}\r\n.datepicker > button.close {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n outline: none;\r\n z-index: 2;\r\n display: block;\r\n width: 34px;\r\n height: 34px;\r\n line-height: 34px;\r\n text-align: center;\r\n}\r\n.datepicker > button.close:focus {\r\n opacity: .2;\r\n}\r\n.datepicker-popup{\r\n position: absolute;\r\n border: 1px solid #ccc;\r\n border-radius: 5px;\r\n background: #fff;\r\n margin-top: 2px;\r\n z-index: 1000;\r\n box-shadow: 0 6px 12px rgba(0,0,0,0.175);\r\n}\r\n.datepicker-inner{\r\n width: 218px;\r\n}\r\n.datepicker-body{\r\n padding: 10px 10px;\r\n}\r\n.datepicker-ctrl p,\r\n.datepicker-ctrl span,\r\n.datepicker-body span{\r\n display: inline-block;\r\n width: 28px;\r\n line-height: 28px;\r\n height: 28px;\r\n border-radius: 4px;\r\n}\r\n.datepicker-ctrl p {\r\n width: 65%;\r\n}\r\n.datepicker-ctrl span {\r\n position: absolute;\r\n}\r\n.datepicker-body span {\r\n text-align: center;\r\n}\r\n.datepicker-monthRange span{\r\n width: 48px;\r\n height: 50px;\r\n line-height: 45px;\r\n}\r\n.datepicker-item-disable {\r\n background-color: white!important;\r\n cursor: not-allowed!important;\r\n}\r\n.decadeRange span:first-child,\r\n.decadeRange span:last-child,\r\n.datepicker-item-disable,\r\n.datepicker-item-gray{\r\n color: #999;\r\n}\r\n\r\n.datepicker-dateRange-item-active:hover,\r\n.datepicker-dateRange-item-active {\r\n background: rgb(50, 118, 177)!important;\r\n color: white!important;\r\n}\r\n.datepicker-monthRange {\r\n margin-top: 10px\r\n}\r\n.datepicker-monthRange span,\r\n.datepicker-ctrl span,\r\n.datepicker-ctrl p,\r\n.datepicker-dateRange span {\r\n cursor: pointer;\r\n}\r\n.datepicker-monthRange span:hover,\r\n.datepicker-ctrl p:hover,\r\n.datepicker-ctrl i:hover,\r\n.datepicker-dateRange span:hover,\r\n.datepicker-dateRange-item-hover {\r\n background-color : #eeeeee;\r\n}\r\n.datepicker-weekRange span{\r\n font-weight: bold;\r\n}\r\n.datepicker-label{\r\n background-color: #f8f8f8;\r\n font-weight: 700;\r\n padding: 7px 0;\r\n text-align: center;\r\n}\r\n.datepicker-ctrl{\r\n position: relative;\r\n height: 30px;\r\n line-height: 30px;\r\n font-weight: bold;\r\n text-align: center;\r\n}\r\n.month-btn{\r\n font-weight: bold;\r\n -webkit-user-select:none;\r\n -moz-user-select:none;\r\n -ms-user-select:none;\r\n user-select:none;\r\n}\r\n.datepicker-preBtn{\r\n left: 2px;\r\n}\r\n.datepicker-nextBtn{\r\n right: 2px;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{value:{type:String,twoWay:!0},format:{default:"MM/dd/yyyy"},disabledDaysOfWeek:{type:Array,default:function(){return[]}},width:{type:String,default:"200px"},clearButton:{type:Boolean,default:!1},lang:{type:String,default:navigator.language},placeholder:{type:String}},ready:function(){var t=this;this._blur=function(e){null===t.$el||t.$el.contains(e.target)||t.close()},this.$dispatch("child-created",this),this.currDate=this.parse(this.value)||this.parse(new Date),(0,o.default)(window).on("click",this._blur)},beforeDestroy:function(){(0,o.default)(window).off("click",this._blur)},data:function(){return{currDate:new Date,dateRange:[],decadeRange:[],displayDayView:!1,displayMonthView:!1,displayYearView:!1}},watch:{currDate:function(){this.getDateRange()}},computed:{text:function(){return(0,r.translations)(this.lang)}},methods:{close:function(){this.displayDayView=this.displayMonthView=this.displayYearView=!1},inputClick:function(){this.currDate=this.parse(this.value)||this.parse(new Date),this.displayMonthView||this.displayYearView?this.displayDayView=!1:this.displayDayView=!this.displayDayView},preNextDecadeClick:function(t){var e=this.currDate.getFullYear(),n=this.currDate.getMonth(),r=this.currDate.getDate();this.currDate=0===t?new Date(e-10,n,r):new Date(e+10,n,r)},preNextMonthClick:function(t){var e=this.currDate.getFullYear(),n=this.currDate.getMonth(),r=this.currDate.getDate();if(0===t){var i=this.getYearMonth(e,n-1);this.currDate=new Date(i.year,i.month,r)}else{var o=this.getYearMonth(e,n+1);this.currDate=new Date(o.year,o.month,r)}},preNextYearClick:function(t){var e=this.currDate.getFullYear(),n=this.currDate.getMonth(),r=this.currDate.getDate();this.currDate=0===t?new Date(e-1,n,r):new Date(e+1,n,r)},yearSelect:function(t){this.displayYearView=!1,this.displayMonthView=!0,this.currDate=new Date(t,this.currDate.getMonth(),this.currDate.getDate())},daySelect:function(t,e){if("datepicker-item-disable"===e.$el.classList[0])return!1;this.currDate=t,this.value=this.stringify(this.currDate),this.displayDayView=!1},switchMonthView:function(){this.displayDayView=!1,this.displayMonthView=!0},switchDecadeView:function(){this.displayMonthView=!1,this.displayYearView=!0},monthSelect:function(t){this.displayMonthView=!1,this.displayDayView=!0,this.currDate=new Date(this.currDate.getFullYear(),t,this.currDate.getDate())},getYearMonth:function(t,e){return e>11?(t++,e=0):e<0&&(t--,e=11),{year:t,month:e}},stringifyDecadeHeader:function(t){var e=t.getFullYear().toString(),n=e.substring(0,e.length-1)+0;return n+"-"+(parseInt(n,10)+10)},stringifyDayHeader:function(t){return this.text.months[t.getMonth()]+" "+t.getFullYear()},parseMonth:function(t){return this.text.months[t.getMonth()]},stringifyYearHeader:function(t){return t.getFullYear()},stringify:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.format;if(t||(t=this.parse()),!t)return"";var n=t.getFullYear(),r=t.getMonth()+1,i=t.getDate(),o=this.parseMonth(t);return e.replace(/yyyy/g,n).replace(/MMMM/g,o).replace(/MMM/g,o.substring(0,3)).replace(/MM/g,("0"+r).slice(-2)).replace(/dd/g,("0"+i).slice(-2)).replace(/yy/g,n).replace(/M(?!a)/g,r).replace(/d/g,i)},parse:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.value,e=void 0;return e=10!==t.length||"dd-MM-yyyy"!==this.format&&"dd/MM/yyyy"!==this.format?new Date(t):new Date(t.substring(6,10),t.substring(3,5)-1,t.substring(0,2)),isNaN(e.getFullYear())?new Date:e},getDayCount:function(t,e){var n=[31,28,31,30,31,30,31,31,30,31,30,31];return 1===e&&(t%400==0||t%4==0&&t%100!=0)?29:n[e]},getDateRange:function(){var t=this;this.dateRange=[],this.decadeRange=[];for(var e={year:this.currDate.getFullYear(),month:this.currDate.getMonth(),day:this.currDate.getDate()},n=e.year.toString(),r=n.substring(0,n.length-1)+0-1,i=0;i<12;i++)this.decadeRange.push({text:r+i});var o=new Date(e.year,e.month,1),a=o.getDay()+1;0===a&&(a=7);var s=this.getDayCount(e.year,e.month);if(a>1)for(var l=this.getYearMonth(e.year,e.month-1),u=this.getDayCount(l.year,l.month),c=1;c<a;c++){var f=u-a+c+1;this.dateRange.push({text:f,date:new Date(l.year,l.month,f),sclass:"datepicker-item-gray"})}for(var p=1;p<=s;p++)!function(n){var r=new Date(e.year,e.month,n),i=r.getDay(),o="";if(t.disabledDaysOfWeek.forEach(function(t){i===parseInt(t,10)&&(o="datepicker-item-disable")}),n===e.day&&t.value){var a=t.parse(t.value);a&&a.getFullYear()===e.year&&a.getMonth()===e.month&&(o="datepicker-dateRange-item-active")}t.dateRange.push({text:n,date:r,sclass:o})}(p);if(this.dateRange.length<42)for(var d=42-this.dateRange.length,h=this.getYearMonth(e.year,e.month+1),v=1;v<=d;v++)this.dateRange.push({text:v,date:new Date(h.year,h.month,v),sclass:"datepicker-item-gray"})}}}},function(t,e){t.exports='<div class="datepicker">\r\n <input class="form-control datepicker-input" :class="{\'with-reset-button\': clearButton}" type="text" :placeholder="placeholder"\r\n :style="{width:width}"\r\n @click="inputClick"\r\n v-model="value"/>\r\n <button v-if="clearButton && value" type="button" class="close" @click="value = \'\'">\r\n <span>×</span>\r\n </button>\r\n <div class="datepicker-popup" v-show="displayDayView">\r\n <div class="datepicker-inner">\r\n <div class="datepicker-body">\r\n <div class="datepicker-ctrl">\r\n <span class="datepicker-preBtn glyphicon glyphicon-chevron-left" aria-hidden="true" @click="preNextMonthClick(0)"></span>\r\n <span class="datepicker-nextBtn glyphicon glyphicon-chevron-right" aria-hidden="true" @click="preNextMonthClick(1)"></span>\r\n <p @click="switchMonthView">{{stringifyDayHeader(currDate)}}</p>\r\n </div>\r\n <div class="datepicker-weekRange">\r\n <span v-for="w in text.daysOfWeek">{{w}}</span>\r\n </div>\r\n <div class="datepicker-dateRange">\r\n <span v-for="d in dateRange" :class="d.sclass" @click="daySelect(d.date,this)">{{d.text}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="datepicker-popup" v-show="displayMonthView">\r\n <div class="datepicker-inner">\r\n <div class="datepicker-body">\r\n <div class="datepicker-ctrl">\r\n <span class="datepicker-preBtn glyphicon glyphicon-chevron-left" aria-hidden="true" @click="preNextYearClick(0)"></span>\r\n <span class="datepicker-nextBtn glyphicon glyphicon-chevron-right" aria-hidden="true" @click="preNextYearClick(1)"></span>\r\n <p @click="switchDecadeView">{{stringifyYearHeader(currDate)}}</p>\r\n </div>\r\n <div class="datepicker-monthRange">\r\n <template v-for="m in text.months">\r\n <span :class="{\'datepicker-dateRange-item-active\':\r\n (text.months[parse(value).getMonth()] === m) &&\r\n currDate.getFullYear() === parse(value).getFullYear()}"\r\n @click="monthSelect($index)"\r\n >{{m.substr(0,3)}}</span>\r\n </template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="datepicker-popup" v-show="displayYearView">\r\n <div class="datepicker-inner">\r\n <div class="datepicker-body">\r\n <div class="datepicker-ctrl">\r\n <span class="datepicker-preBtn glyphicon glyphicon-chevron-left" aria-hidden="true" @click="preNextDecadeClick(0)"></span>\r\n <span class="datepicker-nextBtn glyphicon glyphicon-chevron-right" aria-hidden="true" @click="preNextDecadeClick(1)"></span>\r\n <p>{{stringifyDecadeHeader(currDate)}}</p>\r\n </div>\r\n <div class="datepicker-monthRange decadeRange">\r\n <template v-for="decade in decadeRange">\r\n <span :class="{\'datepicker-dateRange-item-active\':\r\n parse(this.value).getFullYear() === decade.text}"\r\n @click.stop="yearSelect(decade.text)"\r\n >{{decade.text}}</span>\r\n </template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>'},function(t,e,n){n(128),t.exports=n(130),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(131)},function(t,e,n){var r=n(129);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".secret[_v-628ea2dc] {\r\n position: absolute;\r\n clip: rect(0 0 0 0);\r\n overflow: hidden;\r\n margin: -1px;\r\n height: 1px;\r\n width: 1px;\r\n padding: 0;\r\n border: 0;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{show:{twoWay:!0,type:Boolean,coerce:r.coerce.boolean,default:!1},class:null,disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1},text:{type:String,default:null},type:{type:String,default:"default"}},computed:{classes:function(){return[{open:this.show,disabled:this.disabled},this.class,this.isLi?"dropdown":this.inInput?"input-group-btn":"btn-group"]},inInput:function(){return this.$parent._input},isLi:function(){return this.$parent._navbar||this.$parent.menu||this.$parent._tabset},menu:function(){return!this.$parent||this.$parent.navbar},submenu:function(){return this.$parent&&(this.$parent.menu||this.$parent.submenu)},slots:function(){return this._slotContents}},methods:{blur:function(){var t=this;this.unblur(),this._hide=setTimeout(function(){t._hide=null,t.show=!1},100)},unblur:function(){this._hide&&(clearTimeout(this._hide),this._hide=null)}},ready:function(){var t=this,e=(0,o.default)(this.$els.dropdown);e.onBlur(function(e){t.show=!1}),e.findChildren("a,button.dropdown-toggle").on("click",function(e){return e.preventDefault(),!t.disabled&&(t.show=!t.show,!1)}),e.findChildren("ul").on("click","li>a",function(e){t.show=!1})},beforeDestroy:function(){var t=(0,o.default)(this.$els.dropdown);t.offBlur(),t.findChildren("a,button").off(),t.findChildren("ul").off()}}},function(t,e){t.exports='<li v-if="isLi" v-el:dropdown="" :class="classes" _v-628ea2dc="">\n <slot name="button" _v-628ea2dc="">\n <a class="dropdown-toggle" role="button" :class="{disabled: disabled}" @keyup.esc="show = false" _v-628ea2dc="">\n {{ text }}\n <span class="caret" _v-628ea2dc=""></span>\n </a>\n </slot>\n <slot name="dropdown-menu" _v-628ea2dc="">\n <ul v-else="" class="dropdown-menu" _v-628ea2dc="">\n <slot _v-628ea2dc=""></slot>\n </ul>\n </slot>\n </li>\n <div v-else="" v-el:dropdown="" :class="classes" _v-628ea2dc="">\n <slot name="before" _v-628ea2dc=""></slot>\n <slot name="button" _v-628ea2dc="">\n <button type="button" class="btn btn-{{type}} dropdown-toggle" @keyup.esc="show = false" :disabled="disabled" _v-628ea2dc="">\n {{ text }}\n <span class="caret" _v-628ea2dc=""></span>\n </button>\n </slot>\n <slot name="dropdown-menu" _v-628ea2dc="">\n <ul class="dropdown-menu" _v-628ea2dc="">\n <slot _v-628ea2dc=""></slot>\n </ul>\n </slot>\n </div>'},function(t,e,n){t.exports=n(133),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(134)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27);!function(t){t&&t.__esModule}(i);e.default={props:{valid:{twoWay:!0,default:null},enterSubmit:{type:Boolean,coerce:r.coerce.boolean,default:!1},icon:{type:Boolean,coerce:r.coerce.boolean,default:!1},lang:{type:String,default:navigator.language}},data:function(){return{children:[],timeout:null}},watch:{valid:function(t,e){t!==e&&this._parent&&this._parent.validate()}},methods:{focus:function(){this.$els.input.focus()},validate:function(){var t=!0;return this.children.some(function(e){return(e.validate?e.validate():void 0!==e.valid?e.valid:e.required&&!~["",null,void 0].indexOf(e.value))||(t=!1),!t}),this.valid=t,!0===t}},created:function(){this._formGroup=!0;for(var t=this.$parent;t&&!t._formGroup;)t=t.$parent;t&&t._formGroup&&(t.children.push(this),this._parent=t)},ready:function(){this.validate()},beforeDestroy:function(){this._parent&&this._parent.children.$remove(this)}}},function(t,e){t.exports="<slot></slot>"},function(t,e,n){n(136),t.exports=n(138),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(139)},function(t,e,n){var r=n(137);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".form-group[_v-461124e2] {\r\n position: relative;\r\n}\r\nlabel~.close[_v-461124e2] {\r\n top: 25px;\r\n}\r\n.input-group>.icon[_v-461124e2] {\r\n position: relative;\r\n display: table-cell;\r\n width:0;\r\n z-index: 3;\r\n}\r\n.close[_v-461124e2] {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n z-index: 2;\r\n display: block;\r\n width: 34px;\r\n height: 34px;\r\n line-height: 34px;\r\n text-align: center;\r\n}\r\n.has-feedback .close[_v-461124e2] {\r\n right: 20px;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{value:{twoWay:!0,default:null},match:{type:String,default:null},clearButton:{type:Boolean,coerce:r.coerce.boolean,default:!1},disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1},enterSubmit:{type:Boolean,coerce:r.coerce.boolean,default:!1},error:{type:String,default:null},help:{type:String,default:null},hideHelp:{type:Boolean,coerce:r.coerce.boolean,default:!0},icon:{type:Boolean,coerce:r.coerce.boolean,default:!1},label:{type:String,default:null},lang:{type:String,default:navigator.language},mask:null,maskDelay:{type:Number,coerce:r.coerce.number,default:100},max:{type:String,coerce:r.coerce.string,default:null},maxlength:{type:Number,coerce:r.coerce.number,default:null},min:{type:String,coerce:r.coerce.string,default:null},minlength:{type:Number,coerce:r.coerce.number,default:0},name:{type:String,default:null},pattern:{coerce:r.coerce.pattern,default:null},placeholder:{type:String,default:null},readonly:{type:Boolean,coerce:r.coerce.boolean,default:!1},required:{type:Boolean,coerce:r.coerce.boolean,default:!1},rows:{type:Number,coerce:r.coerce.number,default:3},step:{type:Number,coerce:r.coerce.number,default:null},type:{type:String,default:"text"},validationDelay:{type:Number,coerce:r.coerce.number,default:250}},data:function(){return{valid:null,timeout:null}},computed:{canValidate:function(){return!this.disabled&&!this.readonly&&(this.required||this.pattern||this.nativeValidate||null!==this.match)},errorText:function(){var t=this.value,e=[this.error];return!t&&this.required&&e.push("("+this.text.required.toLowerCase()+")"),t&&t.length<this.minlength&&e.push("("+this.text.minLength.toLowerCase()+": "+this.minlength+")"),e.join(" ")},input:function(){return this.$els.input},nativeValidate:function(){return(this.input||{}).checkValidity&&(~["url","email"].indexOf(this.type.toLowerCase())||this.min||this.max)},showClear:function(){return!/\bEdge\//.test(window.navigator.userAgent)&&this.clearButton},showError:function(){return this.error&&!1===this.valid},showHelp:function(){return this.help&&(!this.showError||!this.hideHelp)},slots:function(){return this._slotContents||{}},text:function(){return(0,r.translations)(this.lang)},title:function(){return this.errorText||this.help||""}},watch:{match:function(t){this.eval()},valid:function(t,e){t!==e&&this._parent&&this._parent.validate()},value:function(t,e){var n=this;t!==e&&(this.mask instanceof Function&&(t=this.mask(t||""),this.value!==t&&(this._timeout.mask&&clearTimeout(this._timeout.mask),this._timeout.mask=setTimeout(function(){n.value=t,n.$els.input.value=t},this.maskDelay))),this.eval())}},methods:{attr:function(t){return~["",null,void 0].indexOf(t)||t instanceof Function?void 0:t},focus:function(){this.input.focus()},eval:function(){var t=this;this._timeout.eval&&clearTimeout(this._timeout.eval),this.canValidate?this._timeout.eval=setTimeout(function(){t.valid=t.validate(),t._timeout.eval=null},this.validationDelay):this.valid=!0},onblur:function(t){this.canValidate&&(this.valid=this.validate()),this.$emit("blur",t)},onfocus:function(t){this.$emit("focus",t)},submit:function(){if(this.$parent._formGroup)return this.$parent.validate();if(this.input.form){var t=(0,o.default)(".form-group.validate:not(.has-success)",this.input.form);t.length?t.find("input,textarea,select")[0].focus():this.input.form.submit()}},validate:function(){if(!this.canValidate)return!0;var t=(this.value||"").trim();return t?null!==this.match?this.match===t:!(t.length<this.minlength)&&(!(this.nativeValidate&&!this.input.checkValidity())&&(!this.pattern||(this.pattern instanceof Function?this.pattern(this.value):this.pattern.test(this.value)))):!this.required}},created:function(){this._input=!0,this._timeout={};for(var t=this.$parent;t&&!t._formGroup;)t=t.$parent;t&&t._formGroup&&(this._parent=t)},ready:function(){var t=this;this._parent&&this._parent.children.push(this),(0,o.default)(this.input).on("focus",function(e){return t.$emit("focus",e)}).on("blur",function(e){t.canValidate&&(t.valid=t.validate()),t.$emit("blur",e)})},beforeDestroy:function(){this._parent&&this._parent.children.$remove(this),(0,o.default)(this.input).off()}}},function(t,e){t.exports='<div class="form-group" :class="{validate:canValidate,\'has-feedback\':icon,\'has-error\':canValidate&&valid===false,\'has-success\':canValidate&&valid}" _v-461124e2="">\n <slot name="label" _v-461124e2=""><label v-if="label" class="control-label" @click="focus" _v-461124e2="">{{label}}</label></slot>\n <div v-if="slots.before||slots.after" class="input-group" _v-461124e2="">\n <slot name="before" _v-461124e2=""></slot>\n <textarea v-if="type==\'textarea\'" class="form-control" v-el:input="" v-model="value" :cols="cols" :rows="rows" :name="name" :title="attr(title)" :readonly="readonly" :required="required" :disabled="disabled" :maxlength="maxlength" :placeholder="placeholder" @blur="onblur" @focus="onfocus" _v-461124e2=""></textarea>\n <input v-else="" class="form-control" v-el:input="" v-model="value" :name="name" :max="attr(max)" :min="attr(min)" :step="step" :type="type" :title="attr(title)" :readonly="readonly" :required="required" :disabled="disabled" :maxlength="maxlength" :placeholder="placeholder" @keyup.enter="enterSubmit&&submit()" @blur="onblur" @focus="onfocus" _v-461124e2="">\n <div v-if="showClear && value" :class="{icon:icon}" _v-461124e2="">\n <span class="close" @click="value = \'\'" _v-461124e2="">×</span>\n </div>\n <div v-if="icon" class="icon" _v-461124e2="">\n <span v-if="icon&&valid!==null" :class="[\'form-control-feedback glyphicon\',\'glyphicon-\'+(valid?\'ok\':\'remove\')]" aria-hidden="true" _v-461124e2=""></span>\n </div>\n <slot name="after" _v-461124e2=""></slot>\n </div>\n <template v-else="" _v-461124e2="">\n <textarea v-if="type==\'textarea\'" class="form-control" v-el:input="" v-model="value" :cols="cols" :rows="rows" :name="name" :title="attr(title)" :readonly="readonly" :required="required" :disabled="disabled" :maxlength="maxlength" :placeholder="placeholder" @blur="onblur" @focus="onfocus" _v-461124e2=""></textarea>\n <input v-else="" class="form-control" v-el:input="" v-model="value" :name="name" :max="attr(max)" :min="attr(min)" :step="step" :type="type" :title="attr(title)" :readonly="readonly" :required="required" :disabled="disabled" :maxlength="maxlength" :placeholder="placeholder" @keyup.enter="enterSubmit&&submit()" @blur="onblur" @focus="onfocus" _v-461124e2="">\n <span v-if="showClear && value" class="close" @click="value = \'\'" _v-461124e2="">×</span>\n <span v-if="icon&&valid!==null" :class="[\'form-control-feedback glyphicon\',\'glyphicon-\'+(valid?\'ok\':\'remove\')]" aria-hidden="true" _v-461124e2=""></span>\n </template>\n <div v-if="showHelp" class="help-block" @click="focus" _v-461124e2="">{{help}}</div>\n <div v-if="showError" class="help-block with-errors" @click="focus" _v-461124e2="">{{errorText}}</div>\n </div>'},function(t,e,n){n(141),t.exports=n(143),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(148)},function(t,e,n){var r=n(142);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".modal {\r\n -webkit-transition: all 0.3s ease;\r\n transition: all 0.3s ease;\r\n}\r\n.modal.in {\r\n background-color: rgba(0,0,0,0.5);\r\n}\r\n.modal.zoom .modal-dialog {\r\n -webkit-transform: scale(0.1);\r\n transform: scale(0.1);\r\n top: 300px;\r\n opacity: 0;\r\n -webkit-transition: all 0.3s;\r\n transition: all 0.3s;\r\n}\r\n.modal.zoom.in .modal-dialog {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n -webkit-transform: translate3d(0, -300px, 0);\r\n transform: translate3d(0, -300px, 0);\r\n opacity: 1;\r\n}",""])},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(144),o=r(i),a=n(92),s=n(27),l=r(s);e.default={props:{okText:{type:String,default:"Save changes"},cancelText:{type:String,default:"Close"},title:{type:String,default:""},show:{required:!0,type:Boolean,coerce:a.coerce.boolean,twoWay:!0},width:{default:null},callback:{type:Function,default:function(){}},effect:{type:String,default:null},backdrop:{type:Boolean,coerce:a.coerce.boolean,default:!0},large:{type:Boolean,coerce:a.coerce.boolean,default:!1},small:{type:Boolean,coerce:a.coerce.boolean,default:!1}},computed:{optionalWidth:function(){return null===this.width?null:(0,o.default)(this.width)?this.width+"px":this.width}},watch:{show:function(t){var e=this,n=this.$el,r=document.body,i=(0,a.getScrollBarWidth)();t?((0,l.default)(n).find(".modal-content").focus(),n.style.display="block",setTimeout(function(){return(0,l.default)(n).addClass("in")},0),(0,l.default)(r).addClass("modal-open"),0!==i&&(r.style.paddingRight=i+"px"),this.backdrop&&(0,l.default)(n).on("click",function(t){t.target===n&&(e.show=!1)})):(r.style.paddingRight=null,(0,l.default)(r).removeClass("modal-open"),(0,l.default)(n).removeClass("in").on("transitionend",function(){(0,l.default)(n).off("click transitionend"),n.style.display="none"}))}},methods:{close:function(){this.show=!1}}}},function(t,e,n){t.exports={default:n(145),__esModule:!0}},function(t,e,n){n(146),t.exports=n(33).Number.isInteger},function(t,e,n){var r=n(31);r(r.S,"Number",{isInteger:n(147)})},function(t,e,n){var r=n(39),i=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&i(t)===t}},function(t,e){t.exports='<div role="dialog"\r\n v-bind:class="{\r\n \'modal\':true,\r\n \'fade\':effect === \'fade\',\r\n \'zoom\':effect === \'zoom\'\r\n }"\r\n >\r\n <div v-bind:class="{\'modal-dialog\':true,\'modal-lg\':large,\'modal-sm\':small}" role="document"\r\n v-bind:style="{width: optionalWidth}">\r\n <div class="modal-content">\r\n <slot name="modal-header">\r\n <div class="modal-header">\r\n <button type="button" class="close" @click="close"><span>×</span></button>\r\n <h4 class="modal-title">\r\n <slot name="title">\r\n {{title}}\r\n </slot>\r\n </h4>\r\n </div>\r\n </slot>\r\n <slot name="modal-body">\r\n <div class="modal-body"></div>\r\n </slot>\r\n <slot name="modal-footer">\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" @click="close">{{ cancelText }}</button>\r\n <button type="button" class="btn btn-primary" @click="callback">{{ okText }}</button>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n </div>'},function(t,e,n){t.exports=n(150),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(151)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(27),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={props:{type:{type:String,default:"default"},placement:{type:String,default:""}},data:function(){return{id:"bs-example-navbar-collapse-1",collapsed:!0,styles:{}}},computed:{slots:function(){return this._slotContents}},methods:{toggleCollapse:function(t){t&&t.preventDefault(),this.collapsed=!this.collapsed}},created:function(){this._navbar=!0},ready:function(){var t=this,e=(0,i.default)('.dropdown>[data-toggle="dropdown"]',this.$el).parent();e.on("click",".dropdown-toggle",function(t){t.preventDefault(),e.each(function(e){e.contains(t.target)&&e.classList.toggle("open")})}).on("click",".dropdown-menu>li>a",function(t){e.each(function(e){e.contains(t.target)&&e.classList.remove("open")})}).onBlur(function(t){e.each(function(e){e.contains(t.target)||e.classList.remove("open")})}),(0,i.default)(this.$el).on("click touchstart","li:not(.dropdown)>a",function(e){setTimeout(function(){t.collapsed=!0},200)}).onBlur(function(e){t.$el.contains(e.target)||(t.collapsed=!0)});var n=this.$el.offsetHeight;"top"===this.placement&&(document.body.style.paddingTop=n+"px"),"bottom"===this.placement&&(document.body.style.paddingBottom=n+"px"),this.slots.collapse&&(0,i.default)('[data-toggle="collapse"]',this.$el).on("click",function(e){return t.toggleCollapse(e)})},beforeDestroy:function(){(0,i.default)(".dropdown",this.$el).off("click").offBlur(),this.slots.collapse&&(0,i.default)('[data-toggle="collapse"]',this.$el).off("click")}}},function(t,e){t.exports='<nav v-el:navbar :class="[\'navbar\',{\r\n \'navbar-inverse\':(type == \'inverse\'),\r\n \'navbar-default\':(type == \'default\'),\r\n \'navbar-fixed-top\':(placement === \'top\'),\r\n \'navbar-fixed-bottom\':(placement === \'bottom\'),\r\n \'navbar-static-top\':(placement === \'static\')\r\n }]">\r\n <div class="container-fluid">\r\n <div class="navbar-header">\r\n <button v-if="!slots.collapse" type="button" class="navbar-toggle collapsed" aria-expanded="false" @click="toggleCollapse">\r\n <span class="sr-only">Toggle navigation</span>\r\n <span class="icon-bar"></span>\r\n <span class="icon-bar"></span>\r\n <span class="icon-bar"></span>\r\n </button>\r\n <slot name="collapse"></slot>\r\n <slot name="brand"></slot>\r\n </div>\r\n <div :class="[\'navbar-collapse\',{collapse:collapsed}]">\r\n <ul class="nav navbar-nav">\r\n <slot></slot>\r\n </ul>\r\n <ul v-if="slots.right" class="nav navbar-nav navbar-right">\r\n <slot name="right"></slot>\r\n </ul>\r\n </div>\r\n </div>\r\n </nav>'},function(t,e,n){t.exports=n(153),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(154)},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{value:null},data:function(){return{loading:!0}},ready:function(){if(this.$parent._select){this.$parent.options||(this.$parent.options=[]);var t={};t[this.$parent.optionsLabel]=this.$els.v.innerHTML,t[this.$parent.optionsValue]=this.value,this.$parent.options.push(t),this.loading=!1}}}},function(t,e){t.exports='<li v-el:v v-if="loading"><slot></slot></li>'},function(t,e,n){n(156),t.exports=n(158),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(159)},function(t,e,n){var r=n(157);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".accordion-toggle {\r\n cursor: pointer;\r\n}\r\n.collapse-transition {\r\n -webkit-transition: max-height .5s ease;\r\n transition: max-height .5s ease;\r\n}\r\n.collapse-enter, .collapse-leave {\r\n max-height: 0!important;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{header:{type:String},isOpen:{type:Boolean,coerce:r.coerce.boolean,default:null},type:{type:String,default:null}},computed:{inAccordion:function(){return this.$parent&&this.$parent._isAccordion},panelType:function(){return"panel panel-"+(this.type||this.$parent&&this.$parent.type||"default")}},methods:{toggle:function(){this.isOpen=!this.isOpen,this.$dispatch("isOpenEvent",this)}},transitions:{collapse:{afterEnter:function(t){t.style.maxHeight="",t.style.overflow=""},beforeLeave:function(t){return t.style.maxHeight=t.offsetHeight+"px",t.style.overflow="hidden",t.offsetHeight}}},created:function(){null===this.isOpen&&(this.isOpen=!this.inAccordion)}}},function(t,e){t.exports='<div :class="panelType">\r\n <div :class="[\'panel-heading\',{\'accordion-toggle\':inAccordion}]" @click.prevent="inAccordion&&toggle()">\r\n <slot name="header">\r\n <h4 class="panel-title">{{ header }}</h4>\r\n </slot>\r\n </div>\r\n <div class="panel-collapse"\r\n v-el:panel\r\n v-show="isOpen"\r\n transition="collapse"\r\n >\r\n <div class="panel-body">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>'},function(t,e,n){n(161),t.exports=n(163),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(165)},function(t,e,n){var r=n(162);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".popover.top,\r\n.popover.left,\r\n.popover.right,\r\n.popover.bottom {\r\n display: block;\r\n}\r\n.scale-enter {\r\n -webkit-animation:scale-in 0.15s ease-in;\r\n animation:scale-in 0.15s ease-in;\r\n}\r\n.scale-leave {\r\n -webkit-animation:scale-out 0.15s ease-out;\r\n animation:scale-out 0.15s ease-out;\r\n}\r\n@-webkit-keyframes scale-in {\r\n 0% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n}\r\n@keyframes scale-in {\r\n 0% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n}\r\n@-webkit-keyframes scale-out {\r\n 0% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n opacity: 0;\r\n }\r\n}\r\n@keyframes scale-out {\r\n 0% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n 100% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n opacity: 0;\r\n }\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(164),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={mixins:[i.default],props:{trigger:{type:String,default:"click"}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(27),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={props:{trigger:{type:String},effect:{type:String,default:"fade"},title:{type:String},content:{type:String},header:{type:Boolean,coerce:r.coerce.boolean,default:!0},placement:{type:String,default:"top"}},data:function(){return{position:{top:0,left:0},show:!1}},methods:{toggle:function(t){var e=this;t&&"contextmenu"===this.trigger&&t.preventDefault(),(this.show=!this.show)&&setTimeout(function(){var t=e.$els.popover,n=e.$els.trigger.children[0];switch(e.placement){case"top":e.position.left=n.offsetLeft-t.offsetWidth/2+n.offsetWidth/2,e.position.top=n.offsetTop-t.offsetHeight;break;case"left":e.position.left=n.offsetLeft-t.offsetWidth,e.position.top=n.offsetTop+n.offsetHeight/2-t.offsetHeight/2;break;case"right":e.position.left=n.offsetLeft+n.offsetWidth,e.position.top=n.offsetTop+n.offsetHeight/2-t.offsetHeight/2;break;case"bottom":e.position.left=n.offsetLeft-t.offsetWidth/2+n.offsetWidth/2,e.position.top=n.offsetTop+n.offsetHeight}t.style.top=e.position.top+"px",t.style.left=e.position.left+"px"},0)}},ready:function(){var t=this.$els.trigger;if(t&&("focus"!==this.trigger||~t.tabIndex||(t=(0,o.default)("a,input,select,textarea,button",t),t.length||(t=null)),t)){var e={contextmenu:"contextmenu",hover:"mouseleave mouseenter",focus:"blur focus"};(0,o.default)(t).on(e[this.trigger]||"click",this.toggle),this._trigger=t}},beforeDestroy:function(){this._trigger&&(0,o.default)(this._trigger).off()}}},function(t,e){t.exports='<span v-el:trigger>\r\n <slot></slot>\r\n <div v-el:popover v-if="show"\r\n :class="[\'popover\',placement]"\r\n :transition="effect"\r\n >\r\n <div class="arrow"></div>\r\n <h3 class="popover-title" v-if="title">\r\n <slot name="title">{{title}}</slot>\r\n </h3>\r\n <div class="popover-content">\r\n <slot name="content">{{{content}}}</slot>\r\n </div>\r\n </div>\r\n </span>'},function(t,e,n){t.exports=n(167),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(168)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{now:{type:Number,coerce:r.coerce.number,required:!0},label:{type:Boolean,coerce:r.coerce.boolean,default:!1},type:{type:String},striped:{type:Boolean,coerce:r.coerce.boolean,default:!1},animated:{type:Boolean,coerce:r.coerce.boolean,default:!1}}}},function(t,e){t.exports="<div role=\"progressbar\" \r\n :class=\"['progress-bar',{\r\n 'progress-bar-success':type == 'success',\r\n 'progress-bar-warning':type == 'warning',\r\n 'progress-bar-info':type == 'info',\r\n 'progress-bar-danger':type == 'danger',\r\n 'progress-bar-striped':striped,\r\n 'active':animated\r\n }]\"\r\n :style=\"{width: now + '%'}\"\r\n >\r\n {{label ? now + '%' : ''}}\r\n </div>"},function(t,e,n){n(170),t.exports=n(172),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(173)},function(t,e,n){var r=n(171);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".radio { position: relative; }\r\n.radio > label > input {\r\n position: absolute;\r\n margin: 0;\r\n padding: 0;\r\n opacity: 0;\r\n z-index: -1;\r\n box-sizing: border-box;\r\n}\r\n.radio > label > .icon {\r\n position: absolute;\r\n top: .15rem;\r\n left: 0;\r\n display: block;\r\n width: 1.4rem;\r\n height: 1.4rem;\r\n text-align: center;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n border-radius: .7rem;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n background-size: 50% 50%;\r\n}\r\n.radio:not(.active) > label > .icon {\r\n background-color: #ddd;\r\n border: 1px solid #bbb;\r\n}\r\n.radio > label > input:focus ~ .icon {\r\n outline: 0;\r\n border: 1px solid #66afe9;\r\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\r\n}\r\n.radio.active > label > .icon {\r\n background-size: 1rem 1rem;\r\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI0IiBmaWxsPSIjZmZmIi8+PC9zdmc+);\r\n}\r\n.radio.active .btn-default { -webkit-filter: brightness(75%); filter: brightness(75%); }\r\n\r\n.radio.disabled > label > .icon,\r\n.radio.readonly > label > .icon,\r\n.btn.readonly {\r\n filter: alpha(opacity=65);\r\n box-shadow: none;\r\n opacity: .65;\r\n}\r\nlabel.btn > input[type=radio] {\r\n position: absolute;\r\n clip: rect(0,0,0,0);\r\n pointer-events: none;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{value:{default:!0},checked:{twoWay:!0},button:{type:Boolean,coerce:r.coerce.boolean,default:!1},disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1},name:{type:String,default:null},readonly:{type:Boolean,coerce:r.coerce.boolean,default:!1},type:{type:String,default:null}},computed:{active:function(){return this.group?this.$parent.value===this.value:this.value===this.checked},buttonStyle:function(){return this.button||this.group&&this.$parent.buttons},group:function(){return this.$parent&&this.$parent._radioGroup},typeColor:function(){return this.type||this.$parent&&this.$parent.type||"default"}},created:function(){var t=this.$parent;t&&t._btnGroup&&!t._checkboxGroup&&(t._radioGroup=!0)},ready:function(){this.$parent._radioGroup&&(this.$parent.value?this.checked=this.$parent.value===this.value:this.checked&&(this.$parent.value=this.value))},methods:{focus:function(){this.$els.input.focus()},toggle:function(){this.disabled||(this.focus(),this.readonly||(this.checked=this.value,this.group&&(this.$parent.value=this.value)))}}}},function(t,e){t.exports='<label v-if="buttonStyle" :class="[\'btn btn-\'+typeColor,{active:active,disabled:disabled,readonly:readonly}]" @click.prevent="toggle">\r\n <input type="radio" autocomplete="off"\r\n v-el:input\r\n v-show="!readonly"\r\n :checked="active"\r\n :value="value"\r\n :name="name"\r\n :readonly="readonly"\r\n :disabled="disabled"\r\n />\r\n <slot></slot>\r\n </label>\r\n <div v-else :class="[\'radio\',typeColor,{active:active,disabled:disabled,readonly:readonly}]" @click.prevent="toggle">\r\n <label class="open">\r\n <input type="radio" autocomplete="off"\r\n v-el:input\r\n :checked="active"\r\n :value="value"\r\n :name="name"\r\n :readonly="readonly"\r\n :disabled="disabled"\r\n />\r\n <span class="icon dropdown-toggle" :class="[active?\'btn-\'+typeColor:\'\',{bg:typeColor===\'default\'}]"></span>\r\n <span v-if="active&&typeColor===\'default\'" class="icon"></span>\r\n <slot></slot>\r\n </label>\r\n </div>'},function(t,e,n){n(175),t.exports=n(177),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(193)},function(t,e,n){var r=n(176);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,"button.form-control.dropdown-toggle[_v-0f3bb707]{\r\n height: auto;\r\n padding-right: 24px;\r\n}\r\nbutton.form-control.dropdown-toggle[_v-0f3bb707]:after{\r\n content: ' ';\r\n position: absolute;\r\n right: 13px;\r\n top: 50%;\r\n margin: -1px 0 0;\r\n border-top: 4px dashed;\r\n border-top: 4px solid \\9;\r\n border-right: 4px solid transparent;\r\n border-left: 4px solid transparent;\r\n}\r\n.bs-searchbox[_v-0f3bb707] {\r\n position: relative;\r\n margin: 4px 8px;\r\n}\r\n.bs-searchbox .close[_v-0f3bb707] {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n z-index: 2;\r\n display: block;\r\n width: 34px;\r\n height: 34px;\r\n line-height: 34px;\r\n text-align: center;\r\n}\r\n.bs-searchbox input[_v-0f3bb707]:focus,\r\n.secret:focus + button[_v-0f3bb707] {\r\n outline: 0;\r\n border-color: #66afe9 !important;\r\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\r\n}\r\n.secret[_v-0f3bb707] {\r\n border: 0;\r\n clip: rect(0 0 0 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n width: 1px;\r\n}\r\nbutton>.close[_v-0f3bb707] { margin-left: 5px;}\r\n.notify.out[_v-0f3bb707] { position: relative; }\r\n.notify.in[_v-0f3bb707],\r\n.notify>div[_v-0f3bb707] {\r\n position: absolute;\r\n width: 96%;\r\n margin: 0 2%;\r\n min-height: 26px;\r\n padding: 3px 5px;\r\n background: #f5f5f5;\r\n border: 1px solid #e3e3e3;\r\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\r\n pointer-events: none;\r\n}\r\n.notify>div[_v-0f3bb707] {\r\n top: 5px;\r\n z-index: 1;\r\n}\r\n.notify.in[_v-0f3bb707] {\r\n opacity: .9;\r\n bottom: 5px;\r\n}\r\n.btn-group-justified .dropdown-toggle>span[_v-0f3bb707]:not(.close) {\r\n width: calc(100% - 18px);\r\n display: inline-block;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n margin-bottom: -4px;\r\n}\r\n.btn-group-justified .dropdown-menu[_v-0f3bb707] { width: 100%; }",""])},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(178),o=r(i),a=n(92),s=n(27),l=r(s),u={};e.default={props:{value:{twoWay:!0},options:{type:Array,default:function(){return[]}},multiple:{type:Boolean,coerce:a.coerce.boolean,default:!1},clearButton:{type:Boolean,coerce:a.coerce.boolean,default:!1},closeOnSelect:{type:Boolean,coerce:a.coerce.boolean,default:!1},disabled:{type:Boolean,coerce:a.coerce.boolean,default:!1},lang:{type:String,default:navigator.language},limit:{type:Number,coerce:a.coerce.number,default:1024},name:{type:String,default:null},optionsLabel:{type:String,default:"label"},optionsValue:{type:String,default:"value"},parent:{default:!0},placeholder:{type:String,default:null},readonly:{type:Boolean,coerce:a.coerce.boolean,default:null},required:{type:Boolean,coerce:a.coerce.boolean,default:null},minSearch:{type:Number,coerce:a.coerce.number,default:0},search:{type:Boolean,coerce:a.coerce.boolean,default:!1},searchText:{type:String,default:null},url:{type:String,default:null}},data:function(){return{loading:null,searchValue:null,show:!1,showNotify:!1,valid:null}},computed:{selected:function(){var t=this;if(0===this.options.length)return"";var e=[];return this.values.forEach(function(n){if(~["number","string"].indexOf(void 0===n?"undefined":(0,o.default)(n))){var r=null;t.options.some(function(e){if(e instanceof Object?e[t.optionsValue]===n:e===n)return r=e,!0})&&e.push(r[t.optionsLabel]||r)}}),e.join(", ")},classes:function(){return[{open:this.show,disabled:this.disabled},this.class,this.isLi?"dropdown":this.inInput?"input-group-btn":"btn-group"]},inInput:function(){return this.$parent._input},isLi:function(){return this.$parent._navbar||this.$parent.menu||this.$parent._tabset},canSearch:function(){return this.minSearch?this.options.length>=this.minSearch:this.search},limitText:function(){return this.text.limit.replace("{{limit}}",this.limit)},showPlaceholder:function(){return 0!==this.values.length&&this.hasParent?null:this.placeholder||this.text.notSelected},text:function(){return(0,a.translations)(this.lang)},hasParent:function(){return this.parent instanceof Array?this.parent.length:this.parent},values:function(){return this.value instanceof Array?this.value:null!==this.value&&void 0!==this.value?[this.value]:[]}},watch:{options:function(t){var e=this,n=!1;t instanceof Array&&t.length&&t.map(function(t){if(!(t instanceof Object)){var r={};return r[e.optionsLabel]=t,r[e.optionsValue]=t,n=!0,r}return t}),n&&(this.options=t)},show:function(t){t&&(this.$els.sel.focus(),this.$els.search&&this.$els.search.focus())},url:function(){this.update()},value:function(t){var e=this;this.$emit("change",t),this.$emit("selected",this.selected),this.value instanceof Array&&t.length>this.limit&&(this.showNotify=!0,u.limit&&clearTimeout(u.limit),u.limit=setTimeout(function(){u.limit=!1,e.showNotify=!1},1500)),this.checkValue(),this.valid=this.validate()},valid:function(t,e){t!==e&&this._parent&&this._parent.validate()}},methods:{blur:function(){this.show=!1},clear:function(){this.disabled||this.readonly||(this.value=this.value instanceof Array?[]:null,this.toggle())},clearSearch:function(){this.searchValue="",this.$els.search.focus()},checkValue:function(){!this.multiple||this.value instanceof Array||(this.value=null===this.value||void 0===this.value?[]:[this.value]),!this.multiple&&this.value instanceof Array&&(this.value=this.value.length?this.value.pop():null),this.limit<1&&(this.limit=1),this.values.length>this.limit&&(this.value=this.value.slice(0,this.limit))},isSelected:function(t){return this.values.indexOf(t)>-1},select:function(t,e){this.value instanceof Array?(~this.value.indexOf(t)?this.value.$remove(t):this.value.push(t),this.closeOnSelect&&this.toggle()):(this.value=~["",null,void 0].indexOf(t)?e:t,this.toggle())},toggle:function(){this.show=!this.show},update:function(){var t=this;this.url&&(this.loading=!0,(0,a.getJSON)(this.url).then(function(e){var n=[];e.forEach(function(e){void 0!==e[t.optionsValue]&&void 0!==e[t.optionsLabel]&&n.push(e)}),t.options=n,n.length||(t.value=t.value instanceof Array?[]:null)}).always(function(){t.loading=!1,t.checkValue()}))},validate:function(){return!this.required||(this.value instanceof Array?this.value.length>0:null!==this.value)}},created:function(){this._select=!0,void 0!==this.value&&this.parent||(this.value=null),!this.multiple&&this.value instanceof Array&&(this.value=this.value.shift()),this.checkValue(),this.url&&this.update();for(var t=this.$parent;t&&!t._formGroup;)t=t.$parent;t&&t._formGroup&&(t.children.push(this),this._parent=t)},ready:function(){var t=this;(0,l.default)(this.$els.select).onBlur(function(e){t.show=!1})},beforeDestroy:function(){this._parent&&this._parent.children.$remove(this),(0,l.default)(this.$els.select).offBlur()}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(46),o=r(i),a=n(179),s=r(a),l="function"==typeof s.default&&"symbol"==typeof o.default?function(t){return typeof t}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":typeof t};e.default="function"==typeof s.default&&"symbol"===l(o.default)?function(t){return void 0===t?"undefined":l(t)}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":void 0===t?"undefined":l(t)}},function(t,e,n){t.exports={default:n(180),__esModule:!0}},function(t,e,n){n(181),n(190),n(191),n(192),t.exports=n(33).Symbol},function(t,e,n){"use strict";var r=n(32),i=n(55),o=n(41),a=n(31),s=n(54),l=n(182).KEY,u=n(42),c=n(69),f=n(73),p=n(70),d=n(74),h=n(81),v=n(183),g=n(184),m=n(185),y=n(188),b=n(38),_=n(62),x=n(44),w=n(45),k=n(58),C=n(86),$=n(189),T=n(37),S=n(60),A=$.f,E=T.f,O=C.f,j=r.Symbol,D=r.JSON,N=D&&D.stringify,I=d("_hidden"),P=d("toPrimitive"),L={}.propertyIsEnumerable,R=c("symbol-registry"),M=c("symbols"),F=c("op-symbols"),q=Object.prototype,B="function"==typeof j,H=r.QObject,U=!H||!H.prototype||!H.prototype.findChild,z=o&&u(function(){return 7!=k(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=A(q,e);r&&delete q[e],E(t,e,n),r&&t!==q&&E(q,e,r)}:E,W=function(t){var e=M[t]=k(j.prototype);return e._k=t,e},V=B&&"symbol"==typeof j.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof j},X=function(t,e,n){return t===q&&X(F,e,n),b(t),e=x(e,!0),b(n),i(M,e)?(n.enumerable?(i(t,I)&&t[I][e]&&(t[I][e]=!1),n=k(n,{enumerable:w(0,!1)})):(i(t,I)||E(t,I,w(1,{})),t[I][e]=!0),z(t,e,n)):E(t,e,n)},Y=function(t,e){b(t);for(var n,r=m(e=_(e)),i=0,o=r.length;o>i;)X(t,n=r[i++],e[n]);return t},G=function(t,e){return void 0===e?k(t):Y(k(t),e)},Z=function(t){var e=L.call(this,t=x(t,!0));return!(this===q&&i(M,t)&&!i(F,t))&&(!(e||!i(this,t)||!i(M,t)||i(this,I)&&this[I][t])||e)},J=function(t,e){if(t=_(t),e=x(e,!0),t!==q||!i(M,e)||i(F,e)){var n=A(t,e);return!n||!i(M,e)||i(t,I)&&t[I][e]||(n.enumerable=!0),n}},K=function(t){for(var e,n=O(_(t)),r=[],o=0;n.length>o;)i(M,e=n[o++])||e==I||e==l||r.push(e);return r},Q=function(t){for(var e,n=t===q,r=O(n?F:_(t)),o=[],a=0;r.length>a;)!i(M,e=r[a++])||n&&!i(q,e)||o.push(M[e]);return o};B||(j=function(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===q&&e.call(F,n),i(this,I)&&i(this[I],t)&&(this[I][t]=!1),z(this,t,w(1,n))};return o&&U&&z(q,t,{configurable:!0,set:e}),W(t)},s(j.prototype,"toString",function(){return this._k}),$.f=J,T.f=X,n(87).f=C.f=K,n(187).f=Z,n(186).f=Q,o&&!n(53)&&s(q,"propertyIsEnumerable",Z,!0),h.f=function(t){return W(d(t))}),a(a.G+a.W+a.F*!B,{Symbol:j});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var tt=S(d.store),et=0;tt.length>et;)v(tt[et++]);a(a.S+a.F*!B,"Symbol",{for:function(t){return i(R,t+="")?R[t]:R[t]=j(t)},keyFor:function(t){if(V(t))return g(R,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){U=!0},useSimple:function(){U=!1}}),a(a.S+a.F*!B,"Object",{create:G,defineProperty:X,defineProperties:Y,getOwnPropertyDescriptor:J,getOwnPropertyNames:K,getOwnPropertySymbols:Q}),D&&a(a.S+a.F*(!B||u(function(){var t=j();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!V(t)){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);return e=r[1],"function"==typeof e&&(n=e),!n&&y(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!V(e))return e}),r[1]=e,N.apply(D,r)}}}),j.prototype[P]||n(36)(j.prototype,P,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(t,e,n){var r=n(70)("meta"),i=n(39),o=n(55),a=n(37).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(42)(function(){return l(Object.preventExtensions({}))}),c=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,r)){if(!l(t))return"F";if(!e)return"E";c(t)}return t[r].i},p=function(t,e){if(!o(t,r)){if(!l(t))return!0;if(!e)return!1;c(t)}return t[r].w},d=function(t){return u&&h.NEED&&l(t)&&!o(t,r)&&c(t),t},h=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:p,onFreeze:d}},function(t,e,n){var r=n(32),i=n(33),o=n(53),a=n(81),s=n(37).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},function(t,e,n){var r=n(60),i=n(62);t.exports=function(t,e){for(var n,o=i(t),a=r(o),s=a.length,l=0;s>l;)if(o[n=a[l++]]===e)return n}},function(t,e,n){var r=n(60),i=n(186),o=n(187);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var a,s=n(t),l=o.f,u=0;s.length>u;)l.call(t,a=s[u++])&&e.push(a);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(64);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(187),i=n(45),o=n(62),a=n(44),s=n(55),l=n(40),u=Object.getOwnPropertyDescriptor;e.f=n(41)?u:function(t,e){if(t=o(t),e=a(e,!0),l)try{return u(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(183)("asyncIterator")},function(t,e,n){n(183)("observable")},function(t,e){t.exports='<div v-el:select="" :class="classes" _v-0f3bb707="">\n <button type="button" class="form-control dropdown-toggle" :disabled="disabled || !hasParent" :readonly="readonly" @click="toggle()" @keyup.esc="show = false" _v-0f3bb707="">\n <span class="btn-content" v-html="loading ? text.loading : showPlaceholder || selected" _v-0f3bb707=""></span>\n <span v-if="clearButton&&values.length" class="close" @click="clear()" _v-0f3bb707="">×</span>\n </button>\n <select v-el:sel="" v-model="value" v-show="show" name="{{name}}" class="secret" :multiple="multiple" :required="required" :readonly="readonly" :disabled="disabled" _v-0f3bb707="">\n <option v-if="required" value="" _v-0f3bb707=""></option>\n <option v-for="option in options" :value="option[optionsValue]||option" _v-0f3bb707="">{{ option[optionsLabel]||option }}</option>\n </select>\n <ul class="dropdown-menu" _v-0f3bb707="">\n <template v-if="options.length" _v-0f3bb707="">\n <li v-if="canSearch" class="bs-searchbox" _v-0f3bb707="">\n <input type="text" placeholder="{{searchText||text.search}}" class="form-control" autocomplete="off" v-el:search="" v-model="searchValue" @keyup.esc="show = false" _v-0f3bb707="">\n <span v-show="searchValue" class="close" @click="clearSearch" _v-0f3bb707="">×</span>\n </li>\n <li v-if="required&&!clearButton" _v-0f3bb707=""><a @mousedown.prevent="clear() && blur()" _v-0f3bb707="">{{ placeholder || text.notSelected }}</a></li>\n <li v-for="option in options | filterBy searchValue" :id="option[optionsValue]||option" _v-0f3bb707="">\n <a @mousedown.prevent="select(option[optionsValue],option)" _v-0f3bb707="">\n <span v-html="option[optionsLabel]||option" _v-0f3bb707=""></span>\n <span class="glyphicon glyphicon-ok check-mark" v-show="isSelected(option[optionsValue])" _v-0f3bb707=""></span>\n </a>\n </li>\n </template>\n <slot _v-0f3bb707=""></slot>\n <div v-if="showNotify && !closeOnSelect" class="notify in" transition="fadein" _v-0f3bb707="">{{limitText}}</div>\n </ul>\n <div v-if="showNotify && closeOnSelect" class="notify out" transition="fadein" _v-0f3bb707=""><div _v-0f3bb707="">{{limitText}}</div></div>\n </div>'},function(t,e,n){t.exports=n(195),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(196)},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={data:function(){return{index:0,show:!1}},computed:{show:function(){return this.$parent.index===this.index}},ready:function(){for(var t in this.$parent.$children)if(this.$parent.$children[t]===this){this.index=parseInt(t,10);break}this.$parent.indicator.push(this.index),0===this.index&&this.$el.classList.add("active")}}},function(t,e){t.exports='<div class="item">\r\n <slot></slot>\r\n </div>'},function(t,e,n){n(198),t.exports=n(200),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(201)},function(t,e,n){var r=n(199);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,'@-webkit-keyframes spin {\r\n 100% {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n}\r\n@keyframes spin {\r\n 100% {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n}\r\n.spinner-gritcode {\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n z-index: 9998;\r\n position: absolute;\r\n width: 100%;\r\n text-align: center;\r\n background: rgba(255, 255, 255, 0.9);\r\n}\r\n.spinner-gritcode.spinner-fixed {\r\n position: fixed;\r\n}\r\n.spinner-gritcode .spinner-wrapper {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n -webkit-transform: translate(-50%, -50%);\r\n transform: translate(-50%, -50%);\r\n -ms-transform: translate(-50%, -50%);\r\n}\r\n.spinner-gritcode .spinner-circle {\r\n position: relative;\r\n border: 4px solid #ccc;\r\n border-right-color: #337ab7;\r\n border-radius: 50%;\r\n display: inline-block;\r\n -webkit-animation: spin 0.6s linear;\r\n animation: spin 0.6s linear;\r\n -webkit-animation-iteration-count: infinite;\r\n animation-iteration-count: infinite;\r\n width: 3em;\r\n height: 3em;\r\n z-index: 2;\r\n}\r\n.spinner-gritcode .spinner-text {\r\n position: relative;\r\n text-align: center;\r\n margin-top: 0.5em;\r\n z-index: 2;\r\n width: 100%;\r\n font-size: 95%;\r\n color: #337ab7;\r\n}\r\n.spinner-gritcode.spinner-sm .spinner-circle {\r\n width: 1.5em;\r\n height: 1.5em;\r\n}\r\n.spinner-gritcode.spinner-md .spinner-circle {\r\n width: 2em;\r\n height: 2em;\r\n}\r\n.spinner-gritcode.spinner-lg .spinner-circle {\r\n width: 2.5em;\r\n height: 2.5em;\r\n}\r\n.spinner-gritcode.spinner-xl .spinner-circle {\r\n width: 3.5em;\r\n height: 3.5em;\r\n}\r\n.lt-ie10 .spinner-gritcode .spinner-circle,\r\n.ie9 .spinner-gritcode .spinner-circle,\r\n.oldie .spinner-gritcode .spinner-circle,\r\n.no-csstransitions .spinner-gritcode .spinner-circle,\r\n.no-csstransforms3d .spinner-gritcode .spinner-circle {\r\n background: url("http://i2.wp.com/www.thegreatnovelingadventure.com/wp-content/plugins/wp-polls/images/loading.gif") center center no-repeat;\r\n -webkit-animation: none;\r\n animation: none;\r\n margin-left: 0;\r\n margin-top: 5px;\r\n border: none;\r\n width: 32px;\r\n height: 32px;\r\n}',""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{size:{type:String,default:"md"},text:{type:String,default:""},fixed:{type:Boolean,coerce:r.coerce.boolean,default:!1}},data:function(){return{active:!1}},computed:{spinnerSize:function(){return this.size?"spinner-"+this.size:"spinner-sm"}},ready:function(){this._body=document.querySelector("body"),this._bodyOverflow=this._body.style.overflowY||""},methods:{getMinWait:function(t){return t=t||0,(new Date).getTime()-this._started.getTime()<500?500-parseInt((new Date).getTime()-this._started.getTime(),10)+t:0+t},show:function(t){t&&t.text&&(this.text=t.text),t&&t.size&&(this.size=t.size),t&&t.fixed&&(this.fixed=t.fixed),this._body.style.overflowY="hidden",this._started=new Date,this.active=!0,this.$root.$broadcast("shown::spinner")},hide:function(){var t=this;this._spinnerAnimation=setTimeout(function(){t.active=!1,t._body.style.overflowY=t._bodyOverflow,t.$root.$broadcast("hidden::spinner")},this.getMinWait(0))}},events:{"show::spinner":function(t){this.show(t)},"hide::spinner":function(){this.hide()},"start::ajax":function(t){this.show(t)},"end::ajax":function(){this.hide()}},beforeDestroy:function(){clearTimeout(this._spinnerAnimation),this._body.style.overflowY=this._bodyOverflow}}},function(t,e){t.exports='<div :class="[\'spinner spinner-gritcode\',spinnerSize,{\'spinner-fixed\':fixed}]" v-show="active">\r\n <div class="spinner-wrapper">\r\n <div class="spinner-circle"></div>\r\n <div class="spinner-text">{{text}}</div>\r\n </div>\r\n </div>'},function(t,e,n){t.exports=n(203),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(204)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{header:{type:String},disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1}},computed:{active:function(){return this._tabset.show===this},index:function(){return this._tabset.tabs.indexOf(this)},show:function(){return this._tabset&&this._tabset.show===this},transition:function(){return this._tabset?this._tabset.effect:null}},created:function(){this._ingroup=this.$parent&&this.$parent._tabgroup;for(var t=this;t&&!0!==t._tabset&&t.$parent;)t=t.$parent;t._tabset?(t.tabs.push(this),this._ingroup?~t.headers.indexOf(this.$parent)||t.headers.push(this.$parent):t.headers.push(this),this._tabset=t):this._tabset={},this._ingroup&&this.$parent.tabs.push(this)},beforeDestroy:function(){this._tabset.active===this.index&&(this._tabset.active=0),this._ingroup&&this.$parent.tabs.$remove(this),this._tabset.tabs.$remove(this)}}},function(t,e){t.exports='<div role="tabpanel" class="tab-pane active" v-show="show"\r\n :class="{hide:!show}"\r\n :transition="transition"\r\n >\r\n <slot></slot>\r\n </div>'},function(t,e,n){n(206),t.exports=n(208),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(209)},function(t,e,n){var r=n(207);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".nav-tabs[_v-7ecb8635] {\r\n margin-bottom: 15px;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92);e.default={props:{disabled:{type:Boolean,coerce:r.coerce.boolean,default:!1},header:{type:String}},data:function(){return{tabs:[],show:!1}},computed:{active:function(){return~this.tabs.indexOf(this._tabset.show)}},created:function(){this._tabgroup=!0;var t=this.$parent&&!0===this.$parent._tabset?this.$parent:{};for(this.$parent&&this.$parent._tabgroup;t&&!t._tabset&&t.$parent;)t=t.$parent;t._tabset?this._tabset=t:(this._tabset={},this.show=!0)},methods:{blur:function(){this.show=!1},toggle:function(){this.show=!this.show}}}},function(t,e){t.exports='<slot _v-7ecb8635=""></slot>'},function(t,e,n){n(211),t.exports=n(213),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(214)},function(t,e,n){var r=n(212);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".nav-tabs[_v-e8aecb90] {\r\n margin-bottom: 15px;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=n(127),o=function(t){return t&&t.__esModule?t:{default:t}}(i);e.default={components:{dropdown:o.default},props:{navStyle:{type:String,default:"tabs"},effect:{type:String,default:"fadein"},active:{twoWay:!0,type:Number,coerce:r.coerce.number,default:0}},data:function(){return{show:null,headers:[],tabs:[]}},created:function(){this._tabset=!0},watch:{active:function(t){this.show=this.tabs[t]}},ready:function(){this.show=this.tabs[this.active]},methods:{select:function(t){t.disabled||(this.active=t.index)}}}},function(t,e){t.exports='<div _v-e8aecb90="">\n \x3c!-- Nav tabs --\x3e\n <ul class="nav nav-{{navStyle}}" role="tablist" _v-e8aecb90="">\n <template v-for="t in headers" _v-e8aecb90="">\n <li v-if="!t._tabgroup" :class="{active:t.active, disabled:t.disabled}" @click.prevent="select(t)" _v-e8aecb90="">\n <a href="#" _v-e8aecb90=""><slot name="header" _v-e8aecb90="">{{{t.header}}}</slot></a>\n </li>\n <dropdown v-else="" :text="t.header" :class="{active:t.active}" :disabled="t.disabled" _v-e8aecb90="">\n <li v-for="tab in t.tabs" :class="{disabled:tab.disabled}" _v-e8aecb90=""><a href="#" @click.prevent="select(tab)" _v-e8aecb90="">{{tab.header}}</a></li>\n </dropdown>\n </template>\n </ul>\n <div class="tab-content" v-el:tab-content="" _v-e8aecb90="">\n <slot _v-e8aecb90=""></slot>\n </div>\n </div>'},function(t,e,n){n(216),t.exports=n(218),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(219)},function(t,e,n){var r=n(217);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".tooltip.top,\r\n.tooltip.left,\r\n.tooltip.right,\r\n.tooltip.bottom {\r\n opacity: .9\r\n}\r\n.fadein-enter {\r\n -webkit-animation:fadein-in 0.3s ease-in;\r\n animation:fadein-in 0.3s ease-in;\r\n}\r\n.fadein-leave {\r\n -webkit-animation:fadein-out 0.3s ease-out;\r\n animation:fadein-out 0.3s ease-out;\r\n}\r\n@-webkit-keyframes fadein-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: .9;\r\n }\r\n}\r\n@keyframes fadein-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: .9;\r\n }\r\n}\r\n@-webkit-keyframes fadein-out {\r\n 0% {\r\n opacity: .9;\r\n }\r\n 100% {\r\n opacity: 0;\r\n }\r\n}\r\n@keyframes fadein-out {\r\n 0% {\r\n opacity: .9;\r\n }\r\n 100% {\r\n opacity: 0;\r\n }\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(164),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={mixins:[i.default],props:{trigger:{type:String,default:"hover"},effect:{type:String,default:"scale"}}}},function(t,e){t.exports='<span v-el:trigger>\r\n <slot></slot>\r\n <div v-el:popover v-if="show" style="display:block;"\r\n :class="[\'tooltip\',placement]"\r\n :transition="effect"\r\n >\r\n <div class="tooltip-arrow"></div>\r\n <div class="tooltip-inner">\r\n <slot name="content">{{{content}}}</slot>\r\n </div>\r\n </div>\r\n </span>'},function(t,e,n){n(221),t.exports=n(223),t.exports.__esModule&&(t.exports=t.exports.default),("function"==typeof t.exports?t.exports.options:t.exports).template=n(224)},function(t,e,n){var r=n(222);"string"==typeof r&&(r=[[t.id,r,""]]);n(101)(r,{});r.locals&&(t.exports=r.locals)},function(t,e,n){e=t.exports=n(100)(),e.push([t.id,".dropdown-menu > li > a {\r\n cursor: pointer;\r\n}",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),i=window.Vue;e.default={created:function(){this.items=this.primitiveData},partials:{default:'<span v-html="item | highlight value"></span>'},props:{value:{twoWay:!0,type:String,default:""},data:{type:Array},limit:{type:Number,default:8},async:{type:String},template:{type:String},templateName:{type:String,default:"default"},key:{type:String,default:null},matchCase:{type:Boolean,coerce:r.coerce.boolean,default:!1},matchStart:{type:Boolean,coerce:r.coerce.boolean,default:!1},onHit:{type:Function,default:function(t){this.reset(),this.value=t}},placeholder:{type:String},delay:{type:Number,default:200,coerce:r.coerce.number}},data:function(){return{showDropdown:!1,noResults:!0,current:0,items:[]}},computed:{primitiveData:function(){var t=this;if(this.data)return this.data.filter(function(e){e=t.matchCase?e:e.toLowerCase();var n=t.matchCase?t.value:t.value.toLowerCase();return t.matchStart?0===e.indexOf(n):-1!==e.indexOf(n)}).slice(0,this.limit)}},ready:function(){this.templateName&&"default"!==this.templateName&&i.partial(this.templateName,this.template)},methods:{update:function(){if(!this.value)return this.reset(),!1;this.data&&(this.items=this.primitiveData,this.showDropdown=this.items.length>0),this.async&&this.query()},query:(0,r.delayer)(function(){var t=this;(0,r.getJSON)(this.async+this.value).then(function(e){t.items=(t.key?e[t.key]:e).slice(0,t.limit),t.showDropdown=t.items.length})},"delay",200),reset:function(){this.items=[],this.value="",this.loading=!1,this.showDropdown=!1},setActive:function(t){this.current=t},isActive:function(t){return this.current===t},hit:function(t){t.preventDefault(),this.onHit(this.items[this.current],this)},up:function(){this.current>0&&this.current--},down:function(){this.current<this.items.length-1&&this.current++}},filters:{highlight:function(t,e){return t.replace(new RegExp("("+e+")","gi"),"<strong>$1</strong>")}}}},function(t,e){t.exports='<div style="position: relative"\r\n v-bind:class="{\'open\':showDropdown}"\r\n >\r\n <input type="text" class="form-control"\r\n :placeholder="placeholder"\r\n autocomplete="off"\r\n v-model="value"\r\n @input="update"\r\n @keydown.up="up"\r\n @keydown.down="down"\r\n @keydown.enter= "hit"\r\n @keydown.esc="reset"\r\n @blur="showDropdown = false"\r\n />\r\n <ul class="dropdown-menu" v-el:dropdown>\r\n <li v-for="item in items" v-bind:class="{\'active\': isActive($index)}">\r\n <a @mousedown.prevent="hit" @mousemove="setActive($index)">\r\n <partial :name="templateName"></partial>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>'}])})},function(t,e,n){var r=n(20);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("8f4ff93a",r,!0)},function(t,e,n){var r=n(21);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("7c4ed951",r,!0)},function(t,e,n){var r=n(22);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("717c9dce",r,!0)},function(t,e,n){var r=n(23);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("1dd8eaae",r,!0)},function(t,e,n){var r=n(24);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("1789f86f",r,!0)},function(t,e,n){var r=n(25);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("73719aac",r,!0)},function(t,e,n){var r=n(26);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(2)("664d54ac",r,!0)},function(t,e){t.exports=function(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],s=o[1],l=o[2],u=o[3],c={id:t+":"+i,css:s,media:l,sourceMap:u};r[a]?r[a].parts.push(c):n.push(r[a]={id:a,parts:[c]})}return n}},function(t,e,n){"use strict";(function(e){/*! - * Vue.js v2.3.3 - * (c) 2014-2017 Evan You - * Released under the MIT License. - */ -function n(t){return void 0===t||null===t}function r(t){return void 0!==t&&null!==t}function i(t){return!0===t}function o(t){return!1===t}function a(t){return"string"==typeof t||"number"==typeof t}function s(t){return null!==t&&"object"==typeof t}function l(t){return"[object Object]"===ji.call(t)}function u(t){return"[object RegExp]"===ji.call(t)}function c(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function f(t){var e=parseFloat(t);return isNaN(e)?t:e}function p(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function d(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function h(t,e){return Ni.call(t,e)}function v(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function g(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function m(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function y(t,e){for(var n in e)t[n]=e[n];return t}function b(t){for(var e={},n=0;n<t.length;n++)t[n]&&y(e,t[n]);return e}function _(){}function x(t,e){var n=s(t),r=s(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{return JSON.stringify(t)===JSON.stringify(e)}catch(n){return t===e}}function w(t,e){for(var n=0;n<t.length;n++)if(x(t[n],e))return n;return-1}function k(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function C(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function $(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function T(t){if(!Vi.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}function S(t,e,n){if(zi.errorHandler)zi.errorHandler.call(null,t,e,n);else if(!Gi||"undefined"==typeof console)throw t}function A(t){return"function"==typeof t&&/native code/.test(t.toString())}function E(t){po.target&&ho.push(po.target),po.target=t}function O(){po.target=ho.pop()}function j(t,e){t.__proto__=e}function D(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];$(t,o,e[o])}}function N(t,e){if(s(t)){var n;return h(t,"__ob__")&&t.__ob__ instanceof bo?n=t.__ob__:yo.shouldConvert&&!so()&&(Array.isArray(t)||l(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new bo(t)),e&&n&&n.vmCount++,n}}function I(t,e,n,r){var i=new po,o=Object.getOwnPropertyDescriptor(t,e);if(!o||!1!==o.configurable){var a=o&&o.get,s=o&&o.set,l=N(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=a?a.call(t):n;return po.target&&(i.depend(),l&&l.dep.depend(),Array.isArray(e)&&R(e)),e},set:function(e){var r=a?a.call(t):n;e===r||e!==e&&r!==r||(s?s.call(t,e):n=e,l=N(e),i.notify())}})}}function P(t,e,n){if(Array.isArray(t)&&"number"==typeof e)return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(h(t,e))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?(I(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function L(t,e){if(Array.isArray(t)&&"number"==typeof e)return void t.splice(e,1);var n=t.__ob__;t._isVue||n&&n.vmCount||h(t,e)&&(delete t[e],n&&n.dep.notify())}function R(t){for(var e=void 0,n=0,r=t.length;n<r;n++)e=t[n],e&&e.__ob__&&e.__ob__.dep.depend(),Array.isArray(e)&&R(e)}function M(t,e){if(!e)return t;for(var n,r,i,o=Object.keys(e),a=0;a<o.length;a++)n=o[a],r=t[n],i=e[n],h(t,n)?l(r)&&l(i)&&M(r,i):P(t,n,i);return t}function F(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function q(t,e){var n=Object.create(t||null);return e?y(n,e):n}function B(t){var e=t.props;if(e){var n,r,i,o={};if(Array.isArray(e))for(n=e.length;n--;)"string"==typeof(r=e[n])&&(i=Pi(r),o[i]={type:null});else if(l(e))for(var a in e)r=e[a],i=Pi(a),o[i]=l(r)?r:{type:r};t.props=o}}function H(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function U(t,e,n){function r(r){var i=_o[r]||xo;l[r]=i(t[r],e[r],n,r)}"function"==typeof e&&(e=e.options),B(e),H(e);var i=e.extends;if(i&&(t=U(t,i,n)),e.mixins)for(var o=0,a=e.mixins.length;o<a;o++)t=U(t,e.mixins[o],n);var s,l={};for(s in t)r(s);for(s in e)h(t,s)||r(s);return l}function z(t,e,n,r){if("string"==typeof n){var i=t[e];if(h(i,n))return i[n];var o=Pi(n);if(h(i,o))return i[o];var a=Li(o);if(h(i,a))return i[a];return i[n]||i[o]||i[a]}}function W(t,e,n,r){var i=e[t],o=!h(n,t),a=n[t];if(Y(Boolean,i.type)&&(o&&!h(i,"default")?a=!1:Y(String,i.type)||""!==a&&a!==Mi(t)||(a=!0)),void 0===a){a=V(r,i,t);var s=yo.shouldConvert;yo.shouldConvert=!0,N(a),yo.shouldConvert=s}return a}function V(t,e,n){if(h(e,"default")){var r=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n]?t._props[n]:"function"==typeof r&&"Function"!==X(e.type)?r.call(t):r}}function X(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function Y(t,e){if(!Array.isArray(e))return X(e)===X(t);for(var n=0,r=e.length;n<r;n++)if(X(e[n])===X(t))return!0;return!1}function G(t){return new wo(void 0,void 0,void 0,String(t))}function Z(t){var e=new wo(t.tag,t.data,t.children,t.text,t.elm,t.context,t.componentOptions);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.isCloned=!0,e}function J(t){for(var e=t.length,n=new Array(e),r=0;r<e;r++)n[r]=Z(t[r]);return n}function K(t){function e(){var t=arguments,n=e.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=0;r<n.length;r++)n[r].apply(null,t)}return e.fns=t,e}function Q(t,e,r,i,o){var a,s,l,u;for(a in t)s=t[a],l=e[a],u=To(a),n(s)||(n(l)?(n(s.fns)&&(s=t[a]=K(s)),r(u.name,s,u.once,u.capture,u.passive)):s!==l&&(l.fns=s,t[a]=l));for(a in e)n(t[a])&&(u=To(a),i(u.name,e[a],u.capture))}function tt(t,e,o){function a(){o.apply(this,arguments),d(s.fns,a)}var s,l=t[e];n(l)?s=K([a]):r(l.fns)&&i(l.merged)?(s=l,s.fns.push(a)):s=K([l,a]),s.merged=!0,t[e]=s}function et(t,e,i){var o=e.options.props;if(!n(o)){var a={},s=t.attrs,l=t.props;if(r(s)||r(l))for(var u in o){var c=Mi(u);nt(a,l,u,c,!0)||nt(a,s,u,c,!1)}return a}}function nt(t,e,n,i,o){if(r(e)){if(h(e,n))return t[n]=e[n],o||delete e[n],!0;if(h(e,i))return t[n]=e[i],o||delete e[i],!0}return!1}function rt(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}function it(t){return a(t)?[G(t)]:Array.isArray(t)?at(t):void 0}function ot(t){return r(t)&&r(t.text)&&o(t.isComment)}function at(t,e){var o,s,l,u=[];for(o=0;o<t.length;o++)s=t[o],n(s)||"boolean"==typeof s||(l=u[u.length-1],Array.isArray(s)?u.push.apply(u,at(s,(e||"")+"_"+o)):a(s)?ot(l)?l.text+=String(s):""!==s&&u.push(G(s)):ot(s)&&ot(l)?u[u.length-1]=G(l.text+s.text):(i(t._isVList)&&r(s.tag)&&n(s.key)&&r(e)&&(s.key="__vlist"+e+"_"+o+"__"),u.push(s)));return u}function st(t,e){return s(t)?e.extend(t):t}function lt(t,e,o){if(i(t.error)&&r(t.errorComp))return t.errorComp;if(r(t.resolved))return t.resolved;if(i(t.loading)&&r(t.loadingComp))return t.loadingComp;if(!r(t.contexts)){var a=t.contexts=[o],l=!0,u=function(){for(var t=0,e=a.length;t<e;t++)a[t].$forceUpdate()},c=k(function(n){t.resolved=st(n,e),l||u()}),f=k(function(e){r(t.errorComp)&&(t.error=!0,u())}),p=t(c,f);return s(p)&&("function"==typeof p.then?n(t.resolved)&&p.then(c,f):r(p.component)&&"function"==typeof p.component.then&&(p.component.then(c,f),r(p.error)&&(t.errorComp=st(p.error,e)),r(p.loading)&&(t.loadingComp=st(p.loading,e),0===p.delay?t.loading=!0:setTimeout(function(){n(t.resolved)&&n(t.error)&&(t.loading=!0,u())},p.delay||200)),r(p.timeout)&&setTimeout(function(){n(t.resolved)&&f(null)},p.timeout))),l=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(o)}function ut(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(r(n)&&r(n.componentOptions))return n}}function ct(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&dt(t,e)}function ft(t,e,n){n?Co.$once(t,e):Co.$on(t,e)}function pt(t,e){Co.$off(t,e)}function dt(t,e,n){Co=t,Q(e,n||{},ft,pt,t)}function ht(t,e){var n={};if(!t)return n;for(var r=[],i=0,o=t.length;i<o;i++){var a=t[i];if(a.context!==e&&a.functionalContext!==e||!a.data||null==a.data.slot)r.push(a);else{var s=a.data.slot,l=n[s]||(n[s]=[]);"template"===a.tag?l.push.apply(l,a.children):l.push(a)}}return r.every(vt)||(n.default=r),n}function vt(t){return t.isComment||" "===t.text}function gt(t,e){e=e||{};for(var n=0;n<t.length;n++)Array.isArray(t[n])?gt(t[n],e):e[t[n].key]=t[n].fn;return e}function mt(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function yt(t,e,n){t.$el=e,t.$options.render||(t.$options.render=$o),kt(t,"beforeMount");var r;return r=function(){t._update(t._render(),n)},t._watcher=new Po(t,r,_),n=!1,null==t.$vnode&&(t._isMounted=!0,kt(t,"mounted")),t}function bt(t,e,n,r,i){var o=!!(i||t.$options._renderChildren||r.data.scopedSlots||t.$scopedSlots!==Wi);if(t.$options._parentVnode=r,t.$vnode=r,t._vnode&&(t._vnode.parent=r),t.$options._renderChildren=i,e&&t.$options.props){yo.shouldConvert=!1;for(var a=t._props,s=t.$options._propKeys||[],l=0;l<s.length;l++){var u=s[l];a[u]=W(u,t.$options.props,e,t)}yo.shouldConvert=!0,t.$options.propsData=e}if(n){var c=t.$options._parentListeners;t.$options._parentListeners=n,dt(t,n,c)}o&&(t.$slots=ht(i,r.context),t.$forceUpdate())}function _t(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function xt(t,e){if(e){if(t._directInactive=!1,_t(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)xt(t.$children[n]);kt(t,"activated")}}function wt(t,e){if(!(e&&(t._directInactive=!0,_t(t))||t._inactive)){t._inactive=!0;for(var n=0;n<t.$children.length;n++)wt(t.$children[n]);kt(t,"deactivated")}}function kt(t,e){var n=t.$options[e];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(t)}catch(n){S(n,t,e+" hook")}t._hasHookEvent&&t.$emit("hook:"+e)}function Ct(){No=Ao.length=Eo.length=0,Oo={},jo=Do=!1}function $t(){Do=!0;var t,e;for(Ao.sort(function(t,e){return t.id-e.id}),No=0;No<Ao.length;No++)t=Ao[No],e=t.id,Oo[e]=null,t.run();var n=Eo.slice(),r=Ao.slice();Ct(),At(n),Tt(r),lo&&zi.devtools&&lo.emit("flush")}function Tt(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&kt(r,"updated")}}function St(t){t._inactive=!1,Eo.push(t)}function At(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,xt(t[e],!0)}function Et(t){var e=t.id;if(null==Oo[e]){if(Oo[e]=!0,Do){for(var n=Ao.length-1;n>No&&Ao[n].id>t.id;)n--;Ao.splice(n+1,0,t)}else Ao.push(t);jo||(jo=!0,co($t))}}function Ot(t){Lo.clear(),jt(t,Lo)}function jt(t,e){var n,r,i=Array.isArray(t);if((i||s(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(i)for(n=t.length;n--;)jt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)jt(t[r[n]],e)}}function Dt(t,e,n){Ro.get=function(){return this[e][n]},Ro.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Ro)}function Nt(t){t._watchers=[];var e=t.$options;e.props&&It(t,e.props),e.methods&&qt(t,e.methods),e.data?Pt(t):N(t._data={},!0),e.computed&&Rt(t,e.computed),e.watch&&Bt(t,e.watch)}function It(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[],o=!t.$parent;yo.shouldConvert=o;for(var a in e)!function(o){i.push(o);var a=W(o,e,n,t);I(r,o,a),o in t||Dt(t,"_props",o)}(a);yo.shouldConvert=!0}function Pt(t){var e=t.$options.data;e=t._data="function"==typeof e?Lt(e,t):e||{},l(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,i=n.length;i--;)r&&h(r,n[i])||C(n[i])||Dt(t,"_data",n[i]);N(e,!0)}function Lt(t,e){try{return t.call(e)}catch(t){return S(t,e,"data()"),{}}}function Rt(t,e){var n=t._computedWatchers=Object.create(null);for(var r in e){var i=e[r],o="function"==typeof i?i:i.get;n[r]=new Po(t,o,_,Mo),r in t||Mt(t,r,i)}}function Mt(t,e,n){"function"==typeof n?(Ro.get=Ft(e),Ro.set=_):(Ro.get=n.get?!1!==n.cache?Ft(e):n.get:_,Ro.set=n.set?n.set:_),Object.defineProperty(t,e,Ro)}function Ft(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),po.target&&e.depend(),e.value}}function qt(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?_:g(e[n],t)}function Bt(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)Ht(t,n,r[i]);else Ht(t,n,r)}}function Ht(t,e,n){var r;l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function Ut(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}function zt(t){var e=Wt(t.$options.inject,t);e&&Object.keys(e).forEach(function(n){I(t,n,e[n])})}function Wt(t,e){if(t){for(var n=Array.isArray(t),r=Object.create(null),i=n?t:uo?Reflect.ownKeys(t):Object.keys(t),o=0;o<i.length;o++)for(var a=i[o],s=n?a:t[a],l=e;l;){if(l._provided&&s in l._provided){r[a]=l._provided[s];break}l=l.$parent}return r}}function Vt(t,e,n,i,o){var a={},s=t.options.props;if(r(s))for(var l in s)a[l]=W(l,s,e||{});else r(n.attrs)&&Xt(a,n.attrs),r(n.props)&&Xt(a,n.props);var u=Object.create(i),c=function(t,e,n,r){return Qt(u,t,e,n,r,!0)},f=t.options.render.call(null,c,{data:n,props:a,children:o,parent:i,listeners:n.on||{},injections:Wt(t.options.inject,i),slots:function(){return ht(o,i)}});return f instanceof wo&&(f.functionalContext=i,f.functionalOptions=t.options,n.slot&&((f.data||(f.data={})).slot=n.slot)),f}function Xt(t,e){for(var n in e)t[Pi(n)]=e[n]}function Yt(t,e,o,a,l){if(!n(t)){var u=o.$options._base;if(s(t)&&(t=u.extend(t)),"function"==typeof t&&(!n(t.cid)||void 0!==(t=lt(t,u,o)))){de(t),e=e||{},r(e.model)&&Kt(t.options,e);var c=et(e,t,l);if(i(t.options.functional))return Vt(t,c,e,o,a);var f=e.on;e.on=e.nativeOn,i(t.options.abstract)&&(e={}),Zt(e);var p=t.options.name||l;return new wo("vue-component-"+t.cid+(p?"-"+p:""),e,void 0,void 0,void 0,o,{Ctor:t,propsData:c,listeners:f,tag:l,children:a})}}}function Gt(t,e,n,i){var o=t.componentOptions,a={_isComponent:!0,parent:e,propsData:o.propsData,_componentTag:o.tag,_parentVnode:t,_parentListeners:o.listeners,_renderChildren:o.children,_parentElm:n||null,_refElm:i||null},s=t.data.inlineTemplate;return r(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new o.Ctor(a)}function Zt(t){t.hook||(t.hook={});for(var e=0;e<qo.length;e++){var n=qo[e],r=t.hook[n],i=Fo[n];t.hook[n]=r?Jt(i,r):i}}function Jt(t,e){return function(n,r,i,o){t(n,r,i,o),e(n,r,i,o)}}function Kt(t,e){var n=t.model&&t.model.prop||"value",i=t.model&&t.model.event||"input";(e.props||(e.props={}))[n]=e.model.value;var o=e.on||(e.on={});r(o[i])?o[i]=[e.model.callback].concat(o[i]):o[i]=e.model.callback}function Qt(t,e,n,r,o,s){return(Array.isArray(n)||a(n))&&(o=r,r=n,n=void 0),i(s)&&(o=Ho),te(t,e,n,r,o)}function te(t,e,n,i,o){if(r(n)&&r(n.__ob__))return $o();if(!e)return $o();Array.isArray(i)&&"function"==typeof i[0]&&(n=n||{},n.scopedSlots={default:i[0]},i.length=0),o===Ho?i=it(i):o===Bo&&(i=rt(i));var a,s;if("string"==typeof e){var l;s=zi.getTagNamespace(e),a=zi.isReservedTag(e)?new wo(zi.parsePlatformTagName(e),n,i,void 0,void 0,t):r(l=z(t.$options,"components",e))?Yt(l,n,t,i,e):new wo(e,n,i,void 0,void 0,t)}else a=Yt(e,n,t,i);return r(a)?(s&&ee(a,s),a):$o()}function ee(t,e){if(t.ns=e,"foreignObject"!==t.tag&&r(t.children))for(var i=0,o=t.children.length;i<o;i++){var a=t.children[i];r(a.tag)&&n(a.ns)&&ee(a,e)}}function ne(t,e){var n,i,o,a,l;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),i=0,o=t.length;i<o;i++)n[i]=e(t[i],i);else if("number"==typeof t)for(n=new Array(t),i=0;i<t;i++)n[i]=e(i+1,i);else if(s(t))for(a=Object.keys(t),n=new Array(a.length),i=0,o=a.length;i<o;i++)l=a[i],n[i]=e(t[l],l,i);return r(n)&&(n._isVList=!0),n}function re(t,e,n,r){var i=this.$scopedSlots[t];if(i)return n=n||{},r&&y(n,r),i(n)||e;var o=this.$slots[t];return o||e}function ie(t){return z(this.$options,"filters",t,!0)||qi}function oe(t,e,n){var r=zi.keyCodes[e]||n;return Array.isArray(r)?-1===r.indexOf(t):r!==t}function ae(t,e,n,r){if(n)if(s(n)){Array.isArray(n)&&(n=b(n));var i;for(var o in n){if("class"===o||"style"===o)i=t;else{var a=t.attrs&&t.attrs.type;i=r||zi.mustUseProp(e,a,o)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}o in i||(i[o]=n[o])}}else;return t}function se(t,e){var n=this._staticTrees[t];return n&&!e?Array.isArray(n)?J(n):Z(n):(n=this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy),ue(n,"__static__"+t,!1),n)}function le(t,e,n){return ue(t,"__once__"+e+(n?"_"+n:""),!0),t}function ue(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&ce(t[r],e+"_"+r,n);else ce(t,e,n)}function ce(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function fe(t){t._vnode=null,t._staticTrees=null;var e=t.$vnode=t.$options._parentVnode,n=e&&e.context;t.$slots=ht(t.$options._renderChildren,n),t.$scopedSlots=Wi,t._c=function(e,n,r,i){return Qt(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return Qt(t,e,n,r,i,!0)}}function pe(t,e){var n=t.$options=Object.create(t.constructor.options);n.parent=e.parent,n.propsData=e.propsData,n._parentVnode=e._parentVnode,n._parentListeners=e._parentListeners,n._renderChildren=e._renderChildren,n._componentTag=e._componentTag,n._parentElm=e._parentElm,n._refElm=e._refElm,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}function de(t){var e=t.options;if(t.super){var n=de(t.super);if(n!==t.superOptions){t.superOptions=n;var r=he(t);r&&y(t.extendOptions,r),e=t.options=U(n,t.extendOptions),e.name&&(e.components[e.name]=t)}}return e}function he(t){var e,n=t.options,r=t.extendOptions,i=t.sealedOptions;for(var o in n)n[o]!==i[o]&&(e||(e={}),e[o]=ve(n[o],r[o],i[o]));return e}function ve(t,e,n){if(Array.isArray(t)){var r=[];n=Array.isArray(n)?n:[n],e=Array.isArray(e)?e:[e];for(var i=0;i<t.length;i++)(e.indexOf(t[i])>=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function ge(t){this._init(t)}function me(t){t.use=function(t){if(t.installed)return this;var e=m(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):"function"==typeof t&&t.apply(null,e),t.installed=!0,this}}function ye(t){t.mixin=function(t){return this.options=U(this.options,t),this}}function be(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=U(n.options,t),a.super=n,a.options.props&&_e(a),a.options.computed&&xe(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,Hi.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=y({},a.options),i[r]=a,a}}function _e(t){var e=t.options.props;for(var n in e)Dt(t.prototype,"_props",n)}function xe(t){var e=t.options.computed;for(var n in e)Mt(t.prototype,n,e[n])}function we(t){Hi.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function ke(t){return t&&(t.Ctor.options.name||t.tag)}function Ce(t,e){return"string"==typeof t?t.split(",").indexOf(e)>-1:!!u(t)&&t.test(e)}function $e(t,e,n){for(var r in t){var i=t[r];if(i){var o=ke(i.componentOptions);o&&!n(o)&&(i!==e&&Te(i),t[r]=null)}}}function Te(t){t&&t.componentInstance.$destroy()}function Se(t){for(var e=t.data,n=t,i=t;r(i.componentInstance);)i=i.componentInstance._vnode,i.data&&(e=Ae(i.data,e));for(;r(n=n.parent);)n.data&&(e=Ae(e,n.data));return Ee(e)}function Ae(t,e){return{staticClass:Oe(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Ee(t){var e=t.class,n=t.staticClass;return r(n)||r(e)?Oe(n,je(e)):""}function Oe(t,e){return t?e?t+" "+e:t:e||""}function je(t){if(n(t))return"";if("string"==typeof t)return t;var e="";if(Array.isArray(t)){for(var i,o=0,a=t.length;o<a;o++)r(t[o])&&r(i=je(t[o]))&&""!==i&&(e+=i+" ");return e.slice(0,-1)}if(s(t)){for(var l in t)t[l]&&(e+=l+" ");return e.slice(0,-1)}return e}function De(t){return da(t)?"svg":"math"===t?"math":void 0}function Ne(t){if(!Gi)return!0;if(va(t))return!1;if(t=t.toLowerCase(),null!=ga[t])return ga[t];var e=document.createElement(t);return t.indexOf("-")>-1?ga[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ga[t]=/HTMLUnknownElement/.test(e.toString())}function Ie(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Pe(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Le(t,e){return document.createElementNS(fa[t],e)}function Re(t){return document.createTextNode(t)}function Me(t){return document.createComment(t)}function Fe(t,e,n){t.insertBefore(e,n)}function qe(t,e){t.removeChild(e)}function Be(t,e){t.appendChild(e)}function He(t){return t.parentNode}function Ue(t){return t.nextSibling}function ze(t){return t.tagName}function We(t,e){t.textContent=e}function Ve(t,e,n){t.setAttribute(e,n)}function Xe(t,e){var n=t.data.ref;if(n){var r=t.context,i=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?d(o[n],i):o[n]===i&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])&&o[n].indexOf(i)<0?o[n].push(i):o[n]=[i]:o[n]=i}}function Ye(t,e){return t.key===e.key&&t.tag===e.tag&&t.isComment===e.isComment&&r(t.data)===r(e.data)&&Ge(t,e)}function Ge(t,e){if("input"!==t.tag)return!0;var n;return(r(n=t.data)&&r(n=n.attrs)&&n.type)===(r(n=e.data)&&r(n=n.attrs)&&n.type)}function Ze(t,e,n){var i,o,a={};for(i=e;i<=n;++i)o=t[i].key,r(o)&&(a[o]=i);return a}function Je(t,e){(t.data.directives||e.data.directives)&&Ke(t,e)}function Ke(t,e){var n,r,i,o=t===ba,a=e===ba,s=Qe(t.data.directives,t.context),l=Qe(e.data.directives,e.context),u=[],c=[];for(n in l)r=s[n],i=l[n],r?(i.oldValue=r.value,en(i,"update",e,t),i.def&&i.def.componentUpdated&&c.push(i)):(en(i,"bind",e,t),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n<u.length;n++)en(u[n],"inserted",e,t)};o?tt(e.data.hook||(e.data.hook={}),"insert",f):f()}if(c.length&&tt(e.data.hook||(e.data.hook={}),"postpatch",function(){for(var n=0;n<c.length;n++)en(c[n],"componentUpdated",e,t)}),!o)for(n in s)l[n]||en(s[n],"unbind",t,t,a)}function Qe(t,e){var n=Object.create(null);if(!t)return n;var r,i;for(r=0;r<t.length;r++)i=t[r],i.modifiers||(i.modifiers=wa),n[tn(i)]=i,i.def=z(e.$options,"directives",i.name,!0);return n}function tn(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function en(t,e,n,r,i){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,r,i)}catch(r){S(r,n.context,"directive "+t.name+" "+e+" hook")}}function nn(t,e){if(!n(t.data.attrs)||!n(e.data.attrs)){var i,o,a=e.elm,s=t.data.attrs||{},l=e.data.attrs||{};r(l.__ob__)&&(l=e.data.attrs=y({},l));for(i in l)o=l[i],s[i]!==o&&rn(a,i,o);Ki&&l.value!==s.value&&rn(a,"value",l.value);for(i in s)n(l[i])&&(la(i)?a.removeAttributeNS(sa,ua(i)):oa(i)||a.removeAttribute(i))}}function rn(t,e,n){aa(e)?ca(n)?t.removeAttribute(e):t.setAttribute(e,e):oa(e)?t.setAttribute(e,ca(n)||"false"===n?"false":"true"):la(e)?ca(n)?t.removeAttributeNS(sa,ua(e)):t.setAttributeNS(sa,e,n):ca(n)?t.removeAttribute(e):t.setAttribute(e,n)}function on(t,e){var i=e.elm,o=e.data,a=t.data;if(!(n(o.staticClass)&&n(o.class)&&(n(a)||n(a.staticClass)&&n(a.class)))){var s=Se(e),l=i._transitionClasses;r(l)&&(s=Oe(s,je(l))),s!==i._prevClass&&(i.setAttribute("class",s),i._prevClass=s)}}function an(t){function e(){(a||(a=[])).push(t.slice(h,i).trim()),h=i+1}var n,r,i,o,a,s=!1,l=!1,u=!1,c=!1,f=0,p=0,d=0,h=0;for(i=0;i<t.length;i++)if(r=n,n=t.charCodeAt(i),s)39===n&&92!==r&&(s=!1);else if(l)34===n&&92!==r&&(l=!1);else if(u)96===n&&92!==r&&(u=!1);else if(c)47===n&&92!==r&&(c=!1);else if(124!==n||124===t.charCodeAt(i+1)||124===t.charCodeAt(i-1)||f||p||d){switch(n){case 34:l=!0;break;case 39:s=!0;break;case 96:u=!0;break;case 40:d++;break;case 41:d--;break;case 91:p++;break;case 93:p--;break;case 123:f++;break;case 125:f--}if(47===n){for(var v=i-1,g=void 0;v>=0&&" "===(g=t.charAt(v));v--);g&&Ta.test(g)||(c=!0)}}else void 0===o?(h=i+1,o=t.slice(0,i).trim()):e();if(void 0===o?o=t.slice(0,i).trim():0!==h&&e(),a)for(i=0;i<a.length;i++)o=sn(o,a[i]);return o}function sn(t,e){var n=e.indexOf("(");return n<0?'_f("'+e+'")('+t+")":'_f("'+e.slice(0,n)+'")('+t+","+e.slice(n+1)}function ln(t){}function un(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function cn(t,e,n){(t.props||(t.props=[])).push({name:e,value:n})}function fn(t,e,n){(t.attrs||(t.attrs=[])).push({name:e,value:n})}function pn(t,e,n,r,i,o){(t.directives||(t.directives=[])).push({name:e,rawName:n,value:r,arg:i,modifiers:o})}function dn(t,e,n,r,i,o){r&&r.capture&&(delete r.capture,e="!"+e),r&&r.once&&(delete r.once,e="~"+e),r&&r.passive&&(delete r.passive,e="&"+e);var a;r&&r.native?(delete r.native,a=t.nativeEvents||(t.nativeEvents={})):a=t.events||(t.events={});var s={value:n,modifiers:r},l=a[e];Array.isArray(l)?i?l.unshift(s):l.push(s):a[e]=l?i?[s,l]:[l,s]:s}function hn(t,e,n){var r=vn(t,":"+e)||vn(t,"v-bind:"+e);if(null!=r)return an(r);if(!1!==n){var i=vn(t,e);if(null!=i)return JSON.stringify(i)}}function vn(t,e){var n;if(null!=(n=t.attrsMap[e]))for(var r=t.attrsList,i=0,o=r.length;i<o;i++)if(r[i].name===e){r.splice(i,1);break}return n}function gn(t,e,n){var r=n||{},i=r.number,o=r.trim,a="$$v";o&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(a="_n("+a+")");var s=mn(e,a);t.model={value:"("+e+")",expression:'"'+e+'"',callback:"function ($$v) {"+s+"}"}}function mn(t,e){var n=yn(t);return null===n.idx?t+"="+e:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+t+"="+e+"}else{$$exp.splice($$idx, 1, "+e+")}"}function yn(t){if(Yo=t,Xo=Yo.length,Zo=Jo=Ko=0,t.indexOf("[")<0||t.lastIndexOf("]")<Xo-1)return{exp:t,idx:null};for(;!_n();)Go=bn(),xn(Go)?kn(Go):91===Go&&wn(Go);return{exp:t.substring(0,Jo),idx:t.substring(Jo+1,Ko)}}function bn(){return Yo.charCodeAt(++Zo)}function _n(){return Zo>=Xo}function xn(t){return 34===t||39===t}function wn(t){var e=1;for(Jo=Zo;!_n();)if(t=bn(),xn(t))kn(t);else if(91===t&&e++,93===t&&e--,0===e){Ko=Zo;break}}function kn(t){for(var e=t;!_n()&&(t=bn())!==e;);}function Cn(t,e,n){Qo=n;var r=e.value,i=e.modifiers,o=t.tag,a=t.attrsMap.type;if("select"===o)Sn(t,r,i);else if("input"===o&&"checkbox"===a)$n(t,r,i);else if("input"===o&&"radio"===a)Tn(t,r,i);else if("input"===o||"textarea"===o)An(t,r,i);else if(!zi.isReservedTag(o))return gn(t,r,i),!1;return!0}function $n(t,e,n){var r=n&&n.number,i=hn(t,"value")||"null",o=hn(t,"true-value")||"true",a=hn(t,"false-value")||"false";cn(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),dn(t,Aa,"var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+e+"=$$a.concat($$v))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+mn(e,"$$c")+"}",null,!0)}function Tn(t,e,n){var r=n&&n.number,i=hn(t,"value")||"null";i=r?"_n("+i+")":i,cn(t,"checked","_q("+e+","+i+")"),dn(t,Aa,mn(e,i),null,!0)}function Sn(t,e,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",o="var $$selectedVal = "+i+";";o=o+" "+mn(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),dn(t,"change",o,null,!0)}function An(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,l=!o&&"range"!==r,u=o?"change":"range"===r?Sa:"input",c="$event.target.value";s&&(c="$event.target.value.trim()"),a&&(c="_n("+c+")");var f=mn(e,c);l&&(f="if($event.target.composing)return;"+f),cn(t,"value","("+e+")"),dn(t,u,f,null,!0),(s||a||"number"===r)&&dn(t,"blur","$forceUpdate()")}function En(t){var e;r(t[Sa])&&(e=Ji?"change":"input",t[e]=[].concat(t[Sa],t[e]||[]),delete t[Sa]),r(t[Aa])&&(e=no?"click":"change",t[e]=[].concat(t[Aa],t[e]||[]),delete t[Aa])}function On(t,e,n,r,i){if(n){var o=e,a=ta;e=function(n){null!==(1===arguments.length?o(n):o.apply(null,arguments))&&jn(t,e,r,a)}}ta.addEventListener(t,e,ro?{capture:r,passive:i}:r)}function jn(t,e,n,r){(r||ta).removeEventListener(t,e,n)}function Dn(t,e){if(!n(t.data.on)||!n(e.data.on)){var r=e.data.on||{},i=t.data.on||{};ta=e.elm,En(r),Q(r,i,On,jn,e.context)}}function Nn(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var i,o,a=e.elm,s=t.data.domProps||{},l=e.data.domProps||{};r(l.__ob__)&&(l=e.data.domProps=y({},l));for(i in s)n(l[i])&&(a[i]="");for(i in l)if(o=l[i],"textContent"!==i&&"innerHTML"!==i||(e.children&&(e.children.length=0),o!==s[i]))if("value"===i){a._value=o;var u=n(o)?"":String(o);In(a,e,u)&&(a.value=u)}else a[i]=o}}function In(t,e,n){return!t.composing&&("option"===e.tag||Pn(t,n)||Ln(t,n))}function Pn(t,e){return document.activeElement!==t&&t.value!==e}function Ln(t,e){var n=t.value,i=t._vModifiers;return r(i)&&i.number||"number"===t.type?f(n)!==f(e):r(i)&&i.trim?n.trim()!==e.trim():n!==e}function Rn(t){var e=Mn(t.style);return t.staticStyle?y(t.staticStyle,e):e}function Mn(t){return Array.isArray(t)?b(t):"string"==typeof t?ja(t):t}function Fn(t,e){var n,r={};if(e)for(var i=t;i.componentInstance;)i=i.componentInstance._vnode,i.data&&(n=Rn(i.data))&&y(r,n);(n=Rn(t.data))&&y(r,n);for(var o=t;o=o.parent;)o.data&&(n=Rn(o.data))&&y(r,n);return r}function qn(t,e){var i=e.data,o=t.data;if(!(n(i.staticStyle)&&n(i.style)&&n(o.staticStyle)&&n(o.style))){var a,s,l=e.elm,u=o.staticStyle,c=o.normalizedStyle||o.style||{},f=u||c,p=Mn(e.data.style)||{};e.data.normalizedStyle=r(p.__ob__)?y({},p):p;var d=Fn(e,!0);for(s in f)n(d[s])&&Ia(l,s,"");for(s in d)(a=d[s])!==f[s]&&Ia(l,s,null==a?"":a)}}function Bn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Hn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function Un(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&y(e,Ma(t.name||"v")),y(e,t),e}return"string"==typeof t?Ma(t):void 0}}function zn(t){Va(function(){Va(t)})}function Wn(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),Bn(t,e)}function Vn(t,e){t._transitionClasses&&d(t._transitionClasses,e),Hn(t,e)}function Xn(t,e,n){var r=Yn(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===qa?Ua:Wa,l=0,u=function(){t.removeEventListener(s,c),n()},c=function(e){e.target===t&&++l>=a&&u()};setTimeout(function(){l<a&&u()},o+1),t.addEventListener(s,c)}function Yn(t,e){var n,r=window.getComputedStyle(t),i=r[Ha+"Delay"].split(", "),o=r[Ha+"Duration"].split(", "),a=Gn(i,o),s=r[za+"Delay"].split(", "),l=r[za+"Duration"].split(", "),u=Gn(s,l),c=0,f=0;return e===qa?a>0&&(n=qa,c=a,f=o.length):e===Ba?u>0&&(n=Ba,c=u,f=l.length):(c=Math.max(a,u),n=c>0?a>u?qa:Ba:null,f=n?n===qa?o.length:l.length:0),{type:n,timeout:c,propCount:f,hasTransform:n===qa&&Xa.test(r[Ha+"Property"])}}function Gn(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map(function(e,n){return Zn(e)+Zn(t[n])}))}function Zn(t){return 1e3*Number(t.slice(0,-1))}function Jn(t,e){var i=t.elm;r(i._leaveCb)&&(i._leaveCb.cancelled=!0,i._leaveCb());var o=Un(t.data.transition);if(!n(o)&&!r(i._enterCb)&&1===i.nodeType){for(var a=o.css,l=o.type,u=o.enterClass,c=o.enterToClass,p=o.enterActiveClass,d=o.appearClass,h=o.appearToClass,v=o.appearActiveClass,g=o.beforeEnter,m=o.enter,y=o.afterEnter,b=o.enterCancelled,_=o.beforeAppear,x=o.appear,w=o.afterAppear,C=o.appearCancelled,$=o.duration,T=So,S=So.$vnode;S&&S.parent;)S=S.parent,T=S.context;var A=!T._isMounted||!t.isRootInsert;if(!A||x||""===x){var E=A&&d?d:u,O=A&&v?v:p,j=A&&h?h:c,D=A?_||g:g,N=A&&"function"==typeof x?x:m,I=A?w||y:y,P=A?C||b:b,L=f(s($)?$.enter:$),R=!1!==a&&!Ki,M=tr(N),F=i._enterCb=k(function(){R&&(Vn(i,j),Vn(i,O)),F.cancelled?(R&&Vn(i,E),P&&P(i)):I&&I(i),i._enterCb=null});t.data.show||tt(t.data.hook||(t.data.hook={}),"insert",function(){var e=i.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),N&&N(i,F)}),D&&D(i),R&&(Wn(i,E),Wn(i,O),zn(function(){Wn(i,j),Vn(i,E),F.cancelled||M||(Qn(L)?setTimeout(F,L):Xn(i,l,F))})),t.data.show&&(e&&e(),N&&N(i,F)),R||M||F()}}}function Kn(t,e){function i(){C.cancelled||(t.data.show||((o.parentNode._pending||(o.parentNode._pending={}))[t.key]=t),h&&h(o),_&&(Wn(o,c),Wn(o,d),zn(function(){Wn(o,p),Vn(o,c),C.cancelled||x||(Qn(w)?setTimeout(C,w):Xn(o,u,C))})),v&&v(o,C),_||x||C())}var o=t.elm;r(o._enterCb)&&(o._enterCb.cancelled=!0,o._enterCb());var a=Un(t.data.transition);if(n(a))return e();if(!r(o._leaveCb)&&1===o.nodeType){var l=a.css,u=a.type,c=a.leaveClass,p=a.leaveToClass,d=a.leaveActiveClass,h=a.beforeLeave,v=a.leave,g=a.afterLeave,m=a.leaveCancelled,y=a.delayLeave,b=a.duration,_=!1!==l&&!Ki,x=tr(v),w=f(s(b)?b.leave:b),C=o._leaveCb=k(function(){o.parentNode&&o.parentNode._pending&&(o.parentNode._pending[t.key]=null),_&&(Vn(o,p),Vn(o,d)),C.cancelled?(_&&Vn(o,c),m&&m(o)):(e(),g&&g(o)),o._leaveCb=null});y?y(i):i()}}function Qn(t){return"number"==typeof t&&!isNaN(t)}function tr(t){if(n(t))return!1;var e=t.fns;return r(e)?tr(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function er(t,e){!0!==e.data.show&&Jn(e)}function nr(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,l=t.options.length;s<l;s++)if(a=t.options[s],i)o=w(r,ir(a))>-1,a.selected!==o&&(a.selected=o);else if(x(ir(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function rr(t,e){for(var n=0,r=e.length;n<r;n++)if(x(ir(e[n]),t))return!1;return!0}function ir(t){return"_value"in t?t._value:t.value}function or(t){t.target.composing=!0}function ar(t){t.target.composing&&(t.target.composing=!1,sr(t.target,"input"))}function sr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function lr(t){return!t.componentInstance||t.data&&t.data.transition?t:lr(t.componentInstance._vnode)}function ur(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ur(ut(e.children)):t}function cr(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[Pi(o)]=i[o];return e}function fr(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function pr(t){for(;t=t.parent;)if(t.data.transition)return!0}function dr(t,e){return e.key===t.key&&e.tag===t.tag}function hr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function vr(t){t.data.newPos=t.elm.getBoundingClientRect()}function gr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}function mr(t){return as=as||document.createElement("div"),as.innerHTML=t,as.textContent}function yr(t,e){var n=e?Vs:Ws;return t.replace(n,function(t){return zs[t]})}function br(t,e){function n(e){c+=e,t=t.substring(e)}function r(t,n,r){var i,s;if(null==n&&(n=c),null==r&&(r=c),t&&(s=t.toLowerCase()),t)for(i=a.length-1;i>=0&&a[i].lowerCasedTag!==s;i--);else i=0;if(i>=0){for(var l=a.length-1;l>=i;l--)e.end&&e.end(a[l].tag,n,r);a.length=i,o=i&&a[i-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,r):"p"===s&&(e.start&&e.start(t,[],!1,n,r),e.end&&e.end(t,n,r))}for(var i,o,a=[],s=e.expectHTML,l=e.isUnaryTag||Fi,u=e.canBeLeftOpenTag||Fi,c=0;t;){if(i=t,o&&Hs(o)){var f=o.toLowerCase(),p=Us[f]||(Us[f]=new RegExp("([\\s\\S]*?)(</"+f+"[^>]*>)","i")),d=0,h=t.replace(p,function(t,n,r){return d=r.length,Hs(f)||"noscript"===f||(n=n.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),e.chars&&e.chars(n),""});c+=t.length-h.length,t=h,r(f,c-d,c)}else{var v=t.indexOf("<");if(0===v){if(xs.test(t)){var g=t.indexOf("--\x3e");if(g>=0){n(g+3);continue}}if(ws.test(t)){var m=t.indexOf("]>");if(m>=0){n(m+2);continue}}var y=t.match(_s);if(y){n(y[0].length);continue}var b=t.match(bs);if(b){var _=c;n(b[0].length),r(b[1],_,c);continue}var x=function(){var e=t.match(ms);if(e){var r={tagName:e[1],attrs:[],start:c};n(e[0].length);for(var i,o;!(i=t.match(ys))&&(o=t.match(hs));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=c,r}}();if(x){!function(t){var n=t.tagName,i=t.unarySlash;s&&("p"===o&&cs(n)&&r(o),u(n)&&o===n&&r(n));for(var c=l(n)||"html"===n&&"head"===o||!!i,f=t.attrs.length,p=new Array(f),d=0;d<f;d++){var h=t.attrs[d];ks&&-1===h[0].indexOf('""')&&(""===h[3]&&delete h[3],""===h[4]&&delete h[4],""===h[5]&&delete h[5]);var v=h[3]||h[4]||h[5]||"";p[d]={name:h[1],value:yr(v,e.shouldDecodeNewlines)}}c||(a.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:p}),o=n),e.start&&e.start(n,p,c,t.start,t.end)}(x);continue}}var w=void 0,k=void 0,C=void 0;if(v>=0){for(k=t.slice(v);!(bs.test(k)||ms.test(k)||xs.test(k)||ws.test(k)||(C=k.indexOf("<",1))<0);)v+=C,k=t.slice(v);w=t.substring(0,v),n(v)}v<0&&(w=t,t=""),e.chars&&w&&e.chars(w)}if(t===i){e.chars&&e.chars(t);break}}r()}function _r(t,e){var n=e?Gs(e):Xs;if(n.test(t)){for(var r,i,o=[],a=n.lastIndex=0;r=n.exec(t);){i=r.index,i>a&&o.push(JSON.stringify(t.slice(a,i)));var s=an(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a<t.length&&o.push(JSON.stringify(t.slice(a))),o.join("+")}}function xr(t,e){function n(t){t.pre&&(s=!1),Es(t.tag)&&(l=!1)}Cs=e.warn||ln,js=e.getTagNamespace||Fi,Os=e.mustUseProp||Fi,Es=e.isPreTag||Fi,Ss=un(e.modules,"preTransformNode"),Ts=un(e.modules,"transformNode"),As=un(e.modules,"postTransformNode"),$s=e.delimiters;var r,i,o=[],a=!1!==e.preserveWhitespace,s=!1,l=!1;return br(t,{warn:Cs,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,start:function(t,a,u){var c=i&&i.ns||js(t);Ji&&"svg"===c&&(a=qr(a));var f={type:1,tag:t,attrsList:a,attrsMap:Rr(a),parent:i,children:[]};c&&(f.ns=c),Fr(f)&&!so()&&(f.forbidden=!0);for(var p=0;p<Ss.length;p++)Ss[p](f,e);if(s||(wr(f),f.pre&&(s=!0)),Es(f.tag)&&(l=!0),s)kr(f);else{Tr(f),Sr(f),jr(f),Cr(f),f.plain=!f.key&&!a.length,$r(f),Dr(f),Nr(f);for(var d=0;d<Ts.length;d++)Ts[d](f,e);Ir(f)}if(r?o.length||r.if&&(f.elseif||f.else)&&Or(r,{exp:f.elseif,block:f}):r=f,i&&!f.forbidden)if(f.elseif||f.else)Ar(f,i);else if(f.slotScope){i.plain=!1;var h=f.slotTarget||'"default"';(i.scopedSlots||(i.scopedSlots={}))[h]=f}else i.children.push(f),f.parent=i;u?n(f):(i=f,o.push(f));for(var v=0;v<As.length;v++)As[v](f,e)},end:function(){var t=o[o.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&!l&&t.children.pop(),o.length-=1,i=o[o.length-1],n(t)},chars:function(t){if(i&&(!Ji||"textarea"!==i.tag||i.attrsMap.placeholder!==t)){var e=i.children;if(t=l||t.trim()?Mr(i)?t:rl(t):a&&e.length?" ":""){var n;!s&&" "!==t&&(n=_r(t,$s))?e.push({type:2,expression:n,text:t}):" "===t&&e.length&&" "===e[e.length-1].text||e.push({type:3,text:t})}}}}),r}function wr(t){null!=vn(t,"v-pre")&&(t.pre=!0)}function kr(t){var e=t.attrsList.length;if(e)for(var n=t.attrs=new Array(e),r=0;r<e;r++)n[r]={name:t.attrsList[r].name,value:JSON.stringify(t.attrsList[r].value)};else t.pre||(t.plain=!0)}function Cr(t){var e=hn(t,"key");e&&(t.key=e)}function $r(t){var e=hn(t,"ref");e&&(t.ref=e,t.refInFor=Pr(t))}function Tr(t){var e;if(e=vn(t,"v-for")){var n=e.match(Ks);if(!n)return;t.for=n[2].trim();var r=n[1].trim(),i=r.match(Qs);i?(t.alias=i[1].trim(),t.iterator1=i[2].trim(),i[3]&&(t.iterator2=i[3].trim())):t.alias=r}}function Sr(t){var e=vn(t,"v-if");if(e)t.if=e,Or(t,{exp:e,block:t});else{null!=vn(t,"v-else")&&(t.else=!0);var n=vn(t,"v-else-if");n&&(t.elseif=n)}}function Ar(t,e){var n=Er(e.children);n&&n.if&&Or(n,{exp:t.elseif,block:t})}function Er(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}function Or(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function jr(t){null!=vn(t,"v-once")&&(t.once=!0)}function Dr(t){if("slot"===t.tag)t.slotName=hn(t,"name");else{var e=hn(t,"slot");e&&(t.slotTarget='""'===e?'"default"':e),"template"===t.tag&&(t.slotScope=vn(t,"scope"))}}function Nr(t){var e;(e=hn(t,"is"))&&(t.component=e),null!=vn(t,"inline-template")&&(t.inlineTemplate=!0)}function Ir(t){var e,n,r,i,o,a,s,l=t.attrsList;for(e=0,n=l.length;e<n;e++)if(r=i=l[e].name,o=l[e].value,Js.test(r))if(t.hasBindings=!0,a=Lr(r),a&&(r=r.replace(nl,"")),el.test(r))r=r.replace(el,""),o=an(o),s=!1,a&&(a.prop&&(s=!0,"innerHtml"===(r=Pi(r))&&(r="innerHTML")),a.camel&&(r=Pi(r)),a.sync&&dn(t,"update:"+Pi(r),mn(o,"$event"))),s||Os(t.tag,t.attrsMap.type,r)?cn(t,r,o):fn(t,r,o);else if(Zs.test(r))r=r.replace(Zs,""),dn(t,r,o,a,!1,Cs);else{r=r.replace(Js,"");var u=r.match(tl),c=u&&u[1];c&&(r=r.slice(0,-(c.length+1))),pn(t,r,i,o,c,a)}else{fn(t,r,JSON.stringify(o))}}function Pr(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}function Lr(t){var e=t.match(nl);if(e){var n={};return e.forEach(function(t){n[t.slice(1)]=!0}),n}}function Rr(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]=t[n].value;return e}function Mr(t){return"script"===t.tag||"style"===t.tag}function Fr(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function qr(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];il.test(r.name)||(r.name=r.name.replace(ol,""),e.push(r))}return e}function Br(t,e){t&&(Ds=al(e.staticKeys||""),Ns=e.isReservedTag||Fi,Ur(t),zr(t,!1))}function Hr(t){return p("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))}function Ur(t){if(t.static=Vr(t),1===t.type){if(!Ns(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,n=t.children.length;e<n;e++){var r=t.children[e];Ur(r),r.static||(t.static=!1)}}}function zr(t,e){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=e),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var n=0,r=t.children.length;n<r;n++)zr(t.children[n],e||!!t.for);t.ifConditions&&Wr(t.ifConditions,e)}}function Wr(t,e){for(var n=1,r=t.length;n<r;n++)zr(t[n].block,e)}function Vr(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||Di(t.tag)||!Ns(t.tag)||Xr(t)||!Object.keys(t).every(Ds))))}function Xr(t){for(;t.parent;){if(t=t.parent,"template"!==t.tag)return!1;if(t.for)return!0}return!1}function Yr(t,e,n){var r=e?"nativeOn:{":"on:{";for(var i in t){r+='"'+i+'":'+Gr(i,t[i])+","}return r.slice(0,-1)+"}"}function Gr(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return Gr(t,e)}).join(",")+"]";var n=ll.test(e.value),r=sl.test(e.value);if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)fl[s]?(o+=fl[s],ul[s]&&a.push(s)):a.push(s);a.length&&(i+=Zr(a)),o&&(i+=o);return"function($event){"+i+(n?e.value+"($event)":r?"("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function Zr(t){return"if(!('button' in $event)&&"+t.map(Jr).join("&&")+")return null;"}function Jr(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=ul[t];return"_k($event.keyCode,"+JSON.stringify(t)+(n?","+JSON.stringify(n):"")+")"}function Kr(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+(e.modifiers&&e.modifiers.prop?",true":"")+")"}}function Qr(t,e){var n=Fs,r=Fs=[],i=qs;qs=0,Bs=e,Is=e.warn||ln,Ps=un(e.modules,"transformCode"),Ls=un(e.modules,"genData"),Rs=e.directives||{},Ms=e.isReservedTag||Fi;var o=t?ti(t):'_c("div")';return Fs=n,qs=i,{render:"with(this){return "+o+"}",staticRenderFns:r}}function ti(t){if(t.staticRoot&&!t.staticProcessed)return ei(t);if(t.once&&!t.onceProcessed)return ni(t);if(t.for&&!t.forProcessed)return oi(t);if(t.if&&!t.ifProcessed)return ri(t);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return yi(t);var e;if(t.component)e=bi(t.component,t);else{var n=t.plain?void 0:ai(t),r=t.inlineTemplate?null:pi(t,!0);e="_c('"+t.tag+"'"+(n?","+n:"")+(r?","+r:"")+")"}for(var i=0;i<Ps.length;i++)e=Ps[i](t,e);return e}return pi(t)||"void 0"}function ei(t){return t.staticProcessed=!0,Fs.push("with(this){return "+ti(t)+"}"),"_m("+(Fs.length-1)+(t.staticInFor?",true":"")+")"}function ni(t){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return ri(t);if(t.staticInFor){for(var e="",n=t.parent;n;){if(n.for){e=n.key;break}n=n.parent}return e?"_o("+ti(t)+","+qs+++(e?","+e:"")+")":ti(t)}return ei(t)}function ri(t){return t.ifProcessed=!0,ii(t.ifConditions.slice())}function ii(t){function e(t){return t.once?ni(t):ti(t)}if(!t.length)return"_e()";var n=t.shift();return n.exp?"("+n.exp+")?"+e(n.block)+":"+ii(t):""+e(n.block)}function oi(t){var e=t.for,n=t.alias,r=t.iterator1?","+t.iterator1:"",i=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,"_l(("+e+"),function("+n+r+i+"){return "+ti(t)+"})"}function ai(t){var e="{",n=si(t);n&&(e+=n+","),t.key&&(e+="key:"+t.key+","),t.ref&&(e+="ref:"+t.ref+","),t.refInFor&&(e+="refInFor:true,"),t.pre&&(e+="pre:true,"),t.component&&(e+='tag:"'+t.tag+'",');for(var r=0;r<Ls.length;r++)e+=Ls[r](t);if(t.attrs&&(e+="attrs:{"+_i(t.attrs)+"},"),t.props&&(e+="domProps:{"+_i(t.props)+"},"),t.events&&(e+=Yr(t.events,!1,Is)+","),t.nativeEvents&&(e+=Yr(t.nativeEvents,!0,Is)+","),t.slotTarget&&(e+="slot:"+t.slotTarget+","),t.scopedSlots&&(e+=ui(t.scopedSlots)+","),t.model&&(e+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var i=li(t);i&&(e+=i+",")}return e=e.replace(/,$/,"")+"}",t.wrapData&&(e=t.wrapData(e)),e}function si(t){var e=t.directives;if(e){var n,r,i,o,a="directives:[",s=!1;for(n=0,r=e.length;n<r;n++){i=e[n],o=!0;var l=Rs[i.name]||pl[i.name];l&&(o=!!l(t,i,Is)),o&&(s=!0,a+='{name:"'+i.name+'",rawName:"'+i.rawName+'"'+(i.value?",value:("+i.value+"),expression:"+JSON.stringify(i.value):"")+(i.arg?',arg:"'+i.arg+'"':"")+(i.modifiers?",modifiers:"+JSON.stringify(i.modifiers):"")+"},")}return s?a.slice(0,-1)+"]":void 0}}function li(t){var e=t.children[0];if(1===e.type){var n=Qr(e,Bs);return"inlineTemplate:{render:function(){"+n.render+"},staticRenderFns:["+n.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}function ui(t){return"scopedSlots:_u(["+Object.keys(t).map(function(e){return ci(e,t[e])}).join(",")+"])"}function ci(t,e){return e.for&&!e.forProcessed?fi(t,e):"{key:"+t+",fn:function("+String(e.attrsMap.scope)+"){return "+("template"===e.tag?pi(e)||"void 0":ti(e))+"}}"}function fi(t,e){var n=e.for,r=e.alias,i=e.iterator1?","+e.iterator1:"",o=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,"_l(("+n+"),function("+r+i+o+"){return "+ci(t,e)+"})"}function pi(t,e){var n=t.children;if(n.length){var r=n[0];if(1===n.length&&r.for&&"template"!==r.tag&&"slot"!==r.tag)return ti(r);var i=e?di(n):0;return"["+n.map(gi).join(",")+"]"+(i?","+i:"")}}function di(t){for(var e=0,n=0;n<t.length;n++){var r=t[n];if(1===r.type){if(hi(r)||r.ifConditions&&r.ifConditions.some(function(t){return hi(t.block)})){e=2;break}(vi(r)||r.ifConditions&&r.ifConditions.some(function(t){return vi(t.block)}))&&(e=1)}}return e}function hi(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function vi(t){return!Ms(t.tag)}function gi(t){return 1===t.type?ti(t):mi(t)}function mi(t){return"_v("+(2===t.type?t.expression:xi(JSON.stringify(t.text)))+")"}function yi(t){var e=t.slotName||'"default"',n=pi(t),r="_t("+e+(n?","+n:""),i=t.attrs&&"{"+t.attrs.map(function(t){return Pi(t.name)+":"+t.value}).join(",")+"}",o=t.attrsMap["v-bind"];return!i&&!o||n||(r+=",null"),i&&(r+=","+i),o&&(r+=(i?"":",null")+","+o),r+")"}function bi(t,e){var n=e.inlineTemplate?null:pi(e,!0);return"_c("+t+","+ai(e)+(n?","+n:"")+")"}function _i(t){for(var e="",n=0;n<t.length;n++){var r=t[n];e+='"'+r.name+'":'+xi(r.value)+","}return e.slice(0,-1)}function xi(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function wi(t,e){var n=xr(t.trim(),e);Br(n,e);var r=Qr(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}}function ki(t,e){try{return new Function(t)}catch(n){return e.push({err:n,code:t}),_}}function Ci(t,e){var n=(e.warn,vn(t,"class"));n&&(t.staticClass=JSON.stringify(n));var r=hn(t,"class",!1);r&&(t.classBinding=r)}function $i(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Ti(t,e){var n=(e.warn,vn(t,"style"));if(n){t.staticStyle=JSON.stringify(ja(n))}var r=hn(t,"style",!1);r&&(t.styleBinding=r)}function Si(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}function Ai(t,e){e.value&&cn(t,"textContent","_s("+e.value+")")}function Ei(t,e){e.value&&cn(t,"innerHTML","_s("+e.value+")")}function Oi(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var ji=Object.prototype.toString,Di=p("slot,component",!0),Ni=Object.prototype.hasOwnProperty,Ii=/-(\w)/g,Pi=v(function(t){return t.replace(Ii,function(t,e){return e?e.toUpperCase():""})}),Li=v(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),Ri=/([^-])([A-Z])/g,Mi=v(function(t){return t.replace(Ri,"$1-$2").replace(Ri,"$1-$2").toLowerCase()}),Fi=function(){return!1},qi=function(t){return t},Bi="data-server-rendered",Hi=["component","directive","filter"],Ui=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],zi={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:Fi,isReservedAttr:Fi,isUnknownElement:Fi,getTagNamespace:_,parsePlatformTagName:qi,mustUseProp:Fi,_lifecycleHooks:Ui},Wi=Object.freeze({}),Vi=/[^\w.$]/,Xi=_,Yi="__proto__"in{},Gi="undefined"!=typeof window,Zi=Gi&&window.navigator.userAgent.toLowerCase(),Ji=Zi&&/msie|trident/.test(Zi),Ki=Zi&&Zi.indexOf("msie 9.0")>0,Qi=Zi&&Zi.indexOf("edge/")>0,to=Zi&&Zi.indexOf("android")>0,eo=Zi&&/iphone|ipad|ipod|ios/.test(Zi),no=Zi&&/chrome\/\d+/.test(Zi)&&!Qi,ro=!1;if(Gi)try{var io={};Object.defineProperty(io,"passive",{get:function(){ro=!0}}),window.addEventListener("test-passive",null,io)}catch(t){}var oo,ao,so=function(){return void 0===oo&&(oo=!Gi&&void 0!==e&&"server"===e.process.env.VUE_ENV),oo},lo=Gi&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,uo="undefined"!=typeof Symbol&&A(Symbol)&&"undefined"!=typeof Reflect&&A(Reflect.ownKeys),co=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e<t.length;e++)t[e]()}var e,n=[],r=!1;if("undefined"!=typeof Promise&&A(Promise)){var i=Promise.resolve(),o=function(t){};e=function(){i.then(t).catch(o),eo&&setTimeout(_)}}else if("undefined"==typeof MutationObserver||!A(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())e=function(){setTimeout(t,0)};else{var a=1,s=new MutationObserver(t),l=document.createTextNode(String(a));s.observe(l,{characterData:!0}),e=function(){a=(a+1)%2,l.data=String(a)}}return function(t,i){var o;if(n.push(function(){if(t)try{t.call(i)}catch(t){S(t,i,"nextTick")}else o&&o(i)}),r||(r=!0,e()),!t&&"undefined"!=typeof Promise)return new Promise(function(t,e){o=t})}}();ao="undefined"!=typeof Set&&A(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var fo=0,po=function(){this.id=fo++,this.subs=[]};po.prototype.addSub=function(t){this.subs.push(t)},po.prototype.removeSub=function(t){d(this.subs,t)},po.prototype.depend=function(){po.target&&po.target.addDep(this)},po.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},po.target=null;var ho=[],vo=Array.prototype,go=Object.create(vo);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=vo[t];$(go,t,function(){for(var n=arguments,r=arguments.length,i=new Array(r);r--;)i[r]=n[r];var o,a=e.apply(this,i),s=this.__ob__;switch(t){case"push":case"unshift":o=i;break;case"splice":o=i.slice(2)}return o&&s.observeArray(o),s.dep.notify(),a})});var mo=Object.getOwnPropertyNames(go),yo={shouldConvert:!0,isSettingProps:!1},bo=function(t){if(this.value=t,this.dep=new po,this.vmCount=0,$(t,"__ob__",this),Array.isArray(t)){(Yi?j:D)(t,go,mo),this.observeArray(t)}else this.walk(t)};bo.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)I(t,e[n],t[e[n]])},bo.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)N(t[e])};var _o=zi.optionMergeStrategies;_o.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):void 0;return r?M(r,i):i}:void 0:e?"function"!=typeof e?t:t?function(){return M(e.call(this),t.call(this))}:e:t},Ui.forEach(function(t){_o[t]=F}),Hi.forEach(function(t){_o[t+"s"]=q}),_o.watch=function(t,e){if(!e)return Object.create(t||null);if(!t)return e;var n={};y(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Array.isArray(i)&&(i=[i]),n[r]=i?i.concat(o):[o]}return n},_o.props=_o.methods=_o.computed=function(t,e){if(!e)return Object.create(t||null);if(!t)return e;var n=Object.create(null);return y(n,t),y(n,e),n};var xo=function(t,e){return void 0===e?t:e},wo=function(t,e,n,r,i,o,a){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.functionalContext=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1},ko={child:{}};ko.child.get=function(){return this.componentInstance},Object.defineProperties(wo.prototype,ko);var Co,$o=function(){var t=new wo;return t.text="",t.isComment=!0,t},To=v(function(t){var e="&"===t.charAt(0);t=e?t.slice(1):t;var n="~"===t.charAt(0);t=n?t.slice(1):t;var r="!"===t.charAt(0);return t=r?t.slice(1):t,{name:t,once:n,capture:r,passive:e}}),So=null,Ao=[],Eo=[],Oo={},jo=!1,Do=!1,No=0,Io=0,Po=function(t,e,n,r){this.vm=t,t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++Io,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ao,this.newDepIds=new ao,this.expression="","function"==typeof e?this.getter=e:(this.getter=T(e),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};Po.prototype.get=function(){E(this);var t,e=this.vm;if(this.user)try{t=this.getter.call(e,e)}catch(t){S(t,e,'getter for watcher "'+this.expression+'"')}else t=this.getter.call(e,e);return this.deep&&Ot(t),O(),this.cleanupDeps(),t},Po.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Po.prototype.cleanupDeps=function(){for(var t=this,e=this.deps.length;e--;){var n=t.deps[e];t.newDepIds.has(n.id)||n.removeSub(t)}var r=this.depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},Po.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Et(this)},Po.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){S(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Po.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Po.prototype.depend=function(){for(var t=this,e=this.deps.length;e--;)t.deps[e].depend()},Po.prototype.teardown=function(){var t=this;if(this.active){this.vm._isBeingDestroyed||d(this.vm._watchers,this);for(var e=this.deps.length;e--;)t.deps[e].removeSub(t);this.active=!1}};var Lo=new ao,Ro={enumerable:!0,configurable:!0,get:_,set:_},Mo={lazy:!0},Fo={init:function(t,e,n,r){if(!t.componentInstance||t.componentInstance._isDestroyed){(t.componentInstance=Gt(t,So,n,r)).$mount(e?t.elm:void 0,e)}else if(t.data.keepAlive){var i=t;Fo.prepatch(i,i)}},prepatch:function(t,e){var n=e.componentOptions;bt(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e=t.context,n=t.componentInstance;n._isMounted||(n._isMounted=!0,kt(n,"mounted")),t.data.keepAlive&&(e._isMounted?St(n):xt(n,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?wt(e,!0):e.$destroy())}},qo=Object.keys(Fo),Bo=1,Ho=2,Uo=0;!function(t){t.prototype._init=function(t){var e=this;e._uid=Uo++,e._isVue=!0,t&&t._isComponent?pe(e,t):e.$options=U(de(e.constructor),t||{},e),e._renderProxy=e,e._self=e,mt(e),ct(e),fe(e),kt(e,"beforeCreate"),zt(e),Nt(e),Ut(e),kt(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(ge),function(t){var e={};e.get=function(){return this._data};var n={};n.get=function(){return this._props},Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=P,t.prototype.$delete=L,t.prototype.$watch=function(t,e,n){var r=this;n=n||{},n.user=!0;var i=new Po(r,t,e,n);return n.immediate&&e.call(r,i.value),function(){i.teardown()}}}(ge),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this,i=this;if(Array.isArray(t))for(var o=0,a=t.length;o<a;o++)r.$on(t[o],n);else(i._events[t]||(i._events[t]=[])).push(n),e.test(t)&&(i._hasHookEvent=!0);return i},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this,r=this;if(!arguments.length)return r._events=Object.create(null),r;if(Array.isArray(t)){for(var i=0,o=t.length;i<o;i++)n.$off(t[i],e);return r}var a=r._events[t];if(!a)return r;if(1===arguments.length)return r._events[t]=null,r;for(var s,l=a.length;l--;)if((s=a[l])===e||s.fn===e){a.splice(l,1);break}return r},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?m(n):n;for(var r=m(arguments,1),i=0,o=n.length;i<o;i++)n[i].apply(e,r)}return e}}(ge),function(t){t.prototype._update=function(t,e){var n=this;n._isMounted&&kt(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=So;So=n,n._vnode=t,n.$el=i?n.__patch__(i,t):n.__patch__(n.$el,t,e,!1,n.$options._parentElm,n.$options._refElm),So=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){var t=this;t._watcher&&t._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){kt(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||d(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),kt(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$options._parentElm=t.$options._refElm=null}}}(ge),function(t){t.prototype.$nextTick=function(t){return co(t,this)},t.prototype._render=function(){var t=this,e=t.$options,n=e.render,r=e.staticRenderFns,i=e._parentVnode;if(t._isMounted)for(var o in t.$slots)t.$slots[o]=J(t.$slots[o]);t.$scopedSlots=i&&i.data.scopedSlots||Wi,r&&!t._staticTrees&&(t._staticTrees=[]),t.$vnode=i;var a;try{a=n.call(t._renderProxy,t.$createElement)}catch(e){S(e,t,"render function"),a=t._vnode}return a instanceof wo||(a=$o()),a.parent=i,a},t.prototype._o=le,t.prototype._n=f,t.prototype._s=c,t.prototype._l=ne,t.prototype._t=re,t.prototype._q=x,t.prototype._i=w,t.prototype._m=se,t.prototype._f=ie,t.prototype._k=oe,t.prototype._b=ae,t.prototype._v=G,t.prototype._e=$o,t.prototype._u=gt}(ge);var zo=[String,RegExp],Wo={name:"keep-alive",abstract:!0,props:{include:zo,exclude:zo},created:function(){this.cache=Object.create(null)},destroyed:function(){var t=this;for(var e in t.cache)Te(t.cache[e])},watch:{include:function(t){$e(this.cache,this._vnode,function(e){return Ce(t,e)})},exclude:function(t){$e(this.cache,this._vnode,function(e){return!Ce(t,e)})}},render:function(){var t=ut(this.$slots.default),e=t&&t.componentOptions;if(e){var n=ke(e);if(n&&(this.include&&!Ce(this.include,n)||this.exclude&&Ce(this.exclude,n)))return t;var r=null==t.key?e.Ctor.cid+(e.tag?"::"+e.tag:""):t.key;this.cache[r]?t.componentInstance=this.cache[r].componentInstance:this.cache[r]=t,t.data.keepAlive=!0}return t}},Vo={KeepAlive:Wo};!function(t){var e={};e.get=function(){return zi},Object.defineProperty(t,"config",e),t.util={warn:Xi,extend:y,mergeOptions:U,defineReactive:I},t.set=P,t.delete=L,t.nextTick=co,t.options=Object.create(null),Hi.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,y(t.options.components,Vo),me(t),ye(t),be(t),we(t)}(ge),Object.defineProperty(ge.prototype,"$isServer",{get:so}),Object.defineProperty(ge.prototype,"$ssrContext",{get:function(){return this.$vnode.ssrContext}}),ge.version="2.3.3";var Xo,Yo,Go,Zo,Jo,Ko,Qo,ta,ea,na=p("style,class"),ra=p("input,textarea,option,select"),ia=function(t,e,n){return"value"===n&&ra(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},oa=p("contenteditable,draggable,spellcheck"),aa=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),sa="http://www.w3.org/1999/xlink",la=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ua=function(t){return la(t)?t.slice(6,t.length):""},ca=function(t){return null==t||!1===t},fa={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},pa=p("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template"),da=p("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),ha=function(t){return"pre"===t},va=function(t){return pa(t)||da(t)},ga=Object.create(null),ma=Object.freeze({createElement:Pe,createElementNS:Le,createTextNode:Re,createComment:Me,insertBefore:Fe,removeChild:qe,appendChild:Be,parentNode:He,nextSibling:Ue,tagName:ze,setTextContent:We,setAttribute:Ve}),ya={create:function(t,e){Xe(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Xe(t,!0),Xe(e))},destroy:function(t){Xe(t,!0)}},ba=new wo("",{},[]),_a=["create","activate","update","remove","destroy"],xa={create:Je,update:Je,destroy:function(t){Je(t,ba)}},wa=Object.create(null),ka=[ya,xa],Ca={create:nn,update:nn},$a={create:on,update:on},Ta=/[\w).+\-_$\]]/,Sa="__r",Aa="__c",Ea={create:Dn,update:Dn},Oa={create:Nn,update:Nn},ja=v(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),Da=/^--/,Na=/\s*!important$/,Ia=function(t,e,n){if(Da.test(e))t.style.setProperty(e,n);else if(Na.test(n))t.style.setProperty(e,n.replace(Na,""),"important");else{var r=La(e);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)t.style[r]=n[i];else t.style[r]=n}},Pa=["Webkit","Moz","ms"],La=v(function(t){if(ea=ea||document.createElement("div"),"filter"!==(t=Pi(t))&&t in ea.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Pa.length;n++){var r=Pa[n]+e;if(r in ea.style)return r}}),Ra={create:qn,update:qn},Ma=v(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),Fa=Gi&&!Ki,qa="transition",Ba="animation",Ha="transition",Ua="transitionend",za="animation",Wa="animationend";Fa&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ha="WebkitTransition",Ua="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(za="WebkitAnimation",Wa="webkitAnimationEnd"));var Va=Gi&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,Xa=/\b(transform|all)(,|$)/,Ya=Gi?{create:er,activate:er,remove:function(t,e){!0!==t.data.show?Kn(t,e):e()}}:{},Ga=[Ca,$a,Ea,Oa,Ra,Ya],Za=Ga.concat(ka),Ja=function(t){function e(t){return new wo(O.tagName(t).toLowerCase(),{},[],void 0,t)}function o(t,e){function n(){0==--n.listeners&&s(t)}return n.listeners=e,n}function s(t){var e=O.parentNode(t);r(e)&&O.removeChild(e,t)}function l(t,e,n,o,a){if(t.isRootInsert=!a,!u(t,e,n,o)){var s=t.data,l=t.children,c=t.tag;r(c)?(t.elm=t.ns?O.createElementNS(t.ns,c):O.createElement(c,t),m(t),h(t,l,e),r(s)&&g(t,e),d(n,t.elm,o)):i(t.isComment)?(t.elm=O.createComment(t.text),d(n,t.elm,o)):(t.elm=O.createTextNode(t.text),d(n,t.elm,o))}}function u(t,e,n,o){var a=t.data;if(r(a)){var s=r(t.componentInstance)&&a.keepAlive;if(r(a=a.hook)&&r(a=a.init)&&a(t,!1,n,o),r(t.componentInstance))return c(t,e),i(s)&&f(t,e,n,o),!0}}function c(t,e){r(t.data.pendingInsert)&&e.push.apply(e,t.data.pendingInsert),t.elm=t.componentInstance.$el,v(t)?(g(t,e),m(t)):(Xe(t),e.push(t))}function f(t,e,n,i){for(var o,a=t;a.componentInstance;)if(a=a.componentInstance._vnode,r(o=a.data)&&r(o=o.transition)){for(o=0;o<A.activate.length;++o)A.activate[o](ba,a);e.push(a);break}d(n,t.elm,i)}function d(t,e,n){r(t)&&(r(n)?n.parentNode===t&&O.insertBefore(t,e,n):O.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)l(e[r],n,t.elm,null,!0);else a(t.text)&&O.appendChild(t.elm,O.createTextNode(t.text))}function v(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return r(t.tag)}function g(t,e){for(var n=0;n<A.create.length;++n)A.create[n](ba,t);T=t.data.hook,r(T)&&(r(T.create)&&T.create(ba,t),r(T.insert)&&e.push(t))}function m(t){for(var e,n=t;n;)r(e=n.context)&&r(e=e.$options._scopeId)&&O.setAttribute(t.elm,e,""),n=n.parent;r(e=So)&&e!==t.context&&r(e=e.$options._scopeId)&&O.setAttribute(t.elm,e,"")}function y(t,e,n,r,i,o){for(;r<=i;++r)l(n[r],o,t,e)}function b(t){var e,n,i=t.data;if(r(i))for(r(e=i.hook)&&r(e=e.destroy)&&e(t),e=0;e<A.destroy.length;++e)A.destroy[e](t);if(r(e=t.children))for(n=0;n<t.children.length;++n)b(t.children[n])}function _(t,e,n,i){for(;n<=i;++n){var o=e[n];r(o)&&(r(o.tag)?(x(o),b(o)):s(o.elm))}}function x(t,e){if(r(e)||r(t.data)){var n,i=A.remove.length+1;for(r(e)?e.listeners+=i:e=o(t.elm,i),r(n=t.componentInstance)&&r(n=n._vnode)&&r(n.data)&&x(n,e),n=0;n<A.remove.length;++n)A.remove[n](t,e);r(n=t.data.hook)&&r(n=n.remove)?n(t,e):e()}else s(t.elm)}function w(t,e,i,o,a){for(var s,u,c,f,p=0,d=0,h=e.length-1,v=e[0],g=e[h],m=i.length-1,b=i[0],x=i[m],w=!a;p<=h&&d<=m;)n(v)?v=e[++p]:n(g)?g=e[--h]:Ye(v,b)?(k(v,b,o),v=e[++p],b=i[++d]):Ye(g,x)?(k(g,x,o),g=e[--h],x=i[--m]):Ye(v,x)?(k(v,x,o),w&&O.insertBefore(t,v.elm,O.nextSibling(g.elm)),v=e[++p],x=i[--m]):Ye(g,b)?(k(g,b,o),w&&O.insertBefore(t,g.elm,v.elm),g=e[--h],b=i[++d]):(n(s)&&(s=Ze(e,p,h)),u=r(b.key)?s[b.key]:null,n(u)?(l(b,o,t,v.elm),b=i[++d]):(c=e[u],Ye(c,b)?(k(c,b,o),e[u]=void 0,w&&O.insertBefore(t,b.elm,v.elm),b=i[++d]):(l(b,o,t,v.elm),b=i[++d])));p>h?(f=n(i[m+1])?null:i[m+1].elm,y(t,f,i,d,m,o)):d>m&&_(t,e,p,h)}function k(t,e,o,a){if(t!==e){if(i(e.isStatic)&&i(t.isStatic)&&e.key===t.key&&(i(e.isCloned)||i(e.isOnce)))return e.elm=t.elm,void(e.componentInstance=t.componentInstance);var s,l=e.data;r(l)&&r(s=l.hook)&&r(s=s.prepatch)&&s(t,e);var u=e.elm=t.elm,c=t.children,f=e.children;if(r(l)&&v(e)){for(s=0;s<A.update.length;++s)A.update[s](t,e);r(s=l.hook)&&r(s=s.update)&&s(t,e)}n(e.text)?r(c)&&r(f)?c!==f&&w(u,c,f,o,a):r(f)?(r(t.text)&&O.setTextContent(u,""),y(u,null,f,0,f.length-1,o)):r(c)?_(u,c,0,c.length-1):r(t.text)&&O.setTextContent(u,""):t.text!==e.text&&O.setTextContent(u,e.text),r(l)&&r(s=l.hook)&&r(s=s.postpatch)&&s(t,e)}}function C(t,e,n){if(i(n)&&r(t.parent))t.parent.data.pendingInsert=e;else for(var o=0;o<e.length;++o)e[o].data.hook.insert(e[o])}function $(t,e,n){e.elm=t;var i=e.tag,o=e.data,a=e.children;if(r(o)&&(r(T=o.hook)&&r(T=T.init)&&T(e,!0),r(T=e.componentInstance)))return c(e,n),!0;if(r(i)){if(r(a))if(t.hasChildNodes()){for(var s=!0,l=t.firstChild,u=0;u<a.length;u++){if(!l||!$(l,a[u],n)){s=!1;break}l=l.nextSibling}if(!s||l)return!1}else h(e,a,n);if(r(o))for(var f in o)if(!j(f)){g(e,n);break}}else t.data!==e.text&&(t.data=e.text);return!0}var T,S,A={},E=t.modules,O=t.nodeOps;for(T=0;T<_a.length;++T)for(A[_a[T]]=[],S=0;S<E.length;++S)r(E[S][_a[T]])&&A[_a[T]].push(E[S][_a[T]]);var j=p("attrs,style,class,staticClass,staticStyle,key");return function(t,o,a,s,u,c){if(n(o))return void(r(t)&&b(t));var f=!1,p=[];if(n(t))f=!0,l(o,p,u,c);else{var d=r(t.nodeType);if(!d&&Ye(t,o))k(t,o,p,s);else{if(d){if(1===t.nodeType&&t.hasAttribute(Bi)&&(t.removeAttribute(Bi),a=!0),i(a)&&$(t,o,p))return C(o,p,!0),t;t=e(t)}var h=t.elm,g=O.parentNode(h);if(l(o,p,h._leaveCb?null:g,O.nextSibling(h)),r(o.parent)){for(var m=o.parent;m;)m.elm=o.elm,m=m.parent;if(v(o))for(var y=0;y<A.create.length;++y)A.create[y](ba,o.parent)}r(g)?_(g,[t],0,0):r(t.tag)&&b(t)}}return C(o,p,f),o.elm}}({nodeOps:ma,modules:Za});Ki&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&sr(t,"input")});var Ka={inserted:function(t,e,n){if("select"===n.tag){var r=function(){nr(t,e,n.context)};r(),(Ji||Qi)&&setTimeout(r,0)}else"textarea"!==n.tag&&"text"!==t.type&&"password"!==t.type||(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("change",ar),to||(t.addEventListener("compositionstart",or),t.addEventListener("compositionend",ar)),Ki&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){nr(t,e,n.context);(t.multiple?e.value.some(function(e){return rr(e,t.options)}):e.value!==e.oldValue&&rr(e.value,t.options))&&sr(t,"change")}}},Qa={bind:function(t,e,n){var r=e.value;n=lr(n);var i=n.data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i&&!Ki?(n.data.show=!0,Jn(n,function(){t.style.display=o})):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;r!==e.oldValue&&(n=lr(n),n.data&&n.data.transition&&!Ki?(n.data.show=!0,r?Jn(n,function(){t.style.display=t.__vOriginalDisplay}):Kn(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}},ts={model:Ka,show:Qa},es={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},ns={name:"transition",props:es,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(function(t){return t.tag}),n.length)){var r=this.mode,i=n[0];if(pr(this.$vnode))return i;var o=ur(i);if(!o)return i;if(this._leaving)return fr(t,i);var s="__transition-"+this._uid+"-";o.key=null==o.key?s+o.tag:a(o.key)?0===String(o.key).indexOf(s)?o.key:s+o.key:o.key;var l=(o.data||(o.data={})).transition=cr(this),u=this._vnode,c=ur(u);if(o.data.directives&&o.data.directives.some(function(t){return"show"===t.name})&&(o.data.show=!0),c&&c.data&&!dr(o,c)){var f=c&&(c.data.transition=y({},l));if("out-in"===r)return this._leaving=!0,tt(f,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),fr(t,i);if("in-out"===r){var p,d=function(){p()};tt(l,"afterEnter",d),tt(l,"enterCancelled",d),tt(f,"delayLeave",function(t){p=t})}}return i}}},rs=y({tag:String,moveClass:String},es);delete rs.mode;var is={props:rs,render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=cr(this),s=0;s<i.length;s++){var l=i[s];if(l.tag)if(null!=l.key&&0!==String(l.key).indexOf("__vlist"))o.push(l),n[l.key]=l,(l.data||(l.data={})).transition=a;else;}if(r){for(var u=[],c=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?u.push(p):c.push(p)}this.kept=t(e,null,u),this.removed=c}return t(e,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";if(t.length&&this.hasMove(t[0].elm,e)){t.forEach(hr),t.forEach(vr),t.forEach(gr);var n=document.body;n.offsetHeight;t.forEach(function(t){if(t.data.moved){var n=t.elm,r=n.style;Wn(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Ua,n._moveCb=function t(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Ua,t),n._moveCb=null,Vn(n,e))})}})}},methods:{hasMove:function(t,e){if(!Fa)return!1;if(null!=this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){Hn(n,t)}),Bn(n,e),n.style.display="none",this.$el.appendChild(n);var r=Yn(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}},os={Transition:ns,TransitionGroup:is};ge.config.mustUseProp=ia,ge.config.isReservedTag=va,ge.config.isReservedAttr=na,ge.config.getTagNamespace=De,ge.config.isUnknownElement=Ne,y(ge.options.directives,ts),y(ge.options.components,os),ge.prototype.__patch__=Gi?Ja:_,ge.prototype.$mount=function(t,e){return t=t&&Gi?Ie(t):void 0,yt(this,t,e)},setTimeout(function(){zi.devtools&&lo&&lo.emit("init",ge)},0);var as,ss=!!Gi&&function(t,e){var n=document.createElement("div");return n.innerHTML='<div a="'+t+'">',n.innerHTML.indexOf(e)>0}("\n"," "),ls=p("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),us=p("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),cs=p("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),fs=/([^\s"'<>\/=]+)/,ps=/(?:=)/,ds=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],hs=new RegExp("^\\s*"+fs.source+"(?:\\s*("+ps.source+")\\s*(?:"+ds.join("|")+"))?"),vs="[a-zA-Z_][\\w\\-\\.]*",gs="((?:"+vs+"\\:)?"+vs+")",ms=new RegExp("^<"+gs),ys=/^\s*(\/?)>/,bs=new RegExp("^<\\/"+gs+"[^>]*>"),_s=/^<!DOCTYPE [^>]+>/i,xs=/^<!--/,ws=/^<!\[/,ks=!1;"x".replace(/x(.)?/g,function(t,e){ks=""===e});var Cs,$s,Ts,Ss,As,Es,Os,js,Ds,Ns,Is,Ps,Ls,Rs,Ms,Fs,qs,Bs,Hs=p("script,style,textarea",!0),Us={},zs={"<":"<",">":">",""":'"',"&":"&"," ":"\n"},Ws=/&(?:lt|gt|quot|amp);/g,Vs=/&(?:lt|gt|quot|amp|#10);/g,Xs=/\{\{((?:.|\n)+?)\}\}/g,Ys=/[-.*+?^${}()|[\]\/\\]/g,Gs=v(function(t){var e=t[0].replace(Ys,"\\$&"),n=t[1].replace(Ys,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),Zs=/^@|^v-on:/,Js=/^v-|^@|^:/,Ks=/(.*?)\s+(?:in|of)\s+(.*)/,Qs=/\((\{[^}]*\}|[^,]*),([^,]*)(?:,([^,]*))?\)/,tl=/:(.*)$/,el=/^:|^v-bind:/,nl=/\.[^.]+/g,rl=v(mr),il=/^xmlns:NS\d+/,ol=/^NS\d+:/,al=v(Hr),sl=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,ll=/^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/,ul={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},cl=function(t){return"if("+t+")return null;"},fl={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:cl("$event.target !== $event.currentTarget"),ctrl:cl("!$event.ctrlKey"),shift:cl("!$event.shiftKey"),alt:cl("!$event.altKey"),meta:cl("!$event.metaKey"),left:cl("'button' in $event && $event.button !== 0"),middle:cl("'button' in $event && $event.button !== 1"),right:cl("'button' in $event && $event.button !== 2")},pl={bind:Kr,cloak:_},dl=(new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)"),{staticKeys:["staticClass"],transformNode:Ci,genData:$i}),hl={staticKeys:["staticStyle"],transformNode:Ti,genData:Si},vl=[dl,hl],gl={model:Cn,text:Ai,html:Ei},ml={expectHTML:!0,modules:vl,directives:gl,isPreTag:ha,isUnaryTag:ls,mustUseProp:ia,canBeLeftOpenTag:us,isReservedTag:va,getTagNamespace:De,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(vl)},yl=function(t){function e(e,n){var r=Object.create(t),i=[],o=[];if(r.warn=function(t,e){(e?o:i).push(t)},n){n.modules&&(r.modules=(t.modules||[]).concat(n.modules)),n.directives&&(r.directives=y(Object.create(t.directives),n.directives));for(var a in n)"modules"!==a&&"directives"!==a&&(r[a]=n[a])}var s=wi(e,r);return s.errors=i,s.tips=o,s}function n(t,n,i){n=n||{};var o=n.delimiters?String(n.delimiters)+t:t;if(r[o])return r[o];var a=e(t,n),s={},l=[];s.render=ki(a.render,l);var u=a.staticRenderFns.length;s.staticRenderFns=new Array(u);for(var c=0;c<u;c++)s.staticRenderFns[c]=ki(a.staticRenderFns[c],l);return r[o]=s}var r=Object.create(null);return{compile:e,compileToFunctions:n}}(ml),bl=yl.compileToFunctions,_l=v(function(t){var e=Ie(t);return e&&e.innerHTML}),xl=ge.prototype.$mount;ge.prototype.$mount=function(t,e){if((t=t&&Ie(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=_l(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=Oi(t));if(r){var i=bl(r,{shouldDecodeNewlines:ss,delimiters:n.delimiters},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return xl.call(this,t,e)},ge.compile=bl,t.exports=ge}).call(e,n(4))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){},,function(t,e,n){t.exports=n(5)}]); -//# sourceMappingURL=vue.js.map \ No newline at end of file +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 59); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +eval("/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanM/ZGEwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5cdHZhciBsaXN0ID0gW107XHJcblxyXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJcblx0XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcclxuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXHJcblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHRyZXR1cm4gbGlzdDtcclxufTtcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +eval("// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = Object.create(options.computed || null)\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n options.computed = computed\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXIuanM/ZDRmMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBvcnRzLFxuICBjb21waWxlZFRlbXBsYXRlLFxuICBzY29wZUlkLFxuICBjc3NNb2R1bGVzXG4pIHtcbiAgdmFyIGVzTW9kdWxlXG4gIHZhciBzY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMgfHwge31cblxuICAvLyBFUzYgbW9kdWxlcyBpbnRlcm9wXG4gIHZhciB0eXBlID0gdHlwZW9mIHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICBpZiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGVzTW9kdWxlID0gcmF3U2NyaXB0RXhwb3J0c1xuICAgIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzLmRlZmF1bHRcbiAgfVxuXG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAoY29tcGlsZWRUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gY29tcGlsZWRUZW1wbGF0ZS5yZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGNvbXBpbGVkVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSBzY29wZUlkXG4gIH1cblxuICAvLyBpbmplY3QgY3NzTW9kdWxlc1xuICBpZiAoY3NzTW9kdWxlcykge1xuICAgIHZhciBjb21wdXRlZCA9IE9iamVjdC5jcmVhdGUob3B0aW9ucy5jb21wdXRlZCB8fCBudWxsKVxuICAgIE9iamVjdC5rZXlzKGNzc01vZHVsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG1vZHVsZSA9IGNzc01vZHVsZXNba2V5XVxuICAgICAgY29tcHV0ZWRba2V5XSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZHVsZSB9XG4gICAgfSlcbiAgICBvcHRpb25zLmNvbXB1dGVkID0gY29tcHV0ZWRcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXNNb2R1bGU6IGVzTW9kdWxlLFxuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(54)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction) {\n isProduction = _isProduction\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[data-vue-ssr-id~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzPzZiMmIiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuICBNb2RpZmllZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG52YXIgaGFzRG9jdW1lbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBlb2YgREVCVUcgIT09ICd1bmRlZmluZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50LlwiXG4gICkgfVxufVxuXG52YXIgbGlzdFRvU3R5bGVzID0gcmVxdWlyZSgnLi9saXN0VG9TdHlsZXMnKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24pIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxuXG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBtYXlSZW1vdmUucHVzaChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICovKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0cy5sZW5ndGggPiBpdGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5sZW5ndGggPSBpdGVtLnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAoKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gIHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCByZW1vdmVcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNzci1pZH49XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxlbWVudCkge1xuICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGFuZCBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBub29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1dCBpbiBkZXYgbW9kZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFuZGxlIHNvdXJjZSBtYXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0gc291cmNlIG1hcHMgaW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAgICAgIC8vIGNyZWF0ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhlIHNlcnZlciByZW5kZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUgZm9yIElFOS5cbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0eWxlRWxlbWVudCA9IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVlKVxuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3RoZXIgY2FzZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAgICAgICBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAgIH1cbiAgfVxufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dFN0b3JlID0gW11cblxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNcbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VVUkw9JyArIHNvdXJjZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v3.2.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2017-03-20T18:59Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.2.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t// strings and numbers (primitives or objects)\n\t\t// that can be coerced to finite numbers (gh-2662)\n\t\tvar type = jQuery.type( obj );\n\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t\t// subtraction forces infinities to NaN\n\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Simple selector that can be filtered directly, removing non-Elements\n\tif ( risSimple.test( qualifier ) ) {\n\t\treturn jQuery.filter( qualifier, elements, not );\n\t}\n\n\t// Complex selector, compare the two sets, removing non-Elements\n\tqualifier = jQuery.filter( qualifier, elements );\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t} else {\n\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( \">tbody\", elem )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.cssText =\n\t\t\t\"box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i,\n\t\tval = 0;\n\n\t// If we already have the right measurement, avoid augmentation\n\tif ( extra === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\ti = 4;\n\n\t// Otherwise initialize for horizontal or vertical properties\n\t} else {\n\t\ti = name === \"width\" ? 1 : 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with computed style\n\tvar valueIsBorderBox,\n\t\tstyles = getStyles( elem ),\n\t\tval = curCSS( elem, name, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test( val ) ) {\n\t\treturn val;\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = isBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t// Fall back to offsetWidth/Height when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\tif ( val === \"auto\" ) {\n\t\tval = elem[ \"offset\" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnothtmlwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar doc, docElem, rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\trect = elem.getBoundingClientRect();\n\n\t\tdoc = elem.ownerDocument;\n\t\tdocElem = doc.documentElement;\n\t\twin = doc.defaultView;\n\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset = {\n\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true ),\n\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true )\n\t\t\t};\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( true ) {\n\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\treturn jQuery;\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzPzI3ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYzLjIuMVxuICogaHR0cHM6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTctMDMtMjBUMTg6NTlaXG4gKi9cbiggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSApKCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIEVkZ2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJpIDUuMSAtIDkrLCBpT1MgNiAtIDkuMVxuLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJpY3QgY29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlXG4vLyBhcmd1bWVudHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgyMDE2KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vblxuLy8gZW5vdWdoIHRoYXQgYWxsIHN1Y2ggYXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFyciA9IFtdO1xuXG52YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgY29uY2F0ID0gYXJyLmNvbmNhdDtcblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBmblRvU3RyaW5nID0gaGFzT3duLnRvU3RyaW5nO1xuXG52YXIgT2JqZWN0RnVuY3Rpb25TdHJpbmcgPSBmblRvU3RyaW5nLmNhbGwoIE9iamVjdCApO1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG5cblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2MgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCBcInNjcmlwdFwiICk7XG5cblx0XHRzY3JpcHQudGV4dCA9IGNvZGU7XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjIuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLFxuXG5cdC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xuXHRybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW2Etel0pL2csXG5cblx0Ly8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKVxuXHRmY2FtZWxDYXNlID0gZnVuY3Rpb24oIGFsbCwgbGV0dGVyICkge1xuXHRcdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcblx0fTtcblxualF1ZXJ5LmZuID0galF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMFxuXHRsZW5ndGg6IDAsXG5cblx0dG9BcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0fSxcblxuXHQvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SXG5cdC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5XG5cdGdldDogZnVuY3Rpb24oIG51bSApIHtcblxuXHRcdC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xlYW4gYXJyYXlcblx0XHRpZiAoIG51bSA9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0XG5cdFx0cmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDogdGhpc1sgbnVtIF07XG5cdH0sXG5cblx0Ly8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFja1xuXHQvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldClcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cblx0XHQvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldFxuXHRcdHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTtcblxuXHRcdC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpXG5cdFx0cmV0LnByZXZPYmplY3QgPSB0aGlzO1xuXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG5cdGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7XG5cdH0sXG5cblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7XG5cdFx0fSApICk7XG5cdH0sXG5cblx0c2xpY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7XG5cdH0sXG5cblx0Zmlyc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XG5cdH0sXG5cblx0bGFzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIC0xICk7XG5cdH0sXG5cblx0ZXE6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0gOiBbXSApO1xuXHR9LFxuXG5cdGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCk7XG5cdH0sXG5cblx0Ly8gRm9yIGludGVybmFsIHVzZSBvbmx5LlxuXHQvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC5cblx0cHVzaDogcHVzaCxcblx0c29ydDogYXJyLnNvcnQsXG5cdHNwbGljZTogYXJyLnNwbGljZVxufTtcblxualF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHtcblx0dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LFxuXHRcdGkgPSAxLFxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0ZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKCB0eXBlb2YgdGFyZ2V0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXG5cdFx0Ly8gU2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlIHRhcmdldFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgaSBdIHx8IHt9O1xuXHRcdGkrKztcblx0fVxuXG5cdC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgIT09IFwib2JqZWN0XCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmICggKCBvcHRpb25zID0gYXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkge1xuXG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29weSApIHx8XG5cdFx0XHRcdFx0KCBjb3B5SXNBcnJheSA9IEFycmF5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICkge1xuXHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIEFycmF5LmlzQXJyYXkoIHNyYyApID8gc3JjIDogW107XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnR5cGUoIG9iaiApID09PSBcImZ1bmN0aW9uXCI7XG5cdH0sXG5cblx0aXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fSxcblxuXHRpc051bWVyaWM6IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0XHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHRcdC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cylcblx0XHQvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYyKVxuXHRcdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRcdHJldHVybiAoIHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIiApICYmXG5cblx0XHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChcIlwiKVxuXHRcdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0XHQhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7XG5cdH0sXG5cblx0aXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgcHJvdG8sIEN0b3I7XG5cblx0XHQvLyBEZXRlY3Qgb2J2aW91cyBuZWdhdGl2ZXNcblx0XHQvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0IG9iamVjdHNcblx0XHRpZiAoICFvYmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09IFwiW29iamVjdCBPYmplY3RdXCIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cHJvdG8gPSBnZXRQcm90byggb2JqICk7XG5cblx0XHQvLyBPYmplY3RzIHdpdGggbm8gcHJvdG90eXBlIChlLmcuLCBgT2JqZWN0LmNyZWF0ZSggbnVsbCApYCkgYXJlIHBsYWluXG5cdFx0aWYgKCAhcHJvdG8gKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBPYmplY3RzIHdpdGggcHJvdG90eXBlIGFyZSBwbGFpbiBpZmYgdGhleSB3ZXJlIGNvbnN0cnVjdGVkIGJ5IGEgZ2xvYmFsIE9iamVjdCBmdW5jdGlvblxuXHRcdEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sIFwiY29uc3RydWN0b3JcIiApICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuXHRcdHJldHVybiB0eXBlb2YgQ3RvciA9PT0gXCJmdW5jdGlvblwiICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZztcblx0fSxcblxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXG5cdFx0LyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjVcblx0XHR2YXIgbmFtZTtcblxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHR0eXBlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0XHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdFx0Y2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCBcIm9iamVjdFwiIDpcblx0XHRcdHR5cGVvZiBvYmo7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7XG5cdFx0RE9NRXZhbCggY29kZSApO1xuXHR9LFxuXG5cdC8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXNcblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxM1xuXHQvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpXG5cdGNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyApIHtcblx0XHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgXCJtcy1cIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTtcblx0fSxcblxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHtcblx0XHR2YXIgbGVuZ3RoLCBpID0gMDtcblxuXHRcdGlmICggaXNBcnJheUxpa2UoIG9iaiApICkge1xuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuXHR0cmltOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcdFwiXCIgOlxuXHRcdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIlwiICk7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIGxlbmd0aCwgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdHJldCA9IFtdO1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXNcblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkge1xuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcblx0Ly8gYXJndW1lbnRzLlxuXHRwcm94eTogZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHRcdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0XHRjb250ZXh0ID0gZm47XG5cdFx0XHRmbiA9IHRtcDtcblx0XHR9XG5cblx0XHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHRcdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXG5cdFx0aWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFNpbXVsYXRlZCBiaW5kXG5cdFx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRcdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcblx0XHR9O1xuXG5cdFx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdFx0cHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7XG5cblx0XHRyZXR1cm4gcHJveHk7XG5cdH0sXG5cblx0bm93OiBEYXRlLm5vdyxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSApO1xuXG5pZiAoIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0alF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07XG59XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcbmZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0gKTtcblxuZnVuY3Rpb24gaXNBcnJheUxpa2UoIG9iaiApIHtcblxuXHQvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9ICEhb2JqICYmIFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblxuXHRpZiAoIHR5cGUgPT09IFwiZnVuY3Rpb25cIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE2LTA4LTA4XG4gKi9cbihmdW5jdGlvbiggd2luZG93ICkge1xuXG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gMDtcblx0fSxcblxuXHQvLyBJbnN0YW5jZSBtZXRob2RzXG5cdGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHksXG5cdGFyciA9IFtdLFxuXHRwb3AgPSBhcnIucG9wLFxuXHRwdXNoX25hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXHQvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNVxuXHRpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0bGVuID0gbGlzdC5sZW5ndGg7XG5cdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gLTE7XG5cdH0sXG5cblx0Ym9vbGVhbnMgPSBcImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsXG5cblx0Ly8gUmVndWxhciBleHByZXNzaW9uc1xuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlXG5cdHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsXG5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVyXG5cdGlkZW50aWZpZXIgPSBcIig/OlxcXFxcXFxcLnxbXFxcXHctXXxbXlxcMC1cXFxceGEwXSkrXCIsXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgaWRlbnRpZmllciArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gT3BlcmF0b3IgKGNhcHR1cmUgMilcblx0XHRcIiooWypeJHwhfl0/PSlcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIFwiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcXFxcKChcIiArXG5cdFx0Ly8gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIHByZUZpbHRlciwgcHJlZmVyIGFyZ3VtZW50czpcblx0XHQvLyAxLiBxdW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNhcHR1cmUgNSlcblx0XHRcIignKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCIpfFwiICtcblx0XHQvLyAyLiBzaW1wbGUgKGNhcHR1cmUgNilcblx0XHRcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpW1xcXFxdXXxcIiArIGF0dHJpYnV0ZXMgKyBcIikqKXxcIiArXG5cdFx0Ly8gMy4gYW55dGhpbmcgZWxzZSAoY2FwdHVyZSAyKVxuXHRcdFwiLipcIiArXG5cdFx0XCIpXFxcXCl8KVwiLFxuXG5cdC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXJcblx0cndoaXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCIrXCIsIFwiZ1wiICksXG5cdHJ0cmltID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiICsgd2hpdGVzcGFjZSArIFwiKyRcIiwgXCJnXCIgKSxcblxuXHRyY29tbWEgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiosXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblx0cmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFs+K35dfFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cblx0cmF0dHJpYnV0ZVF1b3RlcyA9IG5ldyBSZWdFeHAoIFwiPVwiICsgd2hpdGVzcGFjZSArIFwiKihbXlxcXFxdJ1xcXCJdKj8pXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXF1cIiwgXCJnXCIgKSxcblxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxuXHRyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoIFwiXlwiICsgaWRlbnRpZmllciArIFwiJFwiICksXG5cblx0bWF0Y2hFeHByID0ge1xuXHRcdFwiSURcIjogbmV3IFJlZ0V4cCggXCJeIyhcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBpZGVudGlmaWVyICsgXCJ8WypdKVwiICksXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxuXHRcdFwiUFNFVURPXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgcHNldWRvcyApLFxuXHRcdFwiQ0hJTERcIjogbmV3IFJlZ0V4cCggXCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXFxcKFwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiICsgd2hpdGVzcGFjZSArIFwiKig/OihbKy1dfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKFxcXFxkKyl8KSlcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpXCIsIFwiaVwiICksXG5cdFx0XCJib29sXCI6IG5ldyBSZWdFeHAoIFwiXig/OlwiICsgYm9vbGVhbnMgKyBcIikkXCIsIFwiaVwiICksXG5cdFx0Ly8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpXG5cdFx0Ly8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YFxuXHRcdFwibmVlZHNDb250ZXh0XCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfCkoPz1bXi1dfCQpXCIsIFwiaVwiIClcblx0fSxcblxuXHRyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmhlYWRlciA9IC9eaFxcZCQvaSxcblxuXHRybmF0aXZlID0gL15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxcblxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcblx0cnF1aWNrRXhwciA9IC9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLFxuXG5cdHJzaWJsaW5nID0gL1srfl0vLFxuXG5cdC8vIENTUyBlc2NhcGVzXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnNcblx0cnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggXCJcXFxcXFxcXChbXFxcXGRhLWZdezEsNn1cIiArIHdoaXRlc3BhY2UgKyBcIj98KFwiICsgd2hpdGVzcGFjZSArIFwiKXwuKVwiLCBcImlnXCIgKSxcblx0ZnVuZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVzY2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkge1xuXHRcdHZhciBoaWdoID0gXCIweFwiICsgZXNjYXBlZCAtIDB4MTAwMDA7XG5cdFx0Ly8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnRcblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI0XG5cdFx0Ly8gV29ya2Fyb3VuZCBlcnJvbmVvdXMgbnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArXCIweFwiXG5cdFx0cmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgP1xuXHRcdFx0ZXNjYXBlZCA6XG5cdFx0XHRoaWdoIDwgMCA/XG5cdFx0XHRcdC8vIEJNUCBjb2RlcG9pbnRcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4MTAwMDAgKSA6XG5cdFx0XHRcdC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKVxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTtcblx0fSxcblxuXHQvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvblxuXHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXNcblx0cmNzc2VzY2FwZSA9IC8oW1xcMC1cXHgxZlxceDdmXXxeLT9cXGQpfF4tJHxbXlxcMC1cXHgxZlxceDdmLVxcdUZGRkZcXHctXS9nLFxuXHRmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHtcblx0XHRpZiAoIGFzQ29kZVBvaW50ICkge1xuXG5cdFx0XHQvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJcblx0XHRcdGlmICggY2ggPT09IFwiXFwwXCIgKSB7XG5cdFx0XHRcdHJldHVybiBcIlxcdUZGRkRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHNcblx0XHRcdHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArIFwiXFxcXFwiICsgY2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgXCIgXCI7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZFxuXHRcdHJldHVybiBcIlxcXFxcIiArIGNoO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9LFxuXG5cdGRpc2FibGVkQW5jZXN0b3IgPSBhZGRDb21iaW5hdG9yKFxuXHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKFwiZm9ybVwiIGluIGVsZW0gfHwgXCJsYWJlbFwiIGluIGVsZW0pO1xuXHRcdH0sXG5cdFx0eyBkaXI6IFwicGFyZW50Tm9kZVwiLCBuZXh0OiBcImxlZ2VuZFwiIH1cblx0KTtcblxuLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5vZGVMaXN0IClcbnRyeSB7XG5cdHB1c2guYXBwbHkoXG5cdFx0KGFyciA9IHNsaWNlLmNhbGwoIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzICkpLFxuXHRcdHByZWZlcnJlZERvYy5jaGlsZE5vZGVzXG5cdCk7XG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wXG5cdC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2guYXBwbHlcblx0YXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5ub2RlVHlwZTtcbn0gY2F0Y2ggKCBlICkge1xuXHRwdXNoID0geyBhcHBseTogYXJyLmxlbmd0aCA/XG5cblx0XHQvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoZWxzKSApO1xuXHRcdH0gOlxuXG5cdFx0Ly8gU3VwcG9ydDogSUU8OVxuXHRcdC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHlcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHR2YXIgaiA9IHRhcmdldC5sZW5ndGgsXG5cdFx0XHRcdGkgPSAwO1xuXHRcdFx0Ly8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3RoXG5cdFx0XHR3aGlsZSAoICh0YXJnZXRbaisrXSA9IGVsc1tpKytdKSApIHt9XG5cdFx0XHR0YXJnZXQubGVuZ3RoID0gaiAtIDE7XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgbSwgaSwgZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBzLCBuZXdTZWxlY3Rvcixcblx0XHRuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQsXG5cblx0XHQvLyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0IGRlZmF1bHRzIHRvIGRvY3VtZW50XG5cdFx0bm9kZVR5cGUgPSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHRcblx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgfHwgIXNlbGVjdG9yIHx8XG5cdFx0bm9kZVR5cGUgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgJiYgbm9kZVR5cGUgIT09IDExICkge1xuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwgZG9jdW1lbnRzXG5cdGlmICggIXNlZWQgKSB7XG5cblx0XHRpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0XHR9XG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0XHRpZiAoIGRvY3VtZW50SXNIVE1MICkge1xuXG5cdFx0XHQvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgXCJnZXQqQnkqXCIgRE9NIG1ldGhvZFxuXHRcdFx0Ly8gKGV4Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KVxuXHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHtcblxuXHRcdFx0XHQvLyBJRCBzZWxlY3RvclxuXHRcdFx0XHRpZiAoIChtID0gbWF0Y2hbMV0pICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9jdW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBFbGVtZW50IGNvbnRleHRcblx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdGlmICggbmV3Q29udGV4dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiZcblx0XHRcdFx0XHRcdFx0Y29udGFpbnMoIGNvbnRleHQsIGVsZW0gKSAmJlxuXHRcdFx0XHRcdFx0XHRlbGVtLmlkID09PSBtICkge1xuXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHlwZSBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdFx0Ly8gQ2xhc3Mgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmXG5cdFx0XHRcdFx0Y29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsXG5cdFx0XHRpZiAoIHN1cHBvcnQucXNhICYmXG5cdFx0XHRcdCFjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF0gJiZcblx0XHRcdFx0KCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHtcblxuXHRcdFx0XHRpZiAoIG5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7XG5cblx0XHRcdFx0Ly8gcVNBIGxvb2tzIG91dHNpZGUgRWxlbWVudCBjb250ZXh0LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50XG5cdFx0XHRcdC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHdvcmthcm91bmQgdGVjaG5pcXVlXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OFxuXHRcdFx0XHQvLyBFeGNsdWRlIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdFx0XHQvLyBDYXB0dXJlIHRoZSBjb250ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdGlmICggKG5pZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCBcImlkXCIgKSkgKSB7XG5cdFx0XHRcdFx0XHRuaWQgPSBuaWQucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb250ZXh0LnNldEF0dHJpYnV0ZSggXCJpZFwiLCAobmlkID0gZXhwYW5kbykgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmVmaXggZXZlcnkgc2VsZWN0b3IgaW4gdGhlIGxpc3Rcblx0XHRcdFx0XHRncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHRcdFx0XHRpID0gZ3JvdXBzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGdyb3Vwc1tpXSA9IFwiI1wiICsgbmlkICsgXCIgXCIgKyB0b1NlbGVjdG9yKCBncm91cHNbaV0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggXCIsXCIgKTtcblxuXHRcdFx0XHRcdC8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9yc1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggbmV3U2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRcdG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKCBxc2FFcnJvciApIHtcblx0XHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdFx0aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCBcImlkXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuIChjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpO1xuXG5cdHRyeSB7XG5cdFx0cmV0dXJuICEhZm4oIGVsICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0XG5cdFx0aWYgKCBlbC5wYXJlbnROb2RlICkge1xuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWwgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRlbCA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KFwifFwiKSxcblx0XHRpID0gYXJyLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAobmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIDplbmFibGVkLzpkaXNhYmxlZFxuICogQHBhcmFtIHtCb29sZWFufSBkaXNhYmxlZCB0cnVlIGZvciA6ZGlzYWJsZWQ7IGZhbHNlIGZvciA6ZW5hYmxlZFxuICovXG5mdW5jdGlvbiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7XG5cblx0Ly8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRzZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlXG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE9ubHkgY2VydGFpbiBlbGVtZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkXG5cdFx0aWYgKCBcImZvcm1cIiBpbiBlbGVtICkge1xuXG5cdFx0XHQvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6XG5cdFx0XHQvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWRcblx0XHRcdC8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZFxuXHRcdFx0Ly8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBhIFwiZm9ybVwiIHByb3BlcnR5LlxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0Ly8gT3B0aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnRcblx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDYgLSAxMVxuXHRcdFx0XHQvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9yc1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fFxuXG5cdFx0XHRcdFx0Ly8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwgY2hlY2sgbWFudWFsbHlcblx0XHRcdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdFx0XHRlbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWRBbmNlc3RvciggZWxlbSApID09PSBkaXNhYmxlZDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXG5cdFx0Ly8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5LlxuXHRcdC8vIFNvbWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRyYWNrKSwgYnV0IGl0IHNob3VsZG4ndFxuXHRcdC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLlxuXHRcdH0gZWxzZSBpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdH1cblxuXHRcdC8vIFJlbWFpbmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkge1xuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0dmFyIGosXG5cdFx0XHRcdG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksXG5cdFx0XHRcdGkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoO1xuXG5cdFx0XHQvLyBNYXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXNcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkge1xuXHRcdFx0XHRcdHNlZWRbal0gPSAhKG1hdGNoZXNbal0gPSBzZWVkW2pdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3Rcblx0Ly8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4MzMpXG5cdHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50O1xuXHRyZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSBcIkhUTUxcIiA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1lbnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKi9cbnNldERvY3VtZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7XG5cdHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csXG5cdFx0ZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jO1xuXG5cdC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkXG5cdGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXNcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2Vcblx0Ly8gQWNjZXNzaW5nIGlmcmFtZSBkb2N1bWVudHMgYWZ0ZXIgdW5sb2FkIHRocm93cyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KVxuXHRpZiAoIHByZWZlcnJlZERvYyAhPT0gZG9jdW1lbnQgJiZcblx0XHQoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcpICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlXG5cdFx0aWYgKCBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcInVubG9hZFwiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHlcblx0XHR9IGVsc2UgaWYgKCBzdWJXaW5kb3cuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmNsYXNzTmFtZSA9IFwiaVwiO1xuXHRcdHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpO1xuXHR9KTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KFwiXCIpICk7XG5cdFx0cmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDEwXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZVxuXHQvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcyxcblx0Ly8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0XG5cdHN1cHBvcnQuZ2V0QnlJZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7XG5cdH0pO1xuXG5cdC8vIElEIGZpbHRlciBhbmQgZmluZFxuXHRpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdHJldHVybiBlbGVtID8gWyBlbGVtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSAgZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5XG5cdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgaXMgbm90IHJlbGlhYmxlIGFzIGEgZmluZCBzaG9ydGN1dFxuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIG5vZGUsIGksIGVsZW1zLFxuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXG5cdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdC8vIFZlcmlmeSB0aGUgaWQgYXR0cmlidXRlXG5cdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWVcblx0XHRcdFx0XHRlbGVtcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIGlkICk7XG5cdFx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1zW2krK10pICkge1xuXHRcdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kW1wiVEFHXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/XG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROXG5cdFx0XHR9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdHRtcCA9IFtdLFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0Ly8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvb1xuXHRcdFx0XHRyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHNcblx0XHRcdGlmICggdGFnID09PSBcIipcIiApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0dG1wLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdG1wO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fTtcblxuXHQvLyBDbGFzc1xuXHRFeHByLmZpbmRbXCJDTEFTU1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkge1xuXHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0XG5cblx0Ly8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSlcblx0cmJ1Z2d5TWF0Y2hlcyA9IFtdO1xuXG5cdC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpXG5cdC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvclxuXHQvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lXG5cdC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhlIHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yXG5cdC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7XG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHQvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3NlXG5cdFx0XHQvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4cGxpY2l0bHlcblx0XHRcdC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0cmlidXRlLFxuXHRcdFx0Ly8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2hcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pbm5lckhUTUwgPSBcIjxhIGlkPSdcIiArIGV4cGFuZG8gKyBcIic+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGlkPSdcIiArIGV4cGFuZG8gKyBcIi1cXHJcXFxcJyBtc2FsbG93Y2FwdHVyZT0nJz5cIiArXG5cdFx0XHRcdFwiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4LCBPcGVyYSAxMS0xMi4xNlxuXHRcdFx0Ly8gTm90aGluZyBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBlbXB0eSBzdHJpbmdzIGZvbGxvdyBePSBvciAkPSBvciAqPVxuXHRcdFx0Ly8gVGhlIHRlc3QgYXR0cmlidXRlIG11c3QgYmUgdW5rbm93biBpbiBPcGVyYSBidXQgXCJzYWZlXCIgZm9yIFdpblJUXG5cdFx0XHQvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIlttc2FsbG93Y2FwdHVyZV49JyddXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiWypeJF09XCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kIFwidmFsdWVcIiBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5XG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86dmFsdWV8XCIgKyBib29sZWFucyArIFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS44K1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbaWR+PVwiICsgZXhwYW5kbyArIFwiLV1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCJ+PVwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCtcblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTFcblx0XHRcdC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiYSNcIiArIGV4cGFuZG8gKyBcIisqXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiLiMuK1srfl1cIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRlbC5hcHBlbmRDaGlsZCggaW5wdXQgKS5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcIkRcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZVxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmVuYWJsZWRcIikubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIElFJ3MgOmRpc2FibGVkIHNlbGVjdG9yIGRvZXMgbm90IHBpY2sgdXAgdGhlIGNoaWxkcmVuIG9mIGRpc2FibGVkIGZpZWxkc2V0c1xuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZGlzYWJsZWRcIikubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zXG5cdFx0XHRlbC5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKFwiLC4qOlwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3Jcblx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXG5cdFx0XHRzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgXCIqXCIgKTtcblxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvblxuXHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxuXHRcdFx0bWF0Y2hlcy5jYWxsKCBlbCwgXCJbcyE9JyddOnhcIiApO1xuXHRcdFx0cmJ1Z2d5TWF0Y2hlcy5wdXNoKCBcIiE9XCIsIHBzZXVkb3MgKTtcblx0XHR9KTtcblx0fVxuXG5cdHJidWdneVFTQSA9IHJidWdneVFTQS5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oXCJ8XCIpICk7XG5cdHJidWdneU1hdGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVzLmpvaW4oXCJ8XCIpICk7XG5cblx0LyogQ29udGFpbnNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7XG5cblx0Ly8gRWxlbWVudCBjb250YWlucyBhbm90aGVyXG5cdC8vIFB1cnBvc2VmdWxseSBzZWxmLWV4Y2x1c2l2ZVxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpKTtcblx0XHR9IDpcblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdGlmICggYiApIHtcblx0XHRcdFx0d2hpbGUgKCAoYiA9IGIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/XG5cdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5IGFyZSBkaXNjb25uZWN0ZWRcblx0XHRcdDE7XG5cblx0XHQvLyBEaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRpZiAoIGNvbXBhcmUgJiAxIHx8XG5cdFx0XHQoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0aWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEpICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWludGFpbiBvcmlnaW5hbCBvcmRlclxuXHRcdFx0cmV0dXJuIHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tcGFyZSAmIDQgPyAtMSA6IDE7XG5cdH0gOlxuXHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHQvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGF1cCA9IGEucGFyZW50Tm9kZSxcblx0XHRcdGJ1cCA9IGIucGFyZW50Tm9kZSxcblx0XHRcdGFwID0gWyBhIF0sXG5cdFx0XHRicCA9IFsgYiBdO1xuXG5cdFx0Ly8gUGFyZW50bGVzcyBub2RlcyBhcmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWRcblx0XHRpZiAoICFhdXAgfHwgIWJ1cCApIHtcblx0XHRcdHJldHVybiBhID09PSBkb2N1bWVudCA/IC0xIDpcblx0XHRcdFx0YiA9PT0gZG9jdW1lbnQgPyAxIDpcblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YXAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXHRcdGN1ciA9IGI7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YnAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3lcblx0XHR3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHtcblx0XHRcdGkrKztcblx0XHR9XG5cblx0XHRyZXR1cm4gaSA/XG5cdFx0XHQvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3Jcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3Rcblx0XHRcdGFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6XG5cdFx0XHQwO1xuXHR9O1xuXG5cdHJldHVybiBkb2N1bWVudDtcbn07XG5cblNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkge1xuXHRyZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApO1xufTtcblxuU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHQvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUgc2VsZWN0b3JzIGFyZSBxdW90ZWRcblx0ZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgXCI9JyQxJ11cIiApO1xuXG5cdGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHQhY29tcGlsZXJDYWNoZVsgZXhwciArIFwiIFwiIF0gJiZcblx0XHQoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmXG5cdFx0KCAhcmJ1Z2d5UVNBICAgICB8fCAhcmJ1Z2d5UVNBLnRlc3QoIGV4cHIgKSApICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTtcblxuXHRcdFx0Ly8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdFx0aWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fFxuXHRcdFx0XHRcdC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50XG5cdFx0XHRcdFx0Ly8gZnJhZ21lbnQgaW4gSUUgOVxuXHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge31cblx0fVxuXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7XG59O1xuXG5TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHR9XG5cdHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApO1xufTtcblxuU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0dmFyIGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSxcblx0XHQvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNylcblx0XHR2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRmbiggZWxlbSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOlxuXHRcdFx0dW5kZWZpbmVkO1xuXG5cdHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/XG5cdFx0dmFsIDpcblx0XHRzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNIVE1MID9cblx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOlxuXHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG59O1xuXG5TaXp6bGUuZXNjYXBlID0gZnVuY3Rpb24oIHNlbCApIHtcblx0cmV0dXJuIChzZWwgKyBcIlwiKS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG59O1xuXG5TaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkge1xuXHR0aHJvdyBuZXcgRXJyb3IoIFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIgKyBtc2cgKTtcbn07XG5cbi8qKlxuICogRG9jdW1lbnQgc29ydGluZyBhbmQgcmVtb3ZpbmcgZHVwbGljYXRlc1xuICogQHBhcmFtIHtBcnJheUxpa2V9IHJlc3VsdHNcbiAqL1xuU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHtcblx0dmFyIGVsZW0sXG5cdFx0ZHVwbGljYXRlcyA9IFtdLFxuXHRcdGogPSAwLFxuXHRcdGkgPSAwO1xuXG5cdC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2Vcblx0aGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcztcblx0c29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7XG5cdHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7XG5cblx0aWYgKCBoYXNEdXBsaWNhdGUgKSB7XG5cdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHtcblx0XHRcdFx0aiA9IGR1cGxpY2F0ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0c1xuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjVcblx0c29ydElucHV0ID0gbnVsbDtcblxuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXNcbiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbVxuICovXG5nZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5vZGUsXG5cdFx0cmV0ID0gXCJcIixcblx0XHRpID0gMCxcblx0XHRub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0aWYgKCAhbm9kZVR5cGUgKSB7XG5cdFx0Ly8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXlcblx0XHR3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHtcblx0XHRcdC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzXG5cdFx0XHRyZXQgKz0gZ2V0VGV4dCggbm9kZSApO1xuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkge1xuXHRcdC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHNcblx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKVxuXHRcdGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0cmV0ICs9IGdldFRleHQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVWYWx1ZTtcblx0fVxuXHQvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXNcblxuXHRyZXR1cm4gcmV0O1xufTtcblxuRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7XG5cblx0Ly8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyXG5cdGNhY2hlTGVuZ3RoOiA1MCxcblxuXHRjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbixcblxuXHRtYXRjaDogbWF0Y2hFeHByLFxuXG5cdGF0dHJIYW5kbGU6IHt9LFxuXG5cdGZpbmQ6IHt9LFxuXG5cdHJlbGF0aXZlOiB7XG5cdFx0XCI+XCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIiBcIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiIH0sXG5cdFx0XCIrXCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiflwiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiB9XG5cdH0sXG5cblx0cHJlRmlsdGVyOiB7XG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0Ly8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWRcblx0XHRcdG1hdGNoWzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsyXSA9PT0gXCJ+PVwiICkge1xuXHRcdFx0XHRtYXRjaFszXSA9IFwiIFwiICsgbWF0Y2hbM10gKyBcIiBcIjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0LyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwcltcIkNISUxEXCJdXG5cdFx0XHRcdDEgdHlwZSAob25seXxudGh8Li4uKVxuXHRcdFx0XHQyIHdoYXQgKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdDMgYXJndW1lbnQgKGV2ZW58b2RkfFxcZCp8XFxkKm4oWystXVxcZCspP3wuLi4pXG5cdFx0XHRcdDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxuXHRcdFx0XHQ1IHNpZ24gb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDYgeCBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NyBzaWduIG9mIHktY29tcG9uZW50XG5cdFx0XHRcdDggeSBvZiB5LWNvbXBvbmVudFxuXHRcdFx0Ki9cblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09PSBcIm50aFwiICkge1xuXHRcdFx0XHQvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudFxuXHRcdFx0XHRpZiAoICFtYXRjaFszXSApIHtcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcblx0XHRcdFx0Ly8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMVxuXHRcdFx0XHRtYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRjaFszXSA9PT0gXCJldmVuXCIgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKSApO1xuXHRcdFx0XHRtYXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICk7XG5cblx0XHRcdC8vIG90aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHR2YXIgZXhjZXNzLFxuXHRcdFx0XHR1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTtcblxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbXCJDSElMRFwiXS50ZXN0KCBtYXRjaFswXSApICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXNcblx0XHRcdGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIjtcblxuXHRcdFx0Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJlxuXHRcdFx0XHQvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5pemUgKHJlY3Vyc2l2ZWx5KVxuXHRcdFx0XHQoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmXG5cdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xuXHRcdFx0XHQoZXhjZXNzID0gdW5xdW90ZWQuaW5kZXhPZiggXCIpXCIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHtcblxuXHRcdFx0XHQvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleFxuXHRcdFx0XHRtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdFx0bWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KVxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7XG5cdFx0fVxuXHR9LFxuXG5cdGZpbHRlcjoge1xuXG5cdFx0XCJUQUdcIjogZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7XG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSBcIipcIiA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0xBU1NcIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHtcblx0XHRcdHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgXCIgXCIgXTtcblxuXHRcdFx0cmV0dXJuIHBhdHRlcm4gfHxcblx0XHRcdFx0KHBhdHRlcm4gPSBuZXcgUmVnRXhwKCBcIihefFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgY2xhc3NOYW1lICsgXCIoXCIgKyB3aGl0ZXNwYWNlICsgXCJ8JClcIiApKSAmJlxuXHRcdFx0XHRjbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtLmNsYXNzTmFtZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiICk7XG5cdFx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdFx0aWYgKCByZXN1bHQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiIT1cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICFvcGVyYXRvciApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdCArPSBcIlwiO1xuXG5cdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCI9XCIgPyByZXN1bHQgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIhPVwiID8gcmVzdWx0ICE9PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiXj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIqPVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiJD1cIiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifj1cIiA/ICggXCIgXCIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsIFwiIFwiICkgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifD1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgXCItXCIgOlxuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkge1xuXHRcdFx0dmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gXCJudGhcIixcblx0XHRcdFx0Zm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09IFwibGFzdFwiLFxuXHRcdFx0XHRvZlR5cGUgPSB3aGF0ID09PSBcIm9mLXR5cGVcIjtcblxuXHRcdFx0cmV0dXJuIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgP1xuXG5cdFx0XHRcdC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobilcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuICEhZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0XHR9IDpcblxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSxcblx0XHRcdFx0XHRcdGRpZmYgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKVxuXHRcdFx0XHRcdFx0XHRcdHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gXCJvbmx5XCIgJiYgIXN0YXJ0ICYmIFwibmV4dFNpYmxpbmdcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTtcblxuXHRcdFx0XHRcdFx0Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGBcblx0XHRcdFx0XHRcdGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBwYXJlbnQ7XG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXg7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pXG5cdFx0XHRcdFx0XHRcdC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdFx0aWYgKCBkaWZmID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQrK2RpZmYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFswXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCBcIlwiKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLFxuXHRcdFwiZGlzYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbXCJlbXB0eVwiXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9KSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9KSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbXCJudGhcIl0gPSBFeHByLnBzZXVkb3NbXCJlcVwiXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0c2tpcCA9IGNvbWJpbmF0b3IubmV4dCxcblx0XHRrZXkgPSBza2lwIHx8IGRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGNvbWJpbmF0b3IgY2FjaGluZ1xuXHRcdFx0aWYgKCB4bWwgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0aWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0ZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoIChuZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcbn1cblxuZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkge1xuXHRyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gOlxuXHRcdG1hdGNoZXJzWzBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7XG5cdHZhciBlbGVtLFxuXHRcdG5ld1VubWF0Y2hlZCA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsXG5cdFx0bWFwcGVkID0gbWFwICE9IG51bGw7XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkge1xuXHRcdHZhciB0ZW1wLCBpLCBlbGVtLFxuXHRcdFx0cHJlTWFwID0gW10sXG5cdFx0XHRwb3N0TWFwID0gW10sXG5cdFx0XHRwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dFxuXHRcdFx0ZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8IFwiKlwiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLFxuXG5cdFx0XHQvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb25cblx0XHRcdG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgP1xuXHRcdFx0XHRjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdGVsZW1zLFxuXG5cdFx0XHRtYXRjaGVyT3V0ID0gbWF0Y2hlciA/XG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMsXG5cdFx0XHRcdHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID9cblxuXHRcdFx0XHRcdC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFtdIDpcblxuXHRcdFx0XHRcdC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseVxuXHRcdFx0XHRcdHJlc3VsdHMgOlxuXHRcdFx0XHRtYXRjaGVySW47XG5cblx0XHQvLyBGaW5kIHByaW1hcnkgbWF0Y2hlc1xuXHRcdGlmICggbWF0Y2hlciApIHtcblx0XHRcdG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcG9zdEZpbHRlclxuXHRcdGlmICggcG9zdEZpbHRlciApIHtcblx0XHRcdHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApO1xuXHRcdFx0cG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApO1xuXG5cdFx0XHQvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluXG5cdFx0XHRpID0gdGVtcC5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAoZWxlbSA9IHRlbXBbaV0pICkge1xuXHRcdFx0XHRcdG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggc2VlZCApIHtcblx0XHRcdGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7XG5cdFx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0XHQvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHNcblx0XHRcdFx0XHR0ZW1wID0gW107XG5cdFx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaFxuXHRcdFx0XHRcdFx0XHR0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZFxuXHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJlxuXHRcdFx0XHRcdFx0KHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7XG5cdHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVtcIiBcIl0sXG5cdFx0aSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLFxuXG5cdFx0Ly8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocylcblx0XHRtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoXG5cdFx0XHRcdChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/XG5cdFx0XHRcdFx0bWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdFx0bWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApO1xuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0pICkge1xuXHRcdFx0bWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXJcblx0XHRcdGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzZXRNYXRjaGVyKFxuXHRcdFx0XHRcdGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLFxuXHRcdFx0XHRcdGkgPiAxICYmIHRvU2VsZWN0b3IoXG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYFxuXHRcdFx0XHRcdFx0dG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gXCIgXCIgPyBcIipcIiA6IFwiXCIgfSlcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7XG5cdHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0YnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkge1xuXHRcdFx0dmFyIGVsZW0sIGosIG1hdGNoZXIsXG5cdFx0XHRcdG1hdGNoZWRDb3VudCA9IDAsXG5cdFx0XHRcdGkgPSBcIjBcIixcblx0XHRcdFx0dW5tYXRjaGVkID0gc2VlZCAmJiBbXSxcblx0XHRcdFx0c2V0TWF0Y2hlZCA9IFtdLFxuXHRcdFx0XHRjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCxcblx0XHRcdFx0Ly8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dFxuXHRcdFx0XHRlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFtcIlRBR1wiXSggXCIqXCIsIG91dGVybW9zdCApLFxuXHRcdFx0XHQvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlclxuXHRcdFx0XHRkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSxcblx0XHRcdFx0bGVuID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHRpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwpICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7XG5cdFx0aWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09IFwiSURcIiAmJlxuXHRcdFx0XHRjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFtcIklEXCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLCBmdW5lc2NhcGUpLCBjb250ZXh0ICkgfHwgW10gKVswXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbXCJuZWVkc0NvbnRleHRcIl0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbaV07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoIChzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHRcdFx0XHQpKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdCFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKFwiXCIpID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKVxuXHRyZXR1cm4gZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKSApICYgMTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBJRTw4XG4vLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSBcImludGVycG9sYXRpb25cIlxuLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIiNcIiA7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBcIlwiO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ2YWx1ZVwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllc1xuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0cmV0dXJuIGVsLmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpID09IG51bGw7XG59KSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9KTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5cbi8vIERlcHJlY2F0ZWRcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcbmpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7XG5cblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cblxuXG5mdW5jdGlvbiBub2RlTmFtZSggZWxlbSwgbmFtZSApIHtcblxuICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblxufTtcbnZhciByc2luZ2xlVGFnID0gKCAvXjwoW2Etel1bXlxcL1xcMD46XFx4MjBcXHRcXHJcXG5cXGZdKilbXFx4MjBcXHRcXHJcXG5cXGZdKlxcLz8+KD86PFxcL1xcMT58KSQvaSApO1xuXG5cblxudmFyIHJpc1NpbXBsZSA9IC9eLlteOiNcXFtcXC4sXSokLztcblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gU2ltcGxlIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGRpcmVjdGx5LCByZW1vdmluZyBub24tRWxlbWVudHNcblx0aWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApO1xuXHR9XG5cblx0Ly8gQ29tcGxleCBzZWxlY3RvciwgY29tcGFyZSB0aGUgdHdvIHNldHMsIHJlbW92aW5nIG5vbi1FbGVtZW50c1xuXHRxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3QgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApO1xufVxuXG5qUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7XG5cdHZhciBlbGVtID0gZWxlbXNbIDAgXTtcblxuXHRpZiAoIG5vdCApIHtcblx0XHRleHByID0gXCI6bm90KFwiICsgZXhwciArIFwiKVwiO1xuXHR9XG5cblx0aWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksIHJldCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTtcblxuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxlbiA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0gKTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0Ly8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZFxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKykpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290alF1ZXJ5XG5cdFx0Ly8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKVxuXHRcdHJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7XG5cblx0XHQvLyBIYW5kbGUgSFRNTCBzdHJpbmdzXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRpZiAoIHNlbGVjdG9yWyAwIF0gPT09IFwiPFwiICYmXG5cdFx0XHRcdHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmXG5cdFx0XHRcdHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRleHQgKSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsgMSBdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDtcblxuXHRcdFx0XHRcdC8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRcdC8vIEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKFxuXHRcdFx0XHRcdFx0bWF0Y2hbIDEgXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXNcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoI2lkKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbIDIgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpc1sgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzWyAwIF0gPSBzZWxlY3Rvcjtcblx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0Ly8gSEFORExFOiAkKGZ1bmN0aW9uKVxuXHRcdC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeVxuXHRcdH0gZWxzZSBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJpZnJhbWVcIiApICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG4gICAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IGl0LlxuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiBqUXVlcnkudHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciB0aGVuYWJsZXNcblx0XHR9IGVsc2UgaWYgKCB2YWx1ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciBub24tdGhlbmFibGVzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkjc2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOlxuXHRcdFx0Ly8gKiBmYWxzZTogWyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKVxuXHRcdFx0Ly8gKiB0cnVlOiBbIHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKClcblx0XHRcdHJlc29sdmUuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTtcblx0XHR9XG5cblx0Ly8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zXG5cdC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW5cblx0Ly8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi5cblx0fSBjYXRjaCAoIHZhbHVlICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seVxuXHRcdC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHRcblx0XHRyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsXG5cdFx0XHRcdC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV1cblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksIDIgXSxcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAwLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDEsIFwicmVqZWN0ZWRcIiBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiY2F0Y2hcIjogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7XG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBNYXAgdHVwbGVzIChwcm9ncmVzcywgZG9uZSwgZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcylcblx0XHRcdFx0XHRcdFx0dmFyIGZuID0galF1ZXJ5LmlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXShcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHNcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHtcblx0XHRcdFx0XHR2YXIgbWF4RGVwdGggPSAwO1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBhcmd1bWVudHMsXG5cdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkLCB0aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuM1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBkb3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0c1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCA8IG1heERlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCBcIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvblwiICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGVuID0gcmV0dXJuZWQgJiZcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTY0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHR5cGVvZiByZXR1cm5lZCA9PT0gXCJvYmplY3RcIiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiByZXR1cm5lZCA9PT0gXCJmdW5jdGlvblwiICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQudGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGVcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoZW4gKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3Ncblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhEZXB0aCsrO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGggKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIHJldHVybmVkIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHNwZWNpYWwgfHwgZGVmZXJyZWQucmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzID0gc3BlY2lhbCA/XG5cdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93IDpcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3coKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02MVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgZSBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xXG5cdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU3XG5cdFx0XHRcdFx0XHRcdC8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb21cblx0XHRcdFx0XHRcdFx0Ly8gc3Vic2VxdWVudCBlcnJvcnNcblx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHQvLyBzaW5jZSBpdCdzIG90aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXG5cdFx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5pc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uRnVsZmlsbGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMiBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmlzRnVuY3Rpb24oIG9uUmVqZWN0ZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblJlamVjdGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdFRocm93ZXJcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWRcblx0XHRcdFx0Ly8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdFxuXHRcdFx0XHRwcm9taXNlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdFx0XHRcdHJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlZmVycmVkID0ge307XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07XG5cblx0XHRcdC8vIHByb21pc2UucHJvZ3Jlc3MgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZmFpbCA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChcblx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlc29sdmVkXCIgKGkuZS4sIGZ1bGZpbGxlZClcblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZWplY3RlZFwiXG5cdFx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMiBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19jYWxsYmFja3MubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAyIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZFxuXHRcdFx0bWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0alF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkge1xuXG5cdFx0XHRcdHJldHVybiBtYXN0ZXIudGhlbigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgbWFzdGVyLnJlamVjdCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBtYXN0ZXIucHJvbWlzZSgpO1xuXHR9XG59ICk7XG5cblxuLy8gVGhlc2UgdXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1lbnQsXG4vLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0gYnkgZGVmYXVsdC5cbnZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1xuXG5qUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDkgb25seVxuXHQvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBhbnkgdGltZVxuXHRpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkge1xuXHRcdHdpbmRvdy5jb25zb2xlLndhcm4oIFwialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogXCIgKyBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgc3RhY2sgKTtcblx0fVxufTtcblxuXG5cblxualF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9yICkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0dGhyb3cgZXJyb3I7XG5cdH0gKTtcbn07XG5cblxuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cblx0cmVhZHlMaXN0XG5cdFx0LnRoZW4oIGZuIClcblxuXHRcdC8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwXG5cdFx0Ly8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNrXG5cdFx0Ly8gcmVnaXN0cmF0aW9uLlxuXHRcdC5jYXRjaCggZnVuY3Rpb24oIGVycm9yICkge1xuXHRcdFx0alF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApO1xuXHRcdH0gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LnJlYWR5LnRoZW4gPSByZWFkeUxpc3QudGhlbjtcblxuLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xuXHRqUXVlcnkucmVhZHkoKTtcbn1cblxuLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWRcbi8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seVxuLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5pZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiB8fFxuXHQoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHtcblxuXHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG59IGVsc2Uge1xuXG5cdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXG5cdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG59XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0ZWxlbXNbIGkgXSwga2V5LCByYXcgP1xuXHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggY2hhaW5hYmxlICkge1xuXHRcdHJldHVybiBlbGVtcztcblx0fVxuXG5cdC8vIEdldHNcblx0aWYgKCBidWxrICkge1xuXHRcdHJldHVybiBmbi5jYWxsKCBlbGVtcyApO1xuXHR9XG5cblx0cmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcbnZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdC8vIEFjY2VwdHMgb25seTpcblx0Ly8gIC0gTm9kZVxuXHQvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFXG5cdC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFXG5cdC8vICAtIE9iamVjdFxuXHQvLyAgICAtIEFueVxuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZVxuXHRcdHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdC8vIElmIG5vdCwgY3JlYXRlIG9uZVxuXHRcdGlmICggIXZhbHVlICkge1xuXHRcdFx0dmFsdWUgPSB7fTtcblxuXHRcdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LlxuXHRcdFx0Ly8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIG93bmVyICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlclxuXHRcdFx0XHQvLyB1c2UgcGxhaW4gYXNzaWdubWVudFxuXHRcdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSBwcm9wZXJ0eVxuXHRcdFx0XHQvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZVxuXHRcdFx0XHQvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cdHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHtcblx0XHR2YXIgcHJvcCxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFyZ3Ncblx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZTtcblx0fSxcblx0Z2V0OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcy5jYWNoZSggb3duZXIgKSA6XG5cblx0XHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtleSApIF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblx0XHR9XG5cblx0XHQvLyBXaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGtleSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0IGFycmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5c1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBrZXkgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyByZW1vdmUgdGhhdC5cblx0XHRcdFx0a2V5ID0ga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7XG5cblx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRrZXkgPSBrZXkgaW4gY2FjaGUgP1xuXHRcdFx0XHRcdFsga2V5IF0gOlxuXHRcdFx0XHRcdCgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTtcblx0XHRcdH1cblxuXHRcdFx0aSA9IGtleS5sZW5ndGg7XG5cblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NVxuXHRcdFx0Ly8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXNcblx0XHRcdC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpXG5cdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGUgb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHZhciBjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRyZXR1cm4gY2FjaGUgIT09IHVuZGVmaW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7XG5cdH1cbn07XG52YXIgZGF0YVByaXYgPSBuZXcgRGF0YSgpO1xuXG52YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gL1tBLVpdL2c7XG5cbmZ1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7XG5cdGlmICggZGF0YSA9PT0gXCJ0cnVlXCIgKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwiZmFsc2VcIiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwibnVsbFwiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0aWYgKCBkYXRhID09PSArZGF0YSArIFwiXCIgKSB7XG5cdFx0cmV0dXJuICtkYXRhO1xuXHR9XG5cblx0aWYgKCByYnJhY2UudGVzdCggZGF0YSApICkge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICk7XG5cdH1cblxuXHRyZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQmXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBnZXREYXRhKCBkYXRhICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHt9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlclxuXHRcdFx0ZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFVc2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApO1xuXG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGRhdGE7XG5cblx0XHRcdC8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5XG5cdFx0XHQvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZVxuXHRcdFx0Ly8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3Rcblx0XHRcdC8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGxcblx0XHRcdC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuXG5cdFx0XHRpZiAoIGVsZW0gJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIFRoZSBrZXkgd2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhXG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXlcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXksIHZhbHVlICk7XG5cdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGFVc2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgQXJyYXkuaXNBcnJheSggZGF0YSApICkge1xuXHRcdFx0XHRcdHF1ZXVlID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLmFkZCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSApXG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVsgMCBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHR9ICk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblxuXHQvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlXG5cdC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KVxuXHRwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkge1xuXHRcdHZhciB0bXAsXG5cdFx0XHRjb3VudCA9IDEsXG5cdFx0XHRkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0ZWxlbWVudHMgPSB0aGlzLFxuXHRcdFx0aSA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICEoIC0tY291bnQgKSApIHtcblx0XHRcdFx0XHRkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9iaiA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRtcCA9IGRhdGFQcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSApO1xudmFyIHBudW0gPSAoIC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvICkuc291cmNlO1xuXG52YXIgcmNzc051bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICk7XG5cblxudmFyIGNzc0V4cGFuZCA9IFsgXCJUb3BcIiwgXCJSaWdodFwiLCBcIkJvdHRvbVwiLCBcIkxlZnRcIiBdO1xuXG52YXIgaXNIaWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXG5cdFx0Ly8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cblx0XHQvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbFxuXHRcdHJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8XG5cdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiZcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBzdHlsZVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDVcblx0XHRcdC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBub25lLCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpc1xuXHRcdFx0Ly8gaW4gdGhlIGRvY3VtZW50LlxuXHRcdFx0alF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSAmJlxuXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIjtcblx0fTtcblxudmFyIHN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG5cblxuZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2YWx1ZVBhcnRzLCB0d2VlbiApIHtcblx0dmFyIGFkanVzdGVkLFxuXHRcdHNjYWxlID0gMSxcblx0XHRtYXhJdGVyYXRpb25zID0gMjAsXG5cdFx0Y3VycmVudFZhbHVlID0gdHdlZW4gP1xuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5jdXIoKTtcblx0XHRcdH0gOlxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCBcIlwiICk7XG5cdFx0XHR9LFxuXHRcdGluaXRpYWwgPSBjdXJyZW50VmFsdWUoKSxcblx0XHR1bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICksXG5cblx0XHQvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlc1xuXHRcdGluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSB8fCB1bml0ICE9PSBcInB4XCIgJiYgK2luaXRpYWwgKSAmJlxuXHRcdFx0cmNzc051bS5leGVjKCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTtcblxuXHRpZiAoIGluaXRpYWxJblVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkge1xuXG5cdFx0Ly8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzc1xuXHRcdHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb25cblx0XHR2YWx1ZVBhcnRzID0gdmFsdWVQYXJ0cyB8fCBbXTtcblxuXHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8IDE7XG5cblx0XHRkbyB7XG5cblx0XHRcdC8vIElmIHByZXZpb3VzIGl0ZXJhdGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqLlxuXHRcdFx0Ly8gVXNlIHN0cmluZyBmb3IgZG91Ymxpbmcgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IHNlZSBzY2FsZSBhcyB1bmNoYW5nZWQgYmVsb3dcblx0XHRcdHNjYWxlID0gc2NhbGUgfHwgXCIuNVwiO1xuXG5cdFx0XHQvLyBBZGp1c3QgYW5kIGFwcGx5XG5cdFx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAvIHNjYWxlO1xuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXG5cdFx0Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKClcblx0XHQvLyBCcmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQgb3IgcGVyZmVjdCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoLlxuXHRcdH0gd2hpbGUgKFxuXHRcdFx0c2NhbGUgIT09ICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgKSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1heEl0ZXJhdGlvbnNcblx0XHQpO1xuXHR9XG5cblx0aWYgKCB2YWx1ZVBhcnRzICkge1xuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwO1xuXG5cdFx0Ly8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkXG5cdFx0YWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gP1xuXHRcdFx0aW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDpcblx0XHRcdCt2YWx1ZVBhcnRzWyAyIF07XG5cdFx0aWYgKCB0d2VlbiApIHtcblx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0dHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0O1xuXHRcdFx0dHdlZW4uZW5kID0gYWRqdXN0ZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZGp1c3RlZDtcbn1cblxuXG52YXIgZGVmYXVsdERpc3BsYXlNYXAgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKSB7XG5cdHZhciB0ZW1wLFxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudCxcblx0XHRub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsXG5cdFx0ZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdO1xuXG5cdGlmICggZGlzcGxheSApIHtcblx0XHRyZXR1cm4gZGlzcGxheTtcblx0fVxuXG5cdHRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTtcblx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsIFwiZGlzcGxheVwiICk7XG5cblx0dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7XG5cblx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRkaXNwbGF5ID0gXCJibG9ja1wiO1xuXHR9XG5cdGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTtcblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSxcblx0XHR2YWx1ZXMgPSBbXSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG5cdC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZVxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cblx0XHRcdC8vIFNpbmNlIHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChhbmQgc2xvdylcblx0XHRcdC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlclxuXHRcdFx0Ly8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKVxuXHRcdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApIHx8IG51bGw7XG5cdFx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSApIHtcblx0XHRcdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gXCJub25lXCI7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZ1xuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiZGlzcGxheVwiLCBkaXNwbGF5ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvd1xuXHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7XG5cdFx0XHRlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0rKS9pICk7XG5cbnZhciByc2NyaXB0VHlwZSA9ICggL14kfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSApO1xuXG5cblxuLy8gV2UgaGF2ZSB0byBjbG9zZSB0aGVzZSB0YWdzIHRvIHN1cHBvcnQgWEhUTUwgKCMxMzIwMClcbnZhciB3cmFwTWFwID0ge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdG9wdGlvbjogWyAxLCBcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIiwgXCI8L3NlbGVjdD5cIiBdLFxuXG5cdC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNlcnQgZWxlbWVudHMgaW4gdGhlXG5cdC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW5cblx0Ly8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRzLlxuXHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdGNvbDogWyAyLCBcIjx0YWJsZT48Y29sZ3JvdXA+XCIsIFwiPC9jb2xncm91cD48L3RhYmxlPlwiIF0sXG5cdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdF9kZWZhdWx0OiBbIDAsIFwiXCIsIFwiXCIgXVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjtcblxud3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDtcbndyYXBNYXAudGggPSB3cmFwTWFwLnRkO1xuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKVxuXHR2YXIgcmV0O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSB7XG5cdFx0cmV0ID0gW107XG5cdH1cblxuXHRpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn1cblxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFQcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sXG5cdFx0XHRcImdsb2JhbEV2YWxcIixcblx0XHRcdCFyZWZFbGVtZW50cyB8fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cblxudmFyIHJodG1sID0gLzx8JiM/XFx3KzsvO1xuXG5mdW5jdGlvbiBidWlsZEZyYWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkge1xuXHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLFxuXHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0bm9kZXMgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHQvLyBBZGQgbm9kZXMgZGlyZWN0bHlcblx0XHRcdGlmICggalF1ZXJ5LnR5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gU2VlICMxMzM5MyBmb3IgbW9yZSBpbmZvXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0dmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogalF1ZXJ5LmlzRnVuY3Rpb24oIGhvb2sgKSA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IDpcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbIG5hbWUgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR3cml0YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR2YWx1ZTogdmFsdWVcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkge1xuXHRcdHJldHVybiBvcmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdG9yaWdpbmFsRXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApO1xuXHR9LFxuXG5cdHNwZWNpYWw6IHtcblx0XHRsb2FkOiB7XG5cblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcblx0XHRcdG5vQnViYmxlOiB0cnVlXG5cdFx0fSxcblx0XHRmb2N1czoge1xuXG5cdFx0XHQvLyBGaXJlIG5hdGl2ZSBldmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNlIGlzIGNvcnJlY3Rcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5mb2N1cyApIHtcblx0XHRcdFx0XHR0aGlzLmZvY3VzKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3VzaW5cIlxuXHRcdH0sXG5cdFx0Ymx1cjoge1xuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmJsdXIgKSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVyKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3Vzb3V0XCJcblx0XHR9LFxuXHRcdGNsaWNrOiB7XG5cblx0XHRcdC8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwiY2hlY2tib3hcIiAmJiB0aGlzLmNsaWNrICYmIG5vZGVOYW1lKCB0aGlzLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR0aGlzLmNsaWNrKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgZG9uJ3QgZmlyZSBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHJldHVybiBub2RlTmFtZSggZXZlbnQudGFyZ2V0LCBcImFcIiApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRiZWZvcmV1bmxvYWQ6IHtcblx0XHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArXG5cdFx0XHRcdC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC5cblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cblx0Ly8gVGhpcyBcImlmXCIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzXG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxuXHRpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5XG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHRcdC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllc1xuXHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTYgLSA3IG9ubHlcblx0XHQvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKVxuXHRcdHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/XG5cdFx0XHRzcmMudGFyZ2V0LnBhcmVudE5vZGUgOlxuXHRcdFx0c3JjLnRhcmdldDtcblxuXHRcdHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0O1xuXHRcdHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0O1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblxuXHR3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBidXR0b24gPSBldmVudC5idXR0b247XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDEgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDIgKSB7XG5cdFx0XHRcdHJldHVybiAzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDQgKSB7XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQud2hpY2g7XG5cdH1cbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTNcblx0Ly8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy5cblx0Ly8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUxMi9cblx0cm5vSW5uZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksXG5cblx0Ly8gY2hlY2tlZD1cImNoZWNrZWRcIiBvciBjaGVja2VkXG5cdHJjaGVja2VkID0gL2NoZWNrZWRcXHMqKD86W149XXw9XFxzKi5jaGVja2VkLikvaSxcblx0cnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcXC8oLiopLyxcblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nO1xuXG4vLyBQcmVmZXIgYSB0Ym9keSBvdmVyIGl0cyBwYXJlbnQgdGFibGUgZm9yIGNvbnRhaW5pbmcgbmV3IHJvd3NcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSApIHtcblxuXHRcdHJldHVybiBqUXVlcnkoIFwiPnRib2R5XCIsIGVsZW0gKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0dmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYyggZWxlbS50eXBlICk7XG5cblx0aWYgKCBtYXRjaCApIHtcblx0XHRlbGVtLnR5cGUgPSBtYXRjaFsgMSBdO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRpZiAoIGlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggaXNGdW5jdGlvbiApIHtcblx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHR9XG5cdFx0XHRkb21NYW5pcCggc2VsZiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoIGwgKSB7XG5cdFx0ZnJhZ21lbnQgPSBidWlsZEZyYWdtZW50KCBhcmdzLCBjb2xsZWN0aW9uWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIGNvbGxlY3Rpb24sIGlnbm9yZWQgKTtcblx0XHRmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHR9XG5cblx0XHQvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2tcblx0XHRpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7XG5cdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdC8vIFVzZSB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgZm9yIHRoZSBsYXN0IGl0ZW1cblx0XHRcdC8vIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHQvLyBSZWVuYWJsZSBzY3JpcHRzXG5cdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHQhZGF0YVByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmXG5cdFx0XHRcdFx0XHRqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkge1xuXG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgZG9jICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm1hcmdpbiA9ICggL15tYXJnaW4vICk7XG5cbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKVxuXHRcdC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuXHRcdC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuXHRcdHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdFx0aWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7XG5cdFx0XHR2aWV3ID0gd2luZG93O1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcblx0fTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkaXYuc3R5bGUuY3NzVGV4dCA9XG5cdFx0XHRcImJveC1zaXppbmc6Ym9yZGVyLWJveDtcIiArXG5cdFx0XHRcInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwidG9wOjElO3dpZHRoOjUwJVwiO1xuXHRcdGRpdi5pbm5lckhUTUwgPSBcIlwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSA0NFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRpdlN0eWxlLm1hcmdpbkxlZnQgPT09IFwiMnB4XCI7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gXCI0cHhcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUubWFyZ2luUmlnaHQgPSBcIjUwJVwiO1xuXHRcdHBpeGVsTWFyZ2luUmlnaHRWYWwgPSBkaXZTdHlsZS5tYXJnaW5SaWdodCA9PT0gXCI0cHhcIjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHQvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kXG5cdFx0Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZFxuXHRcdGRpdiA9IG51bGw7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHBpeGVsTWFyZ2luUmlnaHRWYWwsIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4O1wiICtcblx0XHRcInBhZGRpbmc6MDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZVwiO1xuXHRjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHR9LFxuXHRcdGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7XG5cdFx0fSxcblx0XHRwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxNYXJnaW5SaWdodFZhbDtcblx0XHR9LFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDtcblx0XHR9XG5cdH0gKTtcbn0gKSgpO1xuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDUxK1xuXHRcdC8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3dcblx0XHQvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdldHRpbmcgd3JvbmcgdmFsdWVzXG5cdFx0Ly8gb24gZGV0YWNoZWQgZWxlbWVudHNcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0Y29tcHV0ZWQgPSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTtcblxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6XG5cdC8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgIzEyNTM3KVxuXHQvLyAgIC5jc3MoJy0tY3VzdG9tUHJvcGVydHkpICgjMzE0NClcblx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRyZXQgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTtcblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLFxuXHRcdC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuXG5cdFx0Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOlxuXHRcdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5waXhlbE1hcmdpblJpZ2h0KCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJnaW4udGVzdCggbmFtZSApICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzXG5cdFx0XHR3aWR0aCA9IHN0eWxlLndpZHRoO1xuXHRcdFx0bWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDtcblx0XHRcdG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7XG5cblx0XHRcdC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXRcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDtcblx0XHRcdHJldCA9IGNvbXB1dGVkLndpZHRoO1xuXG5cdFx0XHQvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXG5cdFx0XHRzdHlsZS53aWR0aCA9IHdpZHRoO1xuXHRcdFx0c3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDtcblx0XHRcdHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID9cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cblx0Ly8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC5cblx0cmV0dXJuIHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBjb25kaXRpb25GbigpICkge1xuXG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG52YXJcblxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlXG5cdC8vIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRyY3VzdG9tUHJvcCA9IC9eLS0vLFxuXHRjc3NTaG93ID0geyBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCB2aXNpYmlsaXR5OiBcImhpZGRlblwiLCBkaXNwbGF5OiBcImJsb2NrXCIgfSxcblx0Y3NzTm9ybWFsVHJhbnNmb3JtID0ge1xuXHRcdGxldHRlclNwYWNpbmc6IFwiMFwiLFxuXHRcdGZvbnRXZWlnaHQ6IFwiNDAwXCJcblx0fSxcblxuXHRjc3NQcmVmaXhlcyA9IFsgXCJXZWJraXRcIiwgXCJNb3pcIiwgXCJtc1wiIF0sXG5cdGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkuc3R5bGU7XG5cbi8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1lICkge1xuXG5cdC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkXG5cdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdHJldHVybiBuYW1lO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lc1xuXHR2YXIgY2FwTmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLFxuXHRcdGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lO1xuXHRcdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFJldHVybiBhIHByb3BlcnR5IG1hcHBlZCBhbG9uZyB3aGF0IGpRdWVyeS5jc3NQcm9wcyBzdWdnZXN0cyBvciB0b1xuLy8gYSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHkuXG5mdW5jdGlvbiBmaW5hbFByb3BOYW1lKCBuYW1lICkge1xuXHR2YXIgcmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF07XG5cdGlmICggIXJldCApIHtcblx0XHRyZXQgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBuYW1lICkgfHwgbmFtZTtcblx0fVxuXHRyZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXG5cdC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW5cblx0Ly8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50XG5cdHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMgKSB7XG5cdHZhciBpLFxuXHRcdHZhbCA9IDA7XG5cblx0Ly8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uXG5cdGlmICggZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRpID0gNDtcblxuXHQvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzXG5cdH0gZWxzZSB7XG5cdFx0aSA9IG5hbWUgPT09IFwid2lkdGhcIiA/IDEgOiAwO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBpdFxuXHRcdGlmICggZXh0cmEgPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHR2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gYm9yZGVyLWJveCBpbmNsdWRlcyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50XG5cdFx0XHRpZiAoIGV4dHJhID09PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdFx0dmFsIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBib3JkZXIgbm9yIG1hcmdpbiwgc28gcmVtb3ZlIGJvcmRlclxuXHRcdFx0aWYgKCBleHRyYSAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdFx0dmFsIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmdcblx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28gYWRkIGJvcmRlclxuXHRcdFx0aWYgKCBleHRyYSAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggY29tcHV0ZWQgc3R5bGVcblx0dmFyIHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKSxcblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCI7XG5cblx0Ly8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi5cblx0aWYgKCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxuXG5cdC8vIENoZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzXG5cdC8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlhYmxlIGVsZW0uc3R5bGVcblx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94ICYmXG5cdFx0KCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBuYW1lIF0gKTtcblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvSGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHRpZiAoIHZhbCA9PT0gXCJhdXRvXCIgKSB7XG5cdFx0dmFsID0gZWxlbVsgXCJvZmZzZXRcIiArIG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApIF07XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgXCJcIiwgYXV0bywgYW5kIHByZXBhcmUgZm9yIGV4dHJhXG5cdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cblx0Ly8gVXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXNcblx0cmV0dXJuICggdmFsICtcblx0XHRhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdGVsZW0sXG5cdFx0XHRuYW1lLFxuXHRcdFx0ZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApLFxuXHRcdFx0dmFsdWVJc0JvcmRlckJveCxcblx0XHRcdHN0eWxlc1xuXHRcdClcblx0KSArIFwicHhcIjtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdFxuXHQvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHlcblx0Y3NzSG9va3M6IHtcblx0XHRvcGFjaXR5OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHRcdC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5XG5cdFx0XHRcdFx0dmFyIHJldCA9IGN1ckNTUyggZWxlbSwgXCJvcGFjaXR5XCIgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmV0ID09PSBcIlwiID8gXCIxXCIgOiByZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gRG9uJ3QgYXV0b21hdGljYWxseSBhZGQgXCJweFwiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXNcblx0Y3NzTnVtYmVyOiB7XG5cdFx0XCJhbmltYXRpb25JdGVyYXRpb25Db3VudFwiOiB0cnVlLFxuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHtcblx0XHRcImZsb2F0XCI6IFwiY3NzRmxvYXRcIlxuXHR9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApO1xuXHRcdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBtYXRjaGVzLFxuXHRcdFx0XHRzdHlsZXMgPSBleHRyYSAmJiBnZXRTdHlsZXMoIGVsZW0gKSxcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSAmJiBhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0KTtcblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiApICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXHRcdFx0XHRcdH0gKVxuXHRcdFx0XHQpICsgXCJweFwiO1xuXHRcdH1cblx0fVxuKTtcblxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xualF1ZXJ5LmVhY2goIHtcblx0bWFyZ2luOiBcIlwiLFxuXHRwYWRkaW5nOiBcIlwiLFxuXHRib3JkZXI6IFwiV2lkdGhcIlxufSwgZnVuY3Rpb24oIHByZWZpeCwgc3VmZml4ICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdID0ge1xuXHRcdGV4cGFuZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGkgPSAwLFxuXHRcdFx0XHRleHBhbmRlZCA9IHt9LFxuXG5cdFx0XHRcdC8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZ1xuXHRcdFx0XHRwYXJ0cyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLnNwbGl0KCBcIiBcIiApIDogWyB2YWx1ZSBdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCA0OyBpKysgKSB7XG5cdFx0XHRcdGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID1cblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBleHBhbmRlZDtcblx0XHR9XG5cdH07XG5cblx0aWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkge1xuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdFx0bGVuID0gbmFtZS5sZW5ndGg7XG5cblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0bWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG1hcDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH1cbn0gKTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgalF1ZXJ5LmVhc2luZy5fZGVmYXVsdDtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsXG5cdFx0XHQvLyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3RzLlxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cblx0XHRcdC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgXCJhdXRvXCIgYXJlIGNvbnZlcnRlZCB0byAwLlxuXHRcdFx0cmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSBcImF1dG9cIiA/IDAgOiByZXN1bHQ7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblxuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHQoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fFxuXHRcdFx0XHRcdGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCBpblByb2dyZXNzLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbmZ1bmN0aW9uIHNjaGVkdWxlKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0aWYgKCBkb2N1bWVudC5oaWRkZW4gPT09IGZhbHNlICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XG5cdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBzY2hlZHVsZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHRcdH1cblxuXHRcdGpRdWVyeS5meC50aWNrKCk7XG5cdH1cbn1cblxuLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseVxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSApO1xuXHRyZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTNcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WVxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdGVhc2luZyA9IHZhbHVlWyAxIF07XG5cdFx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTtcblx0XHR9XG5cblx0XHRpZiAoIGluZGV4ICE9PSBuYW1lICkge1xuXHRcdFx0cHJvcHNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBpbmRleCBdO1xuXHRcdH1cblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07XG5cdFx0aWYgKCBob29rcyAmJiBcImV4cGFuZFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7XG5cdFx0XHRkZWxldGUgcHJvcHNbIG5hbWUgXTtcblxuXHRcdFx0Ly8gTm90IHF1aXRlICQuZXh0ZW5kLCB0aGlzIHdvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLlxuXHRcdFx0Ly8gUmV1c2luZyAnaW5kZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCBcIm5hbWVcIlxuXHRcdFx0Zm9yICggaW5kZXggaW4gdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggISggaW5kZXggaW4gcHJvcHMgKSApIHtcblx0XHRcdFx0XHRwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdO1xuXHRcdFx0XHRcdHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3BlY2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBBbmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7XG5cdHZhciByZXN1bHQsXG5cdFx0c3RvcHBlZCxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRG9uJ3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yXG5cdFx0XHRkZWxldGUgdGljay5lbGVtO1xuXHRcdH0gKSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5XG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyB3YXMgYW4gZW1wdHkgYW5pbWF0aW9uLCBzeW50aGVzaXplIGEgZmluYWwgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uXG5cdFx0XHRpZiAoICFsZW5ndGggKSB7XG5cdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNsdXNpb25cblx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zXG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0XG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcblx0XHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0b3BwZWQgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXHRcdH0gKSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0cmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9XG5cdFx0XHRcdFx0alF1ZXJ5LnByb3h5KCByZXN1bHQuc3RvcCwgcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0gQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXJzOiBbIGRlZmF1bHRQcmVmaWx0ZXIgXSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy5wdXNoKCBjYWxsYmFjayApO1xuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0alF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDBcblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlkZGVuV2l0aGluVHJlZSApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgXCJmaW5pc2hcIiApICkge1xuXHRcdFx0XHRcdGFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0ZG9BbmltYXRpb24uZmluaXNoID0gZG9BbmltYXRpb247XG5cblx0XHRyZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/XG5cdFx0XHR0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOlxuXHRcdFx0dGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHtcblx0XHR2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkge1xuXHRcdFx0dmFyIHN0b3AgPSBob29rcy5zdG9wO1xuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRzdG9wKCBnb3RvRW5kICk7XG5cdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRnb3RvRW5kID0gY2xlYXJRdWV1ZTtcblx0XHRcdGNsZWFyUXVldWUgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApO1xuXG5cdFx0XHRpZiAoIGluZGV4ICkge1xuXHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkge1xuXHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpbmRleCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkge1xuXHRcdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiZcblx0XHRcdFx0XHQoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHtcblxuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIGdvdG9FbmQgKTtcblx0XHRcdFx0XHRkZXF1ZXVlID0gZmFsc2U7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLlxuXHRcdFx0Ly8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaFxuXHRcdFx0Ly8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLlxuXHRcdFx0aWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCgge1xuXHRzbGlkZURvd246IGdlbkZ4KCBcInNob3dcIiApLFxuXHRzbGlkZVVwOiBnZW5GeCggXCJoaWRlXCIgKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KCBcInRvZ2dsZVwiICksXG5cdGZhZGVJbjogeyBvcGFjaXR5OiBcInNob3dcIiB9LFxuXHRmYWRlT3V0OiB7IG9wYWNpdHk6IFwiaGlkZVwiIH0sXG5cdGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogXCJ0b2dnbGVcIiB9XG59LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IGpRdWVyeS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZVxuXHRmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHtcblx0XHR2YXIgdG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0XHRyZXR1cm4gdG9rZW5zLmpvaW4oIFwiIFwiICk7XG5cdH1cblxuXG5mdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHtcblx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fCBcIlwiO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSApIHtcblx0XHRcdGNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXp6ICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmF0dHIoIFwiY2xhc3NcIiwgXCJcIiApO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlICkge1xuXHRcdFx0Y2xhc3NlcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXG5cdFx0XHRcdC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpXG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblx0XHRcdFx0Y2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fFxuXHRcdFx0XHRcdGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdFx0aWYgKCBob29rcyAmJlxuXHRcdFx0XHRcdFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkgKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXQgPSBlbGVtLnZhbHVlO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0aWYgKCB0eXBlb2YgcmV0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdHJldHVybiByZXQucmVwbGFjZSggcnJldHVybiwgXCJcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdHJldHVybiByZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0dmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidmFsdWVcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsICE9IG51bGwgP1xuXHRcdFx0XHRcdHZhbCA6XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seVxuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OClcblx0XHRcdFx0XHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0c3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbiwgaSxcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdGlmICggaW5kZXggPCAwICkge1xuXHRcdFx0XHRcdGkgPSBtYXg7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpID0gb25lID8gaW5kZXggOiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXG5cdFx0XHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdFx0XHRcdFx0IW9wdGlvbi5kaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fFxuXHRcdFx0XHRcdFx0XHRcdCFub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsIFwib3B0Z3JvdXBcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb25cblx0XHRcdFx0XHRcdHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHNcblx0XHRcdFx0XHRcdGlmICggb25lICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5XG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBvcHRpb25TZXQsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksXG5cdFx0XHRcdFx0aSA9IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovXG5cblx0XHRcdFx0XHRpZiAoIG9wdGlvbi5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1hc3NpZ24gKi9cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goIFsgXCJyYWRpb1wiLCBcImNoZWNrYm94XCIgXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0ge1xuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFsKCksIHZhbHVlICkgPiAtMSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gbnVsbCA/IFwib25cIiA6IGVsZW0udmFsdWU7XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxudmFyIHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvO1xuXG5qUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZXZlbnQsIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHtcblxuXHRcdHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoIFwiLlwiICkgOiBbXTtcblxuXHRcdGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3dcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoIFwiLlwiICkgPiAtMSApIHtcblxuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxuXHRcdFx0bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoIFwiLlwiICk7XG5cdFx0XHR0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpO1xuXHRcdFx0bmFtZXNwYWNlcy5zb3J0KCk7XG5cdFx0fVxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZiggXCI6XCIgKSA8IDAgJiYgXCJvblwiICsgdHlwZTtcblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZ1xuXHRcdGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0ZXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSBcIm9iamVjdFwiICYmIGV2ZW50ICk7XG5cblx0XHQvLyBUcmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlzIHRydWUpXG5cdFx0ZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7XG5cdFx0ZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApO1xuXHRcdGV2ZW50LnJuYW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgP1xuXHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICkgOlxuXHRcdFx0bnVsbDtcblxuXHRcdC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZFxuXHRcdGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBlbGVtO1xuXHRcdH1cblxuXHRcdC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3Rcblx0XHRkYXRhID0gZGF0YSA9PSBudWxsID9cblx0XHRcdFsgZXZlbnQgXSA6XG5cdFx0XHRqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTtcblxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcblx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSlcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2Rcblx0XHRcdFx0XHR0bXAgPSBlbGVtWyBvbnR5cGUgXTtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7XG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxualF1ZXJ5LmVhY2goICggXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH1cbn0gKTtcblxuXG5cblxuc3VwcG9ydC5mb2N1c2luID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IGpRdWVyeS5ub3coKTtcblxudmFyIHJxdWVyeSA9ICggL1xcPy8gKTtcblxuXG5cbi8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmdcbmpRdWVyeS5wYXJzZVhNTCA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHR2YXIgeG1sO1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0Ly8gSUUgdGhyb3dzIG9uIHBhcnNlRnJvbVN0cmluZyB3aXRoIGludmFsaWQgaW5wdXQuXG5cdHRyeSB7XG5cdFx0eG1sID0gKCBuZXcgd2luZG93LkRPTVBhcnNlcigpICkucGFyc2VGcm9tU3RyaW5nKCBkYXRhLCBcInRleHQveG1sXCIgKTtcblx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0eG1sID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKCAheG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCJwYXJzZXJlcnJvclwiICkubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5lcnJvciggXCJJbnZhbGlkIFhNTDogXCIgKyBkYXRhICk7XG5cdH1cblx0cmV0dXJuIHhtbDtcbn07XG5cblxudmFyXG5cdHJicmFja2V0ID0gL1xcW1xcXSQvLFxuXHRyQ1JMRiA9IC9cXHI/XFxuL2csXG5cdHJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxcblx0cnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO1xuXG5mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7XG5cdHZhciBuYW1lO1xuXG5cdGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cblx0XHRcdFx0Ly8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLlxuXHRcdFx0XHRhZGQoIHByZWZpeCwgdiApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyhcblx0XHRcdFx0XHRwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsID8gaSA6IFwiXCIgKSArIFwiXVwiLFxuXHRcdFx0XHRcdHYsXG5cdFx0XHRcdFx0dHJhZGl0aW9uYWwsXG5cdFx0XHRcdFx0YWRkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiBqUXVlcnkudHlwZSggb2JqICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1bmN0aW9uICkge1xuXG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlXG5cdFx0XHR2YXIgdmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9uICkgP1xuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb24oKSA6XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbjtcblxuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArXG5cdFx0XHRcdGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdH07XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBhICkgfHwgKCBhLmpxdWVyeSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9ICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0gKVxuXHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9IClcblx0XHQubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdH0gKS5nZXQoKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyMjAgPSAvJTIwL2csXG5cdHJoYXNoID0gLyMuKiQvLFxuXHRyYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblx0b3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9IFwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxM1xuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICkge1xuXHRcdFx0XHRjYWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgcy5kYXRhO1xuXG5cdFx0XHRcdC8vICM5NjgyOiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnlcblx0XHRcdFx0ZGVsZXRlIHMuZGF0YTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZFxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCBcIiQxXCIgKTtcblx0XHRcdFx0dW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgKCBub25jZSsrICkgKyB1bmNhY2hlZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUHV0IGhhc2ggYW5kIGFudGktY2FjaGUgb24gdGhlIFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKVxuXHRcdFx0cy51cmwgPSBjYWNoZVVSTCArIHVuY2FjaGVkO1xuXG5cdFx0Ly8gQ2hhbmdlICclMjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgpXG5cdFx0fSBlbHNlIGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiZcblx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiICkuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICkge1xuXHRcdFx0cy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU1vZGlmaWVkLVNpbmNlXCIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTm9uZS1NYXRjaFwiLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudFxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJDb250ZW50LVR5cGVcIiwgcy5jb250ZW50VHlwZSApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcblx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFxuXHRcdFx0XCJBY2NlcHRcIixcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gP1xuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArXG5cdFx0XHRcdFx0KCBzLmRhdGFUeXBlc1sgMCBdICE9PSBcIipcIiA/IFwiLCBcIiArIGFsbFR5cGVzICsgXCI7IHE9MC4wMVwiIDogXCJcIiApIDpcblx0XHRcdFx0cy5hY2NlcHRzWyBcIipcIiBdXG5cdFx0KTtcblxuXHRcdC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvblxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0XG5cdFx0aWYgKCBzLmJlZm9yZVNlbmQgJiZcblx0XHRcdCggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwgY29tcGxldGVkICkgKSB7XG5cblx0XHRcdC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVyblxuXHRcdFx0cmV0dXJuIGpxWEhSLmFib3J0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uXG5cdFx0c3RyQWJvcnQgPSBcImFib3J0XCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHNcblx0XHRjb21wbGV0ZURlZmVycmVkLmFkZCggcy5jb21wbGV0ZSApO1xuXHRcdGpxWEhSLmRvbmUoIHMuc3VjY2VzcyApO1xuXHRcdGpxWEhSLmZhaWwoIHMuZXJyb3IgKTtcblxuXHRcdC8vIEdldCB0cmFuc3BvcnRcblx0XHR0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydFxuXHRcdGlmICggIXRyYW5zcG9ydCApIHtcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSAxO1xuXG5cdFx0XHQvLyBTZW5kIGdsb2JhbCBldmVudFxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFNlbmRcIiwgWyBqcVhIUiwgcyBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5kLCBzdG9wIHRoZXJlXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KCBcInRpbWVvdXRcIiApO1xuXHRcdFx0XHR9LCBzLnRpbWVvdXQgKTtcblx0XHRcdH1cblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29tcGxldGVkID0gZmFsc2U7XG5cdFx0XHRcdHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gUmV0aHJvdyBwb3N0LWNvbXBsZXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRzXG5cdFx0XHRcdGRvbmUoIC0xLCBlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gSWdub3JlIHJlcGVhdCBpbnZvY2F0aW9uc1xuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29tcGxldGVkID0gdHJ1ZTtcblxuXHRcdFx0Ly8gQ2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHNcblx0XHRcdGlmICggdGltZW91dFRpbWVyICkge1xuXHRcdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb25cblx0XHRcdC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcblxuXHRcdFx0Ly8gU2V0IHJlYWR5U3RhdGVcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XG5cblx0XHRcdC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsXG5cdFx0XHRpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDtcblxuXHRcdFx0Ly8gR2V0IHJlc3BvbnNlIGRhdGFcblx0XHRcdGlmICggcmVzcG9uc2VzICkge1xuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiTGFzdC1Nb2RpZmllZFwiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJldGFnXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbnRcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlclxuXHRcdFx0XHRpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdG9wXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImdldFwiLCBcInBvc3RcIiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkge1xuXHRqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7XG5cblx0XHQvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZFxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybClcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdHVybDogdXJsLFxuXHRcdFx0dHlwZTogbWV0aG9kLFxuXHRcdFx0ZGF0YVR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogY2FsbGJhY2tcblx0XHR9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTtcblx0fTtcbn0gKTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoIHtcblx0XHR1cmw6IHVybCxcblxuXHRcdC8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KVxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0Y2FjaGU6IHRydWUsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cdFx0XCJ0aHJvd3NcIjogdHJ1ZVxuXHR9ICk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0d3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIHdyYXA7XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxuXHRcdFx0XHRjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTtcblxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XG5cdFx0XHRcdGNvbnRlbnRzLndyYXBBbGwoIGh0bWwgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VsZi5hcHBlbmQoIGh0bWwgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggMCwgXCJlcnJvclwiICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0MjA3XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0yNDk4KVxuXHRcdFx0XHRcdFx0XHRcdFx0KCB4aHIucmVzcG9uc2VUeXBlIHx8IFwidGV4dFwiICkgIT09IFwidGV4dFwiICB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0gOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdGVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKS5wcm9wKCB7XG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSApLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID9cblx0XHRcdHMuanNvbnBDYWxsYmFjaygpIDpcblx0XHRcdHMuanNvbnBDYWxsYmFjaztcblxuXHRcdC8vIEluc2VydCBjYWxsYmFjayBpbnRvIHVybCBvciBmb3JtIGRhdGFcblx0XHRpZiAoIGpzb25Qcm9wICkge1xuXHRcdFx0c1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCBcIiQxXCIgKyBjYWxsYmFja05hbWUgKTtcblx0XHR9IGVsc2UgaWYgKCBzLmpzb25wICE9PSBmYWxzZSApIHtcblx0XHRcdHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmpzb25wICsgXCI9XCIgKyBjYWxsYmFja05hbWU7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvblxuXHRcdHMuY29udmVydGVyc1sgXCJzY3JpcHQganNvblwiIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBGb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0XG5cdFx0XHRpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7XG5cblx0XHRcdC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZFxuXHRcdFx0XHRzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHRcdFx0Ly8gU2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBmb3IgZnV0dXJlIHVzZVxuXHRcdFx0XHRvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZVxuXHRcdFx0aWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSApIHtcblx0XHRcdFx0b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDtcblx0XHR9ICk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSApO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5XG4vLyBJbiBTYWZhcmkgOCBkb2N1bWVudHMgY3JlYXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50XG4vLyBjb2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IG9uZS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC5cbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzdcbnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHtcblx0dmFyIGJvZHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKS5ib2R5O1xuXHRib2R5LmlubmVySFRNTCA9IFwiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT5cIjtcblx0cmV0dXJuIGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggPT09IDI7XG59ICkoKTtcblxuXG4vLyBBcmd1bWVudCBcImRhdGFcIiBzaG91bGQgYmUgc3RyaW5nIG9mIGh0bWxcbi8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCxcbi8vIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoIHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cblx0dmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0cztcblxuXHRpZiAoICFjb250ZXh0ICkge1xuXG5cdFx0Ly8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGltbWVkaWF0ZWx5XG5cdFx0Ly8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb25cblx0XHRpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ICkge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApO1xuXG5cdFx0XHQvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnRcblx0XHRcdC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzXG5cdFx0XHQvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1KVxuXHRcdFx0YmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJiYXNlXCIgKTtcblx0XHRcdGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XG5cdFx0XHRjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50O1xuXHRcdH1cblx0fVxuXG5cdHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApO1xuXHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApO1xuXG5cdGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApO1xufTtcblxuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxuXHRcdHNlbGYgPSB0aGlzLFxuXHRcdG9mZiA9IHVybC5pbmRleE9mKCBcIiBcIiApO1xuXG5cdGlmICggb2ZmID4gLTEgKSB7XG5cdFx0c2VsZWN0b3IgPSBzdHJpcEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXG5cdFx0XHQvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OClcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZzZXQgKSApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdFx0Ly8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRlclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHR0aGlzIDpcblx0XHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dmFyIGRvYywgZG9jRWxlbSwgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHRyZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHRkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHR3aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0uY2xpZW50VG9wLFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRMZWZ0XG5cdFx0fTtcblx0fSxcblxuXHRwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAhdGhpc1sgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gRml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50T2Zmc2V0ID0ge3RvcDowLCBsZWZ0OiAwfSxcblx0XHQvLyBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIEdldCAqcmVhbCogb2Zmc2V0UGFyZW50XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCgpO1xuXG5cdFx0XHQvLyBHZXQgY29ycmVjdCBvZmZzZXRzXG5cdFx0XHRvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXHRcdFx0aWYgKCAhbm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCBcImh0bWxcIiApICkge1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVyc1xuXHRcdFx0cGFyZW50T2Zmc2V0ID0ge1xuXHRcdFx0XHR0b3A6IHBhcmVudE9mZnNldC50b3AgKyBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICksXG5cdFx0XHRcdGxlZnQ6IHBhcmVudE9mZnNldC5sZWZ0ICsgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sIFwiYm9yZGVyTGVmdFdpZHRoXCIsIHRydWUgKVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpblRvcFwiLCB0cnVlICksXG5cdFx0XHRsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIsIHRydWUgKVxuXHRcdH07XG5cdH0sXG5cblx0Ly8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG5cdC8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm5cblx0Ly8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93XG5cdC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnRcblx0Ly8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZlxuXHQvL1xuXHQvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXNcblx0Ly8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuXG5cdC8vXG5cdC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDtcblxuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblxuXHRcdFx0Ly8gQ29hbGVzY2UgZG9jdW1lbnRzIGFuZCB3aW5kb3dzXG5cdFx0XHR2YXIgd2luO1xuXHRcdFx0aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0d2luID0gZWxlbTtcblx0XHRcdH0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW0uZGVmYXVsdFZpZXc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiB3aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHdpbiApIHtcblx0XHRcdFx0d2luLnNjcm9sbFRvKFxuXHRcdFx0XHRcdCF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsXG5cdFx0XHRcdFx0dG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1bIG1ldGhvZCBdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH07XG59ICk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDlcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3XG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cblx0XHRcdFx0Ly8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0XG5cdFx0XHRcdHJldHVybiBybnVtbm9ucHgudGVzdCggY29tcHV0ZWQgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgXCJweFwiIDpcblx0XHRcdFx0XHRjb21wdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59ICk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsIFwiXCI6IFwib3V0ZXJcIiArIG5hbWUgfSxcblx0XHRmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHtcblxuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2pxdWVyeS9kaXN0L2pxdWVyeS5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +eval("var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/MzY5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/**\n * First we will load all of this project's JavaScript dependencies which\n * include Vue and Vue Resource. This gives a great starting point for\n * building robust, powerful web applications using Vue and Laravel.\n */\n\n__webpack_require__(17);\n/**\n * Next, we will create a fresh Vue application instance and attach it to\n * the page. Then, you may begin adding components to this application\n * or customize the JavaScript scaffolding to fit your unique needs.\n */\nVue.component('passport-clients', __webpack_require__(35));\n\nVue.component('passport-authorized-clients', __webpack_require__(34));\n\nVue.component('passport-personal-access-tokens', __webpack_require__(36));\n\nVue.component('importer', __webpack_require__(33));\n\n// Commented out currently to avoid trying to load vue everywhere.\n// const app = new Vue({\n// el: '#app'\n// });//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvYXNzZXRzL2pzL3Z1ZS5qcz84ODAzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBGaXJzdCB3ZSB3aWxsIGxvYWQgYWxsIG9mIHRoaXMgcHJvamVjdCdzIEphdmFTY3JpcHQgZGVwZW5kZW5jaWVzIHdoaWNoXG4gKiBpbmNsdWRlIFZ1ZSBhbmQgVnVlIFJlc291cmNlLiBUaGlzIGdpdmVzIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgZm9yXG4gKiBidWlsZGluZyByb2J1c3QsIHBvd2VyZnVsIHdlYiBhcHBsaWNhdGlvbnMgdXNpbmcgVnVlIGFuZCBMYXJhdmVsLlxuICovXG5cbnJlcXVpcmUoJy4vYm9vdHN0cmFwJyk7XG4vKipcbiAqIE5leHQsIHdlIHdpbGwgY3JlYXRlIGEgZnJlc2ggVnVlIGFwcGxpY2F0aW9uIGluc3RhbmNlIGFuZCBhdHRhY2ggaXQgdG9cbiAqIHRoZSBwYWdlLiBUaGVuLCB5b3UgbWF5IGJlZ2luIGFkZGluZyBjb21wb25lbnRzIHRvIHRoaXMgYXBwbGljYXRpb25cbiAqIG9yIGN1c3RvbWl6ZSB0aGUgSmF2YVNjcmlwdCBzY2FmZm9sZGluZyB0byBmaXQgeW91ciB1bmlxdWUgbmVlZHMuXG4gKi9cblZ1ZS5jb21wb25lbnQoXG4gICAgJ3Bhc3Nwb3J0LWNsaWVudHMnLFxuICAgIHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYXNzcG9ydC9DbGllbnRzLnZ1ZScpXG4pO1xuXG5WdWUuY29tcG9uZW50KFxuICAgICdwYXNzcG9ydC1hdXRob3JpemVkLWNsaWVudHMnLFxuICAgIHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYXNzcG9ydC9BdXRob3JpemVkQ2xpZW50cy52dWUnKVxuKTtcblxuVnVlLmNvbXBvbmVudChcbiAgICAncGFzc3BvcnQtcGVyc29uYWwtYWNjZXNzLXRva2VucycsXG4gICAgcmVxdWlyZSgnLi9jb21wb25lbnRzL3Bhc3Nwb3J0L1BlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZScpXG4pO1xuXG5WdWUuY29tcG9uZW50KFxuICAgICdpbXBvcnRlcicsXG4gICAgcmVxdWlyZSgnLi9jb21wb25lbnRzL2ltcG9ydGVyL2ltcG9ydGVyLnZ1ZScpXG4pO1xuXG4vLyBDb21tZW50ZWQgb3V0IGN1cnJlbnRseSB0byBhdm9pZCB0cnlpbmcgdG8gbG9hZCB2dWUgZXZlcnl3aGVyZS5cbi8vIGNvbnN0IGFwcCA9IG5ldyBWdWUoe1xuLy8gICAgIGVsOiAnI2FwcCdcbi8vIH0pO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHJlc291cmNlcy9hc3NldHMvanMvdnVlLmpzIl0sIm1hcHBpbmdzIjoiO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 6 */, +/* 7 */, +/* 8 */, +/* 9 */, +/* 10 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n props: ['alertType', 'title'],\n\n computed: {\n alertClassName: function alertClassName() {\n return 'alert-' + this.alertType;\n }\n },\n\n methods: {\n hideEvent: function hideEvent() {\n this.$emit('hide');\n }\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYWxlcnQudnVlPzAyNDYiXSwic291cmNlc0NvbnRlbnQiOlsiXG48c3R5bGUgc2NvcGVkPlxuPC9zdHlsZT5cblxuPHRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgOmNsYXNzPVwiYWxlcnRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnRcIiA6Y2xhc3M9XCJhbGVydENsYXNzTmFtZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBAY2xpY2s9XCJoaWRlRXZlbnRcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBmYWEtcHVsc2UgYW5pbWF0ZWRcIiB2LXNob3c9XCJhbGVydFR5cGUgPT0gJ3N1Y2Nlc3MnXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGl0bGUgfX0gPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBjb21wb25lbnQncyBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvcHM6IFsnYWxlcnRUeXBlJywgJ3RpdGxlJ10sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIGFsZXJ0Q2xhc3NOYW1lKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQtJyArIHRoaXMuYWxlcnRUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGhpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdoaWRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGFsZXJ0LnZ1ZT8wZTE3ZjQyNCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7QUFFQTs7O0FBSUE7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBWkEiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 11 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n props: ['errors']\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW1wb3J0ZXItZXJyb3JzLnZ1ZT84NDdjIl0sInNvdXJjZXNDb250ZW50IjpbIlxuPHN0eWxlIHNjb3BlZD5cbjwvc3R5bGU+XG5cbjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCIgdi1pZj1cImVycm9yc1wiPlxuICA8ZGl2IGNsYXNzPVwiYm94LWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiPlxuICAgICAgPHN0cm9uZz5XYXJuaW5nPC9zdHJvbmc+IFNvbWUgRXJyb3JzIG9jY3VyZWQgd2hpbGUgaW1wb3J0aW5nXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzLXRhYmxlXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCIgaWQ9XCJlcnJvcnMtdGFibGVcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0aD5JdGVtPC90aD5cbiAgICAgICAgICA8dGg+RXJyb3JzPC90aD5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciB2LWZvcj1cIihlcnJvciwgaXRlbSkgaW4gZXJyb3JzXCI+XG4gICAgICAgICAgICA8dGQ+e3sgaXRlbSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgdi1mb3I9XCIodmFsdWUsIGZpZWxkKSBpbiBlcnJvclwiPlxuICAgICAgICAgICAgICAgIDxiPnt7IGZpZWxkIH19OjwvYj5cbiAgICAgICAgICAgICAgICA8c3BhbiB2LWZvcj1cImVycm9yU3RyaW5nIGluIHZhbHVlXCI+e3tlcnJvclN0cmluZ1swXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIGNvbXBvbmVudCdzIGRhdGEuXG4gICAgICAgICAqL1xuICAgICAgICAgcHJvcHM6IFsnZXJyb3JzJ10sXG4gICAgfVxuXG48L3NjcmlwdD5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBpbXBvcnRlci1lcnJvcnMudnVlPzU4ZDczYzkxIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtDQTtBQUVBOzs7QUFHQTtBQUpBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 12 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n__webpack_require__(18);\nvar modal = __webpack_require__(46).modal;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n data: function data() {\n return {\n files: [],\n displayImportModal: false,\n activeFile: null,\n alert: {\n type: null,\n message: null,\n visible: false\n },\n modal: {\n importType: 'asset',\n update: false,\n importTypes: [{ id: 'asset', text: 'Assets' }, { id: 'accessory', text: 'Accessories' }, { id: 'consumable', text: 'Consumable' }, { id: 'component', text: 'Components' }, { id: 'license', text: 'Licenses' }],\n statusText: null\n },\n importErrors: null,\n progress: {\n currentClass: \"progress-bar-warning\",\n currentPercent: \"0\",\n statusText: '',\n visible: false\n }\n };\n },\n\n\n /**\n * Prepare the component (Vue 2.x).\n */\n mounted: function mounted() {\n this.fetchFiles();\n var vm = this;\n $('#fileupload').fileupload({\n dataType: 'json',\n done: function done(e, data) {\n vm.progress.currentClass = \"progress-bar-success\";\n vm.progress.statusText = \"Success!\";\n vm.files = data.result.files.concat(vm.files);\n },\n add: function add(e, data) {\n data.headers = {\n \"X-Requested-With\": 'XMLHttpRequest',\n \"X-CSRF-TOKEN\": Laravel.csrfToken\n };\n data.process().done(function () {\n data.submit();\n });\n vm.progress.visible = true;\n },\n progress: function progress(e, data) {\n var progress = parseInt((data.loaded / data.total * 100, 10));\n vm.progress.currentPercent = progress;\n vm.progress.statusText = progress + '% Complete';\n },\n fail: function fail(e, data) {\n vm.progress.currentClass = \"progress-bar-danger\";\n // Display any errors returned from the $.ajax()\n vm.progress.statusText = data.jqXHR.responseJSON.messages;\n }\n });\n },\n\n\n methods: {\n fetchFiles: function fetchFiles() {\n var _this = this;\n\n this.$http.get('/api/v1/imports').then(function (_ref) {\n var data = _ref.data;\n return _this.files = data;\n }, // Success\n //Fail\n function (response) {\n _this.alert.type = \"danger\";\n _this.alert.visible = true;\n _this.alert.message = \"Something went wrong fetching files...\";\n });\n },\n deleteFile: function deleteFile(file, key) {\n var _this2 = this;\n\n this.$http.delete(\"/api/v1/imports/\" + file.id).then(function (response) {\n return _this2.files.splice(key, 1);\n }, // Success\n function (response) {\n // Fail\n _this2.alert.type = \"danger\";\n _this2.alert.visible = true;\n _this2.alert.message = response.body.messages;\n });\n },\n showModal: function showModal(file) {\n this.activeFile = file;\n this.displayImportModal = true;\n },\n postSave: function postSave() {\n var _this3 = this;\n\n this.modal.statusText = \"Processing...\";\n this.$http.post('/api/v1/imports/process/' + this.activeFile.id, {\n 'import-update': this.modal.update,\n 'import-type': this.modal.importType\n }).then(function (response) {\n // Success\n _this3.modal.statusText = \"Success... Redirecting.\";\n window.location.href = response.body.messages.redirect_url;\n }, function (response) {\n // Failure\n if (response.body.status == 'import-errors') {\n _this3.importErrors = response.body.messages;\n } else {\n _this3.alert.message = response.body.messages;\n _this3.alert.type = \"danger\";\n _this3.alert.visible = true;\n }\n _this3.displayImportModal = false;\n });\n }\n },\n\n computed: {\n progressWidth: function progressWidth() {\n return \"width: \" + this.progress.currentPercent * 10 + '%';\n }\n },\n\n components: {\n modal: modal,\n errors: __webpack_require__(32),\n alert: __webpack_require__(31),\n select2: __webpack_require__(37)\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW1wb3J0ZXIudnVlPzhkMjAiXSwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlIHNjb3BlZD5cbnRkIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG59XG5cbnRoIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG59XG48L3N0eWxlPlxuPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGFsZXJ0IHYtc2hvdz1cImFsZXJ0LnZpc2libGVcIiA6YWxlcnRUeXBlPVwiYWxlcnQudHlwZVwiIHYtb246aGlkZT1cImFsZXJ0LnZpc2libGUgPSBmYWxzZVwiPnt7IGFsZXJ0Lm1lc3NhZ2UgfX08L2FsZXJ0PlxuICAgICAgICA8ZXJyb3JzIDplcnJvcnM9XCJpbXBvcnRFcnJvcnNcIj48L2Vycm9ycz5cbiAgICAgICAgPG1vZGFsIHYtbW9kZWw9XCJkaXNwbGF5SW1wb3J0TW9kYWxcIiBlZmZlY3Q9XCJmYWRlXCI+XG4gICAgICAgICAgICA8ZGl2IHNsb3Q9XCJtb2RhbC1oZWFkZXJcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+SW1wb3J0IEZpbGU6PC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzbG90PVwibW9kYWwtYm9keVwiIGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wteHMtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW1wb3J0LXR5cGVcIj5JbXBvcnQgVHlwZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IGNvbC14cy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdDIgOm9wdGlvbnM9XCJtb2RhbC5pbXBvcnRUeXBlc1wiIHYtbW9kZWw9XCJtb2RhbC5pbXBvcnRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBkaXNhYmxlZCB2YWx1ZT1cIjBcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Mj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wteHMtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW1wb3J0LXVwZGF0ZVwiPlVwZGF0ZSBFeGlzdGluZyBWYWx1ZXM/OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTggY29sLXhzLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImltcG9ydC11cGRhdGVcIiB2LW1vZGVsPVwibW9kYWwudXBkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiIHNsb3Q9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtc3VjY2VzcyBjb2wtbWQtNSBjb2wtbWQtb2Zmc2V0LTFcIiBzdHlsZT1cInRleHQtYWxpZ246bGVmdFwiIHYtaWY9XCJtb2RhbC5zdGF0dXNUZXh0XCI+e3sgdGhpcy5tb2RhbC5zdGF0dXNUZXh0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBAY2xpY2s9XCJkaXNwbGF5SW1wb3J0TW9kYWwgPSBmYWxzZVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgQGNsaWNrPVwicG9zdFNhdmVcIj5Qcm9jZXNzPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tb2RhbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBmaWxlaW5wdXQtYnV0dG9uIHNwYW4gaXMgdXNlZCB0byBzdHlsZSB0aGUgZmlsZSBpbnB1dCBmaWVsZCBhcyBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLWluZm8gZmlsZWlucHV0LWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZWxlY3QgSW1wb3J0IEZpbGUuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGZpbGUgaW5wdXQgZmllbGQgdXNlZCBhcyB0YXJnZXQgZm9yIHRoZSBmaWxlIHVwbG9hZCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImZpbGV1cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJmaWxlc1tdXCIgZGF0YS11cmw9XCIvYXBpL3YxL2ltcG9ydHNcIiBhY2NlcHQ9XCJ0ZXh0L2NzdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCIgdi1zaG93PVwicHJvZ3Jlc3MudmlzaWJsZVwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206MjBweFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQtYWN0aXZlXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA4cHhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIiA6Y2xhc3M9XCJwcm9ncmVzcy5jdXJyZW50Q2xhc3NcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiA6c3R5bGU9XCJwcm9ncmVzc1dpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvZ3Jlc3Muc3RhdHVzVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwicGFkZGluZy10b3A6IDMwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZFwiIGlkPVwidXBsb2FkLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5GaWxlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DcmVhdGVkPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TaXplPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJmaWxlIGluIGZpbGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZpbGUuZmlsZV9wYXRoIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZmlsZS5jcmVhdGVkX2F0IH19IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZpbGUuZmlsZXNpemUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWluZm9cIiBAY2xpY2s9XCJzaG93TW9kYWwoZmlsZSlcIj5Qcm9jZXNzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIEBjbGljaz1cImRlbGV0ZUZpbGUoZmlsZSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoIGljb24td2hpdGVcIj48L2k+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgcmVxdWlyZSgnYmx1ZWltcC1maWxlLXVwbG9hZCcpO1xuICAgIHZhciBtb2RhbCA9IHJlcXVpcmUoJ3Z1ZS1zdHJhcCcpLm1vZGFsXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgY29tcG9uZW50J3MgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpbGVzOiBbXSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5SW1wb3J0TW9kYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUZpbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgYWxlcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RhbDoge1xuICAgICAgICAgICAgICAgICAgICBpbXBvcnRUeXBlOiAnYXNzZXQnLFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBpbXBvcnRUeXBlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2Fzc2V0JywgdGV4dDogJ0Fzc2V0cycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdhY2Nlc3NvcnknLCB0ZXh0OiAnQWNjZXNzb3JpZXMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnY29uc3VtYWJsZScsIHRleHQ6ICdDb25zdW1hYmxlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2NvbXBvbmVudCcsIHRleHQ6ICdDb21wb25lbnRzJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2xpY2Vuc2UnLCB0ZXh0OiAnTGljZW5zZXMnIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGltcG9ydEVycm9yczogbnVsbCxcbiAgICAgICAgICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2xhc3M6IFwicHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIixcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFBlcmNlbnQ6IFwiMFwiLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmVwYXJlIHRoZSBjb21wb25lbnQgKFZ1ZSAyLngpLlxuICAgICAgICAgKi9cbiAgICAgICAgbW91bnRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hGaWxlcygpO1xuICAgICAgICAgICAgbGV0IHZtID0gdGhpcztcbiAgICAgICAgICAgICQoJyNmaWxldXBsb2FkJykuZmlsZXVwbG9hZCh7XG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBkb25lKGUsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3MuY3VycmVudENsYXNzPVwicHJvZ3Jlc3MtYmFyLXN1Y2Nlc3NcIjtcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3Muc3RhdHVzVGV4dCA9IFwiU3VjY2VzcyFcIjtcbiAgICAgICAgICAgICAgICAgICAgdm0uZmlsZXMgPSBkYXRhLnJlc3VsdC5maWxlcy5jb25jYXQodm0uZmlsZXMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWRkKGUsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5oZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJYLVJlcXVlc3RlZC1XaXRoXCI6ICdYTUxIdHRwUmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlgtQ1NSRi1UT0tFTlwiOiBMYXJhdmVsLmNzcmZUb2tlblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnByb2Nlc3MoKS5kb25lKCAoKSA9PiB7ZGF0YS5zdWJtaXQoKTt9KTtcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3MudmlzaWJsZT10cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3MoZSwgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZ3Jlc3MgPSBwYXJzZUludCgoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkpO1xuICAgICAgICAgICAgICAgICAgICB2bS5wcm9ncmVzcy5jdXJyZW50UGVyY2VudCA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICB2bS5wcm9ncmVzcy5zdGF0dXNUZXh0ID0gcHJvZ3Jlc3MrJyUgQ29tcGxldGUnO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmFpbChlLCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHZtLnByb2dyZXNzLmN1cnJlbnRDbGFzcyA9IFwicHJvZ3Jlc3MtYmFyLWRhbmdlclwiO1xuICAgICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IGFueSBlcnJvcnMgcmV0dXJuZWQgZnJvbSB0aGUgJC5hamF4KClcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3Muc3RhdHVzVGV4dCA9IGRhdGEuanFYSFIucmVzcG9uc2VKU09OLm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgZmV0Y2hGaWxlcygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmdldCgnL2FwaS92MS9pbXBvcnRzJylcbiAgICAgICAgICAgICAgICAudGhlbiggKHtkYXRhfSkgPT4gdGhpcy5maWxlcyA9IGRhdGEsIC8vIFN1Y2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgLy9GYWlsXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQudHlwZT1cImRhbmdlclwiO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LnZpc2libGU9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5tZXNzYWdlPVwiU29tZXRoaW5nIHdlbnQgd3JvbmcgZmV0Y2hpbmcgZmlsZXMuLi5cIjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVGaWxlKGZpbGUsIGtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAuZGVsZXRlKFwiL2FwaS92MS9pbXBvcnRzL1wiK2ZpbGUuaWQpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB0aGlzLmZpbGVzLnNwbGljZShrZXksIDEpLCAvLyBTdWNjZXNzXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gey8vIEZhaWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQudHlwZT1cImRhbmdlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC52aXNpYmxlPXRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lm1lc3NhZ2U9cmVzcG9uc2UuYm9keS5tZXNzYWdlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd01vZGFsKGZpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbGUgPSBmaWxlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheUltcG9ydE1vZGFsID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvc3RTYXZlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWwuc3RhdHVzVGV4dCA9IFwiUHJvY2Vzc2luZy4uLlwiO1xuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL2FwaS92MS9pbXBvcnRzL3Byb2Nlc3MvJyt0aGlzLmFjdGl2ZUZpbGUuaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydC11cGRhdGUnOiB0aGlzLm1vZGFsLnVwZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydC10eXBlJzogdGhpcy5tb2RhbC5pbXBvcnRUeXBlXG4gICAgICAgICAgICAgICAgfSkudGhlbiggKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zdGF0dXNUZXh0ID0gXCJTdWNjZXNzLi4uIFJlZGlyZWN0aW5nLlwiO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlc3BvbnNlLmJvZHkubWVzc2FnZXMucmVkaXJlY3RfdXJsO1xuICAgICAgICAgICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBGYWlsdXJlXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmJvZHkuc3RhdHVzID09ICdpbXBvcnQtZXJyb3JzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRFcnJvcnMgPSByZXNwb25zZS5ib2R5Lm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5tZXNzYWdlPSByZXNwb25zZS5ib2R5Lm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC50eXBlPVwiZGFuZ2VyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LnZpc2libGU9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlJbXBvcnRNb2RhbD1mYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICBwcm9ncmVzc1dpZHRoKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIndpZHRoOiBcIit0aGlzLnByb2dyZXNzLmN1cnJlbnRQZXJjZW50KjEwKyclJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBtb2RhbCxcbiAgICAgICAgICAgIGVycm9yczogcmVxdWlyZSgnLi9pbXBvcnRlci1lcnJvcnMudnVlJyksXG4gICAgICAgICAgICBhbGVydDogcmVxdWlyZSgnLi4vYWxlcnQudnVlJyksXG4gICAgICAgICAgICBzZWxlY3QyOiByZXF1aXJlKCcuLi9zZWxlY3QyLnZ1ZScpXG4gICAgICAgIH1cbiAgICB9XG5cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGltcG9ydGVyLnZ1ZT8zNzZkZmU3NCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdHQTtBQUNBO0FBQ0E7QUFFQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUhBOztBQU1BO0FBQ0E7QUFDQTtBQU9BO0FBVkE7QUFZQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBdEJBO0FBOEJBO0FBQ0E7QUFDQTtBQURBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUZBOzs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQTJCQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQUE7O0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBQ0E7QUFDQTtBQUFBOztBQUVBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQS9DQTtBQUNBOztBQWtEQTtBQUNBO0FBQ0E7QUFIQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUE5SEEiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 13 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n data: function data() {\n return {\n tokens: []\n };\n },\n\n\n /**\n * Prepare the component (Vue 1.x).\n */\n ready: function ready() {\n this.prepareComponent();\n },\n\n\n /**\n * Prepare the component (Vue 2.x).\n */\n mounted: function mounted() {\n this.prepareComponent();\n },\n\n\n methods: {\n /**\n * Prepare the component (Vue 2.x).\n */\n prepareComponent: function prepareComponent() {\n this.getTokens();\n },\n\n\n /**\n * Get all of the authorized tokens for the user.\n */\n getTokens: function getTokens() {\n var _this = this;\n\n this.$http.get('/oauth/tokens').then(function (response) {\n _this.tokens = response.data;\n });\n },\n\n\n /**\n * Revoke the given token.\n */\n revoke: function revoke(token) {\n var _this2 = this;\n\n this.$http.delete('/oauth/tokens/' + token.id).then(function (response) {\n _this2.getTokens();\n });\n }\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vQXV0aG9yaXplZENsaWVudHMudnVlPzA3YjUiXSwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlIHNjb3BlZD5cbiAgICAuYWN0aW9uLWxpbmsge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLm0tYi1ub25lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG48L3N0eWxlPlxuXG48dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiB2LWlmPVwidG9rZW5zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5BdXRob3JpemVkIEFwcGxpY2F0aW9uczwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBdXRob3JpemVkIFRva2VucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVybGVzcyBtLWItbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U2NvcGVzPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJ0b2tlbiBpbiB0b2tlbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGllbnQgTmFtZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRva2VuLmNsaWVudC5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTY29wZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwidG9rZW4uc2NvcGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b2tlbi5zY29wZXMuam9pbignLCAnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmV2b2tlIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmsgdGV4dC1kYW5nZXJcIiBAY2xpY2s9XCJyZXZva2UodG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV2b2tlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIGNvbXBvbmVudCdzIGRhdGEuXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b2tlbnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmVwYXJlIHRoZSBjb21wb25lbnQgKFZ1ZSAxLngpLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZHkoKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cbiAgICAgICAgICovXG4gICAgICAgIG1vdW50ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDIueCkuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByZXBhcmVDb21wb25lbnQoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbnMoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2V0IGFsbCBvZiB0aGUgYXV0aG9yaXplZCB0b2tlbnMgZm9yIHRoZSB1c2VyLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnZXRUb2tlbnMoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5nZXQoJy9vYXV0aC90b2tlbnMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXZva2UgdGhlIGdpdmVuIHRva2VuLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXZva2UodG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmRlbGV0ZSgnL29hdXRoL3Rva2Vucy8nICsgdG9rZW4uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gQXV0aG9yaXplZENsaWVudHMudnVlP2E5OTA3NmMwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeURBO0FBRUE7OztBQUdBOztBQUVBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFEQTs7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBOzs7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUFBOzs7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUExQkE7QUF4QkEiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 14 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n data: function data() {\n return {\n clients: [],\n\n createForm: {\n errors: [],\n name: '',\n redirect: ''\n },\n\n editForm: {\n errors: [],\n name: '',\n redirect: ''\n }\n };\n },\n\n\n /**\n * Prepare the component (Vue 1.x).\n */\n ready: function ready() {\n this.prepareComponent();\n },\n\n\n /**\n * Prepare the component (Vue 2.x).\n */\n mounted: function mounted() {\n this.prepareComponent();\n },\n\n\n methods: {\n /**\n * Prepare the component.\n */\n prepareComponent: function prepareComponent() {\n this.getClients();\n\n $('#modal-create-client').on('shown.bs.modal', function () {\n $('#create-client-name').focus();\n });\n\n $('#modal-edit-client').on('shown.bs.modal', function () {\n $('#edit-client-name').focus();\n });\n },\n\n\n /**\n * Get all of the OAuth clients for the user.\n */\n getClients: function getClients() {\n var _this = this;\n\n this.$http.get('/oauth/clients').then(function (response) {\n _this.clients = response.data;\n });\n },\n\n\n /**\n * Show the form for creating new clients.\n */\n showCreateClientForm: function showCreateClientForm() {\n $('#modal-create-client').modal('show');\n },\n\n\n /**\n * Create a new OAuth client for the user.\n */\n store: function store() {\n this.persistClient('post', '/oauth/clients', this.createForm, '#modal-create-client');\n },\n\n\n /**\n * Edit the given client.\n */\n edit: function edit(client) {\n this.editForm.id = client.id;\n this.editForm.name = client.name;\n this.editForm.redirect = client.redirect;\n\n $('#modal-edit-client').modal('show');\n },\n\n\n /**\n * Update the client being edited.\n */\n update: function update() {\n this.persistClient('put', '/oauth/clients/' + this.editForm.id, this.editForm, '#modal-edit-client');\n },\n\n\n /**\n * Persist the client to storage using the given form.\n */\n persistClient: function persistClient(method, uri, form, modal) {\n var _this2 = this;\n\n form.errors = [];\n\n this.$http[method](uri, form).then(function (response) {\n _this2.getClients();\n\n form.name = '';\n form.redirect = '';\n form.errors = [];\n\n $(modal).modal('hide');\n }).catch(function (response) {\n if (_typeof(response.data) === 'object') {\n form.errors = _.flatten(_.toArray(response.data));\n } else {\n form.errors = ['Something went wrong. Please try again.'];\n }\n });\n },\n\n\n /**\n * Destroy the given client.\n */\n destroy: function destroy(client) {\n var _this3 = this;\n\n this.$http.delete('/oauth/clients/' + client.id).then(function (response) {\n _this3.getClients();\n });\n }\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vQ2xpZW50cy52dWU/NWYwZiJdLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGUgc2NvcGVkPlxuICAgIC5hY3Rpb24tbGluayB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAubS1iLW5vbmUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbjwvc3R5bGU+XG5cbjx0ZW1wbGF0ZT5cbiAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE9BdXRoIENsaWVudHNcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmtcIiBAY2xpY2s9XCJzaG93Q3JlYXRlQ2xpZW50Rm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIE5ldyBDbGllbnRcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBDdXJyZW50IENsaWVudHMgLS0+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItbm9uZVwiIHYtaWY9XCJjbGllbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgT0F1dGggY2xpZW50cy5cbiAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIG0tYi1ub25lXCIgdi1pZj1cImNsaWVudHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNsaWVudCBJRDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TZWNyZXQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cblxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJjbGllbnQgaW4gY2xpZW50c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSUQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2xpZW50LmlkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmFtZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjbGllbnQubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlY3JldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57eyBjbGllbnQuc2VjcmV0IH19PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmtcIiBAY2xpY2s9XCJlZGl0KGNsaWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERlbGV0ZSBCdXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayB0ZXh0LWRhbmdlclwiIEBjbGljaz1cImRlc3Ryb3koY2xpZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ3JlYXRlIENsaWVudCBNb2RhbCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cIm1vZGFsLWNyZWF0ZS1jbGllbnRcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvbiBcIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIENsaWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9ybSBFcnJvcnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgdi1pZj1cImNyZWF0ZUZvcm0uZXJyb3JzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldob29wcyE8L3N0cm9uZz4gU29tZXRoaW5nIHdlbnQgd3JvbmchPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cImVycm9yIGluIGNyZWF0ZUZvcm0uZXJyb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlcnJvciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDcmVhdGUgQ2xpZW50IEZvcm0gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIHJvbGU9XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBOYW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5OYW1lPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImNyZWF0ZS1jbGllbnQtbmFtZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBrZXl1cC5lbnRlcj1cInN0b3JlXCIgdi1tb2RlbD1cImNyZWF0ZUZvcm0ubmFtZVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21ldGhpbmcgeW91ciB1c2VycyB3aWxsIHJlY29nbml6ZSBhbmQgdHJ1c3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWRpcmVjdCBVUkwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPlJlZGlyZWN0IFVSTDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJyZWRpcmVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGtleXVwLmVudGVyPVwic3RvcmVcIiB2LW1vZGVsPVwiY3JlYXRlRm9ybS5yZWRpcmVjdFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGFwcGxpY2F0aW9uJ3MgYXV0aG9yaXphdGlvbiBjYWxsYmFjayBVUkwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1vZGFsIEFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIEBjbGljaz1cInN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBFZGl0IENsaWVudCBNb2RhbCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cIm1vZGFsLWVkaXQtY2xpZW50XCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b24gXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgQ2xpZW50XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3JtIEVycm9ycyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiB2LWlmPVwiZWRpdEZvcm0uZXJyb3JzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldob29wcyE8L3N0cm9uZz4gU29tZXRoaW5nIHdlbnQgd3JvbmchPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cImVycm9yIGluIGVkaXRGb3JtLmVycm9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXJyb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRWRpdCBDbGllbnQgRm9ybSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgcm9sZT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPk5hbWU8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZWRpdC1jbGllbnQtbmFtZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBrZXl1cC5lbnRlcj1cInVwZGF0ZVwiIHYtbW9kZWw9XCJlZGl0Rm9ybS5uYW1lXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWV0aGluZyB5b3VyIHVzZXJzIHdpbGwgcmVjb2duaXplIGFuZCB0cnVzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlZGlyZWN0IFVSTCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+UmVkaXJlY3QgVVJMPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInJlZGlyZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAa2V5dXAuZW50ZXI9XCJ1cGRhdGVcIiB2LW1vZGVsPVwiZWRpdEZvcm0ucmVkaXJlY3RcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWxwLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBhcHBsaWNhdGlvbidzIGF1dGhvcml6YXRpb24gY2FsbGJhY2sgVVJMLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNb2RhbCBBY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBAY2xpY2s9XCJ1cGRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlIENoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgY29tcG9uZW50J3MgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNsaWVudHM6IFtdLFxuXG4gICAgICAgICAgICAgICAgY3JlYXRlRm9ybToge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6ICcnXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGVkaXRGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogJydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmVwYXJlIHRoZSBjb21wb25lbnQgKFZ1ZSAxLngpLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZHkoKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cbiAgICAgICAgICovXG4gICAgICAgIG1vdW50ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHJlcGFyZUNvbXBvbmVudCgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldENsaWVudHMoKTtcblxuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtY2xpZW50Jykub24oJ3Nob3duLmJzLm1vZGFsJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlLWNsaWVudC1uYW1lJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1lZGl0LWNsaWVudCcpLm9uKCdzaG93bi5icy5tb2RhbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgJCgnI2VkaXQtY2xpZW50LW5hbWUnKS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHZXQgYWxsIG9mIHRoZSBPQXV0aCBjbGllbnRzIGZvciB0aGUgdXNlci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2V0Q2xpZW50cygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmdldCgnL29hdXRoL2NsaWVudHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50cyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2hvdyB0aGUgZm9ybSBmb3IgY3JlYXRpbmcgbmV3IGNsaWVudHMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNob3dDcmVhdGVDbGllbnRGb3JtKCkge1xuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtY2xpZW50JykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ3JlYXRlIGEgbmV3IE9BdXRoIGNsaWVudCBmb3IgdGhlIHVzZXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0b3JlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVyc2lzdENsaWVudChcbiAgICAgICAgICAgICAgICAgICAgJ3Bvc3QnLCAnL29hdXRoL2NsaWVudHMnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm0sICcjbW9kYWwtY3JlYXRlLWNsaWVudCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFZGl0IHRoZSBnaXZlbiBjbGllbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVkaXQoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5pZCA9IGNsaWVudC5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLm5hbWUgPSBjbGllbnQubmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLnJlZGlyZWN0ID0gY2xpZW50LnJlZGlyZWN0O1xuXG4gICAgICAgICAgICAgICAgJCgnI21vZGFsLWVkaXQtY2xpZW50JykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVXBkYXRlIHRoZSBjbGllbnQgYmVpbmcgZWRpdGVkLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1cGRhdGUoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0Q2xpZW50KFxuICAgICAgICAgICAgICAgICAgICAncHV0JywgJy9vYXV0aC9jbGllbnRzLycgKyB0aGlzLmVkaXRGb3JtLmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLCAnI21vZGFsLWVkaXQtY2xpZW50J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBlcnNpc3QgdGhlIGNsaWVudCB0byBzdG9yYWdlIHVzaW5nIHRoZSBnaXZlbiBmb3JtLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZXJzaXN0Q2xpZW50KG1ldGhvZCwgdXJpLCBmb3JtLCBtb2RhbCkge1xuICAgICAgICAgICAgICAgIGZvcm0uZXJyb3JzID0gW107XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwW21ldGhvZF0odXJpLCBmb3JtKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENsaWVudHMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5uYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlZGlyZWN0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmVycm9ycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAkKG1vZGFsKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2gocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZXJyb3JzID0gXy5mbGF0dGVuKF8udG9BcnJheShyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZXJyb3JzID0gWydTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERlc3Ryb3kgdGhlIGdpdmVuIGNsaWVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVzdHJveShjbGllbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmRlbGV0ZSgnL29hdXRoL2NsaWVudHMvJyArIGNsaWVudC5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENsaWVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gQ2xpZW50cy52dWU/MzU4NjdjZTQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5TkE7QUFFQTs7O0FBR0E7O0FBR0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBVEE7QUFnQkE7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTs7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFBQTs7O0FBR0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTs7OztBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTs7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBOzs7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQURBOzs7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBOzs7O0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBakdBO0FBcENBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 15 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n data: function data() {\n return {\n accessToken: null,\n\n tokens: [],\n scopes: [],\n\n form: {\n name: '',\n scopes: [],\n errors: []\n }\n };\n },\n\n\n /**\n * Prepare the component (Vue 1.x).\n */\n ready: function ready() {\n this.prepareComponent();\n },\n\n\n /**\n * Prepare the component (Vue 2.x).\n */\n mounted: function mounted() {\n this.prepareComponent();\n },\n\n\n methods: {\n /**\n * Prepare the component.\n */\n prepareComponent: function prepareComponent() {\n this.getTokens();\n this.getScopes();\n\n $('#modal-create-token').on('shown.bs.modal', function () {\n $('#create-token-name').focus();\n });\n },\n\n\n /**\n * Get all of the personal access tokens for the user.\n */\n getTokens: function getTokens() {\n var _this = this;\n\n this.$http.get('/oauth/personal-access-tokens').then(function (response) {\n _this.tokens = response.data;\n });\n },\n\n\n /**\n * Get all of the available scopes.\n */\n getScopes: function getScopes() {\n var _this2 = this;\n\n this.$http.get('/oauth/scopes').then(function (response) {\n _this2.scopes = response.data;\n });\n },\n\n\n /**\n * Show the form for creating new tokens.\n */\n showCreateTokenForm: function showCreateTokenForm() {\n $('#modal-create-token').modal('show');\n },\n\n\n /**\n * Create a new personal access token.\n */\n store: function store() {\n var _this3 = this;\n\n this.accessToken = null;\n\n this.form.errors = [];\n\n this.$http.post('/oauth/personal-access-tokens', this.form).then(function (response) {\n _this3.form.name = '';\n _this3.form.scopes = [];\n _this3.form.errors = [];\n\n _this3.tokens.push(response.data.token);\n\n _this3.showAccessToken(response.data.accessToken);\n }).catch(function (response) {\n if (_typeof(response.data) === 'object') {\n _this3.form.errors = _.flatten(_.toArray(response.data));\n } else {\n console.dir(_this3.form);\n _this3.form.errors = ['Something went wrong. Please try again.'];\n }\n });\n },\n\n\n /**\n * Toggle the given scope in the list of assigned scopes.\n */\n toggleScope: function toggleScope(scope) {\n if (this.scopeIsAssigned(scope)) {\n this.form.scopes = _.reject(this.form.scopes, function (s) {\n return s == scope;\n });\n } else {\n this.form.scopes.push(scope);\n }\n },\n\n\n /**\n * Determine if the given scope has been assigned to the token.\n */\n scopeIsAssigned: function scopeIsAssigned(scope) {\n return _.indexOf(this.form.scopes, scope) >= 0;\n },\n\n\n /**\n * Show the given access token to the user.\n */\n showAccessToken: function showAccessToken(accessToken) {\n $('#modal-create-token').modal('hide');\n\n this.accessToken = accessToken;\n\n $('#modal-access-token').modal('show');\n },\n\n\n /**\n * Revoke the given token.\n */\n revoke: function revoke(token) {\n var _this4 = this;\n\n this.$http.delete('/oauth/personal-access-tokens/' + token.id).then(function (response) {\n _this4.getTokens();\n });\n }\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlPzA4MTIiXSwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlIHNjb3BlZD5cbiAgICAuYWN0aW9uLWxpbmsge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLm0tYi1ub25lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG48L3N0eWxlPlxuXG48dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbmFsIEFjY2VzcyBUb2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGlua1wiIEBjbGljaz1cInNob3dDcmVhdGVUb2tlbkZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgTmV3IFRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBObyBUb2tlbnMgTm90aWNlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi1ub25lXCIgdi1pZj1cInRva2Vucy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBwZXJzb25hbCBhY2Nlc3MgdG9rZW5zLlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXJzb25hbCBBY2Nlc3MgVG9rZW5zIC0tPlxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIG0tYi1ub25lXCIgdi1pZj1cInRva2Vucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHYtZm9yPVwidG9rZW4gaW4gdG9rZW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2xpZW50IE5hbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b2tlbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEZWxldGUgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayB0ZXh0LWRhbmdlclwiIEBjbGljaz1cInJldm9rZSh0b2tlbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENyZWF0ZSBUb2tlbiBNb2RhbCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cIm1vZGFsLWNyZWF0ZS10b2tlblwiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uIFwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgVG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm0gRXJyb3JzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiIHYtaWY9XCJmb3JtLmVycm9ycy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XaG9vcHMhPC9zdHJvbmc+IFNvbWV0aGluZyB3ZW50IHdyb25nITwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJlcnJvciBpbiBmb3JtLmVycm9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXJyb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3JlYXRlIFRva2VuIEZvcm0gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIHJvbGU9XCJmb3JtXCIgQHN1Ym1pdC5wcmV2ZW50PVwic3RvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbFwiPk5hbWU8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiY3JlYXRlLXRva2VuLW5hbWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cIm5hbWVcIiB2LW1vZGVsPVwiZm9ybS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTY29wZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwic2NvcGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbFwiPlNjb3BlczwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwic2NvcGUgaW4gc2NvcGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZVNjb3BlKHNjb3BlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNoZWNrZWQ9XCJzY29wZUlzQXNzaWduZWQoc2NvcGUuaWQpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzY29wZS5pZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1vZGFsIEFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIEBjbGljaz1cInN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBY2Nlc3MgVG9rZW4gTW9kYWwgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJtb2RhbC1hY2Nlc3MtdG9rZW5cIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvbiBcIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29uYWwgQWNjZXNzIFRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB5b3VyIG5ldyBwZXJzb25hbCBhY2Nlc3MgdG9rZW4uIFRoaXMgaXMgdGhlIG9ubHkgdGltZSBpdCB3aWxsIGJlIHNob3duIHNvIGRvbid0IGxvc2UgaXQhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1heSBub3cgdXNlIHRoaXMgdG9rZW4gdG8gbWFrZSBBUEkgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgYWNjZXNzVG9rZW4gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTW9kYWwgQWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBjb21wb25lbnQncyBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgZGF0YSgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IG51bGwsXG5cbiAgICAgICAgICAgICAgICB0b2tlbnM6IFtdLFxuICAgICAgICAgICAgICAgIHNjb3BlczogW10sXG5cbiAgICAgICAgICAgICAgICBmb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICBzY29wZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMS54KS5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWR5KCkge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlQ29tcG9uZW50KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDIueCkuXG4gICAgICAgICAqL1xuICAgICAgICBtb3VudGVkKCkge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlQ29tcG9uZW50KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQcmVwYXJlIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByZXBhcmVDb21wb25lbnQoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNjb3BlcygpO1xuXG4gICAgICAgICAgICAgICAgJCgnI21vZGFsLWNyZWF0ZS10b2tlbicpLm9uKCdzaG93bi5icy5tb2RhbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgJCgnI2NyZWF0ZS10b2tlbi1uYW1lJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2V0IGFsbCBvZiB0aGUgcGVyc29uYWwgYWNjZXNzIHRva2VucyBmb3IgdGhlIHVzZXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdldFRva2VucygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmdldCgnL29hdXRoL3BlcnNvbmFsLWFjY2Vzcy10b2tlbnMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHZXQgYWxsIG9mIHRoZSBhdmFpbGFibGUgc2NvcGVzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnZXRTY29wZXMoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5nZXQoJy9vYXV0aC9zY29wZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NvcGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaG93IHRoZSBmb3JtIGZvciBjcmVhdGluZyBuZXcgdG9rZW5zLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaG93Q3JlYXRlVG9rZW5Gb3JtKCkge1xuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtdG9rZW4nKS5tb2RhbCgnc2hvdycpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDcmVhdGUgYSBuZXcgcGVyc29uYWwgYWNjZXNzIHRva2VuLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdG9yZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lcnJvcnMgPSBbXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL29hdXRoL3BlcnNvbmFsLWFjY2Vzcy10b2tlbnMnLCB0aGlzLmZvcm0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2NvcGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmVycm9ycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaChyZXNwb25zZS5kYXRhLnRva2VuKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FjY2Vzc1Rva2VuKHJlc3BvbnNlLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZXJyb3JzID0gXy5mbGF0dGVuKF8udG9BcnJheShyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRpcih0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZXJyb3JzID0gWydTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9nZ2xlIHRoZSBnaXZlbiBzY29wZSBpbiB0aGUgbGlzdCBvZiBhc3NpZ25lZCBzY29wZXMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvZ2dsZVNjb3BlKHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2NvcGVJc0Fzc2lnbmVkKHNjb3BlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2NvcGVzID0gXy5yZWplY3QodGhpcy5mb3JtLnNjb3BlcywgcyA9PiBzID09IHNjb3BlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2NvcGVzLnB1c2goc2NvcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBzY29wZSBoYXMgYmVlbiBhc3NpZ25lZCB0byB0aGUgdG9rZW4uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjb3BlSXNBc3NpZ25lZChzY29wZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfLmluZGV4T2YodGhpcy5mb3JtLnNjb3Blcywgc2NvcGUpID49IDA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNob3cgdGhlIGdpdmVuIGFjY2VzcyB0b2tlbiB0byB0aGUgdXNlci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hvd0FjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgJCgnI21vZGFsLWNyZWF0ZS10b2tlbicpLm1vZGFsKCdoaWRlJyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gYWNjZXNzVG9rZW47XG5cbiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtYWNjZXNzLXRva2VuJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmV2b2tlIHRoZSBnaXZlbiB0b2tlbi5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmV2b2tlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5kZWxldGUoJy9vYXV0aC9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zLycgKyB0b2tlbi5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRva2VucygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBQZXJzb25hbEFjY2Vzc1Rva2Vucy52dWU/NTczNGY0ZTQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUtBO0FBRUE7OztBQUdBOztBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFOQTtBQWFBO0FBQ0E7QUFDQTtBQURBOzs7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBQUE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7O0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTs7O0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBREE7Ozs7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUF6R0E7QUFqQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 16 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n__webpack_require__(30);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /*\n * The component's data.\n */\n props: ['options', 'value'],\n\n mounted: function mounted() {\n var vm = this;\n $(this.$el).select2({\n data: this.options\n }).on('change', function () {\n vm.$emit('input', this.value);\n });\n },\n\n watch: {\n value: function value(_value) {\n $(this.$el).val(_value);\n },\n options: function options(_options) {\n $(this.$el).select2({ data: _options });\n },\n destroyed: function destroyed() {\n $(this.$el).off().select2('destroy');\n }\n }\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc2VsZWN0Mi52dWU/YjNlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbjxzdHlsZSBzY29wZWQ+XG48L3N0eWxlPlxuXG48dGVtcGxhdGU+XG4gICAgICAgIDxzZWxlY3Qgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XG4gICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgIDwvc2VsZWN0PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICByZXF1aXJlKCdzZWxlY3QyJyk7XG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgY29tcG9uZW50J3MgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIHByb3BzOiBbJ29wdGlvbnMnLCAndmFsdWUnXSxcblxuICAgICAgICBtb3VudGVkKCkge1xuICAgICAgICAgICAgdmFyIHZtID0gdGhpcztcbiAgICAgICAgICAgICQodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgLnNlbGVjdDIoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7IHZtLiRlbWl0KCdpbnB1dCcsIHRoaXMudmFsdWUpIH0gKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2F0Y2g6IHtcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMuJGVsKS52YWwodmFsdWUpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9uczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMuJGVsKS5zZWxlY3QyKHtkYXRhOiBvcHRpb25zfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0cm95ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQodGhpcy4kZWwpLm9mZigpLnNlbGVjdDIoJ2Rlc3Ryb3knKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG48L3NjcmlwdD5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzZWxlY3QyLnZ1ZT81YWU4M2ZkNCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUVBOzs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFEQTs7QUFHQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFkQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nwindow._ = __webpack_require__(29);\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for JavaScript based Bootstrap features such as modals and tabs. This\n * code may be modified to fit the specific needs of your application.\n */\n\nwindow.$ = window.jQuery = __webpack_require__(3);\n__webpack_require__(19);\n\n/**\n * Vue is a modern JavaScript library for building interactive web interfaces\n * using reactive data binding and reusable components. Vue's API is clean\n * and simple, leaving you to focus on building your next great project.\n */\n\nwindow.Vue = __webpack_require__(55);\n__webpack_require__(45);\n\n/**\n * We'll register a HTTP interceptor to attach the \"CSRF\" header to each of\n * the outgoing requests issued by this application. The CSRF middleware\n * included with Laravel will automatically verify the header's value.\n */\n\nVue.http.interceptors.push(function (request, next) {\n request.headers.set('X-CSRF-TOKEN', Laravel.csrfToken);\n\n next();\n});\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from \"laravel-echo\"\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: 'your-pusher-key'\n// });//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2Fzc2V0cy9qcy9ib290c3RyYXAuanM/NWU2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbndpbmRvdy5fID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbi8qKlxuICogV2UnbGwgbG9hZCBqUXVlcnkgYW5kIHRoZSBCb290c3RyYXAgalF1ZXJ5IHBsdWdpbiB3aGljaCBwcm92aWRlcyBzdXBwb3J0XG4gKiBmb3IgSmF2YVNjcmlwdCBiYXNlZCBCb290c3RyYXAgZmVhdHVyZXMgc3VjaCBhcyBtb2RhbHMgYW5kIHRhYnMuIFRoaXNcbiAqIGNvZGUgbWF5IGJlIG1vZGlmaWVkIHRvIGZpdCB0aGUgc3BlY2lmaWMgbmVlZHMgb2YgeW91ciBhcHBsaWNhdGlvbi5cbiAqL1xuXG53aW5kb3cuJCA9IHdpbmRvdy5qUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTtcbnJlcXVpcmUoJ2Jvb3RzdHJhcC1sZXNzJyk7XG5cbi8qKlxuICogVnVlIGlzIGEgbW9kZXJuIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgYnVpbGRpbmcgaW50ZXJhY3RpdmUgd2ViIGludGVyZmFjZXNcbiAqIHVzaW5nIHJlYWN0aXZlIGRhdGEgYmluZGluZyBhbmQgcmV1c2FibGUgY29tcG9uZW50cy4gVnVlJ3MgQVBJIGlzIGNsZWFuXG4gKiBhbmQgc2ltcGxlLCBsZWF2aW5nIHlvdSB0byBmb2N1cyBvbiBidWlsZGluZyB5b3VyIG5leHQgZ3JlYXQgcHJvamVjdC5cbiAqL1xuXG53aW5kb3cuVnVlID0gcmVxdWlyZSgndnVlJyk7XG5yZXF1aXJlKCd2dWUtcmVzb3VyY2UnKTtcblxuLyoqXG4gKiBXZSdsbCByZWdpc3RlciBhIEhUVFAgaW50ZXJjZXB0b3IgdG8gYXR0YWNoIHRoZSBcIkNTUkZcIiBoZWFkZXIgdG8gZWFjaCBvZlxuICogdGhlIG91dGdvaW5nIHJlcXVlc3RzIGlzc3VlZCBieSB0aGlzIGFwcGxpY2F0aW9uLiBUaGUgQ1NSRiBtaWRkbGV3YXJlXG4gKiBpbmNsdWRlZCB3aXRoIExhcmF2ZWwgd2lsbCBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGUgaGVhZGVyJ3MgdmFsdWUuXG4gKi9cblxuVnVlLmh0dHAuaW50ZXJjZXB0b3JzLnB1c2goKHJlcXVlc3QsIG5leHQpID0+IHtcbiAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdYLUNTUkYtVE9LRU4nLCBMYXJhdmVsLmNzcmZUb2tlbik7XG5cbiAgICBuZXh0KCk7XG59KTtcblxuLyoqXG4gKiBFY2hvIGV4cG9zZXMgYW4gZXhwcmVzc2l2ZSBBUEkgZm9yIHN1YnNjcmliaW5nIHRvIGNoYW5uZWxzIGFuZCBsaXN0ZW5pbmdcbiAqIGZvciBldmVudHMgdGhhdCBhcmUgYnJvYWRjYXN0IGJ5IExhcmF2ZWwuIEVjaG8gYW5kIGV2ZW50IGJyb2FkY2FzdGluZ1xuICogYWxsb3dzIHlvdXIgdGVhbSB0byBlYXNpbHkgYnVpbGQgcm9idXN0IHJlYWwtdGltZSB3ZWIgYXBwbGljYXRpb25zLlxuICovXG5cbi8vIGltcG9ydCBFY2hvIGZyb20gXCJsYXJhdmVsLWVjaG9cIlxuXG4vLyB3aW5kb3cuRWNobyA9IG5ldyBFY2hvKHtcbi8vICAgICBicm9hZGNhc3RlcjogJ3B1c2hlcicsXG4vLyAgICAga2V5OiAneW91ci1wdXNoZXIta2V5J1xuLy8gfSk7XG5cblxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHJlc291cmNlcy9hc3NldHMvanMvYm9vdHN0cmFwLmpzIl0sIm1hcHBpbmdzIjoiO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n * jQuery File Upload Plugin\n * https://github.com/blueimp/jQuery-File-Upload\n *\n * Copyright 2010, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* jshint nomen:false */\n/* global define, require, window, document, location, Blob, FormData */\n\n;(function (factory) {\n 'use strict';\n if (true) {\n // Register as an anonymous AMD module:\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(3),\n __webpack_require__(28)\n ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports === 'object') {\n // Node/CommonJS:\n factory(\n require('jquery'),\n require('./vendor/jquery.ui.widget')\n );\n } else {\n // Browser globals:\n factory(window.jQuery);\n }\n}(function ($) {\n 'use strict';\n\n // Detect file input support, based on\n // http://viljamis.com/blog/2012/file-upload-support-on-mobile/\n $.support.fileInput = !(new RegExp(\n // Handle devices which give false positives for the feature detection:\n '(Android (1\\\\.[0156]|2\\\\.[01]))' +\n '|(Windows Phone (OS 7|8\\\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +\n '|(w(eb)?OSBrowser)|(webOS)' +\n '|(Kindle/(1\\\\.0|2\\\\.[05]|3\\\\.0))'\n ).test(window.navigator.userAgent) ||\n // Feature detection for all other devices:\n $('<input type=\"file\">').prop('disabled'));\n\n // The FileReader API is not actually used, but works as feature detection,\n // as some Safari versions (5?) support XHR file uploads via the FormData API,\n // but not non-multipart XHR file uploads.\n // window.XMLHttpRequestUpload is not available on IE10, so we check for\n // window.ProgressEvent instead to detect XHR2 file upload capability:\n $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);\n $.support.xhrFormDataFileUpload = !!window.FormData;\n\n // Detect support for Blob slicing (required for chunked uploads):\n $.support.blobSlice = window.Blob && (Blob.prototype.slice ||\n Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\n\n // Helper function to create drag handlers for dragover/dragenter/dragleave:\n function getDragHandler(type) {\n var isDragOver = type === 'dragover';\n return function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var dataTransfer = e.dataTransfer;\n if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 &&\n this._trigger(\n type,\n $.Event(type, {delegatedEvent: e})\n ) !== false) {\n e.preventDefault();\n if (isDragOver) {\n dataTransfer.dropEffect = 'copy';\n }\n }\n };\n }\n\n // The fileupload widget listens for change events on file input fields defined\n // via fileInput setting and paste or drop events of the given dropZone.\n // In addition to the default jQuery Widget methods, the fileupload widget\n // exposes the \"add\" and \"send\" methods, to add or directly send files using\n // the fileupload API.\n // By default, files added via file input selection, paste, drag & drop or\n // \"add\" method are uploaded immediately, but it is possible to override\n // the \"add\" callback option to queue file uploads.\n $.widget('blueimp.fileupload', {\n\n options: {\n // The drop target element(s), by the default the complete document.\n // Set to null to disable drag & drop support:\n dropZone: $(document),\n // The paste target element(s), by the default undefined.\n // Set to a DOM node or jQuery object to enable file pasting:\n pasteZone: undefined,\n // The file input field(s), that are listened to for change events.\n // If undefined, it is set to the file input fields inside\n // of the widget element on plugin initialization.\n // Set to null to disable the change listener.\n fileInput: undefined,\n // By default, the file input field is replaced with a clone after\n // each input field change event. This is required for iframe transport\n // queues and allows change events to be fired for the same file\n // selection, but can be disabled by setting the following option to false:\n replaceFileInput: true,\n // The parameter name for the file form data (the request argument name).\n // If undefined or empty, the name property of the file input field is\n // used, or \"files[]\" if the file input name property is also empty,\n // can be a string or an array of strings:\n paramName: undefined,\n // By default, each file of a selection is uploaded using an individual\n // request for XHR type uploads. Set to false to upload file\n // selections in one request each:\n singleFileUploads: true,\n // To limit the number of files uploaded with one XHR request,\n // set the following option to an integer greater than 0:\n limitMultiFileUploads: undefined,\n // The following option limits the number of files uploaded with one\n // XHR request to keep the request size under or equal to the defined\n // limit in bytes:\n limitMultiFileUploadSize: undefined,\n // Multipart file uploads add a number of bytes to each uploaded file,\n // therefore the following option adds an overhead for each file used\n // in the limitMultiFileUploadSize configuration:\n limitMultiFileUploadSizeOverhead: 512,\n // Set the following option to true to issue all file upload requests\n // in a sequential order:\n sequentialUploads: false,\n // To limit the number of concurrent uploads,\n // set the following option to an integer greater than 0:\n limitConcurrentUploads: undefined,\n // Set the following option to true to force iframe transport uploads:\n forceIframeTransport: false,\n // Set the following option to the location of a redirect url on the\n // origin server, for cross-domain iframe transport uploads:\n redirect: undefined,\n // The parameter name for the redirect url, sent as part of the form\n // data and set to 'redirect' if this option is empty:\n redirectParamName: undefined,\n // Set the following option to the location of a postMessage window,\n // to enable postMessage transport uploads:\n postMessage: undefined,\n // By default, XHR file uploads are sent as multipart/form-data.\n // The iframe transport is always using multipart/form-data.\n // Set to false to enable non-multipart XHR uploads:\n multipart: true,\n // To upload large files in smaller chunks, set the following option\n // to a preferred maximum chunk size. If set to 0, null or undefined,\n // or the browser does not support the required Blob API, files will\n // be uploaded as a whole.\n maxChunkSize: undefined,\n // When a non-multipart upload or a chunked multipart upload has been\n // aborted, this option can be used to resume the upload by setting\n // it to the size of the already uploaded bytes. This option is most\n // useful when modifying the options object inside of the \"add\" or\n // \"send\" callbacks, as the options are cloned for each file upload.\n uploadedBytes: undefined,\n // By default, failed (abort or error) file uploads are removed from the\n // global progress calculation. Set the following option to false to\n // prevent recalculating the global progress data:\n recalculateProgress: true,\n // Interval in milliseconds to calculate and trigger progress events:\n progressInterval: 100,\n // Interval in milliseconds to calculate progress bitrate:\n bitrateInterval: 500,\n // By default, uploads are started automatically when adding files:\n autoUpload: true,\n\n // Error and info messages:\n messages: {\n uploadedBytes: 'Uploaded bytes exceed file size'\n },\n\n // Translation function, gets the message key to be translated\n // and an object with context specific data as arguments:\n i18n: function (message, context) {\n message = this.messages[message] || message.toString();\n if (context) {\n $.each(context, function (key, value) {\n message = message.replace('{' + key + '}', value);\n });\n }\n return message;\n },\n\n // Additional form data to be sent along with the file uploads can be set\n // using this option, which accepts an array of objects with name and\n // value properties, a function returning such an array, a FormData\n // object (for XHR file uploads), or a simple object.\n // The form of the first fileInput is given as parameter to the function:\n formData: function (form) {\n return form.serializeArray();\n },\n\n // The add callback is invoked as soon as files are added to the fileupload\n // widget (via file input selection, drag & drop, paste or add API call).\n // If the singleFileUploads option is enabled, this callback will be\n // called once for each file in the selection for XHR file uploads, else\n // once for each file selection.\n //\n // The upload starts when the submit method is invoked on the data parameter.\n // The data object contains a files property holding the added files\n // and allows you to override plugin options as well as define ajax settings.\n //\n // Listeners for this callback can also be bound the following way:\n // .bind('fileuploadadd', func);\n //\n // data.submit() returns a Promise object and allows to attach additional\n // handlers using jQuery's Deferred callbacks:\n // data.submit().done(func).fail(func).always(func);\n add: function (e, data) {\n if (e.isDefaultPrevented()) {\n return false;\n }\n if (data.autoUpload || (data.autoUpload !== false &&\n $(this).fileupload('option', 'autoUpload'))) {\n data.process().done(function () {\n data.submit();\n });\n }\n },\n\n // Other callbacks:\n\n // Callback for the submit event of each file upload:\n // submit: function (e, data) {}, // .bind('fileuploadsubmit', func);\n\n // Callback for the start of each file upload request:\n // send: function (e, data) {}, // .bind('fileuploadsend', func);\n\n // Callback for successful uploads:\n // done: function (e, data) {}, // .bind('fileuploaddone', func);\n\n // Callback for failed (abort or error) uploads:\n // fail: function (e, data) {}, // .bind('fileuploadfail', func);\n\n // Callback for completed (success, abort or error) requests:\n // always: function (e, data) {}, // .bind('fileuploadalways', func);\n\n // Callback for upload progress events:\n // progress: function (e, data) {}, // .bind('fileuploadprogress', func);\n\n // Callback for global upload progress events:\n // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);\n\n // Callback for uploads start, equivalent to the global ajaxStart event:\n // start: function (e) {}, // .bind('fileuploadstart', func);\n\n // Callback for uploads stop, equivalent to the global ajaxStop event:\n // stop: function (e) {}, // .bind('fileuploadstop', func);\n\n // Callback for change events of the fileInput(s):\n // change: function (e, data) {}, // .bind('fileuploadchange', func);\n\n // Callback for paste events to the pasteZone(s):\n // paste: function (e, data) {}, // .bind('fileuploadpaste', func);\n\n // Callback for drop events of the dropZone(s):\n // drop: function (e, data) {}, // .bind('fileuploaddrop', func);\n\n // Callback for dragover events of the dropZone(s):\n // dragover: function (e) {}, // .bind('fileuploaddragover', func);\n\n // Callback for the start of each chunk upload request:\n // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func);\n\n // Callback for successful chunk uploads:\n // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func);\n\n // Callback for failed (abort or error) chunk uploads:\n // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func);\n\n // Callback for completed (success, abort or error) chunk upload requests:\n // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func);\n\n // The plugin options are used as settings object for the ajax calls.\n // The following are jQuery ajax settings required for the file uploads:\n processData: false,\n contentType: false,\n cache: false,\n timeout: 0\n },\n\n // A list of options that require reinitializing event listeners and/or\n // special initialization code:\n _specialOptions: [\n 'fileInput',\n 'dropZone',\n 'pasteZone',\n 'multipart',\n 'forceIframeTransport'\n ],\n\n _blobSlice: $.support.blobSlice && function () {\n var slice = this.slice || this.webkitSlice || this.mozSlice;\n return slice.apply(this, arguments);\n },\n\n _BitrateTimer: function () {\n this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime());\n this.loaded = 0;\n this.bitrate = 0;\n this.getBitrate = function (now, loaded, interval) {\n var timeDiff = now - this.timestamp;\n if (!this.bitrate || !interval || timeDiff > interval) {\n this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;\n this.loaded = loaded;\n this.timestamp = now;\n }\n return this.bitrate;\n };\n },\n\n _isXHRUpload: function (options) {\n return !options.forceIframeTransport &&\n ((!options.multipart && $.support.xhrFileUpload) ||\n $.support.xhrFormDataFileUpload);\n },\n\n _getFormData: function (options) {\n var formData;\n if ($.type(options.formData) === 'function') {\n return options.formData(options.form);\n }\n if ($.isArray(options.formData)) {\n return options.formData;\n }\n if ($.type(options.formData) === 'object') {\n formData = [];\n $.each(options.formData, function (name, value) {\n formData.push({name: name, value: value});\n });\n return formData;\n }\n return [];\n },\n\n _getTotal: function (files) {\n var total = 0;\n $.each(files, function (index, file) {\n total += file.size || 1;\n });\n return total;\n },\n\n _initProgressObject: function (obj) {\n var progress = {\n loaded: 0,\n total: 0,\n bitrate: 0\n };\n if (obj._progress) {\n $.extend(obj._progress, progress);\n } else {\n obj._progress = progress;\n }\n },\n\n _initResponseObject: function (obj) {\n var prop;\n if (obj._response) {\n for (prop in obj._response) {\n if (obj._response.hasOwnProperty(prop)) {\n delete obj._response[prop];\n }\n }\n } else {\n obj._response = {};\n }\n },\n\n _onProgress: function (e, data) {\n if (e.lengthComputable) {\n var now = ((Date.now) ? Date.now() : (new Date()).getTime()),\n loaded;\n if (data._time && data.progressInterval &&\n (now - data._time < data.progressInterval) &&\n e.loaded !== e.total) {\n return;\n }\n data._time = now;\n loaded = Math.floor(\n e.loaded / e.total * (data.chunkSize || data._progress.total)\n ) + (data.uploadedBytes || 0);\n // Add the difference from the previously loaded state\n // to the global loaded counter:\n this._progress.loaded += (loaded - data._progress.loaded);\n this._progress.bitrate = this._bitrateTimer.getBitrate(\n now,\n this._progress.loaded,\n data.bitrateInterval\n );\n data._progress.loaded = data.loaded = loaded;\n data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate(\n now,\n loaded,\n data.bitrateInterval\n );\n // Trigger a custom progress event with a total data property set\n // to the file size(s) of the current upload and a loaded data\n // property calculated accordingly:\n this._trigger(\n 'progress',\n $.Event('progress', {delegatedEvent: e}),\n data\n );\n // Trigger a global progress event for all current file uploads,\n // including ajax calls queued for sequential file uploads:\n this._trigger(\n 'progressall',\n $.Event('progressall', {delegatedEvent: e}),\n this._progress\n );\n }\n },\n\n _initProgressListener: function (options) {\n var that = this,\n xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();\n // Accesss to the native XHR object is required to add event listeners\n // for the upload progress event:\n if (xhr.upload) {\n $(xhr.upload).bind('progress', function (e) {\n var oe = e.originalEvent;\n // Make sure the progress event properties get copied over:\n e.lengthComputable = oe.lengthComputable;\n e.loaded = oe.loaded;\n e.total = oe.total;\n that._onProgress(e, options);\n });\n options.xhr = function () {\n return xhr;\n };\n }\n },\n\n _isInstanceOf: function (type, obj) {\n // Cross-frame instanceof check\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n _initXHRData: function (options) {\n var that = this,\n formData,\n file = options.files[0],\n // Ignore non-multipart setting if not supported:\n multipart = options.multipart || !$.support.xhrFileUpload,\n paramName = $.type(options.paramName) === 'array' ?\n options.paramName[0] : options.paramName;\n options.headers = $.extend({}, options.headers);\n if (options.contentRange) {\n options.headers['Content-Range'] = options.contentRange;\n }\n if (!multipart || options.blob || !this._isInstanceOf('File', file)) {\n options.headers['Content-Disposition'] = 'attachment; filename=\"' +\n encodeURI(file.name) + '\"';\n }\n if (!multipart) {\n options.contentType = file.type || 'application/octet-stream';\n options.data = options.blob || file;\n } else if ($.support.xhrFormDataFileUpload) {\n if (options.postMessage) {\n // window.postMessage does not allow sending FormData\n // objects, so we just add the File/Blob objects to\n // the formData array and let the postMessage window\n // create the FormData object out of this array:\n formData = this._getFormData(options);\n if (options.blob) {\n formData.push({\n name: paramName,\n value: options.blob\n });\n } else {\n $.each(options.files, function (index, file) {\n formData.push({\n name: ($.type(options.paramName) === 'array' &&\n options.paramName[index]) || paramName,\n value: file\n });\n });\n }\n } else {\n if (that._isInstanceOf('FormData', options.formData)) {\n formData = options.formData;\n } else {\n formData = new FormData();\n $.each(this._getFormData(options), function (index, field) {\n formData.append(field.name, field.value);\n });\n }\n if (options.blob) {\n formData.append(paramName, options.blob, file.name);\n } else {\n $.each(options.files, function (index, file) {\n // This check allows the tests to run with\n // dummy objects:\n if (that._isInstanceOf('File', file) ||\n that._isInstanceOf('Blob', file)) {\n formData.append(\n ($.type(options.paramName) === 'array' &&\n options.paramName[index]) || paramName,\n file,\n file.uploadName || file.name\n );\n }\n });\n }\n }\n options.data = formData;\n }\n // Blob reference is not needed anymore, free memory:\n options.blob = null;\n },\n\n _initIframeSettings: function (options) {\n var targetHost = $('<a></a>').prop('href', options.url).prop('host');\n // Setting the dataType to iframe enables the iframe transport:\n options.dataType = 'iframe ' + (options.dataType || '');\n // The iframe transport accepts a serialized array as form data:\n options.formData = this._getFormData(options);\n // Add redirect url to form data on cross-domain uploads:\n if (options.redirect && targetHost && targetHost !== location.host) {\n options.formData.push({\n name: options.redirectParamName || 'redirect',\n value: options.redirect\n });\n }\n },\n\n _initDataSettings: function (options) {\n if (this._isXHRUpload(options)) {\n if (!this._chunkedUpload(options, true)) {\n if (!options.data) {\n this._initXHRData(options);\n }\n this._initProgressListener(options);\n }\n if (options.postMessage) {\n // Setting the dataType to postmessage enables the\n // postMessage transport:\n options.dataType = 'postmessage ' + (options.dataType || '');\n }\n } else {\n this._initIframeSettings(options);\n }\n },\n\n _getParamName: function (options) {\n var fileInput = $(options.fileInput),\n paramName = options.paramName;\n if (!paramName) {\n paramName = [];\n fileInput.each(function () {\n var input = $(this),\n name = input.prop('name') || 'files[]',\n i = (input.prop('files') || [1]).length;\n while (i) {\n paramName.push(name);\n i -= 1;\n }\n });\n if (!paramName.length) {\n paramName = [fileInput.prop('name') || 'files[]'];\n }\n } else if (!$.isArray(paramName)) {\n paramName = [paramName];\n }\n return paramName;\n },\n\n _initFormSettings: function (options) {\n // Retrieve missing options from the input field and the\n // associated form, if available:\n if (!options.form || !options.form.length) {\n options.form = $(options.fileInput.prop('form'));\n // If the given file input doesn't have an associated form,\n // use the default widget file input's form:\n if (!options.form.length) {\n options.form = $(this.options.fileInput.prop('form'));\n }\n }\n options.paramName = this._getParamName(options);\n if (!options.url) {\n options.url = options.form.prop('action') || location.href;\n }\n // The HTTP request method must be \"POST\" or \"PUT\":\n options.type = (options.type ||\n ($.type(options.form.prop('method')) === 'string' &&\n options.form.prop('method')) || ''\n ).toUpperCase();\n if (options.type !== 'POST' && options.type !== 'PUT' &&\n options.type !== 'PATCH') {\n options.type = 'POST';\n }\n if (!options.formAcceptCharset) {\n options.formAcceptCharset = options.form.attr('accept-charset');\n }\n },\n\n _getAJAXSettings: function (data) {\n var options = $.extend({}, this.options, data);\n this._initFormSettings(options);\n this._initDataSettings(options);\n return options;\n },\n\n // jQuery 1.6 doesn't provide .state(),\n // while jQuery 1.8+ removed .isRejected() and .isResolved():\n _getDeferredState: function (deferred) {\n if (deferred.state) {\n return deferred.state();\n }\n if (deferred.isResolved()) {\n return 'resolved';\n }\n if (deferred.isRejected()) {\n return 'rejected';\n }\n return 'pending';\n },\n\n // Maps jqXHR callbacks to the equivalent\n // methods of the given Promise object:\n _enhancePromise: function (promise) {\n promise.success = promise.done;\n promise.error = promise.fail;\n promise.complete = promise.always;\n return promise;\n },\n\n // Creates and returns a Promise object enhanced with\n // the jqXHR methods abort, success, error and complete:\n _getXHRPromise: function (resolveOrReject, context, args) {\n var dfd = $.Deferred(),\n promise = dfd.promise();\n context = context || this.options.context || promise;\n if (resolveOrReject === true) {\n dfd.resolveWith(context, args);\n } else if (resolveOrReject === false) {\n dfd.rejectWith(context, args);\n }\n promise.abort = dfd.promise;\n return this._enhancePromise(promise);\n },\n\n // Adds convenience methods to the data callback argument:\n _addConvenienceMethods: function (e, data) {\n var that = this,\n getPromise = function (args) {\n return $.Deferred().resolveWith(that, args).promise();\n };\n data.process = function (resolveFunc, rejectFunc) {\n if (resolveFunc || rejectFunc) {\n data._processQueue = this._processQueue =\n (this._processQueue || getPromise([this])).then(\n function () {\n if (data.errorThrown) {\n return $.Deferred()\n .rejectWith(that, [data]).promise();\n }\n return getPromise(arguments);\n }\n ).then(resolveFunc, rejectFunc);\n }\n return this._processQueue || getPromise([this]);\n };\n data.submit = function () {\n if (this.state() !== 'pending') {\n data.jqXHR = this.jqXHR =\n (that._trigger(\n 'submit',\n $.Event('submit', {delegatedEvent: e}),\n this\n ) !== false) && that._onSend(e, this);\n }\n return this.jqXHR || that._getXHRPromise();\n };\n data.abort = function () {\n if (this.jqXHR) {\n return this.jqXHR.abort();\n }\n this.errorThrown = 'abort';\n that._trigger('fail', null, this);\n return that._getXHRPromise(false);\n };\n data.state = function () {\n if (this.jqXHR) {\n return that._getDeferredState(this.jqXHR);\n }\n if (this._processQueue) {\n return that._getDeferredState(this._processQueue);\n }\n };\n data.processing = function () {\n return !this.jqXHR && this._processQueue && that\n ._getDeferredState(this._processQueue) === 'pending';\n };\n data.progress = function () {\n return this._progress;\n };\n data.response = function () {\n return this._response;\n };\n },\n\n // Parses the Range header from the server response\n // and returns the uploaded bytes:\n _getUploadedBytes: function (jqXHR) {\n var range = jqXHR.getResponseHeader('Range'),\n parts = range && range.split('-'),\n upperBytesPos = parts && parts.length > 1 &&\n parseInt(parts[1], 10);\n return upperBytesPos && upperBytesPos + 1;\n },\n\n // Uploads a file in multiple, sequential requests\n // by splitting the file up in multiple blob chunks.\n // If the second parameter is true, only tests if the file\n // should be uploaded in chunks, but does not invoke any\n // upload requests:\n _chunkedUpload: function (options, testOnly) {\n options.uploadedBytes = options.uploadedBytes || 0;\n var that = this,\n file = options.files[0],\n fs = file.size,\n ub = options.uploadedBytes,\n mcs = options.maxChunkSize || fs,\n slice = this._blobSlice,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n upload;\n if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||\n options.data) {\n return false;\n }\n if (testOnly) {\n return true;\n }\n if (ub >= fs) {\n file.error = options.i18n('uploadedBytes');\n return this._getXHRPromise(\n false,\n options.context,\n [null, 'error', file.error]\n );\n }\n // The chunk upload method:\n upload = function () {\n // Clone the options object for each chunk upload:\n var o = $.extend({}, options),\n currentLoaded = o._progress.loaded;\n o.blob = slice.call(\n file,\n ub,\n ub + mcs,\n file.type\n );\n // Store the current chunk size, as the blob itself\n // will be dereferenced after data processing:\n o.chunkSize = o.blob.size;\n // Expose the chunk bytes position range:\n o.contentRange = 'bytes ' + ub + '-' +\n (ub + o.chunkSize - 1) + '/' + fs;\n // Process the upload data (the blob and potential form data):\n that._initXHRData(o);\n // Add progress listeners for this chunk upload:\n that._initProgressListener(o);\n jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||\n that._getXHRPromise(false, o.context))\n .done(function (result, textStatus, jqXHR) {\n ub = that._getUploadedBytes(jqXHR) ||\n (ub + o.chunkSize);\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered\n // for this chunk:\n if (currentLoaded + o.chunkSize - o._progress.loaded) {\n that._onProgress($.Event('progress', {\n lengthComputable: true,\n loaded: ub - o.uploadedBytes,\n total: ub - o.uploadedBytes\n }), o);\n }\n options.uploadedBytes = o.uploadedBytes = ub;\n o.result = result;\n o.textStatus = textStatus;\n o.jqXHR = jqXHR;\n that._trigger('chunkdone', null, o);\n that._trigger('chunkalways', null, o);\n if (ub < fs) {\n // File upload not yet complete,\n // continue with the next chunk:\n upload();\n } else {\n dfd.resolveWith(\n o.context,\n [result, textStatus, jqXHR]\n );\n }\n })\n .fail(function (jqXHR, textStatus, errorThrown) {\n o.jqXHR = jqXHR;\n o.textStatus = textStatus;\n o.errorThrown = errorThrown;\n that._trigger('chunkfail', null, o);\n that._trigger('chunkalways', null, o);\n dfd.rejectWith(\n o.context,\n [jqXHR, textStatus, errorThrown]\n );\n });\n };\n this._enhancePromise(promise);\n promise.abort = function () {\n return jqXHR.abort();\n };\n upload();\n return promise;\n },\n\n _beforeSend: function (e, data) {\n if (this._active === 0) {\n // the start callback is triggered when an upload starts\n // and no other uploads are currently running,\n // equivalent to the global ajaxStart event:\n this._trigger('start');\n // Set timer for global bitrate progress calculation:\n this._bitrateTimer = new this._BitrateTimer();\n // Reset the global progress values:\n this._progress.loaded = this._progress.total = 0;\n this._progress.bitrate = 0;\n }\n // Make sure the container objects for the .response() and\n // .progress() methods on the data object are available\n // and reset to their initial state:\n this._initResponseObject(data);\n this._initProgressObject(data);\n data._progress.loaded = data.loaded = data.uploadedBytes || 0;\n data._progress.total = data.total = this._getTotal(data.files) || 1;\n data._progress.bitrate = data.bitrate = 0;\n this._active += 1;\n // Initialize the global progress values:\n this._progress.loaded += data.loaded;\n this._progress.total += data.total;\n },\n\n _onDone: function (result, textStatus, jqXHR, options) {\n var total = options._progress.total,\n response = options._response;\n if (options._progress.loaded < total) {\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered:\n this._onProgress($.Event('progress', {\n lengthComputable: true,\n loaded: total,\n total: total\n }), options);\n }\n response.result = options.result = result;\n response.textStatus = options.textStatus = textStatus;\n response.jqXHR = options.jqXHR = jqXHR;\n this._trigger('done', null, options);\n },\n\n _onFail: function (jqXHR, textStatus, errorThrown, options) {\n var response = options._response;\n if (options.recalculateProgress) {\n // Remove the failed (error or abort) file upload from\n // the global progress calculation:\n this._progress.loaded -= options._progress.loaded;\n this._progress.total -= options._progress.total;\n }\n response.jqXHR = options.jqXHR = jqXHR;\n response.textStatus = options.textStatus = textStatus;\n response.errorThrown = options.errorThrown = errorThrown;\n this._trigger('fail', null, options);\n },\n\n _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {\n // jqXHRorResult, textStatus and jqXHRorError are added to the\n // options object via done and fail callbacks\n this._trigger('always', null, options);\n },\n\n _onSend: function (e, data) {\n if (!data.submit) {\n this._addConvenienceMethods(e, data);\n }\n var that = this,\n jqXHR,\n aborted,\n slot,\n pipe,\n options = that._getAJAXSettings(data),\n send = function () {\n that._sending += 1;\n // Set timer for bitrate progress calculation:\n options._bitrateTimer = new that._BitrateTimer();\n jqXHR = jqXHR || (\n ((aborted || that._trigger(\n 'send',\n $.Event('send', {delegatedEvent: e}),\n options\n ) === false) &&\n that._getXHRPromise(false, options.context, aborted)) ||\n that._chunkedUpload(options) || $.ajax(options)\n ).done(function (result, textStatus, jqXHR) {\n that._onDone(result, textStatus, jqXHR, options);\n }).fail(function (jqXHR, textStatus, errorThrown) {\n that._onFail(jqXHR, textStatus, errorThrown, options);\n }).always(function (jqXHRorResult, textStatus, jqXHRorError) {\n that._onAlways(\n jqXHRorResult,\n textStatus,\n jqXHRorError,\n options\n );\n that._sending -= 1;\n that._active -= 1;\n if (options.limitConcurrentUploads &&\n options.limitConcurrentUploads > that._sending) {\n // Start the next queued upload,\n // that has not been aborted:\n var nextSlot = that._slots.shift();\n while (nextSlot) {\n if (that._getDeferredState(nextSlot) === 'pending') {\n nextSlot.resolve();\n break;\n }\n nextSlot = that._slots.shift();\n }\n }\n if (that._active === 0) {\n // The stop callback is triggered when all uploads have\n // been completed, equivalent to the global ajaxStop event:\n that._trigger('stop');\n }\n });\n return jqXHR;\n };\n this._beforeSend(e, options);\n if (this.options.sequentialUploads ||\n (this.options.limitConcurrentUploads &&\n this.options.limitConcurrentUploads <= this._sending)) {\n if (this.options.limitConcurrentUploads > 1) {\n slot = $.Deferred();\n this._slots.push(slot);\n pipe = slot.then(send);\n } else {\n this._sequence = this._sequence.then(send, send);\n pipe = this._sequence;\n }\n // Return the piped Promise object, enhanced with an abort method,\n // which is delegated to the jqXHR object of the current upload,\n // and jqXHR callbacks mapped to the equivalent Promise methods:\n pipe.abort = function () {\n aborted = [undefined, 'abort', 'abort'];\n if (!jqXHR) {\n if (slot) {\n slot.rejectWith(options.context, aborted);\n }\n return send();\n }\n return jqXHR.abort();\n };\n return this._enhancePromise(pipe);\n }\n return send();\n },\n\n _onAdd: function (e, data) {\n var that = this,\n result = true,\n options = $.extend({}, this.options, data),\n files = data.files,\n filesLength = files.length,\n limit = options.limitMultiFileUploads,\n limitSize = options.limitMultiFileUploadSize,\n overhead = options.limitMultiFileUploadSizeOverhead,\n batchSize = 0,\n paramName = this._getParamName(options),\n paramNameSet,\n paramNameSlice,\n fileSet,\n i,\n j = 0;\n if (!filesLength) {\n return false;\n }\n if (limitSize && files[0].size === undefined) {\n limitSize = undefined;\n }\n if (!(options.singleFileUploads || limit || limitSize) ||\n !this._isXHRUpload(options)) {\n fileSet = [files];\n paramNameSet = [paramName];\n } else if (!(options.singleFileUploads || limitSize) && limit) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i += limit) {\n fileSet.push(files.slice(i, i + limit));\n paramNameSlice = paramName.slice(i, i + limit);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n }\n } else if (!options.singleFileUploads && limitSize) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i = i + 1) {\n batchSize += files[i].size + overhead;\n if (i + 1 === filesLength ||\n ((batchSize + files[i + 1].size + overhead) > limitSize) ||\n (limit && i + 1 - j >= limit)) {\n fileSet.push(files.slice(j, i + 1));\n paramNameSlice = paramName.slice(j, i + 1);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n j = i + 1;\n batchSize = 0;\n }\n }\n } else {\n paramNameSet = paramName;\n }\n data.originalFiles = files;\n $.each(fileSet || files, function (index, element) {\n var newData = $.extend({}, data);\n newData.files = fileSet ? element : [element];\n newData.paramName = paramNameSet[index];\n that._initResponseObject(newData);\n that._initProgressObject(newData);\n that._addConvenienceMethods(e, newData);\n result = that._trigger(\n 'add',\n $.Event('add', {delegatedEvent: e}),\n newData\n );\n return result;\n });\n return result;\n },\n\n _replaceFileInput: function (data) {\n var input = data.fileInput,\n inputClone = input.clone(true),\n restoreFocus = input.is(document.activeElement);\n // Add a reference for the new cloned file input to the data argument:\n data.fileInputClone = inputClone;\n $('<form></form>').append(inputClone)[0].reset();\n // Detaching allows to insert the fileInput on another form\n // without loosing the file input value:\n input.after(inputClone).detach();\n // If the fileInput had focus before it was detached,\n // restore focus to the inputClone.\n if (restoreFocus) {\n inputClone.focus();\n }\n // Avoid memory leaks with the detached file input:\n $.cleanData(input.unbind('remove'));\n // Replace the original file input element in the fileInput\n // elements set with the clone, which has been copied including\n // event handlers:\n this.options.fileInput = this.options.fileInput.map(function (i, el) {\n if (el === input[0]) {\n return inputClone[0];\n }\n return el;\n });\n // If the widget has been initialized on the file input itself,\n // override this.element with the file input clone:\n if (input[0] === this.element[0]) {\n this.element = inputClone;\n }\n },\n\n _handleFileTreeEntry: function (entry, path) {\n var that = this,\n dfd = $.Deferred(),\n entries = [],\n dirReader,\n errorHandler = function (e) {\n if (e && !e.entry) {\n e.entry = entry;\n }\n // Since $.when returns immediately if one\n // Deferred is rejected, we use resolve instead.\n // This allows valid files and invalid items\n // to be returned together in one set:\n dfd.resolve([e]);\n },\n successHandler = function (entries) {\n that._handleFileTreeEntries(\n entries,\n path + entry.name + '/'\n ).done(function (files) {\n dfd.resolve(files);\n }).fail(errorHandler);\n },\n readEntries = function () {\n dirReader.readEntries(function (results) {\n if (!results.length) {\n successHandler(entries);\n } else {\n entries = entries.concat(results);\n readEntries();\n }\n }, errorHandler);\n };\n path = path || '';\n if (entry.isFile) {\n if (entry._file) {\n // Workaround for Chrome bug #149735\n entry._file.relativePath = path;\n dfd.resolve(entry._file);\n } else {\n entry.file(function (file) {\n file.relativePath = path;\n dfd.resolve(file);\n }, errorHandler);\n }\n } else if (entry.isDirectory) {\n dirReader = entry.createReader();\n readEntries();\n } else {\n // Return an empy list for file system items\n // other than files or directories:\n dfd.resolve([]);\n }\n return dfd.promise();\n },\n\n _handleFileTreeEntries: function (entries, path) {\n var that = this;\n return $.when.apply(\n $,\n $.map(entries, function (entry) {\n return that._handleFileTreeEntry(entry, path);\n })\n ).then(function () {\n return Array.prototype.concat.apply(\n [],\n arguments\n );\n });\n },\n\n _getDroppedFiles: function (dataTransfer) {\n dataTransfer = dataTransfer || {};\n var items = dataTransfer.items;\n if (items && items.length && (items[0].webkitGetAsEntry ||\n items[0].getAsEntry)) {\n return this._handleFileTreeEntries(\n $.map(items, function (item) {\n var entry;\n if (item.webkitGetAsEntry) {\n entry = item.webkitGetAsEntry();\n if (entry) {\n // Workaround for Chrome bug #149735:\n entry._file = item.getAsFile();\n }\n return entry;\n }\n return item.getAsEntry();\n })\n );\n }\n return $.Deferred().resolve(\n $.makeArray(dataTransfer.files)\n ).promise();\n },\n\n _getSingleFileInputFiles: function (fileInput) {\n fileInput = $(fileInput);\n var entries = fileInput.prop('webkitEntries') ||\n fileInput.prop('entries'),\n files,\n value;\n if (entries && entries.length) {\n return this._handleFileTreeEntries(entries);\n }\n files = $.makeArray(fileInput.prop('files'));\n if (!files.length) {\n value = fileInput.prop('value');\n if (!value) {\n return $.Deferred().resolve([]).promise();\n }\n // If the files property is not available, the browser does not\n // support the File API and we add a pseudo File object with\n // the input value as name with path information removed:\n files = [{name: value.replace(/^.*\\\\/, '')}];\n } else if (files[0].name === undefined && files[0].fileName) {\n // File normalization for Safari 4 and Firefox 3:\n $.each(files, function (index, file) {\n file.name = file.fileName;\n file.size = file.fileSize;\n });\n }\n return $.Deferred().resolve(files).promise();\n },\n\n _getFileInputFiles: function (fileInput) {\n if (!(fileInput instanceof $) || fileInput.length === 1) {\n return this._getSingleFileInputFiles(fileInput);\n }\n return $.when.apply(\n $,\n $.map(fileInput, this._getSingleFileInputFiles)\n ).then(function () {\n return Array.prototype.concat.apply(\n [],\n arguments\n );\n });\n },\n\n _onChange: function (e) {\n var that = this,\n data = {\n fileInput: $(e.target),\n form: $(e.target.form)\n };\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n if (that.options.replaceFileInput) {\n that._replaceFileInput(data);\n }\n if (that._trigger(\n 'change',\n $.Event('change', {delegatedEvent: e}),\n data\n ) !== false) {\n that._onAdd(e, data);\n }\n });\n },\n\n _onPaste: function (e) {\n var items = e.originalEvent && e.originalEvent.clipboardData &&\n e.originalEvent.clipboardData.items,\n data = {files: []};\n if (items && items.length) {\n $.each(items, function (index, item) {\n var file = item.getAsFile && item.getAsFile();\n if (file) {\n data.files.push(file);\n }\n });\n if (this._trigger(\n 'paste',\n $.Event('paste', {delegatedEvent: e}),\n data\n ) !== false) {\n this._onAdd(e, data);\n }\n }\n },\n\n _onDrop: function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var that = this,\n dataTransfer = e.dataTransfer,\n data = {};\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n e.preventDefault();\n this._getDroppedFiles(dataTransfer).always(function (files) {\n data.files = files;\n if (that._trigger(\n 'drop',\n $.Event('drop', {delegatedEvent: e}),\n data\n ) !== false) {\n that._onAdd(e, data);\n }\n });\n }\n },\n\n _onDragOver: getDragHandler('dragover'),\n\n _onDragEnter: getDragHandler('dragenter'),\n\n _onDragLeave: getDragHandler('dragleave'),\n\n _initEventHandlers: function () {\n if (this._isXHRUpload(this.options)) {\n this._on(this.options.dropZone, {\n dragover: this._onDragOver,\n drop: this._onDrop,\n // event.preventDefault() on dragenter is required for IE10+:\n dragenter: this._onDragEnter,\n // dragleave is not required, but added for completeness:\n dragleave: this._onDragLeave\n });\n this._on(this.options.pasteZone, {\n paste: this._onPaste\n });\n }\n if ($.support.fileInput) {\n this._on(this.options.fileInput, {\n change: this._onChange\n });\n }\n },\n\n _destroyEventHandlers: function () {\n this._off(this.options.dropZone, 'dragenter dragleave dragover drop');\n this._off(this.options.pasteZone, 'paste');\n this._off(this.options.fileInput, 'change');\n },\n\n _destroy: function () {\n this._destroyEventHandlers();\n },\n\n _setOption: function (key, value) {\n var reinit = $.inArray(key, this._specialOptions) !== -1;\n if (reinit) {\n this._destroyEventHandlers();\n }\n this._super(key, value);\n if (reinit) {\n this._initSpecialOptions();\n this._initEventHandlers();\n }\n },\n\n _initSpecialOptions: function () {\n var options = this.options;\n if (options.fileInput === undefined) {\n options.fileInput = this.element.is('input[type=\"file\"]') ?\n this.element : this.element.find('input[type=\"file\"]');\n } else if (!(options.fileInput instanceof $)) {\n options.fileInput = $(options.fileInput);\n }\n if (!(options.dropZone instanceof $)) {\n options.dropZone = $(options.dropZone);\n }\n if (!(options.pasteZone instanceof $)) {\n options.pasteZone = $(options.pasteZone);\n }\n },\n\n _getRegExp: function (str) {\n var parts = str.split('/'),\n modifiers = parts.pop();\n parts.shift();\n return new RegExp(parts.join('/'), modifiers);\n },\n\n _isRegExpOption: function (key, value) {\n return key !== 'url' && $.type(value) === 'string' &&\n /^\\/.*\\/[igm]{0,3}$/.test(value);\n },\n\n _initDataAttributes: function () {\n var that = this,\n options = this.options,\n data = this.element.data();\n // Initialize options set via HTML5 data-attributes:\n $.each(\n this.element[0].attributes,\n function (index, attr) {\n var key = attr.name.toLowerCase(),\n value;\n if (/^data-/.test(key)) {\n // Convert hyphen-ated key to camelCase:\n key = key.slice(5).replace(/-[a-z]/g, function (str) {\n return str.charAt(1).toUpperCase();\n });\n value = data[key];\n if (that._isRegExpOption(key, value)) {\n value = that._getRegExp(value);\n }\n options[key] = value;\n }\n }\n );\n },\n\n _create: function () {\n this._initDataAttributes();\n this._initSpecialOptions();\n this._slots = [];\n this._sequence = this._getXHRPromise(true);\n this._sending = this._active = 0;\n this._initProgressObject(this);\n this._initEventHandlers();\n },\n\n // This method is exposed to the widget API and allows to query\n // the number of active uploads:\n active: function () {\n return this._active;\n },\n\n // This method is exposed to the widget API and allows to query\n // the widget upload progress.\n // It returns an object with loaded, total and bitrate properties\n // for the running uploads:\n progress: function () {\n return this._progress;\n },\n\n // This method is exposed to the widget API and allows adding files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files property and can contain additional options:\n // .fileupload('add', {files: filesList});\n add: function (data) {\n var that = this;\n if (!data || this.options.disabled) {\n return;\n }\n if (data.fileInput && !data.files) {\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n that._onAdd(null, data);\n });\n } else {\n data.files = $.makeArray(data.files);\n this._onAdd(null, data);\n }\n },\n\n // This method is exposed to the widget API and allows sending files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files or fileInput property and can contain additional options:\n // .fileupload('send', {files: filesList});\n // The method returns a Promise object for the file upload call.\n send: function (data) {\n if (data && !this.options.disabled) {\n if (data.fileInput && !data.files) {\n var that = this,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n aborted;\n promise.abort = function () {\n aborted = true;\n if (jqXHR) {\n return jqXHR.abort();\n }\n dfd.reject(null, 'abort', 'abort');\n return promise;\n };\n this._getFileInputFiles(data.fileInput).always(\n function (files) {\n if (aborted) {\n return;\n }\n if (!files.length) {\n dfd.reject();\n return;\n }\n data.files = files;\n jqXHR = that._onSend(null, data);\n jqXHR.then(\n function (result, textStatus, jqXHR) {\n dfd.resolve(result, textStatus, jqXHR);\n },\n function (jqXHR, textStatus, errorThrown) {\n dfd.reject(jqXHR, textStatus, errorThrown);\n }\n );\n }\n );\n return this._enhancePromise(promise);\n }\n data.files = $.makeArray(data.files);\n if (data.files.length) {\n return this._onSend(null, data);\n }\n }\n return this._getXHRPromise(false, data && data.context);\n }\n\n });\n\n}));\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2JsdWVpbXAtZmlsZS11cGxvYWQvanMvanF1ZXJ5LmZpbGV1cGxvYWQuanM/NDFlMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpblxuICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkXG4gKlxuICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW5cbiAqIGh0dHBzOi8vYmx1ZWltcC5uZXRcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxuICovXG5cbi8qIGpzaGludCBub21lbjpmYWxzZSAqL1xuLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93LCBkb2N1bWVudCwgbG9jYXRpb24sIEJsb2IsIEZvcm1EYXRhICovXG5cbjsoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZTpcbiAgICAgICAgZGVmaW5lKFtcbiAgICAgICAgICAgICdqcXVlcnknLFxuICAgICAgICAgICAgJ2pxdWVyeS11aS91aS93aWRnZXQnXG4gICAgICAgIF0sIGZhY3RvcnkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6XG4gICAgICAgIGZhY3RvcnkoXG4gICAgICAgICAgICByZXF1aXJlKCdqcXVlcnknKSxcbiAgICAgICAgICAgIHJlcXVpcmUoJy4vdmVuZG9yL2pxdWVyeS51aS53aWRnZXQnKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczpcbiAgICAgICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5KTtcbiAgICB9XG59KGZ1bmN0aW9uICgkKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8gRGV0ZWN0IGZpbGUgaW5wdXQgc3VwcG9ydCwgYmFzZWQgb25cbiAgICAvLyBodHRwOi8vdmlsamFtaXMuY29tL2Jsb2cvMjAxMi9maWxlLXVwbG9hZC1zdXBwb3J0LW9uLW1vYmlsZS9cbiAgICAkLnN1cHBvcnQuZmlsZUlucHV0ID0gIShuZXcgUmVnRXhwKFxuICAgICAgICAvLyBIYW5kbGUgZGV2aWNlcyB3aGljaCBnaXZlIGZhbHNlIHBvc2l0aXZlcyBmb3IgdGhlIGZlYXR1cmUgZGV0ZWN0aW9uOlxuICAgICAgICAnKEFuZHJvaWQgKDFcXFxcLlswMTU2XXwyXFxcXC5bMDFdKSknICtcbiAgICAgICAgICAgICd8KFdpbmRvd3MgUGhvbmUgKE9TIDd8OFxcXFwuMCkpfChYQkxXUCl8KFp1bmVXUCl8KFdQRGVza3RvcCknICtcbiAgICAgICAgICAgICd8KHcoZWIpP09TQnJvd3Nlcil8KHdlYk9TKScgK1xuICAgICAgICAgICAgJ3woS2luZGxlLygxXFxcXC4wfDJcXFxcLlswNV18M1xcXFwuMCkpJ1xuICAgICkudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkgfHxcbiAgICAgICAgLy8gRmVhdHVyZSBkZXRlY3Rpb24gZm9yIGFsbCBvdGhlciBkZXZpY2VzOlxuICAgICAgICAkKCc8aW5wdXQgdHlwZT1cImZpbGVcIj4nKS5wcm9wKCdkaXNhYmxlZCcpKTtcblxuICAgIC8vIFRoZSBGaWxlUmVhZGVyIEFQSSBpcyBub3QgYWN0dWFsbHkgdXNlZCwgYnV0IHdvcmtzIGFzIGZlYXR1cmUgZGV0ZWN0aW9uLFxuICAgIC8vIGFzIHNvbWUgU2FmYXJpIHZlcnNpb25zICg1Pykgc3VwcG9ydCBYSFIgZmlsZSB1cGxvYWRzIHZpYSB0aGUgRm9ybURhdGEgQVBJLFxuICAgIC8vIGJ1dCBub3Qgbm9uLW11bHRpcGFydCBYSFIgZmlsZSB1cGxvYWRzLlxuICAgIC8vIHdpbmRvdy5YTUxIdHRwUmVxdWVzdFVwbG9hZCBpcyBub3QgYXZhaWxhYmxlIG9uIElFMTAsIHNvIHdlIGNoZWNrIGZvclxuICAgIC8vIHdpbmRvdy5Qcm9ncmVzc0V2ZW50IGluc3RlYWQgdG8gZGV0ZWN0IFhIUjIgZmlsZSB1cGxvYWQgY2FwYWJpbGl0eTpcbiAgICAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCA9ICEhKHdpbmRvdy5Qcm9ncmVzc0V2ZW50ICYmIHdpbmRvdy5GaWxlUmVhZGVyKTtcbiAgICAkLnN1cHBvcnQueGhyRm9ybURhdGFGaWxlVXBsb2FkID0gISF3aW5kb3cuRm9ybURhdGE7XG5cbiAgICAvLyBEZXRlY3Qgc3VwcG9ydCBmb3IgQmxvYiBzbGljaW5nIChyZXF1aXJlZCBmb3IgY2h1bmtlZCB1cGxvYWRzKTpcbiAgICAkLnN1cHBvcnQuYmxvYlNsaWNlID0gd2luZG93LkJsb2IgJiYgKEJsb2IucHJvdG90eXBlLnNsaWNlIHx8XG4gICAgICAgIEJsb2IucHJvdG90eXBlLndlYmtpdFNsaWNlIHx8IEJsb2IucHJvdG90eXBlLm1velNsaWNlKTtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgZHJhZyBoYW5kbGVycyBmb3IgZHJhZ292ZXIvZHJhZ2VudGVyL2RyYWdsZWF2ZTpcbiAgICBmdW5jdGlvbiBnZXREcmFnSGFuZGxlcih0eXBlKSB7XG4gICAgICAgIHZhciBpc0RyYWdPdmVyID0gdHlwZSA9PT0gJ2RyYWdvdmVyJztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyO1xuICAgICAgICAgICAgdmFyIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyO1xuICAgICAgICAgICAgaWYgKGRhdGFUcmFuc2ZlciAmJiAkLmluQXJyYXkoJ0ZpbGVzJywgZGF0YVRyYW5zZmVyLnR5cGVzKSAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkLkV2ZW50KHR5cGUsIHtkZWxlZ2F0ZWRFdmVudDogZX0pXG4gICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmIChpc0RyYWdPdmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZmlsZXVwbG9hZCB3aWRnZXQgbGlzdGVucyBmb3IgY2hhbmdlIGV2ZW50cyBvbiBmaWxlIGlucHV0IGZpZWxkcyBkZWZpbmVkXG4gICAgLy8gdmlhIGZpbGVJbnB1dCBzZXR0aW5nIGFuZCBwYXN0ZSBvciBkcm9wIGV2ZW50cyBvZiB0aGUgZ2l2ZW4gZHJvcFpvbmUuXG4gICAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgalF1ZXJ5IFdpZGdldCBtZXRob2RzLCB0aGUgZmlsZXVwbG9hZCB3aWRnZXRcbiAgICAvLyBleHBvc2VzIHRoZSBcImFkZFwiIGFuZCBcInNlbmRcIiBtZXRob2RzLCB0byBhZGQgb3IgZGlyZWN0bHkgc2VuZCBmaWxlcyB1c2luZ1xuICAgIC8vIHRoZSBmaWxldXBsb2FkIEFQSS5cbiAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIHBhc3RlLCBkcmFnICYgZHJvcCBvclxuICAgIC8vIFwiYWRkXCIgbWV0aG9kIGFyZSB1cGxvYWRlZCBpbW1lZGlhdGVseSwgYnV0IGl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlXG4gICAgLy8gdGhlIFwiYWRkXCIgY2FsbGJhY2sgb3B0aW9uIHRvIHF1ZXVlIGZpbGUgdXBsb2Fkcy5cbiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywge1xuXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8vIFRoZSBkcm9wIHRhcmdldCBlbGVtZW50KHMpLCBieSB0aGUgZGVmYXVsdCB0aGUgY29tcGxldGUgZG9jdW1lbnQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIGRyYWcgJiBkcm9wIHN1cHBvcnQ6XG4gICAgICAgICAgICBkcm9wWm9uZTogJChkb2N1bWVudCksXG4gICAgICAgICAgICAvLyBUaGUgcGFzdGUgdGFyZ2V0IGVsZW1lbnQocyksIGJ5IHRoZSBkZWZhdWx0IHVuZGVmaW5lZC5cbiAgICAgICAgICAgIC8vIFNldCB0byBhIERPTSBub2RlIG9yIGpRdWVyeSBvYmplY3QgdG8gZW5hYmxlIGZpbGUgcGFzdGluZzpcbiAgICAgICAgICAgIHBhc3RlWm9uZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gVGhlIGZpbGUgaW5wdXQgZmllbGQocyksIHRoYXQgYXJlIGxpc3RlbmVkIHRvIGZvciBjaGFuZ2UgZXZlbnRzLlxuICAgICAgICAgICAgLy8gSWYgdW5kZWZpbmVkLCBpdCBpcyBzZXQgdG8gdGhlIGZpbGUgaW5wdXQgZmllbGRzIGluc2lkZVxuICAgICAgICAgICAgLy8gb2YgdGhlIHdpZGdldCBlbGVtZW50IG9uIHBsdWdpbiBpbml0aWFsaXphdGlvbi5cbiAgICAgICAgICAgIC8vIFNldCB0byBudWxsIHRvIGRpc2FibGUgdGhlIGNoYW5nZSBsaXN0ZW5lci5cbiAgICAgICAgICAgIGZpbGVJbnB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCBhIGNsb25lIGFmdGVyXG4gICAgICAgICAgICAvLyBlYWNoIGlucHV0IGZpZWxkIGNoYW5nZSBldmVudC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgaWZyYW1lIHRyYW5zcG9ydFxuICAgICAgICAgICAgLy8gcXVldWVzIGFuZCBhbGxvd3MgY2hhbmdlIGV2ZW50cyB0byBiZSBmaXJlZCBmb3IgdGhlIHNhbWUgZmlsZVxuICAgICAgICAgICAgLy8gc2VsZWN0aW9uLCBidXQgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2U6XG4gICAgICAgICAgICByZXBsYWNlRmlsZUlucHV0OiB0cnVlLFxuICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgZmlsZSBmb3JtIGRhdGEgKHRoZSByZXF1ZXN0IGFyZ3VtZW50IG5hbWUpLlxuICAgICAgICAgICAgLy8gSWYgdW5kZWZpbmVkIG9yIGVtcHR5LCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZCBpc1xuICAgICAgICAgICAgLy8gdXNlZCwgb3IgXCJmaWxlc1tdXCIgaWYgdGhlIGZpbGUgaW5wdXQgbmFtZSBwcm9wZXJ0eSBpcyBhbHNvIGVtcHR5LFxuICAgICAgICAgICAgLy8gY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3M6XG4gICAgICAgICAgICBwYXJhbU5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGVhY2ggZmlsZSBvZiBhIHNlbGVjdGlvbiBpcyB1cGxvYWRlZCB1c2luZyBhbiBpbmRpdmlkdWFsXG4gICAgICAgICAgICAvLyByZXF1ZXN0IGZvciBYSFIgdHlwZSB1cGxvYWRzLiBTZXQgdG8gZmFsc2UgdG8gdXBsb2FkIGZpbGVcbiAgICAgICAgICAgIC8vIHNlbGVjdGlvbnMgaW4gb25lIHJlcXVlc3QgZWFjaDpcbiAgICAgICAgICAgIHNpbmdsZUZpbGVVcGxvYWRzOiB0cnVlLFxuICAgICAgICAgICAgLy8gVG8gbGltaXQgdGhlIG51bWJlciBvZiBmaWxlcyB1cGxvYWRlZCB3aXRoIG9uZSBYSFIgcmVxdWVzdCxcbiAgICAgICAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOlxuICAgICAgICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG9wdGlvbiBsaW1pdHMgdGhlIG51bWJlciBvZiBmaWxlcyB1cGxvYWRlZCB3aXRoIG9uZVxuICAgICAgICAgICAgLy8gWEhSIHJlcXVlc3QgdG8ga2VlcCB0aGUgcmVxdWVzdCBzaXplIHVuZGVyIG9yIGVxdWFsIHRvIHRoZSBkZWZpbmVkXG4gICAgICAgICAgICAvLyBsaW1pdCBpbiBieXRlczpcbiAgICAgICAgICAgIGxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gTXVsdGlwYXJ0IGZpbGUgdXBsb2FkcyBhZGQgYSBudW1iZXIgb2YgYnl0ZXMgdG8gZWFjaCB1cGxvYWRlZCBmaWxlLFxuICAgICAgICAgICAgLy8gdGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgb3B0aW9uIGFkZHMgYW4gb3ZlcmhlYWQgZm9yIGVhY2ggZmlsZSB1c2VkXG4gICAgICAgICAgICAvLyBpbiB0aGUgbGltaXRNdWx0aUZpbGVVcGxvYWRTaXplIGNvbmZpZ3VyYXRpb246XG4gICAgICAgICAgICBsaW1pdE11bHRpRmlsZVVwbG9hZFNpemVPdmVyaGVhZDogNTEyLFxuICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gaXNzdWUgYWxsIGZpbGUgdXBsb2FkIHJlcXVlc3RzXG4gICAgICAgICAgICAvLyBpbiBhIHNlcXVlbnRpYWwgb3JkZXI6XG4gICAgICAgICAgICBzZXF1ZW50aWFsVXBsb2FkczogZmFsc2UsXG4gICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXBsb2FkcyxcbiAgICAgICAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOlxuICAgICAgICAgICAgbGltaXRDb25jdXJyZW50VXBsb2FkczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gZm9yY2UgaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgICAgICAgZm9yY2VJZnJhbWVUcmFuc3BvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHJlZGlyZWN0IHVybCBvbiB0aGVcbiAgICAgICAgICAgIC8vIG9yaWdpbiBzZXJ2ZXIsIGZvciBjcm9zcy1kb21haW4gaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIHJlZGlyZWN0IHVybCwgc2VudCBhcyBwYXJ0IG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAvLyBkYXRhIGFuZCBzZXQgdG8gJ3JlZGlyZWN0JyBpZiB0aGlzIG9wdGlvbiBpcyBlbXB0eTpcbiAgICAgICAgICAgIHJlZGlyZWN0UGFyYW1OYW1lOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdGhlIGxvY2F0aW9uIG9mIGEgcG9zdE1lc3NhZ2Ugd2luZG93LFxuICAgICAgICAgICAgLy8gdG8gZW5hYmxlIHBvc3RNZXNzYWdlIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFhIUiBmaWxlIHVwbG9hZHMgYXJlIHNlbnQgYXMgbXVsdGlwYXJ0L2Zvcm0tZGF0YS5cbiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGlzIGFsd2F5cyB1c2luZyBtdWx0aXBhcnQvZm9ybS1kYXRhLlxuICAgICAgICAgICAgLy8gU2V0IHRvIGZhbHNlIHRvIGVuYWJsZSBub24tbXVsdGlwYXJ0IFhIUiB1cGxvYWRzOlxuICAgICAgICAgICAgbXVsdGlwYXJ0OiB0cnVlLFxuICAgICAgICAgICAgLy8gVG8gdXBsb2FkIGxhcmdlIGZpbGVzIGluIHNtYWxsZXIgY2h1bmtzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb25cbiAgICAgICAgICAgIC8vIHRvIGEgcHJlZmVycmVkIG1heGltdW0gY2h1bmsgc2l6ZS4gSWYgc2V0IHRvIDAsIG51bGwgb3IgdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gb3IgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgQmxvYiBBUEksIGZpbGVzIHdpbGxcbiAgICAgICAgICAgIC8vIGJlIHVwbG9hZGVkIGFzIGEgd2hvbGUuXG4gICAgICAgICAgICBtYXhDaHVua1NpemU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIFdoZW4gYSBub24tbXVsdGlwYXJ0IHVwbG9hZCBvciBhIGNodW5rZWQgbXVsdGlwYXJ0IHVwbG9hZCBoYXMgYmVlblxuICAgICAgICAgICAgLy8gYWJvcnRlZCwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSB1cGxvYWQgYnkgc2V0dGluZ1xuICAgICAgICAgICAgLy8gaXQgdG8gdGhlIHNpemUgb2YgdGhlIGFscmVhZHkgdXBsb2FkZWQgYnl0ZXMuIFRoaXMgb3B0aW9uIGlzIG1vc3RcbiAgICAgICAgICAgIC8vIHVzZWZ1bCB3aGVuIG1vZGlmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgaW5zaWRlIG9mIHRoZSBcImFkZFwiIG9yXG4gICAgICAgICAgICAvLyBcInNlbmRcIiBjYWxsYmFja3MsIGFzIHRoZSBvcHRpb25zIGFyZSBjbG9uZWQgZm9yIGVhY2ggZmlsZSB1cGxvYWQuXG4gICAgICAgICAgICB1cGxvYWRlZEJ5dGVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBmaWxlIHVwbG9hZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIGdsb2JhbCBwcm9ncmVzcyBjYWxjdWxhdGlvbi4gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlIHRvXG4gICAgICAgICAgICAvLyBwcmV2ZW50IHJlY2FsY3VsYXRpbmcgdGhlIGdsb2JhbCBwcm9ncmVzcyBkYXRhOlxuICAgICAgICAgICAgcmVjYWxjdWxhdGVQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgIC8vIEludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBjYWxjdWxhdGUgYW5kIHRyaWdnZXIgcHJvZ3Jlc3MgZXZlbnRzOlxuICAgICAgICAgICAgcHJvZ3Jlc3NJbnRlcnZhbDogMTAwLFxuICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwcm9ncmVzcyBiaXRyYXRlOlxuICAgICAgICAgICAgYml0cmF0ZUludGVydmFsOiA1MDAsXG4gICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCB1cGxvYWRzIGFyZSBzdGFydGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgZmlsZXM6XG4gICAgICAgICAgICBhdXRvVXBsb2FkOiB0cnVlLFxuXG4gICAgICAgICAgICAvLyBFcnJvciBhbmQgaW5mbyBtZXNzYWdlczpcbiAgICAgICAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgICAgICAgICAgdXBsb2FkZWRCeXRlczogJ1VwbG9hZGVkIGJ5dGVzIGV4Y2VlZCBmaWxlIHNpemUnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBmdW5jdGlvbiwgZ2V0cyB0aGUgbWVzc2FnZSBrZXkgdG8gYmUgdHJhbnNsYXRlZFxuICAgICAgICAgICAgLy8gYW5kIGFuIG9iamVjdCB3aXRoIGNvbnRleHQgc3BlY2lmaWMgZGF0YSBhcyBhcmd1bWVudHM6XG4gICAgICAgICAgICBpMThuOiBmdW5jdGlvbiAobWVzc2FnZSwgY29udGV4dCkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzW21lc3NhZ2VdIHx8IG1lc3NhZ2UudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAkLmVhY2goY29udGV4dCwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJ3snICsga2V5ICsgJ30nLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgZm9ybSBkYXRhIHRvIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgZmlsZSB1cGxvYWRzIGNhbiBiZSBzZXRcbiAgICAgICAgICAgIC8vIHVzaW5nIHRoaXMgb3B0aW9uLCB3aGljaCBhY2NlcHRzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZFxuICAgICAgICAgICAgLy8gdmFsdWUgcHJvcGVydGllcywgYSBmdW5jdGlvbiByZXR1cm5pbmcgc3VjaCBhbiBhcnJheSwgYSBGb3JtRGF0YVxuICAgICAgICAgICAgLy8gb2JqZWN0IChmb3IgWEhSIGZpbGUgdXBsb2FkcyksIG9yIGEgc2ltcGxlIG9iamVjdC5cbiAgICAgICAgICAgIC8vIFRoZSBmb3JtIG9mIHRoZSBmaXJzdCBmaWxlSW5wdXQgaXMgZ2l2ZW4gYXMgcGFyYW1ldGVyIHRvIHRoZSBmdW5jdGlvbjpcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmdW5jdGlvbiAoZm9ybSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtLnNlcmlhbGl6ZUFycmF5KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBUaGUgYWRkIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgc29vbiBhcyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGZpbGV1cGxvYWRcbiAgICAgICAgICAgIC8vIHdpZGdldCAodmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBkcmFnICYgZHJvcCwgcGFzdGUgb3IgYWRkIEFQSSBjYWxsKS5cbiAgICAgICAgICAgIC8vIElmIHRoZSBzaW5nbGVGaWxlVXBsb2FkcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhpcyBjYWxsYmFjayB3aWxsIGJlXG4gICAgICAgICAgICAvLyBjYWxsZWQgb25jZSBmb3IgZWFjaCBmaWxlIGluIHRoZSBzZWxlY3Rpb24gZm9yIFhIUiBmaWxlIHVwbG9hZHMsIGVsc2VcbiAgICAgICAgICAgIC8vIG9uY2UgZm9yIGVhY2ggZmlsZSBzZWxlY3Rpb24uXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gVGhlIHVwbG9hZCBzdGFydHMgd2hlbiB0aGUgc3VibWl0IG1ldGhvZCBpcyBpbnZva2VkIG9uIHRoZSBkYXRhIHBhcmFtZXRlci5cbiAgICAgICAgICAgIC8vIFRoZSBkYXRhIG9iamVjdCBjb250YWlucyBhIGZpbGVzIHByb3BlcnR5IGhvbGRpbmcgdGhlIGFkZGVkIGZpbGVzXG4gICAgICAgICAgICAvLyBhbmQgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIExpc3RlbmVycyBmb3IgdGhpcyBjYWxsYmFjayBjYW4gYWxzbyBiZSBib3VuZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgICAgICAgIC8vIC5iaW5kKCdmaWxldXBsb2FkYWRkJywgZnVuYyk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gZGF0YS5zdWJtaXQoKSByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgYW5kIGFsbG93cyB0byBhdHRhY2ggYWRkaXRpb25hbFxuICAgICAgICAgICAgLy8gaGFuZGxlcnMgdXNpbmcgalF1ZXJ5J3MgRGVmZXJyZWQgY2FsbGJhY2tzOlxuICAgICAgICAgICAgLy8gZGF0YS5zdWJtaXQoKS5kb25lKGZ1bmMpLmZhaWwoZnVuYykuYWx3YXlzKGZ1bmMpO1xuICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuYXV0b1VwbG9hZCB8fCAoZGF0YS5hdXRvVXBsb2FkICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maWxldXBsb2FkKCdvcHRpb24nLCAnYXV0b1VwbG9hZCcpKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnByb2Nlc3MoKS5kb25lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIE90aGVyIGNhbGxiYWNrczpcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdWJtaXQgZXZlbnQgb2YgZWFjaCBmaWxlIHVwbG9hZDpcbiAgICAgICAgICAgIC8vIHN1Ym1pdDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN1Ym1pdCcsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN0YXJ0IG9mIGVhY2ggZmlsZSB1cGxvYWQgcmVxdWVzdDpcbiAgICAgICAgICAgIC8vIHNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzZW5kJywgZnVuYyk7XG5cbiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBzdWNjZXNzZnVsIHVwbG9hZHM6XG4gICAgICAgICAgICAvLyBkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZG9uZScsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZmFpbGVkIChhYm9ydCBvciBlcnJvcikgdXBsb2FkczpcbiAgICAgICAgICAgIC8vIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRmYWlsJywgZnVuYyk7XG5cbiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjb21wbGV0ZWQgKHN1Y2Nlc3MsIGFib3J0IG9yIGVycm9yKSByZXF1ZXN0czpcbiAgICAgICAgICAgIC8vIGFsd2F5czogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGFsd2F5cycsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkIHByb2dyZXNzIGV2ZW50czpcbiAgICAgICAgICAgIC8vIHByb2dyZXNzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkcHJvZ3Jlc3MnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGdsb2JhbCB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOlxuICAgICAgICAgICAgLy8gcHJvZ3Jlc3NhbGw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwcm9ncmVzc2FsbCcsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdGFydCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDpcbiAgICAgICAgICAgIC8vIHN0YXJ0OiBmdW5jdGlvbiAoZSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2Fkc3RhcnQnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZHMgc3RvcCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdG9wIGV2ZW50OlxuICAgICAgICAgICAgLy8gc3RvcDogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN0b3AnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNoYW5nZSBldmVudHMgb2YgdGhlIGZpbGVJbnB1dChzKTpcbiAgICAgICAgICAgIC8vIGNoYW5nZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGNoYW5nZScsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgcGFzdGUgZXZlbnRzIHRvIHRoZSBwYXN0ZVpvbmUocyk6XG4gICAgICAgICAgICAvLyBwYXN0ZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHBhc3RlJywgZnVuYyk7XG5cbiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBkcm9wIGV2ZW50cyBvZiB0aGUgZHJvcFpvbmUocyk6XG4gICAgICAgICAgICAvLyBkcm9wOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZHJvcCcsIGZ1bmMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZHJhZ292ZXIgZXZlbnRzIG9mIHRoZSBkcm9wWm9uZShzKTpcbiAgICAgICAgICAgIC8vIGRyYWdvdmVyOiBmdW5jdGlvbiAoZSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZHJhZ292ZXInLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdGFydCBvZiBlYWNoIGNodW5rIHVwbG9hZCByZXF1ZXN0OlxuICAgICAgICAgICAgLy8gY2h1bmtzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmtzZW5kJywgZnVuYyk7XG5cbiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBzdWNjZXNzZnVsIGNodW5rIHVwbG9hZHM6XG4gICAgICAgICAgICAvLyBjaHVua2RvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaHVua2RvbmUnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIGNodW5rIHVwbG9hZHM6XG4gICAgICAgICAgICAvLyBjaHVua2ZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaHVua2ZhaWwnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNvbXBsZXRlZCAoc3VjY2VzcywgYWJvcnQgb3IgZXJyb3IpIGNodW5rIHVwbG9hZCByZXF1ZXN0czpcbiAgICAgICAgICAgIC8vIGNodW5rYWx3YXlzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmthbHdheXMnLCBmdW5jKTtcblxuICAgICAgICAgICAgLy8gVGhlIHBsdWdpbiBvcHRpb25zIGFyZSB1c2VkIGFzIHNldHRpbmdzIG9iamVjdCBmb3IgdGhlIGFqYXggY2FsbHMuXG4gICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBqUXVlcnkgYWpheCBzZXR0aW5ncyByZXF1aXJlZCBmb3IgdGhlIGZpbGUgdXBsb2FkczpcbiAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcbiAgICAgICAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IDBcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBBIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHJlcXVpcmUgcmVpbml0aWFsaXppbmcgZXZlbnQgbGlzdGVuZXJzIGFuZC9vclxuICAgICAgICAvLyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGNvZGU6XG4gICAgICAgIF9zcGVjaWFsT3B0aW9uczogW1xuICAgICAgICAgICAgJ2ZpbGVJbnB1dCcsXG4gICAgICAgICAgICAnZHJvcFpvbmUnLFxuICAgICAgICAgICAgJ3Bhc3RlWm9uZScsXG4gICAgICAgICAgICAnbXVsdGlwYXJ0JyxcbiAgICAgICAgICAgICdmb3JjZUlmcmFtZVRyYW5zcG9ydCdcbiAgICAgICAgXSxcblxuICAgICAgICBfYmxvYlNsaWNlOiAkLnN1cHBvcnQuYmxvYlNsaWNlICYmIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzbGljZSA9IHRoaXMuc2xpY2UgfHwgdGhpcy53ZWJraXRTbGljZSB8fCB0aGlzLm1velNsaWNlO1xuICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX0JpdHJhdGVUaW1lcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy50aW1lc3RhbXAgPSAoKERhdGUubm93KSA/IERhdGUubm93KCkgOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gMDtcbiAgICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLmdldEJpdHJhdGUgPSBmdW5jdGlvbiAobm93LCBsb2FkZWQsIGludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRpbWVEaWZmID0gbm93IC0gdGhpcy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmJpdHJhdGUgfHwgIWludGVydmFsIHx8IHRpbWVEaWZmID4gaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gKGxvYWRlZCAtIHRoaXMubG9hZGVkKSAqICgxMDAwIC8gdGltZURpZmYpICogODtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSBsb2FkZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gbm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iaXRyYXRlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBfaXNYSFJVcGxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZm9yY2VJZnJhbWVUcmFuc3BvcnQgJiZcbiAgICAgICAgICAgICAgICAoKCFvcHRpb25zLm11bHRpcGFydCAmJiAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCkgfHxcbiAgICAgICAgICAgICAgICAkLnN1cHBvcnQueGhyRm9ybURhdGFGaWxlVXBsb2FkKTtcbiAgICAgICAgfSxcblxuICAgICAgICBfZ2V0Rm9ybURhdGE6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB2YXIgZm9ybURhdGE7XG4gICAgICAgICAgICBpZiAoJC50eXBlKG9wdGlvbnMuZm9ybURhdGEpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybURhdGEob3B0aW9ucy5mb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkLmlzQXJyYXkob3B0aW9ucy5mb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkLnR5cGUob3B0aW9ucy5mb3JtRGF0YSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5mb3JtRGF0YSwgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSxcblxuICAgICAgICBfZ2V0VG90YWw6IGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICAgICAgdmFyIHRvdGFsID0gMDtcbiAgICAgICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XG4gICAgICAgICAgICAgICAgdG90YWwgKz0gZmlsZS5zaXplIHx8IDE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbDtcbiAgICAgICAgfSxcblxuICAgICAgICBfaW5pdFByb2dyZXNzT2JqZWN0OiBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICB2YXIgcHJvZ3Jlc3MgPSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkOiAwLFxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICAgICAgICAgIGJpdHJhdGU6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAob2JqLl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICQuZXh0ZW5kKG9iai5fcHJvZ3Jlc3MsIHByb2dyZXNzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2JqLl9wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIF9pbml0UmVzcG9uc2VPYmplY3Q6IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBwcm9wO1xuICAgICAgICAgICAgaWYgKG9iai5fcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHByb3AgaW4gb2JqLl9yZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLl9yZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9iai5fcmVzcG9uc2VbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9iai5fcmVzcG9uc2UgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfb25Qcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm93ID0gKChEYXRlLm5vdykgPyBEYXRlLm5vdygpIDogKG5ldyBEYXRlKCkpLmdldFRpbWUoKSksXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5fdGltZSAmJiBkYXRhLnByb2dyZXNzSW50ZXJ2YWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChub3cgLSBkYXRhLl90aW1lIDwgZGF0YS5wcm9ncmVzc0ludGVydmFsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgIT09IGUudG90YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhLl90aW1lID0gbm93O1xuICAgICAgICAgICAgICAgIGxvYWRlZCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgICAgIGUubG9hZGVkIC8gZS50b3RhbCAqIChkYXRhLmNodW5rU2l6ZSB8fCBkYXRhLl9wcm9ncmVzcy50b3RhbClcbiAgICAgICAgICAgICAgICApICsgKGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwKTtcbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGRpZmZlcmVuY2UgZnJvbSB0aGUgcHJldmlvdXNseSBsb2FkZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAvLyB0byB0aGUgZ2xvYmFsIGxvYWRlZCBjb3VudGVyOlxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCArPSAobG9hZGVkIC0gZGF0YS5fcHJvZ3Jlc3MubG9hZGVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5iaXRyYXRlID0gdGhpcy5fYml0cmF0ZVRpbWVyLmdldEJpdHJhdGUoXG4gICAgICAgICAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkLFxuICAgICAgICAgICAgICAgICAgICBkYXRhLmJpdHJhdGVJbnRlcnZhbFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MubG9hZGVkID0gZGF0YS5sb2FkZWQgPSBsb2FkZWQ7XG4gICAgICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MuYml0cmF0ZSA9IGRhdGEuYml0cmF0ZSA9IGRhdGEuX2JpdHJhdGVUaW1lci5nZXRCaXRyYXRlKFxuICAgICAgICAgICAgICAgICAgICBub3csXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5iaXRyYXRlSW50ZXJ2YWxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSBjdXN0b20gcHJvZ3Jlc3MgZXZlbnQgd2l0aCBhIHRvdGFsIGRhdGEgcHJvcGVydHkgc2V0XG4gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGZpbGUgc2l6ZShzKSBvZiB0aGUgY3VycmVudCB1cGxvYWQgYW5kIGEgbG9hZGVkIGRhdGFcbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBjYWxjdWxhdGVkIGFjY29yZGluZ2x5OlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoXG4gICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ3Byb2dyZXNzJywge2RlbGVnYXRlZEV2ZW50OiBlfSksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSBnbG9iYWwgcHJvZ3Jlc3MgZXZlbnQgZm9yIGFsbCBjdXJyZW50IGZpbGUgdXBsb2FkcyxcbiAgICAgICAgICAgICAgICAvLyBpbmNsdWRpbmcgYWpheCBjYWxscyBxdWV1ZWQgZm9yIHNlcXVlbnRpYWwgZmlsZSB1cGxvYWRzOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoXG4gICAgICAgICAgICAgICAgICAgICdwcm9ncmVzc2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ3Byb2dyZXNzYWxsJywge2RlbGVnYXRlZEV2ZW50OiBlfSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfaW5pdFByb2dyZXNzTGlzdGVuZXI6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54aHIgPyBvcHRpb25zLnhocigpIDogJC5hamF4U2V0dGluZ3MueGhyKCk7XG4gICAgICAgICAgICAvLyBBY2Nlc3NzIHRvIHRoZSBuYXRpdmUgWEhSIG9iamVjdCBpcyByZXF1aXJlZCB0byBhZGQgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAgICAgICAvLyBmb3IgdGhlIHVwbG9hZCBwcm9ncmVzcyBldmVudDpcbiAgICAgICAgICAgIGlmICh4aHIudXBsb2FkKSB7XG4gICAgICAgICAgICAgICAgJCh4aHIudXBsb2FkKS5iaW5kKCdwcm9ncmVzcycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvZSA9IGUub3JpZ2luYWxFdmVudDtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9ncmVzcyBldmVudCBwcm9wZXJ0aWVzIGdldCBjb3BpZWQgb3ZlcjpcbiAgICAgICAgICAgICAgICAgICAgZS5sZW5ndGhDb21wdXRhYmxlID0gb2UubGVuZ3RoQ29tcHV0YWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgPSBvZS5sb2FkZWQ7XG4gICAgICAgICAgICAgICAgICAgIGUudG90YWwgPSBvZS50b3RhbDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcyhlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhociA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhocjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIF9pc0luc3RhbmNlT2Y6IGZ1bmN0aW9uICh0eXBlLCBvYmopIHtcbiAgICAgICAgICAgIC8vIENyb3NzLWZyYW1lIGluc3RhbmNlb2YgY2hlY2tcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIHR5cGUgKyAnXSc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2luaXRYSFJEYXRhOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLFxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBub24tbXVsdGlwYXJ0IHNldHRpbmcgaWYgbm90IHN1cHBvcnRlZDpcbiAgICAgICAgICAgICAgICBtdWx0aXBhcnQgPSBvcHRpb25zLm11bHRpcGFydCB8fCAhJC5zdXBwb3J0LnhockZpbGVVcGxvYWQsXG4gICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gJC50eXBlKG9wdGlvbnMucGFyYW1OYW1lKSA9PT0gJ2FycmF5JyA/XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFyYW1OYW1lWzBdIDogb3B0aW9ucy5wYXJhbU5hbWU7XG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSAkLmV4dGVuZCh7fSwgb3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRlbnRSYW5nZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1SYW5nZSddID0gb3B0aW9ucy5jb250ZW50UmFuZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW11bHRpcGFydCB8fCBvcHRpb25zLmJsb2IgfHwgIXRoaXMuX2lzSW5zdGFuY2VPZignRmlsZScsIGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ10gPSAnYXR0YWNobWVudDsgZmlsZW5hbWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJKGZpbGUubmFtZSkgKyAnXCInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtdWx0aXBhcnQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gZmlsZS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG9wdGlvbnMuYmxvYiB8fCBmaWxlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgkLnN1cHBvcnQueGhyRm9ybURhdGFGaWxlVXBsb2FkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2luZG93LnBvc3RNZXNzYWdlIGRvZXMgbm90IGFsbG93IHNlbmRpbmcgRm9ybURhdGFcbiAgICAgICAgICAgICAgICAgICAgLy8gb2JqZWN0cywgc28gd2UganVzdCBhZGQgdGhlIEZpbGUvQmxvYiBvYmplY3RzIHRvXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtRGF0YSBhcnJheSBhbmQgbGV0IHRoZSBwb3N0TWVzc2FnZSB3aW5kb3dcbiAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBGb3JtRGF0YSBvYmplY3Qgb3V0IG9mIHRoaXMgYXJyYXk6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9ucy5ibG9iXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogKCQudHlwZShvcHRpb25zLnBhcmFtTmFtZSkgPT09ICdhcnJheScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFyYW1OYW1lW2luZGV4XSkgfHwgcGFyYW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5faXNJbnN0YW5jZU9mKCdGb3JtRGF0YScsIG9wdGlvbnMuZm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkLm5hbWUsIGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChwYXJhbU5hbWUsIG9wdGlvbnMuYmxvYiwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFsbG93cyB0aGUgdGVzdHMgdG8gcnVuIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdW1teSBvYmplY3RzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9pc0luc3RhbmNlT2YoJ0ZpbGUnLCBmaWxlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faXNJbnN0YW5jZU9mKCdCbG9iJywgZmlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCQudHlwZShvcHRpb25zLnBhcmFtTmFtZSkgPT09ICdhcnJheScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0pIHx8IHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnVwbG9hZE5hbWUgfHwgZmlsZS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gZm9ybURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBCbG9iIHJlZmVyZW5jZSBpcyBub3QgbmVlZGVkIGFueW1vcmUsIGZyZWUgbWVtb3J5OlxuICAgICAgICAgICAgb3B0aW9ucy5ibG9iID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBfaW5pdElmcmFtZVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhvc3QgPSAkKCc8YT48L2E+JykucHJvcCgnaHJlZicsIG9wdGlvbnMudXJsKS5wcm9wKCdob3N0Jyk7XG4gICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBpZnJhbWUgZW5hYmxlcyB0aGUgaWZyYW1lIHRyYW5zcG9ydDpcbiAgICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGUgPSAnaWZyYW1lICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7XG4gICAgICAgICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBhY2NlcHRzIGEgc2VyaWFsaXplZCBhcnJheSBhcyBmb3JtIGRhdGE6XG4gICAgICAgICAgICBvcHRpb25zLmZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBBZGQgcmVkaXJlY3QgdXJsIHRvIGZvcm0gZGF0YSBvbiBjcm9zcy1kb21haW4gdXBsb2FkczpcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnJlZGlyZWN0ICYmIHRhcmdldEhvc3QgJiYgdGFyZ2V0SG9zdCAhPT0gbG9jYXRpb24uaG9zdCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybURhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMucmVkaXJlY3RQYXJhbU5hbWUgfHwgJ3JlZGlyZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbnMucmVkaXJlY3RcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfaW5pdERhdGFTZXR0aW5nczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2h1bmtlZFVwbG9hZChvcHRpb25zLCB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdFhIUkRhdGEob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdFByb2dyZXNzTGlzdGVuZXIob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgdGhlIGRhdGFUeXBlIHRvIHBvc3RtZXNzYWdlIGVuYWJsZXMgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIHBvc3RNZXNzYWdlIHRyYW5zcG9ydDpcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZSA9ICdwb3N0bWVzc2FnZSAnICsgKG9wdGlvbnMuZGF0YVR5cGUgfHwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdElmcmFtZVNldHRpbmdzKG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIF9nZXRQYXJhbU5hbWU6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB2YXIgZmlsZUlucHV0ID0gJChvcHRpb25zLmZpbGVJbnB1dCksXG4gICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gb3B0aW9ucy5wYXJhbU5hbWU7XG4gICAgICAgICAgICBpZiAoIXBhcmFtTmFtZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IChpbnB1dC5wcm9wKCdmaWxlcycpIHx8IFsxXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lLnB1c2gobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhcmFtTmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW2ZpbGVJbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCEkLmlzQXJyYXkocGFyYW1OYW1lKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IFtwYXJhbU5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmFtTmFtZTtcbiAgICAgICAgfSxcblxuICAgICAgICBfaW5pdEZvcm1TZXR0aW5nczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIFJldHJpZXZlIG1pc3Npbmcgb3B0aW9ucyBmcm9tIHRoZSBpbnB1dCBmaWVsZCBhbmQgdGhlXG4gICAgICAgICAgICAvLyBhc3NvY2lhdGVkIGZvcm0sIGlmIGF2YWlsYWJsZTpcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5mb3JtIHx8ICFvcHRpb25zLmZvcm0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtID0gJChvcHRpb25zLmZpbGVJbnB1dC5wcm9wKCdmb3JtJykpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBnaXZlbiBmaWxlIGlucHV0IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGZvcm0sXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IHdpZGdldCBmaWxlIGlucHV0J3MgZm9ybTpcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtID0gJCh0aGlzLm9wdGlvbnMuZmlsZUlucHV0LnByb3AoJ2Zvcm0nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgPSB0aGlzLl9nZXRQYXJhbU5hbWUob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMudXJsKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLmZvcm0ucHJvcCgnYWN0aW9uJykgfHwgbG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIG11c3QgYmUgXCJQT1NUXCIgb3IgXCJQVVRcIjpcbiAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9IChvcHRpb25zLnR5cGUgfHxcbiAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSkgfHwgJydcbiAgICAgICAgICAgICAgICApLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlICE9PSAnUE9TVCcgJiYgb3B0aW9ucy50eXBlICE9PSAnUFVUJyAmJlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgIT09ICdQQVRDSCcpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuZm9ybUFjY2VwdENoYXJzZXQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm1BY2NlcHRDaGFyc2V0ID0gb3B0aW9ucy5mb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2dldEFKQVhTZXR0aW5nczogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgZGF0YSk7XG4gICAgICAgICAgICB0aGlzLl9pbml0Rm9ybVNldHRpbmdzKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5faW5pdERhdGFTZXR0aW5ncyhvcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIGpRdWVyeSAxLjYgZG9lc24ndCBwcm92aWRlIC5zdGF0ZSgpLFxuICAgICAgICAvLyB3aGlsZSBqUXVlcnkgMS44KyByZW1vdmVkIC5pc1JlamVjdGVkKCkgYW5kIC5pc1Jlc29sdmVkKCk6XG4gICAgICAgIF9nZXREZWZlcnJlZFN0YXRlOiBmdW5jdGlvbiAoZGVmZXJyZWQpIHtcbiAgICAgICAgICAgIGlmIChkZWZlcnJlZC5zdGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5zdGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlZmVycmVkLmlzUmVzb2x2ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmVzb2x2ZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlZmVycmVkLmlzUmVqZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmVqZWN0ZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdwZW5kaW5nJztcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBNYXBzIGpxWEhSIGNhbGxiYWNrcyB0byB0aGUgZXF1aXZhbGVudFxuICAgICAgICAvLyBtZXRob2RzIG9mIHRoZSBnaXZlbiBQcm9taXNlIG9iamVjdDpcbiAgICAgICAgX2VuaGFuY2VQcm9taXNlOiBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5zdWNjZXNzID0gcHJvbWlzZS5kb25lO1xuICAgICAgICAgICAgcHJvbWlzZS5lcnJvciA9IHByb21pc2UuZmFpbDtcbiAgICAgICAgICAgIHByb21pc2UuY29tcGxldGUgPSBwcm9taXNlLmFsd2F5cztcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCBlbmhhbmNlZCB3aXRoXG4gICAgICAgIC8vIHRoZSBqcVhIUiBtZXRob2RzIGFib3J0LCBzdWNjZXNzLCBlcnJvciBhbmQgY29tcGxldGU6XG4gICAgICAgIF9nZXRYSFJQcm9taXNlOiBmdW5jdGlvbiAocmVzb2x2ZU9yUmVqZWN0LCBjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgICAgICB2YXIgZGZkID0gJC5EZWZlcnJlZCgpLFxuICAgICAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpO1xuICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgdGhpcy5vcHRpb25zLmNvbnRleHQgfHwgcHJvbWlzZTtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlT3JSZWplY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmVPclJlamVjdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBkZmQucmVqZWN0V2l0aChjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UuYWJvcnQgPSBkZmQucHJvbWlzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBBZGRzIGNvbnZlbmllbmNlIG1ldGhvZHMgdG8gdGhlIGRhdGEgY2FsbGJhY2sgYXJndW1lbnQ6XG4gICAgICAgIF9hZGRDb252ZW5pZW5jZU1ldGhvZHM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgZ2V0UHJvbWlzZSA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhhdCwgYXJncykucHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkYXRhLnByb2Nlc3MgPSBmdW5jdGlvbiAocmVzb2x2ZUZ1bmMsIHJlamVjdEZ1bmMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZUZ1bmMgfHwgcmVqZWN0RnVuYykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLl9wcm9jZXNzUXVldWUgPSB0aGlzLl9wcm9jZXNzUXVldWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuX3Byb2Nlc3NRdWV1ZSB8fCBnZXRQcm9taXNlKFt0aGlzXSkpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclRocm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWplY3RXaXRoKHRoYXQsIFtkYXRhXSkucHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRQcm9taXNlKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKS50aGVuKHJlc29sdmVGdW5jLCByZWplY3RGdW5jKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NRdWV1ZSB8fCBnZXRQcm9taXNlKFt0aGlzXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGF0YS5zdWJtaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKSAhPT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuanFYSFIgPSB0aGlzLmpxWEhSID1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGF0Ll90cmlnZ2VyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJtaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ3N1Ym1pdCcsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSAmJiB0aGF0Ll9vblNlbmQoZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmpxWEhSIHx8IHRoYXQuX2dldFhIUlByb21pc2UoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkYXRhLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmpxWEhSKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmpxWEhSLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JUaHJvd24gPSAnYWJvcnQnO1xuICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGF0YS5zdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5qcVhIUikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fZ2V0RGVmZXJyZWRTdGF0ZSh0aGlzLmpxWEhSKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fZ2V0RGVmZXJyZWRTdGF0ZSh0aGlzLl9wcm9jZXNzUXVldWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkYXRhLnByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmpxWEhSICYmIHRoaXMuX3Byb2Nlc3NRdWV1ZSAmJiB0aGF0XG4gICAgICAgICAgICAgICAgICAgIC5fZ2V0RGVmZXJyZWRTdGF0ZSh0aGlzLl9wcm9jZXNzUXVldWUpID09PSAncGVuZGluZyc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGF0YS5wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3Jlc3M7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGF0YS5yZXNwb25zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2U7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFBhcnNlcyB0aGUgUmFuZ2UgaGVhZGVyIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxuICAgICAgICAvLyBhbmQgcmV0dXJucyB0aGUgdXBsb2FkZWQgYnl0ZXM6XG4gICAgICAgIF9nZXRVcGxvYWRlZEJ5dGVzOiBmdW5jdGlvbiAoanFYSFIpIHtcbiAgICAgICAgICAgIHZhciByYW5nZSA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCdSYW5nZScpLFxuICAgICAgICAgICAgICAgIHBhcnRzID0gcmFuZ2UgJiYgcmFuZ2Uuc3BsaXQoJy0nKSxcbiAgICAgICAgICAgICAgICB1cHBlckJ5dGVzUG9zID0gcGFydHMgJiYgcGFydHMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICBwYXJzZUludChwYXJ0c1sxXSwgMTApO1xuICAgICAgICAgICAgcmV0dXJuIHVwcGVyQnl0ZXNQb3MgJiYgdXBwZXJCeXRlc1BvcyArIDE7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVXBsb2FkcyBhIGZpbGUgaW4gbXVsdGlwbGUsIHNlcXVlbnRpYWwgcmVxdWVzdHNcbiAgICAgICAgLy8gYnkgc3BsaXR0aW5nIHRoZSBmaWxlIHVwIGluIG11bHRpcGxlIGJsb2IgY2h1bmtzLlxuICAgICAgICAvLyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLCBvbmx5IHRlc3RzIGlmIHRoZSBmaWxlXG4gICAgICAgIC8vIHNob3VsZCBiZSB1cGxvYWRlZCBpbiBjaHVua3MsIGJ1dCBkb2VzIG5vdCBpbnZva2UgYW55XG4gICAgICAgIC8vIHVwbG9hZCByZXF1ZXN0czpcbiAgICAgICAgX2NodW5rZWRVcGxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zLCB0ZXN0T25seSkge1xuICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzIHx8IDA7XG4gICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sXG4gICAgICAgICAgICAgICAgZnMgPSBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdWIgPSBvcHRpb25zLnVwbG9hZGVkQnl0ZXMsXG4gICAgICAgICAgICAgICAgbWNzID0gb3B0aW9ucy5tYXhDaHVua1NpemUgfHwgZnMsXG4gICAgICAgICAgICAgICAgc2xpY2UgPSB0aGlzLl9ibG9iU2xpY2UsXG4gICAgICAgICAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpLFxuICAgICAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpLFxuICAgICAgICAgICAgICAgIGpxWEhSLFxuICAgICAgICAgICAgICAgIHVwbG9hZDtcbiAgICAgICAgICAgIGlmICghKHRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpICYmIHNsaWNlICYmICh1YiB8fCBtY3MgPCBmcykpIHx8XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0ZXN0T25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHViID49IGZzKSB7XG4gICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IG9wdGlvbnMuaTE4bigndXBsb2FkZWRCeXRlcycpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRYSFJQcm9taXNlKFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICBbbnVsbCwgJ2Vycm9yJywgZmlsZS5lcnJvcl1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIGNodW5rIHVwbG9hZCBtZXRob2Q6XG4gICAgICAgICAgICB1cGxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIG9wdGlvbnMgb2JqZWN0IGZvciBlYWNoIGNodW5rIHVwbG9hZDpcbiAgICAgICAgICAgICAgICB2YXIgbyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExvYWRlZCA9IG8uX3Byb2dyZXNzLmxvYWRlZDtcbiAgICAgICAgICAgICAgICBvLmJsb2IgPSBzbGljZS5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICB1YixcbiAgICAgICAgICAgICAgICAgICAgdWIgKyBtY3MsXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY2h1bmsgc2l6ZSwgYXMgdGhlIGJsb2IgaXRzZWxmXG4gICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBkZXJlZmVyZW5jZWQgYWZ0ZXIgZGF0YSBwcm9jZXNzaW5nOlxuICAgICAgICAgICAgICAgIG8uY2h1bmtTaXplID0gby5ibG9iLnNpemU7XG4gICAgICAgICAgICAgICAgLy8gRXhwb3NlIHRoZSBjaHVuayBieXRlcyBwb3NpdGlvbiByYW5nZTpcbiAgICAgICAgICAgICAgICBvLmNvbnRlbnRSYW5nZSA9ICdieXRlcyAnICsgdWIgKyAnLScgK1xuICAgICAgICAgICAgICAgICAgICAodWIgKyBvLmNodW5rU2l6ZSAtIDEpICsgJy8nICsgZnM7XG4gICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgdXBsb2FkIGRhdGEgKHRoZSBibG9iIGFuZCBwb3RlbnRpYWwgZm9ybSBkYXRhKTpcbiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0WEhSRGF0YShvKTtcbiAgICAgICAgICAgICAgICAvLyBBZGQgcHJvZ3Jlc3MgbGlzdGVuZXJzIGZvciB0aGlzIGNodW5rIHVwbG9hZDpcbiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NMaXN0ZW5lcihvKTtcbiAgICAgICAgICAgICAgICBqcVhIUiA9ICgodGhhdC5fdHJpZ2dlcignY2h1bmtzZW5kJywgbnVsbCwgbykgIT09IGZhbHNlICYmICQuYWpheChvKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UsIG8uY29udGV4dCkpXG4gICAgICAgICAgICAgICAgICAgIC5kb25lKGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1YiA9IHRoYXQuX2dldFVwbG9hZGVkQnl0ZXMoanFYSFIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHViICsgby5jaHVua1NpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgaWYgbm8gZmluYWwgcHJvZ3Jlc3MgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggbG9hZGVkIGVxdWFsaW5nIHRvdGFsIGhhcyBiZWVuIHRyaWdnZXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgY2h1bms6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudExvYWRlZCArIG8uY2h1bmtTaXplIC0gby5fcHJvZ3Jlc3MubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcygkLkV2ZW50KCdwcm9ncmVzcycsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB1YiAtIG8udXBsb2FkZWRCeXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IHViIC0gby51cGxvYWRlZEJ5dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gby51cGxvYWRlZEJ5dGVzID0gdWI7XG4gICAgICAgICAgICAgICAgICAgICAgICBvLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG8udGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBvLmpxWEhSID0ganFYSFI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2RvbmUnLCBudWxsLCBvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rYWx3YXlzJywgbnVsbCwgbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodWIgPCBmcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgdXBsb2FkIG5vdCB5ZXQgY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGludWUgd2l0aCB0aGUgbmV4dCBjaHVuazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG8uanFYSFIgPSBqcVhIUjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG8udGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBvLmVycm9yVGhyb3duID0gZXJyb3JUaHJvd247XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2ZhaWwnLCBudWxsLCBvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rYWx3YXlzJywgbnVsbCwgbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2pxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bl1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuX2VuaGFuY2VQcm9taXNlKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cGxvYWQoKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9iZWZvcmVTZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBzdGFydCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbiBhbiB1cGxvYWQgc3RhcnRzXG4gICAgICAgICAgICAgICAgLy8gYW5kIG5vIG90aGVyIHVwbG9hZHMgYXJlIGN1cnJlbnRseSBydW5uaW5nLFxuICAgICAgICAgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RhcnQgZXZlbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcignc3RhcnQnKTtcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGdsb2JhbCBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOlxuICAgICAgICAgICAgICAgIHRoaXMuX2JpdHJhdGVUaW1lciA9IG5ldyB0aGlzLl9CaXRyYXRlVGltZXIoKTtcbiAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgZ2xvYmFsIHByb2dyZXNzIHZhbHVlczpcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgPSB0aGlzLl9wcm9ncmVzcy50b3RhbCA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuYml0cmF0ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRhaW5lciBvYmplY3RzIGZvciB0aGUgLnJlc3BvbnNlKCkgYW5kXG4gICAgICAgICAgICAvLyAucHJvZ3Jlc3MoKSBtZXRob2RzIG9uIHRoZSBkYXRhIG9iamVjdCBhcmUgYXZhaWxhYmxlXG4gICAgICAgICAgICAvLyBhbmQgcmVzZXQgdG8gdGhlaXIgaW5pdGlhbCBzdGF0ZTpcbiAgICAgICAgICAgIHRoaXMuX2luaXRSZXNwb25zZU9iamVjdChkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc09iamVjdChkYXRhKTtcbiAgICAgICAgICAgIGRhdGEuX3Byb2dyZXNzLmxvYWRlZCA9IGRhdGEubG9hZGVkID0gZGF0YS51cGxvYWRlZEJ5dGVzIHx8IDA7XG4gICAgICAgICAgICBkYXRhLl9wcm9ncmVzcy50b3RhbCA9IGRhdGEudG90YWwgPSB0aGlzLl9nZXRUb3RhbChkYXRhLmZpbGVzKSB8fCAxO1xuICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MuYml0cmF0ZSA9IGRhdGEuYml0cmF0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUgKz0gMTtcbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGdsb2JhbCBwcm9ncmVzcyB2YWx1ZXM6XG4gICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgKz0gZGF0YS5sb2FkZWQ7XG4gICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy50b3RhbCArPSBkYXRhLnRvdGFsO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9vbkRvbmU6IGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKSB7XG4gICAgICAgICAgICB2YXIgdG90YWwgPSBvcHRpb25zLl9wcm9ncmVzcy50b3RhbCxcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IG9wdGlvbnMuX3Jlc3BvbnNlO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuX3Byb2dyZXNzLmxvYWRlZCA8IHRvdGFsKSB7XG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgaWYgbm8gZmluYWwgcHJvZ3Jlc3MgZXZlbnRcbiAgICAgICAgICAgICAgICAvLyB3aXRoIGxvYWRlZCBlcXVhbGluZyB0b3RhbCBoYXMgYmVlbiB0cmlnZ2VyZWQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fb25Qcm9ncmVzcygkLkV2ZW50KCdwcm9ncmVzcycsIHtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0b3RhbCxcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IHRvdGFsXG4gICAgICAgICAgICAgICAgfSksIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0ID0gb3B0aW9ucy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICByZXNwb25zZS50ZXh0U3RhdHVzID0gb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1cztcbiAgICAgICAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSO1xuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcignZG9uZScsIG51bGwsIG9wdGlvbnMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9vbkZhaWw6IGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24sIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IG9wdGlvbnMuX3Jlc3BvbnNlO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucmVjYWxjdWxhdGVQcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZmFpbGVkIChlcnJvciBvciBhYm9ydCkgZmlsZSB1cGxvYWQgZnJvbVxuICAgICAgICAgICAgICAgIC8vIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgY2FsY3VsYXRpb246XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkIC09IG9wdGlvbnMuX3Byb2dyZXNzLmxvYWRlZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy50b3RhbCAtPSBvcHRpb25zLl9wcm9ncmVzcy50b3RhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSO1xuICAgICAgICAgICAgcmVzcG9uc2UudGV4dFN0YXR1cyA9IG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICAgICAgICByZXNwb25zZS5lcnJvclRocm93biA9IG9wdGlvbnMuZXJyb3JUaHJvd24gPSBlcnJvclRocm93bjtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCBvcHRpb25zKTtcbiAgICAgICAgfSxcblxuICAgICAgICBfb25BbHdheXM6IGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIGpxWEhSb3JSZXN1bHQsIHRleHRTdGF0dXMgYW5kIGpxWEhSb3JFcnJvciBhcmUgYWRkZWQgdG8gdGhlXG4gICAgICAgICAgICAvLyBvcHRpb25zIG9iamVjdCB2aWEgZG9uZSBhbmQgZmFpbCBjYWxsYmFja3NcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2Fsd2F5cycsIG51bGwsIG9wdGlvbnMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9vblNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGEuc3VibWl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWRkQ29udmVuaWVuY2VNZXRob2RzKGUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGpxWEhSLFxuICAgICAgICAgICAgICAgIGFib3J0ZWQsXG4gICAgICAgICAgICAgICAgc2xvdCxcbiAgICAgICAgICAgICAgICBwaXBlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGF0Ll9nZXRBSkFYU2V0dGluZ3MoZGF0YSksXG4gICAgICAgICAgICAgICAgc2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2VuZGluZyArPSAxO1xuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGJpdHJhdGUgcHJvZ3Jlc3MgY2FsY3VsYXRpb246XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX2JpdHJhdGVUaW1lciA9IG5ldyB0aGF0Ll9CaXRyYXRlVGltZXIoKTtcbiAgICAgICAgICAgICAgICAgICAganFYSFIgPSBqcVhIUiB8fCAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGFib3J0ZWQgfHwgdGhhdC5fdHJpZ2dlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5FdmVudCgnc2VuZCcsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPT09IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgb3B0aW9ucy5jb250ZXh0LCBhYm9ydGVkKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2NodW5rZWRVcGxvYWQob3B0aW9ucykgfHwgJC5hamF4KG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgICkuZG9uZShmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Eb25lKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KS5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uRmFpbChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KS5hbHdheXMoZnVuY3Rpb24gKGpxWEhSb3JSZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSb3JFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BbHdheXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFJvclJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSb3JFcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2VuZGluZyAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fYWN0aXZlIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA+IHRoYXQuX3NlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBxdWV1ZWQgdXBsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG5vdCBiZWVuIGFib3J0ZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRTbG90ID0gdGhhdC5fc2xvdHMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX2dldERlZmVycmVkU3RhdGUobmV4dFNsb3QpID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTbG90LnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTbG90ID0gdGhhdC5fc2xvdHMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fYWN0aXZlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHN0b3AgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYWxsIHVwbG9hZHMgaGF2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlZW4gY29tcGxldGVkLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RvcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9iZWZvcmVTZW5kKGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZXF1ZW50aWFsVXBsb2FkcyB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPD0gdGhpcy5fc2VuZGluZykpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsb3QgPSAkLkRlZmVycmVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nsb3RzLnB1c2goc2xvdCk7XG4gICAgICAgICAgICAgICAgICAgIHBpcGUgPSBzbG90LnRoZW4oc2VuZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VxdWVuY2UgPSB0aGlzLl9zZXF1ZW5jZS50aGVuKHNlbmQsIHNlbmQpO1xuICAgICAgICAgICAgICAgICAgICBwaXBlID0gdGhpcy5fc2VxdWVuY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgcGlwZWQgUHJvbWlzZSBvYmplY3QsIGVuaGFuY2VkIHdpdGggYW4gYWJvcnQgbWV0aG9kLFxuICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIGRlbGVnYXRlZCB0byB0aGUganFYSFIgb2JqZWN0IG9mIHRoZSBjdXJyZW50IHVwbG9hZCxcbiAgICAgICAgICAgICAgICAvLyBhbmQganFYSFIgY2FsbGJhY2tzIG1hcHBlZCB0byB0aGUgZXF1aXZhbGVudCBQcm9taXNlIG1ldGhvZHM6XG4gICAgICAgICAgICAgICAgcGlwZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgYWJvcnRlZCA9IFt1bmRlZmluZWQsICdhYm9ydCcsICdhYm9ydCddO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWpxWEhSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QucmVqZWN0V2l0aChvcHRpb25zLmNvbnRleHQsIGFib3J0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwaXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZW5kKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX29uQWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpLFxuICAgICAgICAgICAgICAgIGZpbGVzID0gZGF0YS5maWxlcyxcbiAgICAgICAgICAgICAgICBmaWxlc0xlbmd0aCA9IGZpbGVzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBsaW1pdCA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRzLFxuICAgICAgICAgICAgICAgIGxpbWl0U2l6ZSA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRTaXplLFxuICAgICAgICAgICAgICAgIG92ZXJoZWFkID0gb3B0aW9ucy5saW1pdE11bHRpRmlsZVVwbG9hZFNpemVPdmVyaGVhZCxcbiAgICAgICAgICAgICAgICBiYXRjaFNpemUgPSAwLFxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQsXG4gICAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UsXG4gICAgICAgICAgICAgICAgZmlsZVNldCxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIGogPSAwO1xuICAgICAgICAgICAgaWYgKCFmaWxlc0xlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW1pdFNpemUgJiYgZmlsZXNbMF0uc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbGltaXRTaXplID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyB8fCBsaW1pdCB8fCBsaW1pdFNpemUpIHx8XG4gICAgICAgICAgICAgICAgICAgICF0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIGZpbGVTZXQgPSBbZmlsZXNdO1xuICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtwYXJhbU5hbWVdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgfHwgbGltaXRTaXplKSAmJiBsaW1pdCkge1xuICAgICAgICAgICAgICAgIGZpbGVTZXQgPSBbXTtcbiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsZXNMZW5ndGg7IGkgKz0gbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZVNldC5wdXNoKGZpbGVzLnNsaWNlKGksIGkgKyBsaW1pdCkpO1xuICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTbGljZSA9IHBhcmFtTmFtZS5zbGljZShpLCBpICsgbGltaXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtTmFtZVNsaWNlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0LnB1c2gocGFyYW1OYW1lU2xpY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgJiYgbGltaXRTaXplKSB7XG4gICAgICAgICAgICAgICAgZmlsZVNldCA9IFtdO1xuICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxlc0xlbmd0aDsgaSA9IGkgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhdGNoU2l6ZSArPSBmaWxlc1tpXS5zaXplICsgb3ZlcmhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gZmlsZXNMZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGJhdGNoU2l6ZSArIGZpbGVzW2kgKyAxXS5zaXplICsgb3ZlcmhlYWQpID4gbGltaXRTaXplKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW1pdCAmJiBpICsgMSAtIGogPj0gbGltaXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2V0LnB1c2goZmlsZXMuc2xpY2UoaiwgaSArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lLnNsaWNlKGosIGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lU2xpY2UubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQucHVzaChwYXJhbU5hbWVTbGljZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBqID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXRjaFNpemUgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBwYXJhbU5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9yaWdpbmFsRmlsZXMgPSBmaWxlcztcbiAgICAgICAgICAgICQuZWFjaChmaWxlU2V0IHx8IGZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHt9LCBkYXRhKTtcbiAgICAgICAgICAgICAgICBuZXdEYXRhLmZpbGVzID0gZmlsZVNldCA/IGVsZW1lbnQgOiBbZWxlbWVudF07XG4gICAgICAgICAgICAgICAgbmV3RGF0YS5wYXJhbU5hbWUgPSBwYXJhbU5hbWVTZXRbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHRoYXQuX2luaXRSZXNwb25zZU9iamVjdChuZXdEYXRhKTtcbiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NPYmplY3QobmV3RGF0YSk7XG4gICAgICAgICAgICAgICAgdGhhdC5fYWRkQ29udmVuaWVuY2VNZXRob2RzKGUsIG5ld0RhdGEpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoYXQuX3RyaWdnZXIoXG4gICAgICAgICAgICAgICAgICAgICdhZGQnLFxuICAgICAgICAgICAgICAgICAgICAkLkV2ZW50KCdhZGQnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSxcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0YVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBfcmVwbGFjZUZpbGVJbnB1dDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBpbnB1dCA9IGRhdGEuZmlsZUlucHV0LFxuICAgICAgICAgICAgICAgIGlucHV0Q2xvbmUgPSBpbnB1dC5jbG9uZSh0cnVlKSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXMgPSBpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIC8vIEFkZCBhIHJlZmVyZW5jZSBmb3IgdGhlIG5ldyBjbG9uZWQgZmlsZSBpbnB1dCB0byB0aGUgZGF0YSBhcmd1bWVudDpcbiAgICAgICAgICAgIGRhdGEuZmlsZUlucHV0Q2xvbmUgPSBpbnB1dENsb25lO1xuICAgICAgICAgICAgJCgnPGZvcm0+PC9mb3JtPicpLmFwcGVuZChpbnB1dENsb25lKVswXS5yZXNldCgpO1xuICAgICAgICAgICAgLy8gRGV0YWNoaW5nIGFsbG93cyB0byBpbnNlcnQgdGhlIGZpbGVJbnB1dCBvbiBhbm90aGVyIGZvcm1cbiAgICAgICAgICAgIC8vIHdpdGhvdXQgbG9vc2luZyB0aGUgZmlsZSBpbnB1dCB2YWx1ZTpcbiAgICAgICAgICAgIGlucHV0LmFmdGVyKGlucHV0Q2xvbmUpLmRldGFjaCgpO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGZpbGVJbnB1dCBoYWQgZm9jdXMgYmVmb3JlIGl0IHdhcyBkZXRhY2hlZCxcbiAgICAgICAgICAgIC8vIHJlc3RvcmUgZm9jdXMgdG8gdGhlIGlucHV0Q2xvbmUuXG4gICAgICAgICAgICBpZiAocmVzdG9yZUZvY3VzKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRDbG9uZS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXZvaWQgbWVtb3J5IGxlYWtzIHdpdGggdGhlIGRldGFjaGVkIGZpbGUgaW5wdXQ6XG4gICAgICAgICAgICAkLmNsZWFuRGF0YShpbnB1dC51bmJpbmQoJ3JlbW92ZScpKTtcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIG9yaWdpbmFsIGZpbGUgaW5wdXQgZWxlbWVudCBpbiB0aGUgZmlsZUlucHV0XG4gICAgICAgICAgICAvLyBlbGVtZW50cyBzZXQgd2l0aCB0aGUgY2xvbmUsIHdoaWNoIGhhcyBiZWVuIGNvcGllZCBpbmNsdWRpbmdcbiAgICAgICAgICAgIC8vIGV2ZW50IGhhbmRsZXJzOlxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMub3B0aW9ucy5maWxlSW5wdXQubWFwKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICAgICAgICAgIGlmIChlbCA9PT0gaW5wdXRbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0Q2xvbmVbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBlbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gSWYgdGhlIHdpZGdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBvbiB0aGUgZmlsZSBpbnB1dCBpdHNlbGYsXG4gICAgICAgICAgICAvLyBvdmVycmlkZSB0aGlzLmVsZW1lbnQgd2l0aCB0aGUgZmlsZSBpbnB1dCBjbG9uZTpcbiAgICAgICAgICAgIGlmIChpbnB1dFswXSA9PT0gdGhpcy5lbGVtZW50WzBdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gaW5wdXRDbG9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfaGFuZGxlRmlsZVRyZWVFbnRyeTogZnVuY3Rpb24gKGVudHJ5LCBwYXRoKSB7XG4gICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpLFxuICAgICAgICAgICAgICAgIGVudHJpZXMgPSBbXSxcbiAgICAgICAgICAgICAgICBkaXJSZWFkZXIsXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgIWUuZW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuZW50cnkgPSBlbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSAkLndoZW4gcmV0dXJucyBpbW1lZGlhdGVseSBpZiBvbmVcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVmZXJyZWQgaXMgcmVqZWN0ZWQsIHdlIHVzZSByZXNvbHZlIGluc3RlYWQuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHZhbGlkIGZpbGVzIGFuZCBpbnZhbGlkIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIHJldHVybmVkIHRvZ2V0aGVyIGluIG9uZSBzZXQ6XG4gICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKFtlXSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzSGFuZGxlciA9IGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX2hhbmRsZUZpbGVUcmVlRW50cmllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoICsgZW50cnkubmFtZSArICcvJ1xuICAgICAgICAgICAgICAgICAgICApLmRvbmUoZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZShmaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmZhaWwoZXJyb3JIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlYWRFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSGFuZGxlcihlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcyA9IGVudHJpZXMuY29uY2F0KHJlc3VsdHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRFbnRyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcik7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoIHx8ICcnO1xuICAgICAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5fZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzVcbiAgICAgICAgICAgICAgICAgICAgZW50cnkuX2ZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoZW50cnkuX2ZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvckhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICBkaXJSZWFkZXIgPSBlbnRyeS5jcmVhdGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICByZWFkRW50cmllcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gZW1weSBsaXN0IGZvciBmaWxlIHN5c3RlbSBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIG90aGVyIHRoYW4gZmlsZXMgb3IgZGlyZWN0b3JpZXM6XG4gICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRmZC5wcm9taXNlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2hhbmRsZUZpbGVUcmVlRW50cmllczogZnVuY3Rpb24gKGVudHJpZXMsIHBhdGgpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiAkLndoZW4uYXBwbHkoXG4gICAgICAgICAgICAgICAgJCxcbiAgICAgICAgICAgICAgICAkLm1hcChlbnRyaWVzLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2hhbmRsZUZpbGVUcmVlRW50cnkoZW50cnksIHBhdGgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9nZXREcm9wcGVkRmlsZXM6IGZ1bmN0aW9uIChkYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgICAgIGRhdGFUcmFuc2ZlciA9IGRhdGFUcmFuc2ZlciB8fCB7fTtcbiAgICAgICAgICAgIHZhciBpdGVtcyA9IGRhdGFUcmFuc2Zlci5pdGVtcztcbiAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGggJiYgKGl0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNbMF0uZ2V0QXNFbnRyeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICAkLm1hcChpdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLndlYmtpdEdldEFzRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IGl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Ll9maWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0QXNFbnRyeSgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgJC5tYWtlQXJyYXkoZGF0YVRyYW5zZmVyLmZpbGVzKVxuICAgICAgICAgICAgKS5wcm9taXNlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzOiBmdW5jdGlvbiAoZmlsZUlucHV0KSB7XG4gICAgICAgICAgICBmaWxlSW5wdXQgPSAkKGZpbGVJbnB1dCk7XG4gICAgICAgICAgICB2YXIgZW50cmllcyA9IGZpbGVJbnB1dC5wcm9wKCd3ZWJraXRFbnRyaWVzJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlucHV0LnByb3AoJ2VudHJpZXMnKSxcbiAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChlbnRyaWVzICYmIGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUZpbGVUcmVlRW50cmllcyhlbnRyaWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbGVzID0gJC5tYWtlQXJyYXkoZmlsZUlucHV0LnByb3AoJ2ZpbGVzJykpO1xuICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpbGVJbnB1dC5wcm9wKCd2YWx1ZScpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKFtdKS5wcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaWxlcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgYnJvd3NlciBkb2VzIG5vdFxuICAgICAgICAgICAgICAgIC8vIHN1cHBvcnQgdGhlIEZpbGUgQVBJIGFuZCB3ZSBhZGQgYSBwc2V1ZG8gRmlsZSBvYmplY3Qgd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBpbnB1dCB2YWx1ZSBhcyBuYW1lIHdpdGggcGF0aCBpbmZvcm1hdGlvbiByZW1vdmVkOlxuICAgICAgICAgICAgICAgIGZpbGVzID0gW3tuYW1lOiB2YWx1ZS5yZXBsYWNlKC9eLipcXFxcLywgJycpfV07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVzWzBdLm5hbWUgPT09IHVuZGVmaW5lZCAmJiBmaWxlc1swXS5maWxlTmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIEZpbGUgbm9ybWFsaXphdGlvbiBmb3IgU2FmYXJpIDQgYW5kIEZpcmVmb3ggMzpcbiAgICAgICAgICAgICAgICAkLmVhY2goZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKGZpbGVzKS5wcm9taXNlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2dldEZpbGVJbnB1dEZpbGVzOiBmdW5jdGlvbiAoZmlsZUlucHV0KSB7XG4gICAgICAgICAgICBpZiAoIShmaWxlSW5wdXQgaW5zdGFuY2VvZiAkKSB8fCBmaWxlSW5wdXQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzKGZpbGVJbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJC53aGVuLmFwcGx5KFxuICAgICAgICAgICAgICAgICQsXG4gICAgICAgICAgICAgICAgJC5tYXAoZmlsZUlucHV0LCB0aGlzLl9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlcylcbiAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX29uQ2hhbmdlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dDogJChlLnRhcmdldCksXG4gICAgICAgICAgICAgICAgICAgIGZvcm06ICQoZS50YXJnZXQuZm9ybSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5fZ2V0RmlsZUlucHV0RmlsZXMoZGF0YS5maWxlSW5wdXQpLmFsd2F5cyhmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5yZXBsYWNlRmlsZUlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAkLkV2ZW50KCdjaGFuZ2UnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX29uUGFzdGU6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgaXRlbXMgPSBlLm9yaWdpbmFsRXZlbnQgJiYgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEgJiZcbiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMsXG4gICAgICAgICAgICAgICAgZGF0YSA9IHtmaWxlczogW119O1xuICAgICAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICQuZWFjaChpdGVtcywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gaXRlbS5nZXRBc0ZpbGUgJiYgaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmlnZ2VyKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3RlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ3Bhc3RlJywge2RlbGVnYXRlZEV2ZW50OiBlfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQWRkKGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfb25Ecm9wOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQgJiYgZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcixcbiAgICAgICAgICAgICAgICBkYXRhID0ge307XG4gICAgICAgICAgICBpZiAoZGF0YVRyYW5zZmVyICYmIGRhdGFUcmFuc2Zlci5maWxlcyAmJiBkYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2dldERyb3BwZWRGaWxlcyhkYXRhVHJhbnNmZXIpLmFsd2F5cyhmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IGZpbGVzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5FdmVudCgnZHJvcCcsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIF9vbkRyYWdPdmVyOiBnZXREcmFnSGFuZGxlcignZHJhZ292ZXInKSxcblxuICAgICAgICBfb25EcmFnRW50ZXI6IGdldERyYWdIYW5kbGVyKCdkcmFnZW50ZXInKSxcblxuICAgICAgICBfb25EcmFnTGVhdmU6IGdldERyYWdIYW5kbGVyKCdkcmFnbGVhdmUnKSxcblxuICAgICAgICBfaW5pdEV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZCh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb24odGhpcy5vcHRpb25zLmRyb3Bab25lLCB7XG4gICAgICAgICAgICAgICAgICAgIGRyYWdvdmVyOiB0aGlzLl9vbkRyYWdPdmVyLFxuICAgICAgICAgICAgICAgICAgICBkcm9wOiB0aGlzLl9vbkRyb3AsXG4gICAgICAgICAgICAgICAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCkgb24gZHJhZ2VudGVyIGlzIHJlcXVpcmVkIGZvciBJRTEwKzpcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2VudGVyOiB0aGlzLl9vbkRyYWdFbnRlcixcbiAgICAgICAgICAgICAgICAgICAgLy8gZHJhZ2xlYXZlIGlzIG5vdCByZXF1aXJlZCwgYnV0IGFkZGVkIGZvciBjb21wbGV0ZW5lc3M6XG4gICAgICAgICAgICAgICAgICAgIGRyYWdsZWF2ZTogdGhpcy5fb25EcmFnTGVhdmVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMucGFzdGVab25lLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3RlOiB0aGlzLl9vblBhc3RlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJC5zdXBwb3J0LmZpbGVJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5maWxlSW5wdXQsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiB0aGlzLl9vbkNoYW5nZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIF9kZXN0cm95RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fb2ZmKHRoaXMub3B0aW9ucy5kcm9wWm9uZSwgJ2RyYWdlbnRlciBkcmFnbGVhdmUgZHJhZ292ZXIgZHJvcCcpO1xuICAgICAgICAgICAgdGhpcy5fb2ZmKHRoaXMub3B0aW9ucy5wYXN0ZVpvbmUsICdwYXN0ZScpO1xuICAgICAgICAgICAgdGhpcy5fb2ZmKHRoaXMub3B0aW9ucy5maWxlSW5wdXQsICdjaGFuZ2UnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBfZGVzdHJveTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50SGFuZGxlcnMoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBfc2V0T3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIHJlaW5pdCA9ICQuaW5BcnJheShrZXksIHRoaXMuX3NwZWNpYWxPcHRpb25zKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAocmVpbml0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50SGFuZGxlcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3N1cGVyKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJlaW5pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2luaXRTcGVjaWFsT3B0aW9uczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5maWxlSW5wdXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gdGhpcy5lbGVtZW50LmlzKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA6IHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuZmlsZUlucHV0IGluc3RhbmNlb2YgJCkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dCA9ICQob3B0aW9ucy5maWxlSW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5kcm9wWm9uZSBpbnN0YW5jZW9mICQpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kcm9wWm9uZSA9ICQob3B0aW9ucy5kcm9wWm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShvcHRpb25zLnBhc3RlWm9uZSBpbnN0YW5jZW9mICQpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5wYXN0ZVpvbmUgPSAkKG9wdGlvbnMucGFzdGVab25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBfZ2V0UmVnRXhwOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy8nKSxcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMgPSBwYXJ0cy5wb3AoKTtcbiAgICAgICAgICAgIHBhcnRzLnNoaWZ0KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXJ0cy5qb2luKCcvJyksIG1vZGlmaWVycyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2lzUmVnRXhwT3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGtleSAhPT0gJ3VybCcgJiYgJC50eXBlKHZhbHVlKSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAvXlxcLy4qXFwvW2lnbV17MCwzfSQvLnRlc3QodmFsdWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9pbml0RGF0YUF0dHJpYnV0ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmVsZW1lbnQuZGF0YSgpO1xuICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBvcHRpb25zIHNldCB2aWEgSFRNTDUgZGF0YS1hdHRyaWJ1dGVzOlxuICAgICAgICAgICAgJC5lYWNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFswXS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChpbmRleCwgYXR0cikge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gYXR0ci5uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9eZGF0YS0vLnRlc3Qoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCBoeXBoZW4tYXRlZCBrZXkgdG8gY2FtZWxDYXNlOlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5LnNsaWNlKDUpLnJlcGxhY2UoLy1bYS16XS9nLCBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMSkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5faXNSZWdFeHBPcHRpb24oa2V5LCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoYXQuX2dldFJlZ0V4cCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdERhdGFBdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0U3BlY2lhbE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nsb3RzID0gW107XG4gICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX2dldFhIUlByb21pc2UodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl9zZW5kaW5nID0gdGhpcy5fYWN0aXZlID0gMDtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc09iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHRvIHF1ZXJ5XG4gICAgICAgIC8vIHRoZSBudW1iZXIgb2YgYWN0aXZlIHVwbG9hZHM6XG4gICAgICAgIGFjdGl2ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgdG8gcXVlcnlcbiAgICAgICAgLy8gdGhlIHdpZGdldCB1cGxvYWQgcHJvZ3Jlc3MuXG4gICAgICAgIC8vIEl0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggbG9hZGVkLCB0b3RhbCBhbmQgYml0cmF0ZSBwcm9wZXJ0aWVzXG4gICAgICAgIC8vIGZvciB0aGUgcnVubmluZyB1cGxvYWRzOlxuICAgICAgICBwcm9ncmVzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyZXNzO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyBhZGRpbmcgZmlsZXNcbiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2hcbiAgICAgICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgcHJvcGVydHkgYW5kIGNhbiBjb250YWluIGFkZGl0aW9uYWwgb3B0aW9uczpcbiAgICAgICAgLy8gLmZpbGV1cGxvYWQoJ2FkZCcsIHtmaWxlczogZmlsZXNMaXN0fSk7XG4gICAgICAgIGFkZDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghZGF0YSB8fCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5maWxlSW5wdXQgJiYgIWRhdGEuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX29uQWRkKG51bGwsIGRhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gJC5tYWtlQXJyYXkoZGF0YS5maWxlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25BZGQobnVsbCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHNlbmRpbmcgZmlsZXNcbiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2hcbiAgICAgICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgb3IgZmlsZUlucHV0IHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6XG4gICAgICAgIC8vIC5maWxldXBsb2FkKCdzZW5kJywge2ZpbGVzOiBmaWxlc0xpc3R9KTtcbiAgICAgICAgLy8gVGhlIG1ldGhvZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZm9yIHRoZSBmaWxlIHVwbG9hZCBjYWxsLlxuICAgICAgICBzZW5kOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgJiYgIXRoaXMub3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVJbnB1dCAmJiAhZGF0YS5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRlZDtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpxWEhSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0KG51bGwsICdhYm9ydCcsICdhYm9ydCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEZpbGVJbnB1dEZpbGVzKGRhdGEuZmlsZUlucHV0KS5hbHdheXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIgPSB0aGF0Ll9vblNlbmQobnVsbCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0KGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSAkLm1ha2VBcnJheShkYXRhLmZpbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29uU2VuZChudWxsLCBkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgZGF0YSAmJiBkYXRhLmNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICB9KTtcblxufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2JsdWVpbXAtZmlsZS11cGxvYWQvanMvanF1ZXJ5LmZpbGV1cGxvYWQuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +eval("/* */ \n\"format global\";\n\"deps jquery\";\n\"exports $\";\n/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.4'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.4'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.4'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.4'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.4'\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown', relatedTarget)\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.4'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.4'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (self && self.$tip && self.$tip.is(':visible')) {\n self.hoverState = 'in'\n return\n }\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var $container = this.options.container ? $(this.options.container) : this.$element.parent()\n var containerDim = this.getPosition($container)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top = offset.top + marginTop\n offset.left = offset.left + marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n return (this.$tip = this.$tip || $(this.options.template))\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.4'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.4'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.VERSION = '3.3.4'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.4'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = $(document.body).height()\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2Jvb3RzdHJhcC1sZXNzL2pzL2Jvb3RzdHJhcC5qcz8wMGQyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qICovIFxuXCJmb3JtYXQgZ2xvYmFsXCI7XG5cImRlcHMganF1ZXJ5XCI7XG5cImV4cG9ydHMgJFwiO1xuLyohXG4gKiBCb290c3RyYXAgdjMuMy40IChodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbSlcbiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqL1xuXG5pZiAodHlwZW9mIGpRdWVyeSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdCb290c3RyYXBcXCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Jylcbn1cblxuK2Z1bmN0aW9uICgkKSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgdmFyIHZlcnNpb24gPSAkLmZuLmpxdWVyeS5zcGxpdCgnICcpWzBdLnNwbGl0KCcuJylcbiAgaWYgKCh2ZXJzaW9uWzBdIDwgMiAmJiB2ZXJzaW9uWzFdIDwgOSkgfHwgKHZlcnNpb25bMF0gPT0gMSAmJiB2ZXJzaW9uWzFdID09IDkgJiYgdmVyc2lvblsyXSA8IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCb290c3RyYXBcXCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyJylcbiAgfVxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogdHJhbnNpdGlvbi5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI3RyYW5zaXRpb25zXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cbitmdW5jdGlvbiAoJCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gQ1NTIFRSQU5TSVRJT04gU1VQUE9SVCAoU2hvdXRvdXQ6IGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbS8pXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIHRyYW5zaXRpb25FbmQoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYm9vdHN0cmFwJylcblxuICAgIHZhciB0cmFuc0VuZEV2ZW50TmFtZXMgPSB7XG4gICAgICBXZWJraXRUcmFuc2l0aW9uIDogJ3dlYmtpdFRyYW5zaXRpb25FbmQnLFxuICAgICAgTW96VHJhbnNpdGlvbiAgICA6ICd0cmFuc2l0aW9uZW5kJyxcbiAgICAgIE9UcmFuc2l0aW9uICAgICAgOiAnb1RyYW5zaXRpb25FbmQgb3RyYW5zaXRpb25lbmQnLFxuICAgICAgdHJhbnNpdGlvbiAgICAgICA6ICd0cmFuc2l0aW9uZW5kJ1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gdHJhbnNFbmRFdmVudE5hbWVzKSB7XG4gICAgICBpZiAoZWwuc3R5bGVbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4geyBlbmQ6IHRyYW5zRW5kRXZlbnROYW1lc1tuYW1lXSB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlIC8vIGV4cGxpY2l0IGZvciBpZTggKCAgLl8uKVxuICB9XG5cbiAgLy8gaHR0cDovL2Jsb2cuYWxleG1hY2Nhdy5jb20vY3NzLXRyYW5zaXRpb25zXG4gICQuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiAoZHVyYXRpb24pIHtcbiAgICB2YXIgY2FsbGVkID0gZmFsc2VcbiAgICB2YXIgJGVsID0gdGhpc1xuICAgICQodGhpcykub25lKCdic1RyYW5zaXRpb25FbmQnLCBmdW5jdGlvbiAoKSB7IGNhbGxlZCA9IHRydWUgfSlcbiAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IGlmICghY2FsbGVkKSAkKCRlbCkudHJpZ2dlcigkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpIH1cbiAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkdXJhdGlvbilcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgJChmdW5jdGlvbiAoKSB7XG4gICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRW5kKClcblxuICAgIGlmICghJC5zdXBwb3J0LnRyYW5zaXRpb24pIHJldHVyblxuXG4gICAgJC5ldmVudC5zcGVjaWFsLmJzVHJhbnNpdGlvbkVuZCA9IHtcbiAgICAgIGJpbmRUeXBlOiAkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsXG4gICAgICBkZWxlZ2F0ZVR5cGU6ICQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxcbiAgICAgIGhhbmRsZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKCQoZS50YXJnZXQpLmlzKHRoaXMpKSByZXR1cm4gZS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG59KGpRdWVyeSk7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQm9vdHN0cmFwOiBhbGVydC5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI2FsZXJ0c1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIEFMRVJUIENMQVNTIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBkaXNtaXNzID0gJ1tkYXRhLWRpc21pc3M9XCJhbGVydFwiXSdcbiAgdmFyIEFsZXJ0ICAgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAkKGVsKS5vbignY2xpY2snLCBkaXNtaXNzLCB0aGlzLmNsb3NlKVxuICB9XG5cbiAgQWxlcnQuVkVSU0lPTiA9ICczLjMuNCdcblxuICBBbGVydC5UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwXG5cbiAgQWxlcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgJHRoaXMgICAgPSAkKHRoaXMpXG4gICAgdmFyIHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0YS10YXJnZXQnKVxuXG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgc2VsZWN0b3IgPSAkdGhpcy5hdHRyKCdocmVmJylcbiAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IgJiYgc2VsZWN0b3IucmVwbGFjZSgvLiooPz0jW15cXHNdKiQpLywgJycpIC8vIHN0cmlwIGZvciBpZTdcbiAgICB9XG5cbiAgICB2YXIgJHBhcmVudCA9ICQoc2VsZWN0b3IpXG5cbiAgICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoISRwYXJlbnQubGVuZ3RoKSB7XG4gICAgICAkcGFyZW50ID0gJHRoaXMuY2xvc2VzdCgnLmFsZXJ0JylcbiAgICB9XG5cbiAgICAkcGFyZW50LnRyaWdnZXIoZSA9ICQuRXZlbnQoJ2Nsb3NlLmJzLmFsZXJ0JykpXG5cbiAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuXG5cbiAgICAkcGFyZW50LnJlbW92ZUNsYXNzKCdpbicpXG5cbiAgICBmdW5jdGlvbiByZW1vdmVFbGVtZW50KCkge1xuICAgICAgLy8gZGV0YWNoIGZyb20gcGFyZW50LCBmaXJlIGV2ZW50IHRoZW4gY2xlYW4gdXAgZGF0YVxuICAgICAgJHBhcmVudC5kZXRhY2goKS50cmlnZ2VyKCdjbG9zZWQuYnMuYWxlcnQnKS5yZW1vdmUoKVxuICAgIH1cblxuICAgICQuc3VwcG9ydC50cmFuc2l0aW9uICYmICRwYXJlbnQuaGFzQ2xhc3MoJ2ZhZGUnKSA/XG4gICAgICAkcGFyZW50XG4gICAgICAgIC5vbmUoJ2JzVHJhbnNpdGlvbkVuZCcsIHJlbW92ZUVsZW1lbnQpXG4gICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChBbGVydC5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICByZW1vdmVFbGVtZW50KClcbiAgfVxuXG5cbiAgLy8gQUxFUlQgUExVR0lOIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXG4gICAgICB2YXIgZGF0YSAgPSAkdGhpcy5kYXRhKCdicy5hbGVydCcpXG5cbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMuYWxlcnQnLCAoZGF0YSA9IG5ldyBBbGVydCh0aGlzKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpXG4gICAgfSlcbiAgfVxuXG4gIHZhciBvbGQgPSAkLmZuLmFsZXJ0XG5cbiAgJC5mbi5hbGVydCAgICAgICAgICAgICA9IFBsdWdpblxuICAkLmZuLmFsZXJ0LkNvbnN0cnVjdG9yID0gQWxlcnRcblxuXG4gIC8vIEFMRVJUIE5PIENPTkZMSUNUXG4gIC8vID09PT09PT09PT09PT09PT09XG5cbiAgJC5mbi5hbGVydC5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICQuZm4uYWxlcnQgPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cblxuICAvLyBBTEVSVCBEQVRBLUFQSVxuICAvLyA9PT09PT09PT09PT09PVxuXG4gICQoZG9jdW1lbnQpLm9uKCdjbGljay5icy5hbGVydC5kYXRhLWFwaScsIGRpc21pc3MsIEFsZXJ0LnByb3RvdHlwZS5jbG9zZSlcblxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogYnV0dG9uLmpzIHYzLjMuNFxuICogaHR0cDovL2dldGJvb3RzdHJhcC5jb20vamF2YXNjcmlwdC8jYnV0dG9uc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIEJVVFRPTiBQVUJMSUMgQ0xBU1MgREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgQnV0dG9uID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ICA9ICQoZWxlbWVudClcbiAgICB0aGlzLm9wdGlvbnMgICA9ICQuZXh0ZW5kKHt9LCBCdXR0b24uREVGQVVMVFMsIG9wdGlvbnMpXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxuICB9XG5cbiAgQnV0dG9uLlZFUlNJT04gID0gJzMuMy40J1xuXG4gIEJ1dHRvbi5ERUZBVUxUUyA9IHtcbiAgICBsb2FkaW5nVGV4dDogJ2xvYWRpbmcuLi4nXG4gIH1cblxuICBCdXR0b24ucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgdmFyIGQgICAgPSAnZGlzYWJsZWQnXG4gICAgdmFyICRlbCAgPSB0aGlzLiRlbGVtZW50XG4gICAgdmFyIHZhbCAgPSAkZWwuaXMoJ2lucHV0JykgPyAndmFsJyA6ICdodG1sJ1xuICAgIHZhciBkYXRhID0gJGVsLmRhdGEoKVxuXG4gICAgc3RhdGUgPSBzdGF0ZSArICdUZXh0J1xuXG4gICAgaWYgKGRhdGEucmVzZXRUZXh0ID09IG51bGwpICRlbC5kYXRhKCdyZXNldFRleHQnLCAkZWxbdmFsXSgpKVxuXG4gICAgLy8gcHVzaCB0byBldmVudCBsb29wIHRvIGFsbG93IGZvcm1zIHRvIHN1Ym1pdFxuICAgIHNldFRpbWVvdXQoJC5wcm94eShmdW5jdGlvbiAoKSB7XG4gICAgICAkZWxbdmFsXShkYXRhW3N0YXRlXSA9PSBudWxsID8gdGhpcy5vcHRpb25zW3N0YXRlXSA6IGRhdGFbc3RhdGVdKVxuXG4gICAgICBpZiAoc3RhdGUgPT0gJ2xvYWRpbmdUZXh0Jykge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWVcbiAgICAgICAgJGVsLmFkZENsYXNzKGQpLmF0dHIoZCwgZClcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxuICAgICAgICAkZWwucmVtb3ZlQ2xhc3MoZCkucmVtb3ZlQXR0cihkKVxuICAgICAgfVxuICAgIH0sIHRoaXMpLCAwKVxuICB9XG5cbiAgQnV0dG9uLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNoYW5nZWQgPSB0cnVlXG4gICAgdmFyICRwYXJlbnQgPSB0aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0nKVxuXG4gICAgaWYgKCRwYXJlbnQubGVuZ3RoKSB7XG4gICAgICB2YXIgJGlucHV0ID0gdGhpcy4kZWxlbWVudC5maW5kKCdpbnB1dCcpXG4gICAgICBpZiAoJGlucHV0LnByb3AoJ3R5cGUnKSA9PSAncmFkaW8nKSB7XG4gICAgICAgIGlmICgkaW5wdXQucHJvcCgnY2hlY2tlZCcpICYmIHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2FjdGl2ZScpKSBjaGFuZ2VkID0gZmFsc2VcbiAgICAgICAgZWxzZSAkcGFyZW50LmZpbmQoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJylcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuZ2VkKSAkaW5wdXQucHJvcCgnY2hlY2tlZCcsICF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdhY3RpdmUnKSkudHJpZ2dlcignY2hhbmdlJylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLXByZXNzZWQnLCAhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnYWN0aXZlJykpXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWQpIHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpXG4gIH1cblxuXG4gIC8vIEJVVFRPTiBQTFVHSU4gREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgICA9ICQodGhpcylcbiAgICAgIHZhciBkYXRhICAgID0gJHRoaXMuZGF0YSgnYnMuYnV0dG9uJylcbiAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cblxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdicy5idXR0b24nLCAoZGF0YSA9IG5ldyBCdXR0b24odGhpcywgb3B0aW9ucykpKVxuXG4gICAgICBpZiAob3B0aW9uID09ICd0b2dnbGUnKSBkYXRhLnRvZ2dsZSgpXG4gICAgICBlbHNlIGlmIChvcHRpb24pIGRhdGEuc2V0U3RhdGUob3B0aW9uKVxuICAgIH0pXG4gIH1cblxuICB2YXIgb2xkID0gJC5mbi5idXR0b25cblxuICAkLmZuLmJ1dHRvbiAgICAgICAgICAgICA9IFBsdWdpblxuICAkLmZuLmJ1dHRvbi5Db25zdHJ1Y3RvciA9IEJ1dHRvblxuXG5cbiAgLy8gQlVUVE9OIE5PIENPTkZMSUNUXG4gIC8vID09PT09PT09PT09PT09PT09PVxuXG4gICQuZm4uYnV0dG9uLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbi5idXR0b24gPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cblxuICAvLyBCVVRUT04gREFUQS1BUElcbiAgLy8gPT09PT09PT09PT09PT09XG5cbiAgJChkb2N1bWVudClcbiAgICAub24oJ2NsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaScsICdbZGF0YS10b2dnbGVePVwiYnV0dG9uXCJdJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciAkYnRuID0gJChlLnRhcmdldClcbiAgICAgIGlmICghJGJ0bi5oYXNDbGFzcygnYnRuJykpICRidG4gPSAkYnRuLmNsb3Nlc3QoJy5idG4nKVxuICAgICAgUGx1Z2luLmNhbGwoJGJ0biwgJ3RvZ2dsZScpXG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB9KVxuICAgIC5vbignZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpJywgJ1tkYXRhLXRvZ2dsZV49XCJidXR0b25cIl0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgJChlLnRhcmdldCkuY2xvc2VzdCgnLmJ0bicpLnRvZ2dsZUNsYXNzKCdmb2N1cycsIC9eZm9jdXMoaW4pPyQvLnRlc3QoZS50eXBlKSlcbiAgICB9KVxuXG59KGpRdWVyeSk7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQm9vdHN0cmFwOiBjYXJvdXNlbC5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI2Nhcm91c2VsXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cbitmdW5jdGlvbiAoJCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gQ0FST1VTRUwgQ0xBU1MgREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIENhcm91c2VsID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ICAgID0gJChlbGVtZW50KVxuICAgIHRoaXMuJGluZGljYXRvcnMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJy5jYXJvdXNlbC1pbmRpY2F0b3JzJylcbiAgICB0aGlzLm9wdGlvbnMgICAgID0gb3B0aW9uc1xuICAgIHRoaXMucGF1c2VkICAgICAgPSBudWxsXG4gICAgdGhpcy5zbGlkaW5nICAgICA9IG51bGxcbiAgICB0aGlzLmludGVydmFsICAgID0gbnVsbFxuICAgIHRoaXMuJGFjdGl2ZSAgICAgPSBudWxsXG4gICAgdGhpcy4kaXRlbXMgICAgICA9IG51bGxcblxuICAgIHRoaXMub3B0aW9ucy5rZXlib2FyZCAmJiB0aGlzLiRlbGVtZW50Lm9uKCdrZXlkb3duLmJzLmNhcm91c2VsJywgJC5wcm94eSh0aGlzLmtleWRvd24sIHRoaXMpKVxuXG4gICAgdGhpcy5vcHRpb25zLnBhdXNlID09ICdob3ZlcicgJiYgISgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpICYmIHRoaXMuJGVsZW1lbnRcbiAgICAgIC5vbignbW91c2VlbnRlci5icy5jYXJvdXNlbCcsICQucHJveHkodGhpcy5wYXVzZSwgdGhpcykpXG4gICAgICAub24oJ21vdXNlbGVhdmUuYnMuY2Fyb3VzZWwnLCAkLnByb3h5KHRoaXMuY3ljbGUsIHRoaXMpKVxuICB9XG5cbiAgQ2Fyb3VzZWwuVkVSU0lPTiAgPSAnMy4zLjQnXG5cbiAgQ2Fyb3VzZWwuVFJBTlNJVElPTl9EVVJBVElPTiA9IDYwMFxuXG4gIENhcm91c2VsLkRFRkFVTFRTID0ge1xuICAgIGludGVydmFsOiA1MDAwLFxuICAgIHBhdXNlOiAnaG92ZXInLFxuICAgIHdyYXA6IHRydWUsXG4gICAga2V5Ym9hcmQ6IHRydWVcbiAgfVxuXG4gIENhcm91c2VsLnByb3RvdHlwZS5rZXlkb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoL2lucHV0fHRleHRhcmVhL2kudGVzdChlLnRhcmdldC50YWdOYW1lKSkgcmV0dXJuXG4gICAgc3dpdGNoIChlLndoaWNoKSB7XG4gICAgICBjYXNlIDM3OiB0aGlzLnByZXYoKTsgYnJlYWtcbiAgICAgIGNhc2UgMzk6IHRoaXMubmV4dCgpOyBicmVha1xuICAgICAgZGVmYXVsdDogcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBDYXJvdXNlbC5wcm90b3R5cGUuY3ljbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgIGUgfHwgKHRoaXMucGF1c2VkID0gZmFsc2UpXG5cbiAgICB0aGlzLmludGVydmFsICYmIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbClcblxuICAgIHRoaXMub3B0aW9ucy5pbnRlcnZhbFxuICAgICAgJiYgIXRoaXMucGF1c2VkXG4gICAgICAmJiAodGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCQucHJveHkodGhpcy5uZXh0LCB0aGlzKSwgdGhpcy5vcHRpb25zLmludGVydmFsKSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBDYXJvdXNlbC5wcm90b3R5cGUuZ2V0SXRlbUluZGV4ID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGlzLiRpdGVtcyA9IGl0ZW0ucGFyZW50KCkuY2hpbGRyZW4oJy5pdGVtJylcbiAgICByZXR1cm4gdGhpcy4kaXRlbXMuaW5kZXgoaXRlbSB8fCB0aGlzLiRhY3RpdmUpXG4gIH1cblxuICBDYXJvdXNlbC5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbiA9IGZ1bmN0aW9uIChkaXJlY3Rpb24sIGFjdGl2ZSkge1xuICAgIHZhciBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0SXRlbUluZGV4KGFjdGl2ZSlcbiAgICB2YXIgd2lsbFdyYXAgPSAoZGlyZWN0aW9uID09ICdwcmV2JyAmJiBhY3RpdmVJbmRleCA9PT0gMClcbiAgICAgICAgICAgICAgICB8fCAoZGlyZWN0aW9uID09ICduZXh0JyAmJiBhY3RpdmVJbmRleCA9PSAodGhpcy4kaXRlbXMubGVuZ3RoIC0gMSkpXG4gICAgaWYgKHdpbGxXcmFwICYmICF0aGlzLm9wdGlvbnMud3JhcCkgcmV0dXJuIGFjdGl2ZVxuICAgIHZhciBkZWx0YSA9IGRpcmVjdGlvbiA9PSAncHJldicgPyAtMSA6IDFcbiAgICB2YXIgaXRlbUluZGV4ID0gKGFjdGl2ZUluZGV4ICsgZGVsdGEpICUgdGhpcy4kaXRlbXMubGVuZ3RoXG4gICAgcmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGl0ZW1JbmRleClcbiAgfVxuXG4gIENhcm91c2VsLnByb3RvdHlwZS50byA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICB2YXIgdGhhdCAgICAgICAgPSB0aGlzXG4gICAgdmFyIGFjdGl2ZUluZGV4ID0gdGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlID0gdGhpcy4kZWxlbWVudC5maW5kKCcuaXRlbS5hY3RpdmUnKSlcblxuICAgIGlmIChwb3MgPiAodGhpcy4kaXRlbXMubGVuZ3RoIC0gMSkgfHwgcG9zIDwgMCkgcmV0dXJuXG5cbiAgICBpZiAodGhpcy5zbGlkaW5nKSAgICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5vbmUoJ3NsaWQuYnMuY2Fyb3VzZWwnLCBmdW5jdGlvbiAoKSB7IHRoYXQudG8ocG9zKSB9KSAvLyB5ZXMsIFwic2xpZFwiXG4gICAgaWYgKGFjdGl2ZUluZGV4ID09IHBvcykgcmV0dXJuIHRoaXMucGF1c2UoKS5jeWNsZSgpXG5cbiAgICByZXR1cm4gdGhpcy5zbGlkZShwb3MgPiBhY3RpdmVJbmRleCA/ICduZXh0JyA6ICdwcmV2JywgdGhpcy4kaXRlbXMuZXEocG9zKSlcbiAgfVxuXG4gIENhcm91c2VsLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgZSB8fCAodGhpcy5wYXVzZWQgPSB0cnVlKVxuXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQuZmluZCgnLm5leHQsIC5wcmV2JykubGVuZ3RoICYmICQuc3VwcG9ydC50cmFuc2l0aW9uKSB7XG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKVxuICAgICAgdGhpcy5jeWNsZSh0cnVlKVxuICAgIH1cblxuICAgIHRoaXMuaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgQ2Fyb3VzZWwucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuc2xpZGluZykgcmV0dXJuXG4gICAgcmV0dXJuIHRoaXMuc2xpZGUoJ25leHQnKVxuICB9XG5cbiAgQ2Fyb3VzZWwucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuc2xpZGluZykgcmV0dXJuXG4gICAgcmV0dXJuIHRoaXMuc2xpZGUoJ3ByZXYnKVxuICB9XG5cbiAgQ2Fyb3VzZWwucHJvdG90eXBlLnNsaWRlID0gZnVuY3Rpb24gKHR5cGUsIG5leHQpIHtcbiAgICB2YXIgJGFjdGl2ZSAgID0gdGhpcy4kZWxlbWVudC5maW5kKCcuaXRlbS5hY3RpdmUnKVxuICAgIHZhciAkbmV4dCAgICAgPSBuZXh0IHx8IHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbih0eXBlLCAkYWN0aXZlKVxuICAgIHZhciBpc0N5Y2xpbmcgPSB0aGlzLmludGVydmFsXG4gICAgdmFyIGRpcmVjdGlvbiA9IHR5cGUgPT0gJ25leHQnID8gJ2xlZnQnIDogJ3JpZ2h0J1xuICAgIHZhciB0aGF0ICAgICAgPSB0aGlzXG5cbiAgICBpZiAoJG5leHQuaGFzQ2xhc3MoJ2FjdGl2ZScpKSByZXR1cm4gKHRoaXMuc2xpZGluZyA9IGZhbHNlKVxuXG4gICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSAkbmV4dFswXVxuICAgIHZhciBzbGlkZUV2ZW50ID0gJC5FdmVudCgnc2xpZGUuYnMuY2Fyb3VzZWwnLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiByZWxhdGVkVGFyZ2V0LFxuICAgICAgZGlyZWN0aW9uOiBkaXJlY3Rpb25cbiAgICB9KVxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihzbGlkZUV2ZW50KVxuICAgIGlmIChzbGlkZUV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cblxuICAgIHRoaXMuc2xpZGluZyA9IHRydWVcblxuICAgIGlzQ3ljbGluZyAmJiB0aGlzLnBhdXNlKClcblxuICAgIGlmICh0aGlzLiRpbmRpY2F0b3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy4kaW5kaWNhdG9ycy5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICB2YXIgJG5leHRJbmRpY2F0b3IgPSAkKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleCgkbmV4dCldKVxuICAgICAgJG5leHRJbmRpY2F0b3IgJiYgJG5leHRJbmRpY2F0b3IuYWRkQ2xhc3MoJ2FjdGl2ZScpXG4gICAgfVxuXG4gICAgdmFyIHNsaWRFdmVudCA9ICQuRXZlbnQoJ3NsaWQuYnMuY2Fyb3VzZWwnLCB7IHJlbGF0ZWRUYXJnZXQ6IHJlbGF0ZWRUYXJnZXQsIGRpcmVjdGlvbjogZGlyZWN0aW9uIH0pIC8vIHllcywgXCJzbGlkXCJcbiAgICBpZiAoJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnc2xpZGUnKSkge1xuICAgICAgJG5leHQuYWRkQ2xhc3ModHlwZSlcbiAgICAgICRuZXh0WzBdLm9mZnNldFdpZHRoIC8vIGZvcmNlIHJlZmxvd1xuICAgICAgJGFjdGl2ZS5hZGRDbGFzcyhkaXJlY3Rpb24pXG4gICAgICAkbmV4dC5hZGRDbGFzcyhkaXJlY3Rpb24pXG4gICAgICAkYWN0aXZlXG4gICAgICAgIC5vbmUoJ2JzVHJhbnNpdGlvbkVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAkbmV4dC5yZW1vdmVDbGFzcyhbdHlwZSwgZGlyZWN0aW9uXS5qb2luKCcgJykpLmFkZENsYXNzKCdhY3RpdmUnKVxuICAgICAgICAgICRhY3RpdmUucmVtb3ZlQ2xhc3MoWydhY3RpdmUnLCBkaXJlY3Rpb25dLmpvaW4oJyAnKSlcbiAgICAgICAgICB0aGF0LnNsaWRpbmcgPSBmYWxzZVxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhhdC4kZWxlbWVudC50cmlnZ2VyKHNsaWRFdmVudClcbiAgICAgICAgICB9LCAwKVxuICAgICAgICB9KVxuICAgICAgICAuZW11bGF0ZVRyYW5zaXRpb25FbmQoQ2Fyb3VzZWwuVFJBTlNJVElPTl9EVVJBVElPTilcbiAgICB9IGVsc2Uge1xuICAgICAgJGFjdGl2ZS5yZW1vdmVDbGFzcygnYWN0aXZlJylcbiAgICAgICRuZXh0LmFkZENsYXNzKCdhY3RpdmUnKVxuICAgICAgdGhpcy5zbGlkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihzbGlkRXZlbnQpXG4gICAgfVxuXG4gICAgaXNDeWNsaW5nICYmIHRoaXMuY3ljbGUoKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG5cbiAgLy8gQ0FST1VTRUwgUExVR0lOIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgICA9ICQodGhpcylcbiAgICAgIHZhciBkYXRhICAgID0gJHRoaXMuZGF0YSgnYnMuY2Fyb3VzZWwnKVxuICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgQ2Fyb3VzZWwuREVGQVVMVFMsICR0aGlzLmRhdGEoKSwgdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb24pXG4gICAgICB2YXIgYWN0aW9uICA9IHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb25zLnNsaWRlXG5cbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMuY2Fyb3VzZWwnLCAoZGF0YSA9IG5ldyBDYXJvdXNlbCh0aGlzLCBvcHRpb25zKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnbnVtYmVyJykgZGF0YS50byhvcHRpb24pXG4gICAgICBlbHNlIGlmIChhY3Rpb24pIGRhdGFbYWN0aW9uXSgpXG4gICAgICBlbHNlIGlmIChvcHRpb25zLmludGVydmFsKSBkYXRhLnBhdXNlKCkuY3ljbGUoKVxuICAgIH0pXG4gIH1cblxuICB2YXIgb2xkID0gJC5mbi5jYXJvdXNlbFxuXG4gICQuZm4uY2Fyb3VzZWwgICAgICAgICAgICAgPSBQbHVnaW5cbiAgJC5mbi5jYXJvdXNlbC5Db25zdHJ1Y3RvciA9IENhcm91c2VsXG5cblxuICAvLyBDQVJPVVNFTCBOTyBDT05GTElDVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PVxuXG4gICQuZm4uY2Fyb3VzZWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAkLmZuLmNhcm91c2VsID0gb2xkXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG5cbiAgLy8gQ0FST1VTRUwgREFUQS1BUElcbiAgLy8gPT09PT09PT09PT09PT09PT1cblxuICB2YXIgY2xpY2tIYW5kbGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaHJlZlxuICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgIHZhciAkdGFyZ2V0ID0gJCgkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpIHx8IChocmVmID0gJHRoaXMuYXR0cignaHJlZicpKSAmJiBocmVmLnJlcGxhY2UoLy4qKD89I1teXFxzXSskKS8sICcnKSkgLy8gc3RyaXAgZm9yIGllN1xuICAgIGlmICghJHRhcmdldC5oYXNDbGFzcygnY2Fyb3VzZWwnKSkgcmV0dXJuXG4gICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgJHRhcmdldC5kYXRhKCksICR0aGlzLmRhdGEoKSlcbiAgICB2YXIgc2xpZGVJbmRleCA9ICR0aGlzLmF0dHIoJ2RhdGEtc2xpZGUtdG8nKVxuICAgIGlmIChzbGlkZUluZGV4KSBvcHRpb25zLmludGVydmFsID0gZmFsc2VcblxuICAgIFBsdWdpbi5jYWxsKCR0YXJnZXQsIG9wdGlvbnMpXG5cbiAgICBpZiAoc2xpZGVJbmRleCkge1xuICAgICAgJHRhcmdldC5kYXRhKCdicy5jYXJvdXNlbCcpLnRvKHNsaWRlSW5kZXgpXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICAkKGRvY3VtZW50KVxuICAgIC5vbignY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGknLCAnW2RhdGEtc2xpZGVdJywgY2xpY2tIYW5kbGVyKVxuICAgIC5vbignY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGknLCAnW2RhdGEtc2xpZGUtdG9dJywgY2xpY2tIYW5kbGVyKVxuXG4gICQod2luZG93KS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAkKCdbZGF0YS1yaWRlPVwiY2Fyb3VzZWxcIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkY2Fyb3VzZWwgPSAkKHRoaXMpXG4gICAgICBQbHVnaW4uY2FsbCgkY2Fyb3VzZWwsICRjYXJvdXNlbC5kYXRhKCkpXG4gICAgfSlcbiAgfSlcblxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogY29sbGFwc2UuanMgdjMuMy40XG4gKiBodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbS9qYXZhc2NyaXB0LyNjb2xsYXBzZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIENPTExBUFNFIFBVQkxJQyBDTEFTUyBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIENvbGxhcHNlID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ICAgICAgPSAkKGVsZW1lbnQpXG4gICAgdGhpcy5vcHRpb25zICAgICAgID0gJC5leHRlbmQoe30sIENvbGxhcHNlLkRFRkFVTFRTLCBvcHRpb25zKVxuICAgIHRoaXMuJHRyaWdnZXIgICAgICA9ICQoJ1tkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCJdW2hyZWY9XCIjJyArIGVsZW1lbnQuaWQgKyAnXCJdLCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCJdW2RhdGEtdGFyZ2V0PVwiIycgKyBlbGVtZW50LmlkICsgJ1wiXScpXG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gbnVsbFxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wYXJlbnQpIHtcbiAgICAgIHRoaXMuJHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy4kZWxlbWVudCwgdGhpcy4kdHJpZ2dlcilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnRvZ2dsZSkgdGhpcy50b2dnbGUoKVxuICB9XG5cbiAgQ29sbGFwc2UuVkVSU0lPTiAgPSAnMy4zLjQnXG5cbiAgQ29sbGFwc2UuVFJBTlNJVElPTl9EVVJBVElPTiA9IDM1MFxuXG4gIENvbGxhcHNlLkRFRkFVTFRTID0ge1xuICAgIHRvZ2dsZTogdHJ1ZVxuICB9XG5cbiAgQ29sbGFwc2UucHJvdG90eXBlLmRpbWVuc2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFzV2lkdGggPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCd3aWR0aCcpXG4gICAgcmV0dXJuIGhhc1dpZHRoID8gJ3dpZHRoJyA6ICdoZWlnaHQnXG4gIH1cblxuICBDb2xsYXBzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy50cmFuc2l0aW9uaW5nIHx8IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykpIHJldHVyblxuXG4gICAgdmFyIGFjdGl2ZXNEYXRhXG4gICAgdmFyIGFjdGl2ZXMgPSB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50LmNoaWxkcmVuKCcucGFuZWwnKS5jaGlsZHJlbignLmluLCAuY29sbGFwc2luZycpXG5cbiAgICBpZiAoYWN0aXZlcyAmJiBhY3RpdmVzLmxlbmd0aCkge1xuICAgICAgYWN0aXZlc0RhdGEgPSBhY3RpdmVzLmRhdGEoJ2JzLmNvbGxhcHNlJylcbiAgICAgIGlmIChhY3RpdmVzRGF0YSAmJiBhY3RpdmVzRGF0YS50cmFuc2l0aW9uaW5nKSByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgc3RhcnRFdmVudCA9ICQuRXZlbnQoJ3Nob3cuYnMuY29sbGFwc2UnKVxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihzdGFydEV2ZW50KVxuICAgIGlmIChzdGFydEV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cblxuICAgIGlmIChhY3RpdmVzICYmIGFjdGl2ZXMubGVuZ3RoKSB7XG4gICAgICBQbHVnaW4uY2FsbChhY3RpdmVzLCAnaGlkZScpXG4gICAgICBhY3RpdmVzRGF0YSB8fCBhY3RpdmVzLmRhdGEoJ2JzLmNvbGxhcHNlJywgbnVsbClcbiAgICB9XG5cbiAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNpb24oKVxuXG4gICAgdGhpcy4kZWxlbWVudFxuICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzZScpXG4gICAgICAuYWRkQ2xhc3MoJ2NvbGxhcHNpbmcnKVtkaW1lbnNpb25dKDApXG4gICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsIHRydWUpXG5cbiAgICB0aGlzLiR0cmlnZ2VyXG4gICAgICAucmVtb3ZlQ2xhc3MoJ2NvbGxhcHNlZCcpXG4gICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsIHRydWUpXG5cbiAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSAxXG5cbiAgICB2YXIgY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLiRlbGVtZW50XG4gICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2luZycpXG4gICAgICAgIC5hZGRDbGFzcygnY29sbGFwc2UgaW4nKVtkaW1lbnNpb25dKCcnKVxuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gMFxuICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAudHJpZ2dlcignc2hvd24uYnMuY29sbGFwc2UnKVxuICAgIH1cblxuICAgIGlmICghJC5zdXBwb3J0LnRyYW5zaXRpb24pIHJldHVybiBjb21wbGV0ZS5jYWxsKHRoaXMpXG5cbiAgICB2YXIgc2Nyb2xsU2l6ZSA9ICQuY2FtZWxDYXNlKFsnc2Nyb2xsJywgZGltZW5zaW9uXS5qb2luKCctJykpXG5cbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAub25lKCdic1RyYW5zaXRpb25FbmQnLCAkLnByb3h5KGNvbXBsZXRlLCB0aGlzKSlcbiAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChDb2xsYXBzZS5UUkFOU0lUSU9OX0RVUkFUSU9OKVtkaW1lbnNpb25dKHRoaXMuJGVsZW1lbnRbMF1bc2Nyb2xsU2l6ZV0pXG4gIH1cblxuICBDb2xsYXBzZS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy50cmFuc2l0aW9uaW5nIHx8ICF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdpbicpKSByZXR1cm5cblxuICAgIHZhciBzdGFydEV2ZW50ID0gJC5FdmVudCgnaGlkZS5icy5jb2xsYXBzZScpXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKHN0YXJ0RXZlbnQpXG4gICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uKClcblxuICAgIHRoaXMuJGVsZW1lbnRbZGltZW5zaW9uXSh0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0oKSlbMF0ub2Zmc2V0SGVpZ2h0XG5cbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAuYWRkQ2xhc3MoJ2NvbGxhcHNpbmcnKVxuICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzZSBpbicpXG4gICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsIGZhbHNlKVxuXG4gICAgdGhpcy4kdHJpZ2dlclxuICAgICAgLmFkZENsYXNzKCdjb2xsYXBzZWQnKVxuICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSlcblxuICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IDFcblxuICAgIHZhciBjb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IDBcbiAgICAgIHRoaXMuJGVsZW1lbnRcbiAgICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzaW5nJylcbiAgICAgICAgLmFkZENsYXNzKCdjb2xsYXBzZScpXG4gICAgICAgIC50cmlnZ2VyKCdoaWRkZW4uYnMuY29sbGFwc2UnKVxuICAgIH1cblxuICAgIGlmICghJC5zdXBwb3J0LnRyYW5zaXRpb24pIHJldHVybiBjb21wbGV0ZS5jYWxsKHRoaXMpXG5cbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICBbZGltZW5zaW9uXSgwKVxuICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgJC5wcm94eShjb21wbGV0ZSwgdGhpcykpXG4gICAgICAuZW11bGF0ZVRyYW5zaXRpb25FbmQoQ29sbGFwc2UuVFJBTlNJVElPTl9EVVJBVElPTilcbiAgfVxuXG4gIENvbGxhcHNlLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpc1t0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdpbicpID8gJ2hpZGUnIDogJ3Nob3cnXSgpXG4gIH1cblxuICBDb2xsYXBzZS5wcm90b3R5cGUuZ2V0UGFyZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAkKHRoaXMub3B0aW9ucy5wYXJlbnQpXG4gICAgICAuZmluZCgnW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl1bZGF0YS1wYXJlbnQ9XCInICsgdGhpcy5vcHRpb25zLnBhcmVudCArICdcIl0nKVxuICAgICAgLmVhY2goJC5wcm94eShmdW5jdGlvbiAoaSwgZWxlbWVudCkge1xuICAgICAgICB2YXIgJGVsZW1lbnQgPSAkKGVsZW1lbnQpXG4gICAgICAgIHRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKGdldFRhcmdldEZyb21UcmlnZ2VyKCRlbGVtZW50KSwgJGVsZW1lbnQpXG4gICAgICB9LCB0aGlzKSlcbiAgICAgIC5lbmQoKVxuICB9XG5cbiAgQ29sbGFwc2UucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyA9IGZ1bmN0aW9uICgkZWxlbWVudCwgJHRyaWdnZXIpIHtcbiAgICB2YXIgaXNPcGVuID0gJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJylcblxuICAgICRlbGVtZW50LmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pXG4gICAgJHRyaWdnZXJcbiAgICAgIC50b2dnbGVDbGFzcygnY29sbGFwc2VkJywgIWlzT3BlbilcbiAgICAgIC5hdHRyKCdhcmlhLWV4cGFuZGVkJywgaXNPcGVuKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VGFyZ2V0RnJvbVRyaWdnZXIoJHRyaWdnZXIpIHtcbiAgICB2YXIgaHJlZlxuICAgIHZhciB0YXJnZXQgPSAkdHJpZ2dlci5hdHRyKCdkYXRhLXRhcmdldCcpXG4gICAgICB8fCAoaHJlZiA9ICR0cmlnZ2VyLmF0dHIoJ2hyZWYnKSkgJiYgaHJlZi5yZXBsYWNlKC8uKig/PSNbXlxcc10rJCkvLCAnJykgLy8gc3RyaXAgZm9yIGllN1xuXG4gICAgcmV0dXJuICQodGFyZ2V0KVxuICB9XG5cblxuICAvLyBDT0xMQVBTRSBQTFVHSU4gREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIFBsdWdpbihvcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgICAgdmFyIGRhdGEgICAgPSAkdGhpcy5kYXRhKCdicy5jb2xsYXBzZScpXG4gICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBDb2xsYXBzZS5ERUZBVUxUUywgJHRoaXMuZGF0YSgpLCB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvbilcblxuICAgICAgaWYgKCFkYXRhICYmIG9wdGlvbnMudG9nZ2xlICYmIC9zaG93fGhpZGUvLnRlc3Qob3B0aW9uKSkgb3B0aW9ucy50b2dnbGUgPSBmYWxzZVxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdicy5jb2xsYXBzZScsIChkYXRhID0gbmV3IENvbGxhcHNlKHRoaXMsIG9wdGlvbnMpKSlcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxuICAgIH0pXG4gIH1cblxuICB2YXIgb2xkID0gJC5mbi5jb2xsYXBzZVxuXG4gICQuZm4uY29sbGFwc2UgICAgICAgICAgICAgPSBQbHVnaW5cbiAgJC5mbi5jb2xsYXBzZS5Db25zdHJ1Y3RvciA9IENvbGxhcHNlXG5cblxuICAvLyBDT0xMQVBTRSBOTyBDT05GTElDVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PVxuXG4gICQuZm4uY29sbGFwc2Uubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAkLmZuLmNvbGxhcHNlID0gb2xkXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG5cbiAgLy8gQ09MTEFQU0UgREFUQS1BUElcbiAgLy8gPT09PT09PT09PT09PT09PT1cblxuICAkKGRvY3VtZW50KS5vbignY2xpY2suYnMuY29sbGFwc2UuZGF0YS1hcGknLCAnW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl0nLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuXG4gICAgaWYgKCEkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpKSBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHZhciAkdGFyZ2V0ID0gZ2V0VGFyZ2V0RnJvbVRyaWdnZXIoJHRoaXMpXG4gICAgdmFyIGRhdGEgICAgPSAkdGFyZ2V0LmRhdGEoJ2JzLmNvbGxhcHNlJylcbiAgICB2YXIgb3B0aW9uICA9IGRhdGEgPyAndG9nZ2xlJyA6ICR0aGlzLmRhdGEoKVxuXG4gICAgUGx1Z2luLmNhbGwoJHRhcmdldCwgb3B0aW9uKVxuICB9KVxuXG59KGpRdWVyeSk7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQm9vdHN0cmFwOiBkcm9wZG93bi5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI2Ryb3Bkb3duc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIERST1BET1dOIENMQVNTIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBiYWNrZHJvcCA9ICcuZHJvcGRvd24tYmFja2Ryb3AnXG4gIHZhciB0b2dnbGUgICA9ICdbZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXSdcbiAgdmFyIERyb3Bkb3duID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAkKGVsZW1lbnQpLm9uKCdjbGljay5icy5kcm9wZG93bicsIHRoaXMudG9nZ2xlKVxuICB9XG5cbiAgRHJvcGRvd24uVkVSU0lPTiA9ICczLjMuNCdcblxuICBEcm9wZG93bi5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXG5cbiAgICBpZiAoJHRoaXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHJldHVyblxuXG4gICAgdmFyICRwYXJlbnQgID0gZ2V0UGFyZW50KCR0aGlzKVxuICAgIHZhciBpc0FjdGl2ZSA9ICRwYXJlbnQuaGFzQ2xhc3MoJ29wZW4nKVxuXG4gICAgY2xlYXJNZW51cygpXG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICEkcGFyZW50LmNsb3Nlc3QoJy5uYXZiYXItbmF2JykubGVuZ3RoKSB7XG4gICAgICAgIC8vIGlmIG1vYmlsZSB3ZSB1c2UgYSBiYWNrZHJvcCBiZWNhdXNlIGNsaWNrIGV2ZW50cyBkb24ndCBkZWxlZ2F0ZVxuICAgICAgICAkKCc8ZGl2IGNsYXNzPVwiZHJvcGRvd24tYmFja2Ryb3BcIi8+JykuaW5zZXJ0QWZ0ZXIoJCh0aGlzKSkub24oJ2NsaWNrJywgY2xlYXJNZW51cylcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSB7IHJlbGF0ZWRUYXJnZXQ6IHRoaXMgfVxuICAgICAgJHBhcmVudC50cmlnZ2VyKGUgPSAkLkV2ZW50KCdzaG93LmJzLmRyb3Bkb3duJywgcmVsYXRlZFRhcmdldCkpXG5cbiAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cblxuICAgICAgJHRoaXNcbiAgICAgICAgLnRyaWdnZXIoJ2ZvY3VzJylcbiAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpXG5cbiAgICAgICRwYXJlbnRcbiAgICAgICAgLnRvZ2dsZUNsYXNzKCdvcGVuJylcbiAgICAgICAgLnRyaWdnZXIoJ3Nob3duLmJzLmRyb3Bkb3duJywgcmVsYXRlZFRhcmdldClcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIS8oMzh8NDB8Mjd8MzIpLy50ZXN0KGUud2hpY2gpIHx8IC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkpIHJldHVyblxuXG4gICAgdmFyICR0aGlzID0gJCh0aGlzKVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgaWYgKCR0aGlzLmlzKCcuZGlzYWJsZWQsIDpkaXNhYmxlZCcpKSByZXR1cm5cblxuICAgIHZhciAkcGFyZW50ICA9IGdldFBhcmVudCgkdGhpcylcbiAgICB2YXIgaXNBY3RpdmUgPSAkcGFyZW50Lmhhc0NsYXNzKCdvcGVuJylcblxuICAgIGlmICgoIWlzQWN0aXZlICYmIGUud2hpY2ggIT0gMjcpIHx8IChpc0FjdGl2ZSAmJiBlLndoaWNoID09IDI3KSkge1xuICAgICAgaWYgKGUud2hpY2ggPT0gMjcpICRwYXJlbnQuZmluZCh0b2dnbGUpLnRyaWdnZXIoJ2ZvY3VzJylcbiAgICAgIHJldHVybiAkdGhpcy50cmlnZ2VyKCdjbGljaycpXG4gICAgfVxuXG4gICAgdmFyIGRlc2MgPSAnIGxpOm5vdCguZGlzYWJsZWQpOnZpc2libGUgYSdcbiAgICB2YXIgJGl0ZW1zID0gJHBhcmVudC5maW5kKCdbcm9sZT1cIm1lbnVcIl0nICsgZGVzYyArICcsIFtyb2xlPVwibGlzdGJveFwiXScgKyBkZXNjKVxuXG4gICAgaWYgKCEkaXRlbXMubGVuZ3RoKSByZXR1cm5cblxuICAgIHZhciBpbmRleCA9ICRpdGVtcy5pbmRleChlLnRhcmdldClcblxuICAgIGlmIChlLndoaWNoID09IDM4ICYmIGluZGV4ID4gMCkgICAgICAgICAgICAgICAgIGluZGV4LS0gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cFxuICAgIGlmIChlLndoaWNoID09IDQwICYmIGluZGV4IDwgJGl0ZW1zLmxlbmd0aCAtIDEpIGluZGV4KysgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duXG4gICAgaWYgKCF+aW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IDBcblxuICAgICRpdGVtcy5lcShpbmRleCkudHJpZ2dlcignZm9jdXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJNZW51cyhlKSB7XG4gICAgaWYgKGUgJiYgZS53aGljaCA9PT0gMykgcmV0dXJuXG4gICAgJChiYWNrZHJvcCkucmVtb3ZlKClcbiAgICAkKHRvZ2dsZSkuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgICAgICAgICA9ICQodGhpcylcbiAgICAgIHZhciAkcGFyZW50ICAgICAgID0gZ2V0UGFyZW50KCR0aGlzKVxuICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSB7IHJlbGF0ZWRUYXJnZXQ6IHRoaXMgfVxuXG4gICAgICBpZiAoISRwYXJlbnQuaGFzQ2xhc3MoJ29wZW4nKSkgcmV0dXJuXG5cbiAgICAgICRwYXJlbnQudHJpZ2dlcihlID0gJC5FdmVudCgnaGlkZS5icy5kcm9wZG93bicsIHJlbGF0ZWRUYXJnZXQpKVxuXG4gICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuXG5cbiAgICAgICR0aGlzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKVxuICAgICAgJHBhcmVudC5yZW1vdmVDbGFzcygnb3BlbicpLnRyaWdnZXIoJ2hpZGRlbi5icy5kcm9wZG93bicsIHJlbGF0ZWRUYXJnZXQpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFBhcmVudCgkdGhpcykge1xuICAgIHZhciBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JylcblxuICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgIHNlbGVjdG9yID0gJHRoaXMuYXR0cignaHJlZicpXG4gICAgICBzZWxlY3RvciA9IHNlbGVjdG9yICYmIC8jW0EtWmEtel0vLnRlc3Qoc2VsZWN0b3IpICYmIHNlbGVjdG9yLnJlcGxhY2UoLy4qKD89I1teXFxzXSokKS8sICcnKSAvLyBzdHJpcCBmb3IgaWU3XG4gICAgfVxuXG4gICAgdmFyICRwYXJlbnQgPSBzZWxlY3RvciAmJiAkKHNlbGVjdG9yKVxuXG4gICAgcmV0dXJuICRwYXJlbnQgJiYgJHBhcmVudC5sZW5ndGggPyAkcGFyZW50IDogJHRoaXMucGFyZW50KClcbiAgfVxuXG5cbiAgLy8gRFJPUERPV04gUExVR0lOIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXG4gICAgICB2YXIgZGF0YSAgPSAkdGhpcy5kYXRhKCdicy5kcm9wZG93bicpXG5cbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMuZHJvcGRvd24nLCAoZGF0YSA9IG5ldyBEcm9wZG93bih0aGlzKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpXG4gICAgfSlcbiAgfVxuXG4gIHZhciBvbGQgPSAkLmZuLmRyb3Bkb3duXG5cbiAgJC5mbi5kcm9wZG93biAgICAgICAgICAgICA9IFBsdWdpblxuICAkLmZuLmRyb3Bkb3duLkNvbnN0cnVjdG9yID0gRHJvcGRvd25cblxuXG4gIC8vIERST1BET1dOIE5PIENPTkZMSUNUXG4gIC8vID09PT09PT09PT09PT09PT09PT09XG5cbiAgJC5mbi5kcm9wZG93bi5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICQuZm4uZHJvcGRvd24gPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cblxuICAvLyBBUFBMWSBUTyBTVEFOREFSRCBEUk9QRE9XTiBFTEVNRU5UU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICQoZG9jdW1lbnQpXG4gICAgLm9uKCdjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaScsIGNsZWFyTWVudXMpXG4gICAgLm9uKCdjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaScsICcuZHJvcGRvd24gZm9ybScsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfSlcbiAgICAub24oJ2NsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpJywgdG9nZ2xlLCBEcm9wZG93bi5wcm90b3R5cGUudG9nZ2xlKVxuICAgIC5vbigna2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaScsIHRvZ2dsZSwgRHJvcGRvd24ucHJvdG90eXBlLmtleWRvd24pXG4gICAgLm9uKCdrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpJywgJ1tyb2xlPVwibWVudVwiXScsIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duKVxuICAgIC5vbigna2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaScsICdbcm9sZT1cImxpc3Rib3hcIl0nLCBEcm9wZG93bi5wcm90b3R5cGUua2V5ZG93bilcblxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogbW9kYWwuanMgdjMuMy40XG4gKiBodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbS9qYXZhc2NyaXB0LyNtb2RhbHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weXJpZ2h0IDIwMTEtMjAxNSBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cblxuK2Z1bmN0aW9uICgkKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBNT0RBTCBDTEFTUyBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT1cblxuICB2YXIgTW9kYWwgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyAgICAgICAgICAgICA9IG9wdGlvbnNcbiAgICB0aGlzLiRib2R5ICAgICAgICAgICAgICAgPSAkKGRvY3VtZW50LmJvZHkpXG4gICAgdGhpcy4kZWxlbWVudCAgICAgICAgICAgID0gJChlbGVtZW50KVxuICAgIHRoaXMuJGRpYWxvZyAgICAgICAgICAgICA9IHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGFsLWRpYWxvZycpXG4gICAgdGhpcy4kYmFja2Ryb3AgICAgICAgICAgID0gbnVsbFxuICAgIHRoaXMuaXNTaG93biAgICAgICAgICAgICA9IG51bGxcbiAgICB0aGlzLm9yaWdpbmFsQm9keVBhZCAgICAgPSBudWxsXG4gICAgdGhpcy5zY3JvbGxiYXJXaWR0aCAgICAgID0gMFxuICAgIHRoaXMuaWdub3JlQmFja2Ryb3BDbGljayA9IGZhbHNlXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbW90ZSkge1xuICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAuZmluZCgnLm1vZGFsLWNvbnRlbnQnKVxuICAgICAgICAubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLCAkLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2xvYWRlZC5icy5tb2RhbCcpXG4gICAgICAgIH0sIHRoaXMpKVxuICAgIH1cbiAgfVxuXG4gIE1vZGFsLlZFUlNJT04gID0gJzMuMy40J1xuXG4gIE1vZGFsLlRSQU5TSVRJT05fRFVSQVRJT04gPSAzMDBcbiAgTW9kYWwuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTiA9IDE1MFxuXG4gIE1vZGFsLkRFRkFVTFRTID0ge1xuICAgIGJhY2tkcm9wOiB0cnVlLFxuICAgIGtleWJvYXJkOiB0cnVlLFxuICAgIHNob3c6IHRydWVcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbiAoX3JlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coX3JlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBNb2RhbC5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChfcmVsYXRlZFRhcmdldCkge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIHZhciBlICAgID0gJC5FdmVudCgnc2hvdy5icy5tb2RhbCcsIHsgcmVsYXRlZFRhcmdldDogX3JlbGF0ZWRUYXJnZXQgfSlcblxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihlKVxuXG4gICAgaWYgKHRoaXMuaXNTaG93biB8fCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cblxuICAgIHRoaXMuaXNTaG93biA9IHRydWVcblxuICAgIHRoaXMuY2hlY2tTY3JvbGxiYXIoKVxuICAgIHRoaXMuc2V0U2Nyb2xsYmFyKClcbiAgICB0aGlzLiRib2R5LmFkZENsYXNzKCdtb2RhbC1vcGVuJylcblxuICAgIHRoaXMuZXNjYXBlKClcbiAgICB0aGlzLnJlc2l6ZSgpXG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdjbGljay5kaXNtaXNzLmJzLm1vZGFsJywgJ1tkYXRhLWRpc21pc3M9XCJtb2RhbFwiXScsICQucHJveHkodGhpcy5oaWRlLCB0aGlzKSlcblxuICAgIHRoaXMuJGRpYWxvZy5vbignbW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGF0LiRlbGVtZW50Lm9uZSgnbW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKCQoZS50YXJnZXQpLmlzKHRoYXQuJGVsZW1lbnQpKSB0aGF0Lmlnbm9yZUJhY2tkcm9wQ2xpY2sgPSB0cnVlXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICB0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0cmFuc2l0aW9uID0gJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhhdC4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpXG5cbiAgICAgIGlmICghdGhhdC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhhdC4kZWxlbWVudC5hcHBlbmRUbyh0aGF0LiRib2R5KSAvLyBkb24ndCBtb3ZlIG1vZGFscyBkb20gcG9zaXRpb25cbiAgICAgIH1cblxuICAgICAgdGhhdC4kZWxlbWVudFxuICAgICAgICAuc2hvdygpXG4gICAgICAgIC5zY3JvbGxUb3AoMClcblxuICAgICAgdGhhdC5hZGp1c3REaWFsb2coKVxuXG4gICAgICBpZiAodHJhbnNpdGlvbikge1xuICAgICAgICB0aGF0LiRlbGVtZW50WzBdLm9mZnNldFdpZHRoIC8vIGZvcmNlIHJlZmxvd1xuICAgICAgfVxuXG4gICAgICB0aGF0LiRlbGVtZW50XG4gICAgICAgIC5hZGRDbGFzcygnaW4nKVxuICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCBmYWxzZSlcblxuICAgICAgdGhhdC5lbmZvcmNlRm9jdXMoKVxuXG4gICAgICB2YXIgZSA9ICQuRXZlbnQoJ3Nob3duLmJzLm1vZGFsJywgeyByZWxhdGVkVGFyZ2V0OiBfcmVsYXRlZFRhcmdldCB9KVxuXG4gICAgICB0cmFuc2l0aW9uID9cbiAgICAgICAgdGhhdC4kZGlhbG9nIC8vIHdhaXQgZm9yIG1vZGFsIHRvIHNsaWRlIGluXG4gICAgICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhhdC4kZWxlbWVudC50cmlnZ2VyKCdmb2N1cycpLnRyaWdnZXIoZSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChNb2RhbC5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKS50cmlnZ2VyKGUpXG4gICAgfSlcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBlID0gJC5FdmVudCgnaGlkZS5icy5tb2RhbCcpXG5cbiAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSlcblxuICAgIGlmICghdGhpcy5pc1Nob3duIHx8IGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgdGhpcy5pc1Nob3duID0gZmFsc2VcblxuICAgIHRoaXMuZXNjYXBlKClcbiAgICB0aGlzLnJlc2l6ZSgpXG5cbiAgICAkKGRvY3VtZW50KS5vZmYoJ2ZvY3VzaW4uYnMubW9kYWwnKVxuXG4gICAgdGhpcy4kZWxlbWVudFxuICAgICAgLnJlbW92ZUNsYXNzKCdpbicpXG4gICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCB0cnVlKVxuICAgICAgLm9mZignY2xpY2suZGlzbWlzcy5icy5tb2RhbCcpXG4gICAgICAub2ZmKCdtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwnKVxuXG4gICAgdGhpcy4kZGlhbG9nLm9mZignbW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwnKVxuXG4gICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpID9cbiAgICAgIHRoaXMuJGVsZW1lbnRcbiAgICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgJC5wcm94eSh0aGlzLmhpZGVNb2RhbCwgdGhpcykpXG4gICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChNb2RhbC5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICB0aGlzLmhpZGVNb2RhbCgpXG4gIH1cblxuICBNb2RhbC5wcm90b3R5cGUuZW5mb3JjZUZvY3VzID0gZnVuY3Rpb24gKCkge1xuICAgICQoZG9jdW1lbnQpXG4gICAgICAub2ZmKCdmb2N1c2luLmJzLm1vZGFsJykgLy8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBmb2N1cyBsb29wXG4gICAgICAub24oJ2ZvY3VzaW4uYnMubW9kYWwnLCAkLnByb3h5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICh0aGlzLiRlbGVtZW50WzBdICE9PSBlLnRhcmdldCAmJiAhdGhpcy4kZWxlbWVudC5oYXMoZS50YXJnZXQpLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKVxuICAgICAgICB9XG4gICAgICB9LCB0aGlzKSlcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS5lc2NhcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNTaG93biAmJiB0aGlzLm9wdGlvbnMua2V5Ym9hcmQpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQub24oJ2tleWRvd24uZGlzbWlzcy5icy5tb2RhbCcsICQucHJveHkoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgZS53aGljaCA9PSAyNyAmJiB0aGlzLmhpZGUoKVxuICAgICAgfSwgdGhpcykpXG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1Nob3duKSB7XG4gICAgICB0aGlzLiRlbGVtZW50Lm9mZigna2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsJylcbiAgICB9XG4gIH1cblxuICBNb2RhbC5wcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmlzU2hvd24pIHtcbiAgICAgICQod2luZG93KS5vbigncmVzaXplLmJzLm1vZGFsJywgJC5wcm94eSh0aGlzLmhhbmRsZVVwZGF0ZSwgdGhpcykpXG4gICAgfSBlbHNlIHtcbiAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZS5icy5tb2RhbCcpXG4gICAgfVxuICB9XG5cbiAgTW9kYWwucHJvdG90eXBlLmhpZGVNb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICB0aGlzLiRlbGVtZW50LmhpZGUoKVxuICAgIHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24gKCkge1xuICAgICAgdGhhdC4kYm9keS5yZW1vdmVDbGFzcygnbW9kYWwtb3BlbicpXG4gICAgICB0aGF0LnJlc2V0QWRqdXN0bWVudHMoKVxuICAgICAgdGhhdC5yZXNldFNjcm9sbGJhcigpXG4gICAgICB0aGF0LiRlbGVtZW50LnRyaWdnZXIoJ2hpZGRlbi5icy5tb2RhbCcpXG4gICAgfSlcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS5yZW1vdmVCYWNrZHJvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRiYWNrZHJvcCAmJiB0aGlzLiRiYWNrZHJvcC5yZW1vdmUoKVxuICAgIHRoaXMuJGJhY2tkcm9wID0gbnVsbFxuICB9XG5cbiAgTW9kYWwucHJvdG90eXBlLmJhY2tkcm9wID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgdmFyIGFuaW1hdGUgPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmYWRlJykgPyAnZmFkZScgOiAnJ1xuXG4gICAgaWYgKHRoaXMuaXNTaG93biAmJiB0aGlzLm9wdGlvbnMuYmFja2Ryb3ApIHtcbiAgICAgIHZhciBkb0FuaW1hdGUgPSAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiBhbmltYXRlXG5cbiAgICAgIHRoaXMuJGJhY2tkcm9wID0gJCgnPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wICcgKyBhbmltYXRlICsgJ1wiIC8+JylcbiAgICAgICAgLmFwcGVuZFRvKHRoaXMuJGJvZHkpXG5cbiAgICAgIHRoaXMuJGVsZW1lbnQub24oJ2NsaWNrLmRpc21pc3MuYnMubW9kYWwnLCAkLnByb3h5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2spIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2sgPSBmYWxzZVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0KSByZXR1cm5cbiAgICAgICAgdGhpcy5vcHRpb25zLmJhY2tkcm9wID09ICdzdGF0aWMnXG4gICAgICAgICAgPyB0aGlzLiRlbGVtZW50WzBdLmZvY3VzKClcbiAgICAgICAgICA6IHRoaXMuaGlkZSgpXG4gICAgICB9LCB0aGlzKSlcblxuICAgICAgaWYgKGRvQW5pbWF0ZSkgdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93XG5cbiAgICAgIHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCdpbicpXG5cbiAgICAgIGlmICghY2FsbGJhY2spIHJldHVyblxuXG4gICAgICBkb0FuaW1hdGUgP1xuICAgICAgICB0aGlzLiRiYWNrZHJvcFxuICAgICAgICAgIC5vbmUoJ2JzVHJhbnNpdGlvbkVuZCcsIGNhbGxiYWNrKVxuICAgICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChNb2RhbC5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICAgIGNhbGxiYWNrKClcblxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTaG93biAmJiB0aGlzLiRiYWNrZHJvcCkge1xuICAgICAgdGhpcy4kYmFja2Ryb3AucmVtb3ZlQ2xhc3MoJ2luJylcblxuICAgICAgdmFyIGNhbGxiYWNrUmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGF0LnJlbW92ZUJhY2tkcm9wKClcbiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKVxuICAgICAgfVxuICAgICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpID9cbiAgICAgICAgdGhpcy4kYmFja2Ryb3BcbiAgICAgICAgICAub25lKCdic1RyYW5zaXRpb25FbmQnLCBjYWxsYmFja1JlbW92ZSlcbiAgICAgICAgICAuZW11bGF0ZVRyYW5zaXRpb25FbmQoTW9kYWwuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTikgOlxuICAgICAgICBjYWxsYmFja1JlbW92ZSgpXG5cbiAgICB9IGVsc2UgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjaygpXG4gICAgfVxuICB9XG5cbiAgLy8gdGhlc2UgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gaGFuZGxlIG92ZXJmbG93aW5nIG1vZGFsc1xuXG4gIE1vZGFsLnByb3RvdHlwZS5oYW5kbGVVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5hZGp1c3REaWFsb2coKVxuICB9XG5cbiAgTW9kYWwucHJvdG90eXBlLmFkanVzdERpYWxvZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kYWxJc092ZXJmbG93aW5nID0gdGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XG5cbiAgICB0aGlzLiRlbGVtZW50LmNzcyh7XG4gICAgICBwYWRkaW5nTGVmdDogICF0aGlzLmJvZHlJc092ZXJmbG93aW5nICYmIG1vZGFsSXNPdmVyZmxvd2luZyA/IHRoaXMuc2Nyb2xsYmFyV2lkdGggOiAnJyxcbiAgICAgIHBhZGRpbmdSaWdodDogdGhpcy5ib2R5SXNPdmVyZmxvd2luZyAmJiAhbW9kYWxJc092ZXJmbG93aW5nID8gdGhpcy5zY3JvbGxiYXJXaWR0aCA6ICcnXG4gICAgfSlcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS5yZXNldEFkanVzdG1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJGVsZW1lbnQuY3NzKHtcbiAgICAgIHBhZGRpbmdMZWZ0OiAnJyxcbiAgICAgIHBhZGRpbmdSaWdodDogJydcbiAgICB9KVxuICB9XG5cbiAgTW9kYWwucHJvdG90eXBlLmNoZWNrU2Nyb2xsYmFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBmdWxsV2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGlmICghZnVsbFdpbmRvd1dpZHRoKSB7IC8vIHdvcmthcm91bmQgZm9yIG1pc3Npbmcgd2luZG93LmlubmVyV2lkdGggaW4gSUU4XG4gICAgICB2YXIgZG9jdW1lbnRFbGVtZW50UmVjdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgZnVsbFdpbmRvd1dpZHRoID0gZG9jdW1lbnRFbGVtZW50UmVjdC5yaWdodCAtIE1hdGguYWJzKGRvY3VtZW50RWxlbWVudFJlY3QubGVmdClcbiAgICB9XG4gICAgdGhpcy5ib2R5SXNPdmVyZmxvd2luZyA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPCBmdWxsV2luZG93V2lkdGhcbiAgICB0aGlzLnNjcm9sbGJhcldpZHRoID0gdGhpcy5tZWFzdXJlU2Nyb2xsYmFyKClcbiAgfVxuXG4gIE1vZGFsLnByb3RvdHlwZS5zZXRTY3JvbGxiYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJvZHlQYWQgPSBwYXJzZUludCgodGhpcy4kYm9keS5jc3MoJ3BhZGRpbmctcmlnaHQnKSB8fCAwKSwgMTApXG4gICAgdGhpcy5vcmlnaW5hbEJvZHlQYWQgPSBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCB8fCAnJ1xuICAgIGlmICh0aGlzLmJvZHlJc092ZXJmbG93aW5nKSB0aGlzLiRib2R5LmNzcygncGFkZGluZy1yaWdodCcsIGJvZHlQYWQgKyB0aGlzLnNjcm9sbGJhcldpZHRoKVxuICB9XG5cbiAgTW9kYWwucHJvdG90eXBlLnJlc2V0U2Nyb2xsYmFyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJGJvZHkuY3NzKCdwYWRkaW5nLXJpZ2h0JywgdGhpcy5vcmlnaW5hbEJvZHlQYWQpXG4gIH1cblxuICBNb2RhbC5wcm90b3R5cGUubWVhc3VyZVNjcm9sbGJhciA9IGZ1bmN0aW9uICgpIHsgLy8gdGh4IHdhbHNoXG4gICAgdmFyIHNjcm9sbERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgc2Nyb2xsRGl2LmNsYXNzTmFtZSA9ICdtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSdcbiAgICB0aGlzLiRib2R5LmFwcGVuZChzY3JvbGxEaXYpXG4gICAgdmFyIHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsRGl2Lm9mZnNldFdpZHRoIC0gc2Nyb2xsRGl2LmNsaWVudFdpZHRoXG4gICAgdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChzY3JvbGxEaXYpXG4gICAgcmV0dXJuIHNjcm9sbGJhcldpZHRoXG4gIH1cblxuXG4gIC8vIE1PREFMIFBMVUdJTiBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZnVuY3Rpb24gUGx1Z2luKG9wdGlvbiwgX3JlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgICAgdmFyIGRhdGEgICAgPSAkdGhpcy5kYXRhKCdicy5tb2RhbCcpXG4gICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBNb2RhbC5ERUZBVUxUUywgJHRoaXMuZGF0YSgpLCB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvbilcblxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdicy5tb2RhbCcsIChkYXRhID0gbmV3IE1vZGFsKHRoaXMsIG9wdGlvbnMpKSlcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oX3JlbGF0ZWRUYXJnZXQpXG4gICAgICBlbHNlIGlmIChvcHRpb25zLnNob3cpIGRhdGEuc2hvdyhfcmVsYXRlZFRhcmdldClcbiAgICB9KVxuICB9XG5cbiAgdmFyIG9sZCA9ICQuZm4ubW9kYWxcblxuICAkLmZuLm1vZGFsICAgICAgICAgICAgID0gUGx1Z2luXG4gICQuZm4ubW9kYWwuQ29uc3RydWN0b3IgPSBNb2RhbFxuXG5cbiAgLy8gTU9EQUwgTk8gQ09ORkxJQ1RcbiAgLy8gPT09PT09PT09PT09PT09PT1cblxuICAkLmZuLm1vZGFsLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbi5tb2RhbCA9IG9sZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuXG4gIC8vIE1PREFMIERBVEEtQVBJXG4gIC8vID09PT09PT09PT09PT09XG5cbiAgJChkb2N1bWVudCkub24oJ2NsaWNrLmJzLm1vZGFsLmRhdGEtYXBpJywgJ1tkYXRhLXRvZ2dsZT1cIm1vZGFsXCJdJywgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgJHRoaXMgICA9ICQodGhpcylcbiAgICB2YXIgaHJlZiAgICA9ICR0aGlzLmF0dHIoJ2hyZWYnKVxuICAgIHZhciAkdGFyZ2V0ID0gJCgkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpIHx8IChocmVmICYmIGhyZWYucmVwbGFjZSgvLiooPz0jW15cXHNdKyQpLywgJycpKSkgLy8gc3RyaXAgZm9yIGllN1xuICAgIHZhciBvcHRpb24gID0gJHRhcmdldC5kYXRhKCdicy5tb2RhbCcpID8gJ3RvZ2dsZScgOiAkLmV4dGVuZCh7IHJlbW90ZTogIS8jLy50ZXN0KGhyZWYpICYmIGhyZWYgfSwgJHRhcmdldC5kYXRhKCksICR0aGlzLmRhdGEoKSlcblxuICAgIGlmICgkdGhpcy5pcygnYScpKSBlLnByZXZlbnREZWZhdWx0KClcblxuICAgICR0YXJnZXQub25lKCdzaG93LmJzLm1vZGFsJywgZnVuY3Rpb24gKHNob3dFdmVudCkge1xuICAgICAgaWYgKHNob3dFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuIC8vIG9ubHkgcmVnaXN0ZXIgZm9jdXMgcmVzdG9yZXIgaWYgbW9kYWwgd2lsbCBhY3R1YWxseSBnZXQgc2hvd25cbiAgICAgICR0YXJnZXQub25lKCdoaWRkZW4uYnMubW9kYWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICR0aGlzLmlzKCc6dmlzaWJsZScpICYmICR0aGlzLnRyaWdnZXIoJ2ZvY3VzJylcbiAgICAgIH0pXG4gICAgfSlcbiAgICBQbHVnaW4uY2FsbCgkdGFyZ2V0LCBvcHRpb24sIHRoaXMpXG4gIH0pXG5cbn0oalF1ZXJ5KTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCb290c3RyYXA6IHRvb2x0aXAuanMgdjMuMy40XG4gKiBodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbS9qYXZhc2NyaXB0LyN0b29sdGlwXG4gKiBJbnNwaXJlZCBieSB0aGUgb3JpZ2luYWwgalF1ZXJ5LnRpcHN5IGJ5IEphc29uIEZyYW1lXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cbitmdW5jdGlvbiAoJCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVE9PTFRJUCBQVUJMSUMgQ0xBU1MgREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIFRvb2x0aXAgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMudHlwZSAgICAgICA9IG51bGxcbiAgICB0aGlzLm9wdGlvbnMgICAgPSBudWxsXG4gICAgdGhpcy5lbmFibGVkICAgID0gbnVsbFxuICAgIHRoaXMudGltZW91dCAgICA9IG51bGxcbiAgICB0aGlzLmhvdmVyU3RhdGUgPSBudWxsXG4gICAgdGhpcy4kZWxlbWVudCAgID0gbnVsbFxuXG4gICAgdGhpcy5pbml0KCd0b29sdGlwJywgZWxlbWVudCwgb3B0aW9ucylcbiAgfVxuXG4gIFRvb2x0aXAuVkVSU0lPTiAgPSAnMy4zLjQnXG5cbiAgVG9vbHRpcC5UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwXG5cbiAgVG9vbHRpcC5ERUZBVUxUUyA9IHtcbiAgICBhbmltYXRpb246IHRydWUsXG4gICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICBzZWxlY3RvcjogZmFsc2UsXG4gICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwidG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PicsXG4gICAgdHJpZ2dlcjogJ2hvdmVyIGZvY3VzJyxcbiAgICB0aXRsZTogJycsXG4gICAgZGVsYXk6IDAsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgY29udGFpbmVyOiBmYWxzZSxcbiAgICB2aWV3cG9ydDoge1xuICAgICAgc2VsZWN0b3I6ICdib2R5JyxcbiAgICAgIHBhZGRpbmc6IDBcbiAgICB9XG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKHR5cGUsIGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmVuYWJsZWQgICA9IHRydWVcbiAgICB0aGlzLnR5cGUgICAgICA9IHR5cGVcbiAgICB0aGlzLiRlbGVtZW50ICA9ICQoZWxlbWVudClcbiAgICB0aGlzLm9wdGlvbnMgICA9IHRoaXMuZ2V0T3B0aW9ucyhvcHRpb25zKVxuICAgIHRoaXMuJHZpZXdwb3J0ID0gdGhpcy5vcHRpb25zLnZpZXdwb3J0ICYmICQodGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yIHx8IHRoaXMub3B0aW9ucy52aWV3cG9ydClcblxuICAgIGlmICh0aGlzLiRlbGVtZW50WzBdIGluc3RhbmNlb2YgZG9jdW1lbnQuY29uc3RydWN0b3IgJiYgIXRoaXMub3B0aW9ucy5zZWxlY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgc2VsZWN0b3JgIG9wdGlvbiBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIGluaXRpYWxpemluZyAnICsgdGhpcy50eXBlICsgJyBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEnKVxuICAgIH1cblxuICAgIHZhciB0cmlnZ2VycyA9IHRoaXMub3B0aW9ucy50cmlnZ2VyLnNwbGl0KCcgJylcblxuICAgIGZvciAodmFyIGkgPSB0cmlnZ2Vycy5sZW5ndGg7IGktLTspIHtcbiAgICAgIHZhciB0cmlnZ2VyID0gdHJpZ2dlcnNbaV1cblxuICAgICAgaWYgKHRyaWdnZXIgPT0gJ2NsaWNrJykge1xuICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCdjbGljay4nICsgdGhpcy50eXBlLCB0aGlzLm9wdGlvbnMuc2VsZWN0b3IsICQucHJveHkodGhpcy50b2dnbGUsIHRoaXMpKVxuICAgICAgfSBlbHNlIGlmICh0cmlnZ2VyICE9ICdtYW51YWwnKSB7XG4gICAgICAgIHZhciBldmVudEluICA9IHRyaWdnZXIgPT0gJ2hvdmVyJyA/ICdtb3VzZWVudGVyJyA6ICdmb2N1c2luJ1xuICAgICAgICB2YXIgZXZlbnRPdXQgPSB0cmlnZ2VyID09ICdob3ZlcicgPyAnbW91c2VsZWF2ZScgOiAnZm9jdXNvdXQnXG5cbiAgICAgICAgdGhpcy4kZWxlbWVudC5vbihldmVudEluICArICcuJyArIHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMuZW50ZXIsIHRoaXMpKVxuICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKGV2ZW50T3V0ICsgJy4nICsgdGhpcy50eXBlLCB0aGlzLm9wdGlvbnMuc2VsZWN0b3IsICQucHJveHkodGhpcy5sZWF2ZSwgdGhpcykpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zLnNlbGVjdG9yID9cbiAgICAgICh0aGlzLl9vcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgeyB0cmlnZ2VyOiAnbWFudWFsJywgc2VsZWN0b3I6ICcnIH0pKSA6XG4gICAgICB0aGlzLmZpeFRpdGxlKClcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldERlZmF1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUb29sdGlwLkRFRkFVTFRTXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5nZXRPcHRpb25zID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMuZ2V0RGVmYXVsdHMoKSwgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpXG5cbiAgICBpZiAob3B0aW9ucy5kZWxheSAmJiB0eXBlb2Ygb3B0aW9ucy5kZWxheSA9PSAnbnVtYmVyJykge1xuICAgICAgb3B0aW9ucy5kZWxheSA9IHtcbiAgICAgICAgc2hvdzogb3B0aW9ucy5kZWxheSxcbiAgICAgICAgaGlkZTogb3B0aW9ucy5kZWxheVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5nZXREZWxlZ2F0ZU9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgID0ge31cbiAgICB2YXIgZGVmYXVsdHMgPSB0aGlzLmdldERlZmF1bHRzKClcblxuICAgIHRoaXMuX29wdGlvbnMgJiYgJC5lYWNoKHRoaXMuX29wdGlvbnMsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoZGVmYXVsdHNba2V5XSAhPSB2YWx1ZSkgb3B0aW9uc1trZXldID0gdmFsdWVcbiAgICB9KVxuXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmVudGVyID0gZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciBzZWxmID0gb2JqIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvciA/XG4gICAgICBvYmogOiAkKG9iai5jdXJyZW50VGFyZ2V0KS5kYXRhKCdicy4nICsgdGhpcy50eXBlKVxuXG4gICAgaWYgKHNlbGYgJiYgc2VsZi4kdGlwICYmIHNlbGYuJHRpcC5pcygnOnZpc2libGUnKSkge1xuICAgICAgc2VsZi5ob3ZlclN0YXRlID0gJ2luJ1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzZWxmKSB7XG4gICAgICBzZWxmID0gbmV3IHRoaXMuY29uc3RydWN0b3Iob2JqLmN1cnJlbnRUYXJnZXQsIHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpXG4gICAgICAkKG9iai5jdXJyZW50VGFyZ2V0KS5kYXRhKCdicy4nICsgdGhpcy50eXBlLCBzZWxmKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dChzZWxmLnRpbWVvdXQpXG5cbiAgICBzZWxmLmhvdmVyU3RhdGUgPSAnaW4nXG5cbiAgICBpZiAoIXNlbGYub3B0aW9ucy5kZWxheSB8fCAhc2VsZi5vcHRpb25zLmRlbGF5LnNob3cpIHJldHVybiBzZWxmLnNob3coKVxuXG4gICAgc2VsZi50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoc2VsZi5ob3ZlclN0YXRlID09ICdpbicpIHNlbGYuc2hvdygpXG4gICAgfSwgc2VsZi5vcHRpb25zLmRlbGF5LnNob3cpXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5sZWF2ZSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgc2VsZiA9IG9iaiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IgP1xuICAgICAgb2JqIDogJChvYmouY3VycmVudFRhcmdldCkuZGF0YSgnYnMuJyArIHRoaXMudHlwZSlcblxuICAgIGlmICghc2VsZikge1xuICAgICAgc2VsZiA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKG9iai5jdXJyZW50VGFyZ2V0LCB0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKVxuICAgICAgJChvYmouY3VycmVudFRhcmdldCkuZGF0YSgnYnMuJyArIHRoaXMudHlwZSwgc2VsZilcbiAgICB9XG5cbiAgICBjbGVhclRpbWVvdXQoc2VsZi50aW1lb3V0KVxuXG4gICAgc2VsZi5ob3ZlclN0YXRlID0gJ291dCdcblxuICAgIGlmICghc2VsZi5vcHRpb25zLmRlbGF5IHx8ICFzZWxmLm9wdGlvbnMuZGVsYXkuaGlkZSkgcmV0dXJuIHNlbGYuaGlkZSgpXG5cbiAgICBzZWxmLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChzZWxmLmhvdmVyU3RhdGUgPT0gJ291dCcpIHNlbGYuaGlkZSgpXG4gICAgfSwgc2VsZi5vcHRpb25zLmRlbGF5LmhpZGUpXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlID0gJC5FdmVudCgnc2hvdy5icy4nICsgdGhpcy50eXBlKVxuXG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCgpICYmIHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpXG5cbiAgICAgIHZhciBpbkRvbSA9ICQuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy4kZWxlbWVudFswXSlcbiAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpIHx8ICFpbkRvbSkgcmV0dXJuXG4gICAgICB2YXIgdGhhdCA9IHRoaXNcblxuICAgICAgdmFyICR0aXAgPSB0aGlzLnRpcCgpXG5cbiAgICAgIHZhciB0aXBJZCA9IHRoaXMuZ2V0VUlEKHRoaXMudHlwZSlcblxuICAgICAgdGhpcy5zZXRDb250ZW50KClcbiAgICAgICR0aXAuYXR0cignaWQnLCB0aXBJZClcbiAgICAgIHRoaXMuJGVsZW1lbnQuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHRpcElkKVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFuaW1hdGlvbikgJHRpcC5hZGRDbGFzcygnZmFkZScpXG5cbiAgICAgIHZhciBwbGFjZW1lbnQgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudCA9PSAnZnVuY3Rpb24nID9cbiAgICAgICAgdGhpcy5vcHRpb25zLnBsYWNlbWVudC5jYWxsKHRoaXMsICR0aXBbMF0sIHRoaXMuJGVsZW1lbnRbMF0pIDpcbiAgICAgICAgdGhpcy5vcHRpb25zLnBsYWNlbWVudFxuXG4gICAgICB2YXIgYXV0b1Rva2VuID0gL1xccz9hdXRvP1xccz8vaVxuICAgICAgdmFyIGF1dG9QbGFjZSA9IGF1dG9Ub2tlbi50ZXN0KHBsYWNlbWVudClcbiAgICAgIGlmIChhdXRvUGxhY2UpIHBsYWNlbWVudCA9IHBsYWNlbWVudC5yZXBsYWNlKGF1dG9Ub2tlbiwgJycpIHx8ICd0b3AnXG5cbiAgICAgICR0aXBcbiAgICAgICAgLmRldGFjaCgpXG4gICAgICAgIC5jc3MoeyB0b3A6IDAsIGxlZnQ6IDAsIGRpc3BsYXk6ICdibG9jaycgfSlcbiAgICAgICAgLmFkZENsYXNzKHBsYWNlbWVudClcbiAgICAgICAgLmRhdGEoJ2JzLicgKyB0aGlzLnR5cGUsIHRoaXMpXG5cbiAgICAgIHRoaXMub3B0aW9ucy5jb250YWluZXIgPyAkdGlwLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpIDogJHRpcC5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KVxuXG4gICAgICB2YXIgcG9zICAgICAgICAgID0gdGhpcy5nZXRQb3NpdGlvbigpXG4gICAgICB2YXIgYWN0dWFsV2lkdGggID0gJHRpcFswXS5vZmZzZXRXaWR0aFxuICAgICAgdmFyIGFjdHVhbEhlaWdodCA9ICR0aXBbMF0ub2Zmc2V0SGVpZ2h0XG5cbiAgICAgIGlmIChhdXRvUGxhY2UpIHtcbiAgICAgICAgdmFyIG9yZ1BsYWNlbWVudCA9IHBsYWNlbWVudFxuICAgICAgICB2YXIgJGNvbnRhaW5lciAgID0gdGhpcy5vcHRpb25zLmNvbnRhaW5lciA/ICQodGhpcy5vcHRpb25zLmNvbnRhaW5lcikgOiB0aGlzLiRlbGVtZW50LnBhcmVudCgpXG4gICAgICAgIHZhciBjb250YWluZXJEaW0gPSB0aGlzLmdldFBvc2l0aW9uKCRjb250YWluZXIpXG5cbiAgICAgICAgcGxhY2VtZW50ID0gcGxhY2VtZW50ID09ICdib3R0b20nICYmIHBvcy5ib3R0b20gKyBhY3R1YWxIZWlnaHQgPiBjb250YWluZXJEaW0uYm90dG9tID8gJ3RvcCcgICAgOlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQgPT0gJ3RvcCcgICAgJiYgcG9zLnRvcCAgICAtIGFjdHVhbEhlaWdodCA8IGNvbnRhaW5lckRpbS50b3AgICAgPyAnYm90dG9tJyA6XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudCA9PSAncmlnaHQnICAmJiBwb3MucmlnaHQgICsgYWN0dWFsV2lkdGggID4gY29udGFpbmVyRGltLndpZHRoICA/ICdsZWZ0JyAgIDpcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50ID09ICdsZWZ0JyAgICYmIHBvcy5sZWZ0ICAgLSBhY3R1YWxXaWR0aCAgPCBjb250YWluZXJEaW0ubGVmdCAgID8gJ3JpZ2h0JyAgOlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnRcblxuICAgICAgICAkdGlwXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKG9yZ1BsYWNlbWVudClcbiAgICAgICAgICAuYWRkQ2xhc3MocGxhY2VtZW50KVxuICAgICAgfVxuXG4gICAgICB2YXIgY2FsY3VsYXRlZE9mZnNldCA9IHRoaXMuZ2V0Q2FsY3VsYXRlZE9mZnNldChwbGFjZW1lbnQsIHBvcywgYWN0dWFsV2lkdGgsIGFjdHVhbEhlaWdodClcblxuICAgICAgdGhpcy5hcHBseVBsYWNlbWVudChjYWxjdWxhdGVkT2Zmc2V0LCBwbGFjZW1lbnQpXG5cbiAgICAgIHZhciBjb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHByZXZIb3ZlclN0YXRlID0gdGhhdC5ob3ZlclN0YXRlXG4gICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignc2hvd24uYnMuJyArIHRoYXQudHlwZSlcbiAgICAgICAgdGhhdC5ob3ZlclN0YXRlID0gbnVsbFxuXG4gICAgICAgIGlmIChwcmV2SG92ZXJTdGF0ZSA9PSAnb3V0JykgdGhhdC5sZWF2ZSh0aGF0KVxuICAgICAgfVxuXG4gICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiR0aXAuaGFzQ2xhc3MoJ2ZhZGUnKSA/XG4gICAgICAgICR0aXBcbiAgICAgICAgICAub25lKCdic1RyYW5zaXRpb25FbmQnLCBjb21wbGV0ZSlcbiAgICAgICAgICAuZW11bGF0ZVRyYW5zaXRpb25FbmQoVG9vbHRpcC5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICAgIGNvbXBsZXRlKClcbiAgICB9XG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudCA9IGZ1bmN0aW9uIChvZmZzZXQsIHBsYWNlbWVudCkge1xuICAgIHZhciAkdGlwICAgPSB0aGlzLnRpcCgpXG4gICAgdmFyIHdpZHRoICA9ICR0aXBbMF0ub2Zmc2V0V2lkdGhcbiAgICB2YXIgaGVpZ2h0ID0gJHRpcFswXS5vZmZzZXRIZWlnaHRcblxuICAgIC8vIG1hbnVhbGx5IHJlYWQgbWFyZ2lucyBiZWNhdXNlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpbmNsdWRlcyBkaWZmZXJlbmNlXG4gICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KCR0aXAuY3NzKCdtYXJnaW4tdG9wJyksIDEwKVxuICAgIHZhciBtYXJnaW5MZWZ0ID0gcGFyc2VJbnQoJHRpcC5jc3MoJ21hcmdpbi1sZWZ0JyksIDEwKVxuXG4gICAgLy8gd2UgbXVzdCBjaGVjayBmb3IgTmFOIGZvciBpZSA4LzlcbiAgICBpZiAoaXNOYU4obWFyZ2luVG9wKSkgIG1hcmdpblRvcCAgPSAwXG4gICAgaWYgKGlzTmFOKG1hcmdpbkxlZnQpKSBtYXJnaW5MZWZ0ID0gMFxuXG4gICAgb2Zmc2V0LnRvcCAgPSBvZmZzZXQudG9wICArIG1hcmdpblRvcFxuICAgIG9mZnNldC5sZWZ0ID0gb2Zmc2V0LmxlZnQgKyBtYXJnaW5MZWZ0XG5cbiAgICAvLyAkLmZuLm9mZnNldCBkb2Vzbid0IHJvdW5kIHBpeGVsIHZhbHVlc1xuICAgIC8vIHNvIHdlIHVzZSBzZXRPZmZzZXQgZGlyZWN0bHkgd2l0aCBvdXIgb3duIGZ1bmN0aW9uIEItMFxuICAgICQub2Zmc2V0LnNldE9mZnNldCgkdGlwWzBdLCAkLmV4dGVuZCh7XG4gICAgICB1c2luZzogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgICR0aXAuY3NzKHtcbiAgICAgICAgICB0b3A6IE1hdGgucm91bmQocHJvcHMudG9wKSxcbiAgICAgICAgICBsZWZ0OiBNYXRoLnJvdW5kKHByb3BzLmxlZnQpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgb2Zmc2V0KSwgMClcblxuICAgICR0aXAuYWRkQ2xhc3MoJ2luJylcblxuICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBwbGFjaW5nIHRpcCBpbiBuZXcgb2Zmc2V0IGNhdXNlZCB0aGUgdGlwIHRvIHJlc2l6ZSBpdHNlbGZcbiAgICB2YXIgYWN0dWFsV2lkdGggID0gJHRpcFswXS5vZmZzZXRXaWR0aFxuICAgIHZhciBhY3R1YWxIZWlnaHQgPSAkdGlwWzBdLm9mZnNldEhlaWdodFxuXG4gICAgaWYgKHBsYWNlbWVudCA9PSAndG9wJyAmJiBhY3R1YWxIZWlnaHQgIT0gaGVpZ2h0KSB7XG4gICAgICBvZmZzZXQudG9wID0gb2Zmc2V0LnRvcCArIGhlaWdodCAtIGFjdHVhbEhlaWdodFxuICAgIH1cblxuICAgIHZhciBkZWx0YSA9IHRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKHBsYWNlbWVudCwgb2Zmc2V0LCBhY3R1YWxXaWR0aCwgYWN0dWFsSGVpZ2h0KVxuXG4gICAgaWYgKGRlbHRhLmxlZnQpIG9mZnNldC5sZWZ0ICs9IGRlbHRhLmxlZnRcbiAgICBlbHNlIG9mZnNldC50b3AgKz0gZGVsdGEudG9wXG5cbiAgICB2YXIgaXNWZXJ0aWNhbCAgICAgICAgICA9IC90b3B8Ym90dG9tLy50ZXN0KHBsYWNlbWVudClcbiAgICB2YXIgYXJyb3dEZWx0YSAgICAgICAgICA9IGlzVmVydGljYWwgPyBkZWx0YS5sZWZ0ICogMiAtIHdpZHRoICsgYWN0dWFsV2lkdGggOiBkZWx0YS50b3AgKiAyIC0gaGVpZ2h0ICsgYWN0dWFsSGVpZ2h0XG4gICAgdmFyIGFycm93T2Zmc2V0UG9zaXRpb24gPSBpc1ZlcnRpY2FsID8gJ29mZnNldFdpZHRoJyA6ICdvZmZzZXRIZWlnaHQnXG5cbiAgICAkdGlwLm9mZnNldChvZmZzZXQpXG4gICAgdGhpcy5yZXBsYWNlQXJyb3coYXJyb3dEZWx0YSwgJHRpcFswXVthcnJvd09mZnNldFBvc2l0aW9uXSwgaXNWZXJ0aWNhbClcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLnJlcGxhY2VBcnJvdyA9IGZ1bmN0aW9uIChkZWx0YSwgZGltZW5zaW9uLCBpc1ZlcnRpY2FsKSB7XG4gICAgdGhpcy5hcnJvdygpXG4gICAgICAuY3NzKGlzVmVydGljYWwgPyAnbGVmdCcgOiAndG9wJywgNTAgKiAoMSAtIGRlbHRhIC8gZGltZW5zaW9uKSArICclJylcbiAgICAgIC5jc3MoaXNWZXJ0aWNhbCA/ICd0b3AnIDogJ2xlZnQnLCAnJylcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLnNldENvbnRlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICR0aXAgID0gdGhpcy50aXAoKVxuICAgIHZhciB0aXRsZSA9IHRoaXMuZ2V0VGl0bGUoKVxuXG4gICAgJHRpcC5maW5kKCcudG9vbHRpcC1pbm5lcicpW3RoaXMub3B0aW9ucy5odG1sID8gJ2h0bWwnIDogJ3RleHQnXSh0aXRsZSlcbiAgICAkdGlwLnJlbW92ZUNsYXNzKCdmYWRlIGluIHRvcCBib3R0b20gbGVmdCByaWdodCcpXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgdmFyICR0aXAgPSAkKHRoaXMuJHRpcClcbiAgICB2YXIgZSAgICA9ICQuRXZlbnQoJ2hpZGUuYnMuJyArIHRoaXMudHlwZSlcblxuICAgIGZ1bmN0aW9uIGNvbXBsZXRlKCkge1xuICAgICAgaWYgKHRoYXQuaG92ZXJTdGF0ZSAhPSAnaW4nKSAkdGlwLmRldGFjaCgpXG4gICAgICB0aGF0LiRlbGVtZW50XG4gICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWRlc2NyaWJlZGJ5JylcbiAgICAgICAgLnRyaWdnZXIoJ2hpZGRlbi5icy4nICsgdGhhdC50eXBlKVxuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKVxuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihlKVxuXG4gICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgJHRpcC5yZW1vdmVDbGFzcygnaW4nKVxuXG4gICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgJHRpcC5oYXNDbGFzcygnZmFkZScpID9cbiAgICAgICR0aXBcbiAgICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgY29tcGxldGUpXG4gICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChUb29sdGlwLlRSQU5TSVRJT05fRFVSQVRJT04pIDpcbiAgICAgIGNvbXBsZXRlKClcblxuICAgIHRoaXMuaG92ZXJTdGF0ZSA9IG51bGxcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5maXhUaXRsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGUgPSB0aGlzLiRlbGVtZW50XG4gICAgaWYgKCRlLmF0dHIoJ3RpdGxlJykgfHwgdHlwZW9mICgkZS5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJykpICE9ICdzdHJpbmcnKSB7XG4gICAgICAkZS5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgJGUuYXR0cigndGl0bGUnKSB8fCAnJykuYXR0cigndGl0bGUnLCAnJylcbiAgICB9XG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5oYXNDb250ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldFRpdGxlKClcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldFBvc2l0aW9uID0gZnVuY3Rpb24gKCRlbGVtZW50KSB7XG4gICAgJGVsZW1lbnQgICA9ICRlbGVtZW50IHx8IHRoaXMuJGVsZW1lbnRcblxuICAgIHZhciBlbCAgICAgPSAkZWxlbWVudFswXVxuICAgIHZhciBpc0JvZHkgPSBlbC50YWdOYW1lID09ICdCT0RZJ1xuXG4gICAgdmFyIGVsUmVjdCAgICA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgaWYgKGVsUmVjdC53aWR0aCA9PSBudWxsKSB7XG4gICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBtaXNzaW5nIGluIElFOCwgc28gY29tcHV0ZSB0aGVtIG1hbnVhbGx5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xNDA5M1xuICAgICAgZWxSZWN0ID0gJC5leHRlbmQoe30sIGVsUmVjdCwgeyB3aWR0aDogZWxSZWN0LnJpZ2h0IC0gZWxSZWN0LmxlZnQsIGhlaWdodDogZWxSZWN0LmJvdHRvbSAtIGVsUmVjdC50b3AgfSlcbiAgICB9XG4gICAgdmFyIGVsT2Zmc2V0ICA9IGlzQm9keSA/IHsgdG9wOiAwLCBsZWZ0OiAwIH0gOiAkZWxlbWVudC5vZmZzZXQoKVxuICAgIHZhciBzY3JvbGwgICAgPSB7IHNjcm9sbDogaXNCb2R5ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA6ICRlbGVtZW50LnNjcm9sbFRvcCgpIH1cbiAgICB2YXIgb3V0ZXJEaW1zID0gaXNCb2R5ID8geyB3aWR0aDogJCh3aW5kb3cpLndpZHRoKCksIGhlaWdodDogJCh3aW5kb3cpLmhlaWdodCgpIH0gOiBudWxsXG5cbiAgICByZXR1cm4gJC5leHRlbmQoe30sIGVsUmVjdCwgc2Nyb2xsLCBvdXRlckRpbXMsIGVsT2Zmc2V0KVxuICB9XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldCA9IGZ1bmN0aW9uIChwbGFjZW1lbnQsIHBvcywgYWN0dWFsV2lkdGgsIGFjdHVhbEhlaWdodCkge1xuICAgIHJldHVybiBwbGFjZW1lbnQgPT0gJ2JvdHRvbScgPyB7IHRvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQsICAgbGVmdDogcG9zLmxlZnQgKyBwb3Mud2lkdGggLyAyIC0gYWN0dWFsV2lkdGggLyAyIH0gOlxuICAgICAgICAgICBwbGFjZW1lbnQgPT0gJ3RvcCcgICAgPyB7IHRvcDogcG9zLnRvcCAtIGFjdHVhbEhlaWdodCwgbGVmdDogcG9zLmxlZnQgKyBwb3Mud2lkdGggLyAyIC0gYWN0dWFsV2lkdGggLyAyIH0gOlxuICAgICAgICAgICBwbGFjZW1lbnQgPT0gJ2xlZnQnICAgPyB7IHRvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQgLyAyIC0gYWN0dWFsSGVpZ2h0IC8gMiwgbGVmdDogcG9zLmxlZnQgLSBhY3R1YWxXaWR0aCB9IDpcbiAgICAgICAgLyogcGxhY2VtZW50ID09ICdyaWdodCcgKi8geyB0b3A6IHBvcy50b3AgKyBwb3MuaGVpZ2h0IC8gMiAtIGFjdHVhbEhlaWdodCAvIDIsIGxlZnQ6IHBvcy5sZWZ0ICsgcG9zLndpZHRoIH1cblxuICB9XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhID0gZnVuY3Rpb24gKHBsYWNlbWVudCwgcG9zLCBhY3R1YWxXaWR0aCwgYWN0dWFsSGVpZ2h0KSB7XG4gICAgdmFyIGRlbHRhID0geyB0b3A6IDAsIGxlZnQ6IDAgfVxuICAgIGlmICghdGhpcy4kdmlld3BvcnQpIHJldHVybiBkZWx0YVxuXG4gICAgdmFyIHZpZXdwb3J0UGFkZGluZyA9IHRoaXMub3B0aW9ucy52aWV3cG9ydCAmJiB0aGlzLm9wdGlvbnMudmlld3BvcnQucGFkZGluZyB8fCAwXG4gICAgdmFyIHZpZXdwb3J0RGltZW5zaW9ucyA9IHRoaXMuZ2V0UG9zaXRpb24odGhpcy4kdmlld3BvcnQpXG5cbiAgICBpZiAoL3JpZ2h0fGxlZnQvLnRlc3QocGxhY2VtZW50KSkge1xuICAgICAgdmFyIHRvcEVkZ2VPZmZzZXQgICAgPSBwb3MudG9wIC0gdmlld3BvcnRQYWRkaW5nIC0gdmlld3BvcnREaW1lbnNpb25zLnNjcm9sbFxuICAgICAgdmFyIGJvdHRvbUVkZ2VPZmZzZXQgPSBwb3MudG9wICsgdmlld3BvcnRQYWRkaW5nIC0gdmlld3BvcnREaW1lbnNpb25zLnNjcm9sbCArIGFjdHVhbEhlaWdodFxuICAgICAgaWYgKHRvcEVkZ2VPZmZzZXQgPCB2aWV3cG9ydERpbWVuc2lvbnMudG9wKSB7IC8vIHRvcCBvdmVyZmxvd1xuICAgICAgICBkZWx0YS50b3AgPSB2aWV3cG9ydERpbWVuc2lvbnMudG9wIC0gdG9wRWRnZU9mZnNldFxuICAgICAgfSBlbHNlIGlmIChib3R0b21FZGdlT2Zmc2V0ID4gdmlld3BvcnREaW1lbnNpb25zLnRvcCArIHZpZXdwb3J0RGltZW5zaW9ucy5oZWlnaHQpIHsgLy8gYm90dG9tIG92ZXJmbG93XG4gICAgICAgIGRlbHRhLnRvcCA9IHZpZXdwb3J0RGltZW5zaW9ucy50b3AgKyB2aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0IC0gYm90dG9tRWRnZU9mZnNldFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGVmdEVkZ2VPZmZzZXQgID0gcG9zLmxlZnQgLSB2aWV3cG9ydFBhZGRpbmdcbiAgICAgIHZhciByaWdodEVkZ2VPZmZzZXQgPSBwb3MubGVmdCArIHZpZXdwb3J0UGFkZGluZyArIGFjdHVhbFdpZHRoXG4gICAgICBpZiAobGVmdEVkZ2VPZmZzZXQgPCB2aWV3cG9ydERpbWVuc2lvbnMubGVmdCkgeyAvLyBsZWZ0IG92ZXJmbG93XG4gICAgICAgIGRlbHRhLmxlZnQgPSB2aWV3cG9ydERpbWVuc2lvbnMubGVmdCAtIGxlZnRFZGdlT2Zmc2V0XG4gICAgICB9IGVsc2UgaWYgKHJpZ2h0RWRnZU9mZnNldCA+IHZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCkgeyAvLyByaWdodCBvdmVyZmxvd1xuICAgICAgICBkZWx0YS5sZWZ0ID0gdmlld3BvcnREaW1lbnNpb25zLmxlZnQgKyB2aWV3cG9ydERpbWVuc2lvbnMud2lkdGggLSByaWdodEVkZ2VPZmZzZXRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVsdGFcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldFRpdGxlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0aXRsZVxuICAgIHZhciAkZSA9IHRoaXMuJGVsZW1lbnRcbiAgICB2YXIgbyAgPSB0aGlzLm9wdGlvbnNcblxuICAgIHRpdGxlID0gJGUuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScpXG4gICAgICB8fCAodHlwZW9mIG8udGl0bGUgPT0gJ2Z1bmN0aW9uJyA/IG8udGl0bGUuY2FsbCgkZVswXSkgOiAgby50aXRsZSlcblxuICAgIHJldHVybiB0aXRsZVxuICB9XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuZ2V0VUlEID0gZnVuY3Rpb24gKHByZWZpeCkge1xuICAgIGRvIHByZWZpeCArPSB+fihNYXRoLnJhbmRvbSgpICogMTAwMDAwMClcbiAgICB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSlcbiAgICByZXR1cm4gcHJlZml4XG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS50aXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLiR0aXAgPSB0aGlzLiR0aXAgfHwgJCh0aGlzLm9wdGlvbnMudGVtcGxhdGUpKVxuICB9XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuYXJyb3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLiRhcnJvdyA9IHRoaXMuJGFycm93IHx8IHRoaXMudGlwKCkuZmluZCgnLnRvb2x0aXAtYXJyb3cnKSlcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlXG4gIH1cblxuICBUb29sdGlwLnByb3RvdHlwZS50b2dnbGVFbmFibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZW5hYmxlZCA9ICF0aGlzLmVuYWJsZWRcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgaWYgKGUpIHtcbiAgICAgIHNlbGYgPSAkKGUuY3VycmVudFRhcmdldCkuZGF0YSgnYnMuJyArIHRoaXMudHlwZSlcbiAgICAgIGlmICghc2VsZikge1xuICAgICAgICBzZWxmID0gbmV3IHRoaXMuY29uc3RydWN0b3IoZS5jdXJyZW50VGFyZ2V0LCB0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKVxuICAgICAgICAkKGUuY3VycmVudFRhcmdldCkuZGF0YSgnYnMuJyArIHRoaXMudHlwZSwgc2VsZilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLnRpcCgpLmhhc0NsYXNzKCdpbicpID8gc2VsZi5sZWF2ZShzZWxmKSA6IHNlbGYuZW50ZXIoc2VsZilcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dClcbiAgICB0aGlzLmhpZGUoZnVuY3Rpb24gKCkge1xuICAgICAgdGhhdC4kZWxlbWVudC5vZmYoJy4nICsgdGhhdC50eXBlKS5yZW1vdmVEYXRhKCdicy4nICsgdGhhdC50eXBlKVxuICAgIH0pXG4gIH1cblxuXG4gIC8vIFRPT0xUSVAgUExVR0lOIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIFBsdWdpbihvcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgICAgdmFyIGRhdGEgICAgPSAkdGhpcy5kYXRhKCdicy50b29sdGlwJylcbiAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cblxuICAgICAgaWYgKCFkYXRhICYmIC9kZXN0cm95fGhpZGUvLnRlc3Qob3B0aW9uKSkgcmV0dXJuXG4gICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2JzLnRvb2x0aXAnLCAoZGF0YSA9IG5ldyBUb29sdGlwKHRoaXMsIG9wdGlvbnMpKSlcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxuICAgIH0pXG4gIH1cblxuICB2YXIgb2xkID0gJC5mbi50b29sdGlwXG5cbiAgJC5mbi50b29sdGlwICAgICAgICAgICAgID0gUGx1Z2luXG4gICQuZm4udG9vbHRpcC5Db25zdHJ1Y3RvciA9IFRvb2x0aXBcblxuXG4gIC8vIFRPT0xUSVAgTk8gQ09ORkxJQ1RcbiAgLy8gPT09PT09PT09PT09PT09PT09PVxuXG4gICQuZm4udG9vbHRpcC5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICQuZm4udG9vbHRpcCA9IG9sZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogcG9wb3Zlci5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI3BvcG92ZXJzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cbitmdW5jdGlvbiAoJCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gUE9QT1ZFUiBQVUJMSUMgQ0xBU1MgREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdmFyIFBvcG92ZXIgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuaW5pdCgncG9wb3ZlcicsIGVsZW1lbnQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAoISQuZm4udG9vbHRpcCkgdGhyb3cgbmV3IEVycm9yKCdQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMnKVxuXG4gIFBvcG92ZXIuVkVSU0lPTiAgPSAnMy4zLjQnXG5cbiAgUG9wb3Zlci5ERUZBVUxUUyA9ICQuZXh0ZW5kKHt9LCAkLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IuREVGQVVMVFMsIHtcbiAgICBwbGFjZW1lbnQ6ICdyaWdodCcsXG4gICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICBjb250ZW50OiAnJyxcbiAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJwb3BvdmVyXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwiYXJyb3dcIj48L2Rpdj48aDMgY2xhc3M9XCJwb3BvdmVyLXRpdGxlXCI+PC9oMz48ZGl2IGNsYXNzPVwicG9wb3Zlci1jb250ZW50XCI+PC9kaXY+PC9kaXY+J1xuICB9KVxuXG5cbiAgLy8gTk9URTogUE9QT1ZFUiBFWFRFTkRTIHRvb2x0aXAuanNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBQb3BvdmVyLnByb3RvdHlwZSA9ICQuZXh0ZW5kKHt9LCAkLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IucHJvdG90eXBlKVxuXG4gIFBvcG92ZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9wb3ZlclxuXG4gIFBvcG92ZXIucHJvdG90eXBlLmdldERlZmF1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQb3BvdmVyLkRFRkFVTFRTXG4gIH1cblxuICBQb3BvdmVyLnByb3RvdHlwZS5zZXRDb250ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkdGlwICAgID0gdGhpcy50aXAoKVxuICAgIHZhciB0aXRsZSAgID0gdGhpcy5nZXRUaXRsZSgpXG4gICAgdmFyIGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKVxuXG4gICAgJHRpcC5maW5kKCcucG9wb3Zlci10aXRsZScpW3RoaXMub3B0aW9ucy5odG1sID8gJ2h0bWwnIDogJ3RleHQnXSh0aXRsZSlcbiAgICAkdGlwLmZpbmQoJy5wb3BvdmVyLWNvbnRlbnQnKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpWyAvLyB3ZSB1c2UgYXBwZW5kIGZvciBodG1sIG9iamVjdHMgdG8gbWFpbnRhaW4ganMgZXZlbnRzXG4gICAgICB0aGlzLm9wdGlvbnMuaHRtbCA/ICh0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJyA/ICdodG1sJyA6ICdhcHBlbmQnKSA6ICd0ZXh0J1xuICAgIF0oY29udGVudClcblxuICAgICR0aXAucmVtb3ZlQ2xhc3MoJ2ZhZGUgdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0IGluJylcblxuICAgIC8vIElFOCBkb2Vzbid0IGFjY2VwdCBoaWRpbmcgdmlhIHRoZSBgOmVtcHR5YCBwc2V1ZG8gc2VsZWN0b3IsIHdlIGhhdmUgdG8gZG9cbiAgICAvLyB0aGlzIG1hbnVhbGx5IGJ5IGNoZWNraW5nIHRoZSBjb250ZW50cy5cbiAgICBpZiAoISR0aXAuZmluZCgnLnBvcG92ZXItdGl0bGUnKS5odG1sKCkpICR0aXAuZmluZCgnLnBvcG92ZXItdGl0bGUnKS5oaWRlKClcbiAgfVxuXG4gIFBvcG92ZXIucHJvdG90eXBlLmhhc0NvbnRlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGl0bGUoKSB8fCB0aGlzLmdldENvbnRlbnQoKVxuICB9XG5cbiAgUG9wb3Zlci5wcm90b3R5cGUuZ2V0Q29udGVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGUgPSB0aGlzLiRlbGVtZW50XG4gICAgdmFyIG8gID0gdGhpcy5vcHRpb25zXG5cbiAgICByZXR1cm4gJGUuYXR0cignZGF0YS1jb250ZW50JylcbiAgICAgIHx8ICh0eXBlb2Ygby5jb250ZW50ID09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgby5jb250ZW50LmNhbGwoJGVbMF0pIDpcbiAgICAgICAgICAgIG8uY29udGVudClcbiAgfVxuXG4gIFBvcG92ZXIucHJvdG90eXBlLmFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAodGhpcy4kYXJyb3cgPSB0aGlzLiRhcnJvdyB8fCB0aGlzLnRpcCgpLmZpbmQoJy5hcnJvdycpKVxuICB9XG5cblxuICAvLyBQT1BPVkVSIFBMVUdJTiBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHRoaXMgICA9ICQodGhpcylcbiAgICAgIHZhciBkYXRhICAgID0gJHRoaXMuZGF0YSgnYnMucG9wb3ZlcicpXG4gICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uXG5cbiAgICAgIGlmICghZGF0YSAmJiAvZGVzdHJveXxoaWRlLy50ZXN0KG9wdGlvbikpIHJldHVyblxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdicy5wb3BvdmVyJywgKGRhdGEgPSBuZXcgUG9wb3Zlcih0aGlzLCBvcHRpb25zKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKClcbiAgICB9KVxuICB9XG5cbiAgdmFyIG9sZCA9ICQuZm4ucG9wb3ZlclxuXG4gICQuZm4ucG9wb3ZlciAgICAgICAgICAgICA9IFBsdWdpblxuICAkLmZuLnBvcG92ZXIuQ29uc3RydWN0b3IgPSBQb3BvdmVyXG5cblxuICAvLyBQT1BPVkVSIE5PIENPTkZMSUNUXG4gIC8vID09PT09PT09PT09PT09PT09PT1cblxuICAkLmZuLnBvcG92ZXIubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAkLmZuLnBvcG92ZXIgPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbn0oalF1ZXJ5KTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCb290c3RyYXA6IHNjcm9sbHNweS5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI3Njcm9sbHNweVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFNDUk9MTFNQWSBDTEFTUyBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZnVuY3Rpb24gU2Nyb2xsU3B5KGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRib2R5ICAgICAgICAgID0gJChkb2N1bWVudC5ib2R5KVxuICAgIHRoaXMuJHNjcm9sbEVsZW1lbnQgPSAkKGVsZW1lbnQpLmlzKGRvY3VtZW50LmJvZHkpID8gJCh3aW5kb3cpIDogJChlbGVtZW50KVxuICAgIHRoaXMub3B0aW9ucyAgICAgICAgPSAkLmV4dGVuZCh7fSwgU2Nyb2xsU3B5LkRFRkFVTFRTLCBvcHRpb25zKVxuICAgIHRoaXMuc2VsZWN0b3IgICAgICAgPSAodGhpcy5vcHRpb25zLnRhcmdldCB8fCAnJykgKyAnIC5uYXYgbGkgPiBhJ1xuICAgIHRoaXMub2Zmc2V0cyAgICAgICAgPSBbXVxuICAgIHRoaXMudGFyZ2V0cyAgICAgICAgPSBbXVxuICAgIHRoaXMuYWN0aXZlVGFyZ2V0ICAgPSBudWxsXG4gICAgdGhpcy5zY3JvbGxIZWlnaHQgICA9IDBcblxuICAgIHRoaXMuJHNjcm9sbEVsZW1lbnQub24oJ3Njcm9sbC5icy5zY3JvbGxzcHknLCAkLnByb3h5KHRoaXMucHJvY2VzcywgdGhpcykpXG4gICAgdGhpcy5yZWZyZXNoKClcbiAgICB0aGlzLnByb2Nlc3MoKVxuICB9XG5cbiAgU2Nyb2xsU3B5LlZFUlNJT04gID0gJzMuMy40J1xuXG4gIFNjcm9sbFNweS5ERUZBVUxUUyA9IHtcbiAgICBvZmZzZXQ6IDEwXG4gIH1cblxuICBTY3JvbGxTcHkucHJvdG90eXBlLmdldFNjcm9sbEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHQgfHwgTWF0aC5tYXgodGhpcy4kYm9keVswXS5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpXG4gIH1cblxuICBTY3JvbGxTcHkucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRoYXQgICAgICAgICAgPSB0aGlzXG4gICAgdmFyIG9mZnNldE1ldGhvZCAgPSAnb2Zmc2V0J1xuICAgIHZhciBvZmZzZXRCYXNlICAgID0gMFxuXG4gICAgdGhpcy5vZmZzZXRzICAgICAgPSBbXVxuICAgIHRoaXMudGFyZ2V0cyAgICAgID0gW11cbiAgICB0aGlzLnNjcm9sbEhlaWdodCA9IHRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KClcblxuICAgIGlmICghJC5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKSkge1xuICAgICAgb2Zmc2V0TWV0aG9kID0gJ3Bvc2l0aW9uJ1xuICAgICAgb2Zmc2V0QmFzZSAgID0gdGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKVxuICAgIH1cblxuICAgIHRoaXMuJGJvZHlcbiAgICAgIC5maW5kKHRoaXMuc2VsZWN0b3IpXG4gICAgICAubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyICRlbCAgID0gJCh0aGlzKVxuICAgICAgICB2YXIgaHJlZiAgPSAkZWwuZGF0YSgndGFyZ2V0JykgfHwgJGVsLmF0dHIoJ2hyZWYnKVxuICAgICAgICB2YXIgJGhyZWYgPSAvXiMuLy50ZXN0KGhyZWYpICYmICQoaHJlZilcblxuICAgICAgICByZXR1cm4gKCRocmVmXG4gICAgICAgICAgJiYgJGhyZWYubGVuZ3RoXG4gICAgICAgICAgJiYgJGhyZWYuaXMoJzp2aXNpYmxlJylcbiAgICAgICAgICAmJiBbWyRocmVmW29mZnNldE1ldGhvZF0oKS50b3AgKyBvZmZzZXRCYXNlLCBocmVmXV0pIHx8IG51bGxcbiAgICAgIH0pXG4gICAgICAuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVswXSAtIGJbMF0gfSlcbiAgICAgIC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhhdC5vZmZzZXRzLnB1c2godGhpc1swXSlcbiAgICAgICAgdGhhdC50YXJnZXRzLnB1c2godGhpc1sxXSlcbiAgICAgIH0pXG4gIH1cblxuICBTY3JvbGxTcHkucHJvdG90eXBlLnByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNjcm9sbFRvcCAgICA9IHRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkgKyB0aGlzLm9wdGlvbnMub2Zmc2V0XG4gICAgdmFyIHNjcm9sbEhlaWdodCA9IHRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KClcbiAgICB2YXIgbWF4U2Nyb2xsICAgID0gdGhpcy5vcHRpb25zLm9mZnNldCArIHNjcm9sbEhlaWdodCAtIHRoaXMuJHNjcm9sbEVsZW1lbnQuaGVpZ2h0KClcbiAgICB2YXIgb2Zmc2V0cyAgICAgID0gdGhpcy5vZmZzZXRzXG4gICAgdmFyIHRhcmdldHMgICAgICA9IHRoaXMudGFyZ2V0c1xuICAgIHZhciBhY3RpdmVUYXJnZXQgPSB0aGlzLmFjdGl2ZVRhcmdldFxuICAgIHZhciBpXG5cbiAgICBpZiAodGhpcy5zY3JvbGxIZWlnaHQgIT0gc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlZnJlc2goKVxuICAgIH1cblxuICAgIGlmIChzY3JvbGxUb3AgPj0gbWF4U2Nyb2xsKSB7XG4gICAgICByZXR1cm4gYWN0aXZlVGFyZ2V0ICE9IChpID0gdGFyZ2V0c1t0YXJnZXRzLmxlbmd0aCAtIDFdKSAmJiB0aGlzLmFjdGl2YXRlKGkpXG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVRhcmdldCAmJiBzY3JvbGxUb3AgPCBvZmZzZXRzWzBdKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRhcmdldCA9IG51bGxcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyKClcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBvZmZzZXRzLmxlbmd0aDsgaS0tOykge1xuICAgICAgYWN0aXZlVGFyZ2V0ICE9IHRhcmdldHNbaV1cbiAgICAgICAgJiYgc2Nyb2xsVG9wID49IG9mZnNldHNbaV1cbiAgICAgICAgJiYgKG9mZnNldHNbaSArIDFdID09PSB1bmRlZmluZWQgfHwgc2Nyb2xsVG9wIDwgb2Zmc2V0c1tpICsgMV0pXG4gICAgICAgICYmIHRoaXMuYWN0aXZhdGUodGFyZ2V0c1tpXSlcbiAgICB9XG4gIH1cblxuICBTY3JvbGxTcHkucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIHRoaXMuYWN0aXZlVGFyZ2V0ID0gdGFyZ2V0XG5cbiAgICB0aGlzLmNsZWFyKClcblxuICAgIHZhciBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3IgK1xuICAgICAgJ1tkYXRhLXRhcmdldD1cIicgKyB0YXJnZXQgKyAnXCJdLCcgK1xuICAgICAgdGhpcy5zZWxlY3RvciArICdbaHJlZj1cIicgKyB0YXJnZXQgKyAnXCJdJ1xuXG4gICAgdmFyIGFjdGl2ZSA9ICQoc2VsZWN0b3IpXG4gICAgICAucGFyZW50cygnbGknKVxuICAgICAgLmFkZENsYXNzKCdhY3RpdmUnKVxuXG4gICAgaWYgKGFjdGl2ZS5wYXJlbnQoJy5kcm9wZG93bi1tZW51JykubGVuZ3RoKSB7XG4gICAgICBhY3RpdmUgPSBhY3RpdmVcbiAgICAgICAgLmNsb3Nlc3QoJ2xpLmRyb3Bkb3duJylcbiAgICAgICAgLmFkZENsYXNzKCdhY3RpdmUnKVxuICAgIH1cblxuICAgIGFjdGl2ZS50cmlnZ2VyKCdhY3RpdmF0ZS5icy5zY3JvbGxzcHknKVxuICB9XG5cbiAgU2Nyb2xsU3B5LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAkKHRoaXMuc2VsZWN0b3IpXG4gICAgICAucGFyZW50c1VudGlsKHRoaXMub3B0aW9ucy50YXJnZXQsICcuYWN0aXZlJylcbiAgICAgIC5yZW1vdmVDbGFzcygnYWN0aXZlJylcbiAgfVxuXG5cbiAgLy8gU0NST0xMU1BZIFBMVUdJTiBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIFBsdWdpbihvcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgICAgdmFyIGRhdGEgICAgPSAkdGhpcy5kYXRhKCdicy5zY3JvbGxzcHknKVxuICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvblxuXG4gICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2JzLnNjcm9sbHNweScsIChkYXRhID0gbmV3IFNjcm9sbFNweSh0aGlzLCBvcHRpb25zKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKClcbiAgICB9KVxuICB9XG5cbiAgdmFyIG9sZCA9ICQuZm4uc2Nyb2xsc3B5XG5cbiAgJC5mbi5zY3JvbGxzcHkgICAgICAgICAgICAgPSBQbHVnaW5cbiAgJC5mbi5zY3JvbGxzcHkuQ29uc3RydWN0b3IgPSBTY3JvbGxTcHlcblxuXG4gIC8vIFNDUk9MTFNQWSBOTyBDT05GTElDVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cblxuICAkLmZuLnNjcm9sbHNweS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICQuZm4uc2Nyb2xsc3B5ID0gb2xkXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG5cbiAgLy8gU0NST0xMU1BZIERBVEEtQVBJXG4gIC8vID09PT09PT09PT09PT09PT09PVxuXG4gICQod2luZG93KS5vbignbG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGknLCBmdW5jdGlvbiAoKSB7XG4gICAgJCgnW2RhdGEtc3B5PVwic2Nyb2xsXCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHNweSA9ICQodGhpcylcbiAgICAgIFBsdWdpbi5jYWxsKCRzcHksICRzcHkuZGF0YSgpKVxuICAgIH0pXG4gIH0pXG5cbn0oalF1ZXJ5KTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCb290c3RyYXA6IHRhYi5qcyB2My4zLjRcbiAqIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2phdmFzY3JpcHQvI3RhYnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weXJpZ2h0IDIwMTEtMjAxNSBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cblxuK2Z1bmN0aW9uICgkKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBUQUIgQ0xBU1MgREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBUYWIgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudClcbiAgfVxuXG4gIFRhYi5WRVJTSU9OID0gJzMuMy40J1xuXG4gIFRhYi5UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwXG5cbiAgVGFiLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkdGhpcyAgICA9IHRoaXMuZWxlbWVudFxuICAgIHZhciAkdWwgICAgICA9ICR0aGlzLmNsb3Nlc3QoJ3VsOm5vdCguZHJvcGRvd24tbWVudSknKVxuICAgIHZhciBzZWxlY3RvciA9ICR0aGlzLmRhdGEoJ3RhcmdldCcpXG5cbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2hyZWYnKVxuICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvciAmJiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/PSNbXlxcc10qJCkvLCAnJykgLy8gc3RyaXAgZm9yIGllN1xuICAgIH1cblxuICAgIGlmICgkdGhpcy5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSByZXR1cm5cblxuICAgIHZhciAkcHJldmlvdXMgPSAkdWwuZmluZCgnLmFjdGl2ZTpsYXN0IGEnKVxuICAgIHZhciBoaWRlRXZlbnQgPSAkLkV2ZW50KCdoaWRlLmJzLnRhYicsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6ICR0aGlzWzBdXG4gICAgfSlcbiAgICB2YXIgc2hvd0V2ZW50ID0gJC5FdmVudCgnc2hvdy5icy50YWInLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiAkcHJldmlvdXNbMF1cbiAgICB9KVxuXG4gICAgJHByZXZpb3VzLnRyaWdnZXIoaGlkZUV2ZW50KVxuICAgICR0aGlzLnRyaWdnZXIoc2hvd0V2ZW50KVxuXG4gICAgaWYgKHNob3dFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBoaWRlRXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgdmFyICR0YXJnZXQgPSAkKHNlbGVjdG9yKVxuXG4gICAgdGhpcy5hY3RpdmF0ZSgkdGhpcy5jbG9zZXN0KCdsaScpLCAkdWwpXG4gICAgdGhpcy5hY3RpdmF0ZSgkdGFyZ2V0LCAkdGFyZ2V0LnBhcmVudCgpLCBmdW5jdGlvbiAoKSB7XG4gICAgICAkcHJldmlvdXMudHJpZ2dlcih7XG4gICAgICAgIHR5cGU6ICdoaWRkZW4uYnMudGFiJyxcbiAgICAgICAgcmVsYXRlZFRhcmdldDogJHRoaXNbMF1cbiAgICAgIH0pXG4gICAgICAkdGhpcy50cmlnZ2VyKHtcbiAgICAgICAgdHlwZTogJ3Nob3duLmJzLnRhYicsXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6ICRwcmV2aW91c1swXVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgVGFiLnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgdmFyICRhY3RpdmUgICAgPSBjb250YWluZXIuZmluZCgnPiAuYWN0aXZlJylcbiAgICB2YXIgdHJhbnNpdGlvbiA9IGNhbGxiYWNrXG4gICAgICAmJiAkLnN1cHBvcnQudHJhbnNpdGlvblxuICAgICAgJiYgKCgkYWN0aXZlLmxlbmd0aCAmJiAkYWN0aXZlLmhhc0NsYXNzKCdmYWRlJykpIHx8ICEhY29udGFpbmVyLmZpbmQoJz4gLmZhZGUnKS5sZW5ndGgpXG5cbiAgICBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgJGFjdGl2ZVxuICAgICAgICAucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICAgIC5maW5kKCc+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZScpXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxuICAgICAgICAuZW5kKClcbiAgICAgICAgLmZpbmQoJ1tkYXRhLXRvZ2dsZT1cInRhYlwiXScpXG4gICAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSlcblxuICAgICAgZWxlbWVudFxuICAgICAgICAuYWRkQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICAgIC5maW5kKCdbZGF0YS10b2dnbGU9XCJ0YWJcIl0nKVxuICAgICAgICAgIC5hdHRyKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSlcblxuICAgICAgaWYgKHRyYW5zaXRpb24pIHtcbiAgICAgICAgZWxlbWVudFswXS5vZmZzZXRXaWR0aCAvLyByZWZsb3cgZm9yIHRyYW5zaXRpb25cbiAgICAgICAgZWxlbWVudC5hZGRDbGFzcygnaW4nKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZmFkZScpXG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50LnBhcmVudCgnLmRyb3Bkb3duLW1lbnUnKS5sZW5ndGgpIHtcbiAgICAgICAgZWxlbWVudFxuICAgICAgICAgIC5jbG9zZXN0KCdsaS5kcm9wZG93bicpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICAgICAgLmVuZCgpXG4gICAgICAgICAgLmZpbmQoJ1tkYXRhLXRvZ2dsZT1cInRhYlwiXScpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsIHRydWUpXG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKClcbiAgICB9XG5cbiAgICAkYWN0aXZlLmxlbmd0aCAmJiB0cmFuc2l0aW9uID9cbiAgICAgICRhY3RpdmVcbiAgICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgbmV4dClcbiAgICAgICAgLmVtdWxhdGVUcmFuc2l0aW9uRW5kKFRhYi5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6XG4gICAgICBuZXh0KClcblxuICAgICRhY3RpdmUucmVtb3ZlQ2xhc3MoJ2luJylcbiAgfVxuXG5cbiAgLy8gVEFCIFBMVUdJTiBERUZJTklUSU9OXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIFBsdWdpbihvcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcbiAgICAgIHZhciBkYXRhICA9ICR0aGlzLmRhdGEoJ2JzLnRhYicpXG5cbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMudGFiJywgKGRhdGEgPSBuZXcgVGFiKHRoaXMpKSlcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxuICAgIH0pXG4gIH1cblxuICB2YXIgb2xkID0gJC5mbi50YWJcblxuICAkLmZuLnRhYiAgICAgICAgICAgICA9IFBsdWdpblxuICAkLmZuLnRhYi5Db25zdHJ1Y3RvciA9IFRhYlxuXG5cbiAgLy8gVEFCIE5PIENPTkZMSUNUXG4gIC8vID09PT09PT09PT09PT09PVxuXG4gICQuZm4udGFiLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbi50YWIgPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cblxuICAvLyBUQUIgREFUQS1BUElcbiAgLy8gPT09PT09PT09PT09XG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgUGx1Z2luLmNhbGwoJCh0aGlzKSwgJ3Nob3cnKVxuICB9XG5cbiAgJChkb2N1bWVudClcbiAgICAub24oJ2NsaWNrLmJzLnRhYi5kYXRhLWFwaScsICdbZGF0YS10b2dnbGU9XCJ0YWJcIl0nLCBjbGlja0hhbmRsZXIpXG4gICAgLm9uKCdjbGljay5icy50YWIuZGF0YS1hcGknLCAnW2RhdGEtdG9nZ2xlPVwicGlsbFwiXScsIGNsaWNrSGFuZGxlcilcblxufShqUXVlcnkpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEJvb3RzdHJhcDogYWZmaXguanMgdjMuMy40XG4gKiBodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbS9qYXZhc2NyaXB0LyNhZmZpeFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4rZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIEFGRklYIENMQVNTIERFRklOSVRJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHZhciBBZmZpeCA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sIEFmZml4LkRFRkFVTFRTLCBvcHRpb25zKVxuXG4gICAgdGhpcy4kdGFyZ2V0ID0gJCh0aGlzLm9wdGlvbnMudGFyZ2V0KVxuICAgICAgLm9uKCdzY3JvbGwuYnMuYWZmaXguZGF0YS1hcGknLCAkLnByb3h5KHRoaXMuY2hlY2tQb3NpdGlvbiwgdGhpcykpXG4gICAgICAub24oJ2NsaWNrLmJzLmFmZml4LmRhdGEtYXBpJywgICQucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcCwgdGhpcykpXG5cbiAgICB0aGlzLiRlbGVtZW50ICAgICA9ICQoZWxlbWVudClcbiAgICB0aGlzLmFmZml4ZWQgICAgICA9IG51bGxcbiAgICB0aGlzLnVucGluICAgICAgICA9IG51bGxcbiAgICB0aGlzLnBpbm5lZE9mZnNldCA9IG51bGxcblxuICAgIHRoaXMuY2hlY2tQb3NpdGlvbigpXG4gIH1cblxuICBBZmZpeC5WRVJTSU9OICA9ICczLjMuNCdcblxuICBBZmZpeC5SRVNFVCAgICA9ICdhZmZpeCBhZmZpeC10b3AgYWZmaXgtYm90dG9tJ1xuXG4gIEFmZml4LkRFRkFVTFRTID0ge1xuICAgIG9mZnNldDogMCxcbiAgICB0YXJnZXQ6IHdpbmRvd1xuICB9XG5cbiAgQWZmaXgucHJvdG90eXBlLmdldFN0YXRlID0gZnVuY3Rpb24gKHNjcm9sbEhlaWdodCwgaGVpZ2h0LCBvZmZzZXRUb3AsIG9mZnNldEJvdHRvbSkge1xuICAgIHZhciBzY3JvbGxUb3AgICAgPSB0aGlzLiR0YXJnZXQuc2Nyb2xsVG9wKClcbiAgICB2YXIgcG9zaXRpb24gICAgID0gdGhpcy4kZWxlbWVudC5vZmZzZXQoKVxuICAgIHZhciB0YXJnZXRIZWlnaHQgPSB0aGlzLiR0YXJnZXQuaGVpZ2h0KClcblxuICAgIGlmIChvZmZzZXRUb3AgIT0gbnVsbCAmJiB0aGlzLmFmZml4ZWQgPT0gJ3RvcCcpIHJldHVybiBzY3JvbGxUb3AgPCBvZmZzZXRUb3AgPyAndG9wJyA6IGZhbHNlXG5cbiAgICBpZiAodGhpcy5hZmZpeGVkID09ICdib3R0b20nKSB7XG4gICAgICBpZiAob2Zmc2V0VG9wICE9IG51bGwpIHJldHVybiAoc2Nyb2xsVG9wICsgdGhpcy51bnBpbiA8PSBwb3NpdGlvbi50b3ApID8gZmFsc2UgOiAnYm90dG9tJ1xuICAgICAgcmV0dXJuIChzY3JvbGxUb3AgKyB0YXJnZXRIZWlnaHQgPD0gc2Nyb2xsSGVpZ2h0IC0gb2Zmc2V0Qm90dG9tKSA/IGZhbHNlIDogJ2JvdHRvbSdcbiAgICB9XG5cbiAgICB2YXIgaW5pdGlhbGl6aW5nICAgPSB0aGlzLmFmZml4ZWQgPT0gbnVsbFxuICAgIHZhciBjb2xsaWRlclRvcCAgICA9IGluaXRpYWxpemluZyA/IHNjcm9sbFRvcCA6IHBvc2l0aW9uLnRvcFxuICAgIHZhciBjb2xsaWRlckhlaWdodCA9IGluaXRpYWxpemluZyA/IHRhcmdldEhlaWdodCA6IGhlaWdodFxuXG4gICAgaWYgKG9mZnNldFRvcCAhPSBudWxsICYmIHNjcm9sbFRvcCA8PSBvZmZzZXRUb3ApIHJldHVybiAndG9wJ1xuICAgIGlmIChvZmZzZXRCb3R0b20gIT0gbnVsbCAmJiAoY29sbGlkZXJUb3AgKyBjb2xsaWRlckhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRCb3R0b20pKSByZXR1cm4gJ2JvdHRvbSdcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgQWZmaXgucHJvdG90eXBlLmdldFBpbm5lZE9mZnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5waW5uZWRPZmZzZXQpIHJldHVybiB0aGlzLnBpbm5lZE9mZnNldFxuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoQWZmaXguUkVTRVQpLmFkZENsYXNzKCdhZmZpeCcpXG4gICAgdmFyIHNjcm9sbFRvcCA9IHRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKVxuICAgIHZhciBwb3NpdGlvbiAgPSB0aGlzLiRlbGVtZW50Lm9mZnNldCgpXG4gICAgcmV0dXJuICh0aGlzLnBpbm5lZE9mZnNldCA9IHBvc2l0aW9uLnRvcCAtIHNjcm9sbFRvcClcbiAgfVxuXG4gIEFmZml4LnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICBzZXRUaW1lb3V0KCQucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLCB0aGlzKSwgMSlcbiAgfVxuXG4gIEFmZml4LnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy4kZWxlbWVudC5pcygnOnZpc2libGUnKSkgcmV0dXJuXG5cbiAgICB2YXIgaGVpZ2h0ICAgICAgID0gdGhpcy4kZWxlbWVudC5oZWlnaHQoKVxuICAgIHZhciBvZmZzZXQgICAgICAgPSB0aGlzLm9wdGlvbnMub2Zmc2V0XG4gICAgdmFyIG9mZnNldFRvcCAgICA9IG9mZnNldC50b3BcbiAgICB2YXIgb2Zmc2V0Qm90dG9tID0gb2Zmc2V0LmJvdHRvbVxuICAgIHZhciBzY3JvbGxIZWlnaHQgPSAkKGRvY3VtZW50LmJvZHkpLmhlaWdodCgpXG5cbiAgICBpZiAodHlwZW9mIG9mZnNldCAhPSAnb2JqZWN0JykgICAgICAgICBvZmZzZXRCb3R0b20gPSBvZmZzZXRUb3AgPSBvZmZzZXRcbiAgICBpZiAodHlwZW9mIG9mZnNldFRvcCA9PSAnZnVuY3Rpb24nKSAgICBvZmZzZXRUb3AgICAgPSBvZmZzZXQudG9wKHRoaXMuJGVsZW1lbnQpXG4gICAgaWYgKHR5cGVvZiBvZmZzZXRCb3R0b20gPT0gJ2Z1bmN0aW9uJykgb2Zmc2V0Qm90dG9tID0gb2Zmc2V0LmJvdHRvbSh0aGlzLiRlbGVtZW50KVxuXG4gICAgdmFyIGFmZml4ID0gdGhpcy5nZXRTdGF0ZShzY3JvbGxIZWlnaHQsIGhlaWdodCwgb2Zmc2V0VG9wLCBvZmZzZXRCb3R0b20pXG5cbiAgICBpZiAodGhpcy5hZmZpeGVkICE9IGFmZml4KSB7XG4gICAgICBpZiAodGhpcy51bnBpbiAhPSBudWxsKSB0aGlzLiRlbGVtZW50LmNzcygndG9wJywgJycpXG5cbiAgICAgIHZhciBhZmZpeFR5cGUgPSAnYWZmaXgnICsgKGFmZml4ID8gJy0nICsgYWZmaXggOiAnJylcbiAgICAgIHZhciBlICAgICAgICAgPSAkLkV2ZW50KGFmZml4VHlwZSArICcuYnMuYWZmaXgnKVxuXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSlcblxuICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgICB0aGlzLmFmZml4ZWQgPSBhZmZpeFxuICAgICAgdGhpcy51bnBpbiA9IGFmZml4ID09ICdib3R0b20nID8gdGhpcy5nZXRQaW5uZWRPZmZzZXQoKSA6IG51bGxcblxuICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAucmVtb3ZlQ2xhc3MoQWZmaXguUkVTRVQpXG4gICAgICAgIC5hZGRDbGFzcyhhZmZpeFR5cGUpXG4gICAgICAgIC50cmlnZ2VyKGFmZml4VHlwZS5yZXBsYWNlKCdhZmZpeCcsICdhZmZpeGVkJykgKyAnLmJzLmFmZml4JylcbiAgICB9XG5cbiAgICBpZiAoYWZmaXggPT0gJ2JvdHRvbScpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQub2Zmc2V0KHtcbiAgICAgICAgdG9wOiBzY3JvbGxIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXRCb3R0b21cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cblxuICAvLyBBRkZJWCBQTFVHSU4gREVGSU5JVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGZ1bmN0aW9uIFBsdWdpbihvcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkdGhpcyAgID0gJCh0aGlzKVxuICAgICAgdmFyIGRhdGEgICAgPSAkdGhpcy5kYXRhKCdicy5hZmZpeCcpXG4gICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uXG5cbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMuYWZmaXgnLCAoZGF0YSA9IG5ldyBBZmZpeCh0aGlzLCBvcHRpb25zKSkpXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKClcbiAgICB9KVxuICB9XG5cbiAgdmFyIG9sZCA9ICQuZm4uYWZmaXhcblxuICAkLmZuLmFmZml4ICAgICAgICAgICAgID0gUGx1Z2luXG4gICQuZm4uYWZmaXguQ29uc3RydWN0b3IgPSBBZmZpeFxuXG5cbiAgLy8gQUZGSVggTk8gQ09ORkxJQ1RcbiAgLy8gPT09PT09PT09PT09PT09PT1cblxuICAkLmZuLmFmZml4Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbi5hZmZpeCA9IG9sZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuXG4gIC8vIEFGRklYIERBVEEtQVBJXG4gIC8vID09PT09PT09PT09PT09XG5cbiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkge1xuICAgICQoJ1tkYXRhLXNweT1cImFmZml4XCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHNweSA9ICQodGhpcylcbiAgICAgIHZhciBkYXRhID0gJHNweS5kYXRhKClcblxuICAgICAgZGF0YS5vZmZzZXQgPSBkYXRhLm9mZnNldCB8fCB7fVxuXG4gICAgICBpZiAoZGF0YS5vZmZzZXRCb3R0b20gIT0gbnVsbCkgZGF0YS5vZmZzZXQuYm90dG9tID0gZGF0YS5vZmZzZXRCb3R0b21cbiAgICAgIGlmIChkYXRhLm9mZnNldFRvcCAgICAhPSBudWxsKSBkYXRhLm9mZnNldC50b3AgICAgPSBkYXRhLm9mZnNldFRvcFxuXG4gICAgICBQbHVnaW4uY2FsbCgkc3B5LCBkYXRhKVxuICAgIH0pXG4gIH0pXG5cbn0oalF1ZXJ5KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9ib290c3RyYXAtbGVzcy9qcy9ib290c3RyYXAuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n.action-link[data-v-225778c2] {\\n cursor: pointer;\\n}\\n.m-b-none[data-v-225778c2] {\\n margin-bottom: 0;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"PersonalAccessTokens.vue?5734f4e4\"],\"names\":[],\"mappings\":\";AACA;IACA,gBAAA;CACA;AAEA;IACA,iBAAA;CACA\",\"file\":\"PersonalAccessTokens.vue\",\"sourcesContent\":[\"<style scoped>\\n .action-link {\\n cursor: pointer;\\n }\\n\\n .m-b-none {\\n margin-bottom: 0;\\n }\\n</style>\\n\\n<template>\\n <div>\\n <div>\\n <div class=\\\"panel panel-default\\\">\\n <div class=\\\"panel-heading\\\">\\n <div style=\\\"display: flex; justify-content: space-between; align-items: center;\\\">\\n <span>\\n Personal Access Tokens\\n </span>\\n\\n <a class=\\\"action-link\\\" @click=\\\"showCreateTokenForm\\\">\\n Create New Token\\n </a>\\n </div>\\n </div>\\n\\n <div class=\\\"panel-body\\\">\\n <!-- No Tokens Notice -->\\n <p class=\\\"m-b-none\\\" v-if=\\\"tokens.length === 0\\\">\\n You have not created any personal access tokens.\\n </p>\\n\\n <!-- Personal Access Tokens -->\\n <table class=\\\"table table-borderless m-b-none\\\" v-if=\\\"tokens.length > 0\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th></th>\\n </tr>\\n </thead>\\n\\n <tbody>\\n <tr v-for=\\\"token in tokens\\\">\\n <!-- Client Name -->\\n <td style=\\\"vertical-align: middle;\\\">\\n {{ token.name }}\\n </td>\\n\\n <!-- Delete Button -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <a class=\\\"action-link text-danger\\\" @click=\\\"revoke(token)\\\">\\n Delete\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n </div>\\n\\n <!-- Create Token Modal -->\\n <div class=\\\"modal fade\\\" id=\\\"modal-create-token\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\">\\n <div class=\\\"modal-dialog\\\">\\n <div class=\\\"modal-content\\\">\\n <div class=\\\"modal-header\\\">\\n <button type=\\\"button \\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-hidden=\\\"true\\\">×</button>\\n\\n <h4 class=\\\"modal-title\\\">\\n Create Token\\n </h4>\\n </div>\\n\\n <div class=\\\"modal-body\\\">\\n <!-- Form Errors -->\\n <div class=\\\"alert alert-danger\\\" v-if=\\\"form.errors.length > 0\\\">\\n <p><strong>Whoops!</strong> Something went wrong!</p>\\n <br>\\n <ul>\\n <li v-for=\\\"error in form.errors\\\">\\n {{ error }}\\n </li>\\n </ul>\\n </div>\\n\\n <!-- Create Token Form -->\\n <form class=\\\"form-horizontal\\\" role=\\\"form\\\" @submit.prevent=\\\"store\\\">\\n <!-- Name -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-md-4 control-label\\\">Name</label>\\n\\n <div class=\\\"col-md-6\\\">\\n <input id=\\\"create-token-name\\\" type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"name\\\" v-model=\\\"form.name\\\">\\n </div>\\n </div>\\n\\n <!-- Scopes -->\\n <div class=\\\"form-group\\\" v-if=\\\"scopes.length > 0\\\">\\n <label class=\\\"col-md-4 control-label\\\">Scopes</label>\\n\\n <div class=\\\"col-md-6\\\">\\n <div v-for=\\\"scope in scopes\\\">\\n <div class=\\\"checkbox\\\">\\n <label>\\n <input type=\\\"checkbox\\\"\\n @click=\\\"toggleScope(scope.id)\\\"\\n :checked=\\\"scopeIsAssigned(scope.id)\\\">\\n\\n {{ scope.id }}\\n </label>\\n </div>\\n </div>\\n </div>\\n </div>\\n </form>\\n </div>\\n\\n <!-- Modal Actions -->\\n <div class=\\\"modal-footer\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-dismiss=\\\"modal\\\">Close</button>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" @click=\\\"store\\\">\\n Create\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <!-- Access Token Modal -->\\n <div class=\\\"modal fade\\\" id=\\\"modal-access-token\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\">\\n <div class=\\\"modal-dialog\\\">\\n <div class=\\\"modal-content\\\">\\n <div class=\\\"modal-header\\\">\\n <button type=\\\"button \\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-hidden=\\\"true\\\">×</button>\\n\\n <h4 class=\\\"modal-title\\\">\\n Personal Access Token\\n </h4>\\n </div>\\n\\n <div class=\\\"modal-body\\\">\\n <p>\\n Here is your new personal access token. This is the only time it will be shown so don't lose it!\\n You may now use this token to make API requests.\\n </p>\\n\\n <pre><code>{{ accessToken }}</code></pre>\\n </div>\\n\\n <!-- Modal Actions -->\\n <div class=\\\"modal-footer\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-dismiss=\\\"modal\\\">Close</button>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\n export default {\\n /*\\n * The component's data.\\n */\\n data() {\\n return {\\n accessToken: null,\\n\\n tokens: [],\\n scopes: [],\\n\\n form: {\\n name: '',\\n scopes: [],\\n errors: []\\n }\\n };\\n },\\n\\n /**\\n * Prepare the component (Vue 1.x).\\n */\\n ready() {\\n this.prepareComponent();\\n },\\n\\n /**\\n * Prepare the component (Vue 2.x).\\n */\\n mounted() {\\n this.prepareComponent();\\n },\\n\\n methods: {\\n /**\\n * Prepare the component.\\n */\\n prepareComponent() {\\n this.getTokens();\\n this.getScopes();\\n\\n $('#modal-create-token').on('shown.bs.modal', () => {\\n $('#create-token-name').focus();\\n });\\n },\\n\\n /**\\n * Get all of the personal access tokens for the user.\\n */\\n getTokens() {\\n this.$http.get('/oauth/personal-access-tokens')\\n .then(response => {\\n this.tokens = response.data;\\n });\\n },\\n\\n /**\\n * Get all of the available scopes.\\n */\\n getScopes() {\\n this.$http.get('/oauth/scopes')\\n .then(response => {\\n this.scopes = response.data;\\n });\\n },\\n\\n /**\\n * Show the form for creating new tokens.\\n */\\n showCreateTokenForm() {\\n $('#modal-create-token').modal('show');\\n },\\n\\n /**\\n * Create a new personal access token.\\n */\\n store() {\\n this.accessToken = null;\\n\\n this.form.errors = [];\\n\\n this.$http.post('/oauth/personal-access-tokens', this.form)\\n .then(response => {\\n this.form.name = '';\\n this.form.scopes = [];\\n this.form.errors = [];\\n\\n this.tokens.push(response.data.token);\\n\\n this.showAccessToken(response.data.accessToken);\\n })\\n .catch(response => {\\n if (typeof response.data === 'object') {\\n this.form.errors = _.flatten(_.toArray(response.data));\\n } else {\\n console.dir(this.form);\\n this.form.errors = ['Something went wrong. Please try again.'];\\n }\\n });\\n },\\n\\n /**\\n * Toggle the given scope in the list of assigned scopes.\\n */\\n toggleScope(scope) {\\n if (this.scopeIsAssigned(scope)) {\\n this.form.scopes = _.reject(this.form.scopes, s => s == scope);\\n } else {\\n this.form.scopes.push(scope);\\n }\\n },\\n\\n /**\\n * Determine if the given scope has been assigned to the token.\\n */\\n scopeIsAssigned(scope) {\\n return _.indexOf(this.form.scopes, scope) >= 0;\\n },\\n\\n /**\\n * Show the given access token to the user.\\n */\\n showAccessToken(accessToken) {\\n $('#modal-create-token').modal('hide');\\n\\n this.accessToken = accessToken;\\n\\n $('#modal-access-token').modal('show');\\n },\\n\\n /**\\n * Revoke the given token.\\n */\\n revoke(token) {\\n this.$http.delete('/oauth/personal-access-tokens/' + token.id)\\n .then(response => {\\n this.getTokens();\\n });\\n }\\n }\\n }\\n</script>\\n\"]}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlP2FkYzQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKSgpO1xuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmFjdGlvbi1saW5rW2RhdGEtdi0yMjU3NzhjMl0ge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5tLWItbm9uZVtkYXRhLXYtMjI1Nzc4YzJdIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIlBlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZT81NzM0ZjRlNFwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBQ0E7SUFDQSxnQkFBQTtDQUNBO0FBRUE7SUFDQSxpQkFBQTtDQUNBXCIsXCJmaWxlXCI6XCJQZXJzb25hbEFjY2Vzc1Rva2Vucy52dWVcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHN0eWxlIHNjb3BlZD5cXG4gICAgLmFjdGlvbi1saW5rIHtcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgfVxcblxcbiAgICAubS1iLW5vbmUge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgfVxcbjwvc3R5bGU+XFxuXFxuPHRlbXBsYXRlPlxcbiAgICA8ZGl2PlxcbiAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwtaGVhZGluZ1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVxcXCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29uYWwgQWNjZXNzIFRva2Vuc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cXFwiYWN0aW9uLWxpbmtcXFwiIEBjbGljaz1cXFwic2hvd0NyZWF0ZVRva2VuRm9ybVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgVG9rZW5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBObyBUb2tlbnMgTm90aWNlIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm0tYi1ub25lXFxcIiB2LWlmPVxcXCJ0b2tlbnMubGVuZ3RoID09PSAwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgcGVyc29uYWwgYWNjZXNzIHRva2Vucy5cXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyc29uYWwgQWNjZXNzIFRva2VucyAtLT5cXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cXFwidGFibGUgdGFibGUtYm9yZGVybGVzcyBtLWItbm9uZVxcXCIgdi1pZj1cXFwidG9rZW5zLmxlbmd0aCA+IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cXFwidG9rZW4gaW4gdG9rZW5zXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2xpZW50IE5hbWUgLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XFxcInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b2tlbi5uYW1lIH19XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEZWxldGUgQnV0dG9uIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVxcXCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XFxcImFjdGlvbi1saW5rIHRleHQtZGFuZ2VyXFxcIiBAY2xpY2s9XFxcInJldm9rZSh0b2tlbilcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPCEtLSBDcmVhdGUgVG9rZW4gTW9kYWwgLS0+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbCBmYWRlXFxcIiBpZD1cXFwibW9kYWwtY3JlYXRlLXRva2VuXFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiIHJvbGU9XFxcImRpYWxvZ1xcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtZGlhbG9nXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtY29udGVudFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1oZWFkZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uIFxcXCIgY2xhc3M9XFxcImNsb3NlXFxcIiBkYXRhLWRpc21pc3M9XFxcIm1vZGFsXFxcIiBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCI+JnRpbWVzOzwvYnV0dG9uPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cXFwibW9kYWwtdGl0bGVcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgVG9rZW5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1ib2R5XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm0gRXJyb3JzIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImFsZXJ0IGFsZXJ0LWRhbmdlclxcXCIgdi1pZj1cXFwiZm9ybS5lcnJvcnMubGVuZ3RoID4gMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2hvb3BzITwvc3Ryb25nPiBTb21ldGhpbmcgd2VudCB3cm9uZyE8L3A+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHYtZm9yPVxcXCJlcnJvciBpbiBmb3JtLmVycm9yc1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXJyb3IgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDcmVhdGUgVG9rZW4gRm9ybSAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cXFwiZm9ybS1ob3Jpem9udGFsXFxcIiByb2xlPVxcXCJmb3JtXFxcIiBAc3VibWl0LnByZXZlbnQ9XFxcInN0b3JlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBOYW1lIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwiY29sLW1kLTQgY29udHJvbC1sYWJlbFxcXCI+TmFtZTwvbGFiZWw+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtNlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVxcXCJjcmVhdGUtdG9rZW4tbmFtZVxcXCIgdHlwZT1cXFwidGV4dFxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgbmFtZT1cXFwibmFtZVxcXCIgdi1tb2RlbD1cXFwiZm9ybS5uYW1lXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTY29wZXMgLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiIHYtaWY9XFxcInNjb3Blcy5sZW5ndGggPiAwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwiY29sLW1kLTQgY29udHJvbC1sYWJlbFxcXCI+U2NvcGVzPC9sYWJlbD5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC02XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVxcXCJzY29wZSBpbiBzY29wZXNcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNjb3BlKHNjb3BlLmlkKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNoZWNrZWQ9XFxcInNjb3BlSXNBc3NpZ25lZChzY29wZS5pZClcXFwiPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzY29wZS5pZCB9fVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1vZGFsIEFjdGlvbnMgLS0+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1mb290ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1kZWZhdWx0XFxcIiBkYXRhLWRpc21pc3M9XFxcIm1vZGFsXFxcIj5DbG9zZTwvYnV0dG9uPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIiBAY2xpY2s9XFxcInN0b3JlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDwhLS0gQWNjZXNzIFRva2VuIE1vZGFsIC0tPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwgZmFkZVxcXCIgaWQ9XFxcIm1vZGFsLWFjY2Vzcy10b2tlblxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIiByb2xlPVxcXCJkaWFsb2dcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWRpYWxvZ1xcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWNvbnRlbnRcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtaGVhZGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XFxcImJ1dHRvbiBcXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCIgZGF0YS1kaXNtaXNzPVxcXCJtb2RhbFxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiPiZ0aW1lczs8L2J1dHRvbj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XFxcIm1vZGFsLXRpdGxlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29uYWwgQWNjZXNzIFRva2VuXFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgeW91ciBuZXcgcGVyc29uYWwgYWNjZXNzIHRva2VuLiBUaGlzIGlzIHRoZSBvbmx5IHRpbWUgaXQgd2lsbCBiZSBzaG93biBzbyBkb24ndCBsb3NlIGl0IVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IG5vdyB1c2UgdGhpcyB0b2tlbiB0byBtYWtlIEFQSSByZXF1ZXN0cy5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyBhY2Nlc3NUb2tlbiB9fTwvY29kZT48L3ByZT5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNb2RhbCBBY3Rpb25zIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtZm9vdGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XFxcImJ1dHRvblxcXCIgY2xhc3M9XFxcImJ0biBidG4tZGVmYXVsdFxcXCIgZGF0YS1kaXNtaXNzPVxcXCJtb2RhbFxcXCI+Q2xvc2U8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQ+XFxuICAgIGV4cG9ydCBkZWZhdWx0IHtcXG4gICAgICAgIC8qXFxuICAgICAgICAgKiBUaGUgY29tcG9uZW50J3MgZGF0YS5cXG4gICAgICAgICAqL1xcbiAgICAgICAgZGF0YSgpIHtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogbnVsbCxcXG5cXG4gICAgICAgICAgICAgICAgdG9rZW5zOiBbXSxcXG4gICAgICAgICAgICAgICAgc2NvcGVzOiBbXSxcXG5cXG4gICAgICAgICAgICAgICAgZm9ybToge1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJycsXFxuICAgICAgICAgICAgICAgICAgICBzY29wZXM6IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICAvKipcXG4gICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDEueCkuXFxuICAgICAgICAgKi9cXG4gICAgICAgIHJlYWR5KCkge1xcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUNvbXBvbmVudCgpO1xcbiAgICAgICAgfSxcXG5cXG4gICAgICAgIC8qKlxcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cXG4gICAgICAgICAqL1xcbiAgICAgICAgbW91bnRlZCgpIHtcXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICBtZXRob2RzOiB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50LlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHByZXBhcmVDb21wb25lbnQoKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9rZW5zKCk7XFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2NvcGVzKCk7XFxuXFxuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtdG9rZW4nKS5vbignc2hvd24uYnMubW9kYWwnLCAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlLXRva2VuLW5hbWUnKS5mb2N1cygpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIEdldCBhbGwgb2YgdGhlIHBlcnNvbmFsIGFjY2VzcyB0b2tlbnMgZm9yIHRoZSB1c2VyLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGdldFRva2VucygpIHtcXG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5nZXQoJy9vYXV0aC9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gcmVzcG9uc2UuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIEdldCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBzY29wZXMuXFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgZ2V0U2NvcGVzKCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmdldCgnL29hdXRoL3Njb3BlcycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjb3BlcyA9IHJlc3BvbnNlLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSxcXG5cXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiBTaG93IHRoZSBmb3JtIGZvciBjcmVhdGluZyBuZXcgdG9rZW5zLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHNob3dDcmVhdGVUb2tlbkZvcm0oKSB7XFxuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtdG9rZW4nKS5tb2RhbCgnc2hvdycpO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogQ3JlYXRlIGEgbmV3IHBlcnNvbmFsIGFjY2VzcyB0b2tlbi5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBzdG9yZSgpIHtcXG4gICAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IG51bGw7XFxuXFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lcnJvcnMgPSBbXTtcXG5cXG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5wb3N0KCcvb2F1dGgvcGVyc29uYWwtYWNjZXNzLXRva2VucycsIHRoaXMuZm9ybSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5uYW1lID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zY29wZXMgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmVycm9ycyA9IFtdO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHJlc3BvbnNlLmRhdGEudG9rZW4pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBY2Nlc3NUb2tlbihyZXNwb25zZS5kYXRhLmFjY2Vzc1Rva2VuKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChyZXNwb25zZSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuZGF0YSA9PT0gJ29iamVjdCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lcnJvcnMgPSBfLmZsYXR0ZW4oXy50b0FycmF5KHJlc3BvbnNlLmRhdGEpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kaXIodGhpcy5mb3JtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lcnJvcnMgPSBbJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLiddO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSxcXG5cXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiBUb2dnbGUgdGhlIGdpdmVuIHNjb3BlIGluIHRoZSBsaXN0IG9mIGFzc2lnbmVkIHNjb3Blcy5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICB0b2dnbGVTY29wZShzY29wZSkge1xcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zY29wZUlzQXNzaWduZWQoc2NvcGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2NvcGVzID0gXy5yZWplY3QodGhpcy5mb3JtLnNjb3BlcywgcyA9PiBzID09IHNjb3BlKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zY29wZXMucHVzaChzY29wZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gc2NvcGUgaGFzIGJlZW4gYXNzaWduZWQgdG8gdGhlIHRva2VuLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHNjb3BlSXNBc3NpZ25lZChzY29wZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXy5pbmRleE9mKHRoaXMuZm9ybS5zY29wZXMsIHNjb3BlKSA+PSAwO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogU2hvdyB0aGUgZ2l2ZW4gYWNjZXNzIHRva2VuIHRvIHRoZSB1c2VyLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHNob3dBY2Nlc3NUb2tlbihhY2Nlc3NUb2tlbikge1xcbiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtY3JlYXRlLXRva2VuJykubW9kYWwoJ2hpZGUnKTtcXG5cXG4gICAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xcblxcbiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtYWNjZXNzLXRva2VuJykubW9kYWwoJ3Nob3cnKTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIFJldm9rZSB0aGUgZ2l2ZW4gdG9rZW4uXFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgcmV2b2tlKHRva2VuKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAuZGVsZXRlKCcvb2F1dGgvcGVyc29uYWwtYWNjZXNzLXRva2Vucy8nICsgdG9rZW4uaWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRva2VucygpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbjwvc2NyaXB0PlxcblwiXX1dKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtMjI1Nzc4YzJcIixcInNjb3BlZFwiOnRydWUsXCJoYXNJbmxpbmVDb25maWdcIjp0cnVlfSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9QZXJzb25hbEFjY2Vzc1Rva2Vucy52dWVcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"alert.vue\"}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYWxlcnQudnVlPzIxNTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKSgpO1xuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuXFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJcIixcImZpbGVcIjpcImFsZXJ0LnZ1ZVwifV0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL34vdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi0zZWRlZjNiYVwiLFwic2NvcGVkXCI6dHJ1ZSxcImhhc0lubGluZUNvbmZpZ1wiOnRydWV9IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2FsZXJ0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\ntd[data-v-5301a236] {\\n font-size: 13px;\\n}\\nth[data-v-5301a236] {\\n font-size: 13px;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"importer.vue?376dfe74\"],\"names\":[],\"mappings\":\";AACA;IACA,gBAAA;CACA;AAEA;IACA,gBAAA;CACA\",\"file\":\"importer.vue\",\"sourcesContent\":[\"<style scoped>\\ntd {\\n font-size: 13px;\\n}\\n\\nth {\\n font-size: 13px;\\n}\\n</style>\\n<template>\\n <div class=\\\"row\\\">\\n <alert v-show=\\\"alert.visible\\\" :alertType=\\\"alert.type\\\" v-on:hide=\\\"alert.visible = false\\\">{{ alert.message }}</alert>\\n <errors :errors=\\\"importErrors\\\"></errors>\\n <modal v-model=\\\"displayImportModal\\\" effect=\\\"fade\\\">\\n <div slot=\\\"modal-header\\\" class=\\\"modal-header\\\">\\n <h4 class=\\\"modal-title\\\">Import File:</h4>\\n </div>\\n <div slot=\\\"modal-body\\\" class=\\\"modal-body\\\">\\n <div class=\\\"dynamic-form-row\\\">\\n <div class=\\\"col-md-4 col-xs-12\\\">\\n <label for=\\\"import-type\\\">Import Type:</label>\\n </div>\\n <div class=\\\"col-md-8 col-xs-12\\\">\\n <select2 :options=\\\"modal.importTypes\\\" v-model=\\\"modal.importType\\\">\\n <option disabled value=\\\"0\\\"></option>\\n </select2>\\n </div>\\n </div>\\n <div class=\\\"dynamic-form-row\\\">\\n <div class=\\\"col-md-4 col-xs-12\\\">\\n <label for=\\\"import-update\\\">Update Existing Values?:</label>\\n </div>\\n <div class=\\\"col-md-8 col-xs-12\\\">\\n <input type=\\\"checkbox\\\" name=\\\"import-update\\\" v-model=\\\"modal.update\\\">\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"modal-footer\\\" slot=\\\"modal-footer\\\">\\n <div class=\\\"alert alert-success col-md-5 col-md-offset-1\\\" style=\\\"text-align:left\\\" v-if=\\\"modal.statusText\\\">{{ this.modal.statusText }}</div>\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" @click=\\\"displayImportModal = false\\\">Cancel</button>\\n <button type=\\\"submit\\\" class=\\\"btn btn-primary\\\" @click=\\\"postSave\\\">Process</button>\\n </div>\\n </modal>\\n <div class=\\\"col-md-12\\\">\\n <div class=\\\"box\\\">\\n <div class=\\\"box-body\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-md-3\\\">\\n <!-- The fileinput-button span is used to style the file input field as button -->\\n <span class=\\\"btn btn-info fileinput-button\\\">\\n <span>Select Import File...</span>\\n <!-- The file input field used as target for the file upload widget -->\\n <input id=\\\"fileupload\\\" type=\\\"file\\\" name=\\\"files[]\\\" data-url=\\\"/api/v1/imports\\\" accept=\\\"text/csv\\\">\\n </span>\\n </div>\\n <div class=\\\"col-md-9\\\" v-show=\\\"progress.visible\\\" style=\\\"padding-bottom:20px\\\">\\n <div class=\\\"col-md-11\\\">\\n <div class=\\\"progress progress-striped-active\\\" style=\\\"margin-top: 8px\\\">\\n <div class=\\\"progress-bar\\\" :class=\\\"progress.currentClass\\\" role=\\\"progressbar\\\" :style=\\\"progressWidth\\\">\\n <span>{{ progress.statusText }}</span>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"row\\\">\\n <div class=\\\"col-md-12\\\" style=\\\"padding-top: 30px;\\\">\\n <table class=\\\"table table-striped\\\" id=\\\"upload-table\\\">\\n <thead>\\n <th>File</th>\\n <th>Created</th>\\n <th>Size</th>\\n <th></th>\\n </thead>\\n <tbody>\\n <tr v-for=\\\"file in files\\\">\\n <td>{{ file.file_path }}</td>\\n <td>{{ file.created_at }} </td>\\n <td>{{ file.filesize }}</td>\\n <td>\\n <button class=\\\"btn btn-sm btn-info\\\" @click=\\\"showModal(file)\\\">Process</button>\\n <button class=\\\"btn btn-danger\\\" @click=\\\"deleteFile(file)\\\"><i class=\\\"fa fa-trash icon-white\\\"></i></button>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\n require('blueimp-file-upload');\\n var modal = require('vue-strap').modal\\n export default {\\n /*\\n * The component's data.\\n */\\n data() {\\n return {\\n files: [],\\n displayImportModal: false,\\n activeFile: null,\\n alert: {\\n type: null,\\n message: null,\\n visible: false,\\n },\\n modal: {\\n importType: 'asset',\\n update: false,\\n importTypes: [\\n { id: 'asset', text: 'Assets' },\\n { id: 'accessory', text: 'Accessories' },\\n { id: 'consumable', text: 'Consumable' },\\n { id: 'component', text: 'Components' },\\n { id: 'license', text: 'Licenses' }\\n ],\\n statusText: null,\\n },\\n importErrors: null,\\n progress: {\\n currentClass: \\\"progress-bar-warning\\\",\\n currentPercent: \\\"0\\\",\\n statusText: '',\\n visible: false\\n }\\n };\\n },\\n\\n /**\\n * Prepare the component (Vue 2.x).\\n */\\n mounted() {\\n this.fetchFiles();\\n let vm = this;\\n $('#fileupload').fileupload({\\n dataType: 'json',\\n done(e, data) {\\n vm.progress.currentClass=\\\"progress-bar-success\\\";\\n vm.progress.statusText = \\\"Success!\\\";\\n vm.files = data.result.files.concat(vm.files);\\n },\\n add(e, data) {\\n data.headers = {\\n \\\"X-Requested-With\\\": 'XMLHttpRequest',\\n \\\"X-CSRF-TOKEN\\\": Laravel.csrfToken\\n };\\n data.process().done( () => {data.submit();});\\n vm.progress.visible=true;\\n },\\n progress(e, data) {\\n var progress = parseInt((data.loaded / data.total * 100, 10));\\n vm.progress.currentPercent = progress;\\n vm.progress.statusText = progress+'% Complete';\\n },\\n fail(e, data) {\\n vm.progress.currentClass = \\\"progress-bar-danger\\\";\\n // Display any errors returned from the $.ajax()\\n vm.progress.statusText = data.jqXHR.responseJSON.messages;\\n }\\n })\\n },\\n\\n methods: {\\n fetchFiles() {\\n this.$http.get('/api/v1/imports')\\n .then( ({data}) => this.files = data, // Success\\n //Fail\\n (response) => {\\n this.alert.type=\\\"danger\\\";\\n this.alert.visible=true;\\n this.alert.message=\\\"Something went wrong fetching files...\\\";\\n });\\n },\\n deleteFile(file, key) {\\n this.$http.delete(\\\"/api/v1/imports/\\\"+file.id)\\n .then((response) => this.files.splice(key, 1), // Success\\n (response) => {// Fail\\n this.alert.type=\\\"danger\\\";\\n this.alert.visible=true;\\n this.alert.message=response.body.messages;\\n }\\n );\\n },\\n showModal(file) {\\n this.activeFile = file;\\n this.displayImportModal = true;\\n },\\n\\n postSave() {\\n this.modal.statusText = \\\"Processing...\\\";\\n this.$http.post('/api/v1/imports/process/'+this.activeFile.id, {\\n 'import-update': this.modal.update,\\n 'import-type': this.modal.importType\\n }).then( (response) => {\\n // Success\\n this.modal.statusText = \\\"Success... Redirecting.\\\";\\n window.location.href = response.body.messages.redirect_url;\\n }, (response) => {\\n // Failure\\n if(response.body.status == 'import-errors') {\\n this.importErrors = response.body.messages;\\n } else {\\n this.alert.message= response.body.messages;\\n this.alert.type=\\\"danger\\\";\\n this.alert.visible=true;\\n }\\n this.displayImportModal=false;\\n });\\n }\\n\\n },\\n\\n computed: {\\n progressWidth() {\\n return \\\"width: \\\"+this.progress.currentPercent*10+'%';\\n }\\n },\\n\\n components: {\\n modal,\\n errors: require('./importer-errors.vue'),\\n alert: require('../alert.vue'),\\n select2: require('../select2.vue')\\n }\\n }\\n\\n</script>\\n\"]}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlP2RiMmUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKSgpO1xuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxudGRbZGF0YS12LTUzMDFhMjM2XSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG59XFxudGhbZGF0YS12LTUzMDFhMjM2XSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG59XFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcImltcG9ydGVyLnZ1ZT8zNzZkZmU3NFwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBQ0E7SUFDQSxnQkFBQTtDQUNBO0FBRUE7SUFDQSxnQkFBQTtDQUNBXCIsXCJmaWxlXCI6XCJpbXBvcnRlci52dWVcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHN0eWxlIHNjb3BlZD5cXG50ZCB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG59XFxuXFxudGgge1xcbiAgICBmb250LXNpemU6IDEzcHg7XFxufVxcbjwvc3R5bGU+XFxuPHRlbXBsYXRlPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGFsZXJ0IHYtc2hvdz1cXFwiYWxlcnQudmlzaWJsZVxcXCIgOmFsZXJ0VHlwZT1cXFwiYWxlcnQudHlwZVxcXCIgdi1vbjpoaWRlPVxcXCJhbGVydC52aXNpYmxlID0gZmFsc2VcXFwiPnt7IGFsZXJ0Lm1lc3NhZ2UgfX08L2FsZXJ0PlxcbiAgICAgICAgPGVycm9ycyA6ZXJyb3JzPVxcXCJpbXBvcnRFcnJvcnNcXFwiPjwvZXJyb3JzPlxcbiAgICAgICAgPG1vZGFsIHYtbW9kZWw9XFxcImRpc3BsYXlJbXBvcnRNb2RhbFxcXCIgZWZmZWN0PVxcXCJmYWRlXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IHNsb3Q9XFxcIm1vZGFsLWhlYWRlclxcXCIgY2xhc3M9XFxcIm1vZGFsLWhlYWRlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cXFwibW9kYWwtdGl0bGVcXFwiPkltcG9ydCBGaWxlOjwvaDQ+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBzbG90PVxcXCJtb2RhbC1ib2R5XFxcIiBjbGFzcz1cXFwibW9kYWwtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImR5bmFtaWMtZm9ybS1yb3dcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTQgY29sLXhzLTEyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwiaW1wb3J0LXR5cGVcXFwiPkltcG9ydCBUeXBlOjwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC04IGNvbC14cy0xMlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdDIgOm9wdGlvbnM9XFxcIm1vZGFsLmltcG9ydFR5cGVzXFxcIiB2LW1vZGVsPVxcXCJtb2RhbC5pbXBvcnRUeXBlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBkaXNhYmxlZCB2YWx1ZT1cXFwiMFxcXCI+PC9vcHRpb24+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3QyPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZHluYW1pYy1mb3JtLXJvd1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtNCBjb2wteHMtMTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJpbXBvcnQtdXBkYXRlXFxcIj5VcGRhdGUgRXhpc3RpbmcgVmFsdWVzPzo8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtOCBjb2wteHMtMTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJjaGVja2JveFxcXCIgbmFtZT1cXFwiaW1wb3J0LXVwZGF0ZVxcXCIgdi1tb2RlbD1cXFwibW9kYWwudXBkYXRlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWZvb3RlclxcXCIgc2xvdD1cXFwibW9kYWwtZm9vdGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiYWxlcnQgYWxlcnQtc3VjY2VzcyBjb2wtbWQtNSBjb2wtbWQtb2Zmc2V0LTFcXFwiIHN0eWxlPVxcXCJ0ZXh0LWFsaWduOmxlZnRcXFwiIHYtaWY9XFxcIm1vZGFsLnN0YXR1c1RleHRcXFwiPnt7IHRoaXMubW9kYWwuc3RhdHVzVGV4dCB9fTwvZGl2PlxcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XFxcImJ1dHRvblxcXCIgY2xhc3M9XFxcImJ0biBidG4tZGVmYXVsdFxcXCIgQGNsaWNrPVxcXCJkaXNwbGF5SW1wb3J0TW9kYWwgPSBmYWxzZVxcXCI+Q2FuY2VsPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwic3VibWl0XFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIiBAY2xpY2s9XFxcInBvc3RTYXZlXFxcIj5Qcm9jZXNzPC9idXR0b24+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L21vZGFsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJib3hcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJib3gtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0zXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUaGUgZmlsZWlucHV0LWJ1dHRvbiBzcGFuIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGZpbGUgaW5wdXQgZmllbGQgYXMgYnV0dG9uIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYnRuIGJ0bi1pbmZvIGZpbGVpbnB1dC1idXR0b25cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2VsZWN0IEltcG9ydCBGaWxlLi4uPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUaGUgZmlsZSBpbnB1dCBmaWVsZCB1c2VkIGFzIHRhcmdldCBmb3IgdGhlIGZpbGUgdXBsb2FkIHdpZGdldCAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cXFwiZmlsZXVwbG9hZFxcXCIgdHlwZT1cXFwiZmlsZVxcXCIgbmFtZT1cXFwiZmlsZXNbXVxcXCIgZGF0YS11cmw9XFxcIi9hcGkvdjEvaW1wb3J0c1xcXCIgYWNjZXB0PVxcXCJ0ZXh0L2NzdlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtOVxcXCIgdi1zaG93PVxcXCJwcm9ncmVzcy52aXNpYmxlXFxcIiBzdHlsZT1cXFwicGFkZGluZy1ib3R0b206MjBweFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkLWFjdGl2ZVxcXCIgc3R5bGU9XFxcIm1hcmdpbi10b3A6IDhweFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyXFxcIiA6Y2xhc3M9XFxcInByb2dyZXNzLmN1cnJlbnRDbGFzc1xcXCIgcm9sZT1cXFwicHJvZ3Jlc3NiYXJcXFwiIDpzdHlsZT1cXFwicHJvZ3Jlc3NXaWR0aFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2dyZXNzLnN0YXR1c1RleHQgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIiBzdHlsZT1cXFwicGFkZGluZy10b3A6IDMwcHg7XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVxcXCJ0YWJsZSB0YWJsZS1zdHJpcGVkXFxcIiBpZD1cXFwidXBsb2FkLXRhYmxlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RmlsZTwvdGg+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNyZWF0ZWQ8L3RoPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TaXplPC90aD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHYtZm9yPVxcXCJmaWxlIGluIGZpbGVzXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZpbGUuZmlsZV9wYXRoIH19PC90ZD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZpbGUuY3JlYXRlZF9hdCB9fSA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZmlsZS5maWxlc2l6ZSB9fTwvdGQ+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XFxcImJ0biBidG4tc20gYnRuLWluZm9cXFwiIEBjbGljaz1cXFwic2hvd01vZGFsKGZpbGUpXFxcIj5Qcm9jZXNzPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLWRhbmdlclxcXCIgQGNsaWNrPVxcXCJkZWxldGVGaWxlKGZpbGUpXFxcIj48aSBjbGFzcz1cXFwiZmEgZmEtdHJhc2ggaWNvbi13aGl0ZVxcXCI+PC9pPjwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdD5cXG4gICAgcmVxdWlyZSgnYmx1ZWltcC1maWxlLXVwbG9hZCcpO1xcbiAgICB2YXIgbW9kYWwgPSByZXF1aXJlKCd2dWUtc3RyYXAnKS5tb2RhbFxcbiAgICBleHBvcnQgZGVmYXVsdCB7XFxuICAgICAgICAvKlxcbiAgICAgICAgICogVGhlIGNvbXBvbmVudCdzIGRhdGEuXFxuICAgICAgICAgKi9cXG4gICAgICAgIGRhdGEoKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgZmlsZXM6IFtdLFxcbiAgICAgICAgICAgICAgICBkaXNwbGF5SW1wb3J0TW9kYWw6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBhY3RpdmVGaWxlOiBudWxsLFxcbiAgICAgICAgICAgICAgICBhbGVydDoge1xcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgbW9kYWw6IHtcXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydFR5cGU6ICdhc3NldCcsXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0VHlwZXM6IFtcXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnYXNzZXQnLCB0ZXh0OiAnQXNzZXRzJyB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdhY2Nlc3NvcnknLCB0ZXh0OiAnQWNjZXNzb3JpZXMnIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2NvbnN1bWFibGUnLCB0ZXh0OiAnQ29uc3VtYWJsZScgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnY29tcG9uZW50JywgdGV4dDogJ0NvbXBvbmVudHMnIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2xpY2Vuc2UnLCB0ZXh0OiAnTGljZW5zZXMnIH1cXG4gICAgICAgICAgICAgICAgICAgIF0sXFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiBudWxsLFxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBpbXBvcnRFcnJvcnM6IG51bGwsXFxuICAgICAgICAgICAgICAgIHByb2dyZXNzOiB7XFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2xhc3M6IFxcXCJwcm9ncmVzcy1iYXItd2FybmluZ1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGVyY2VudDogXFxcIjBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogJycsXFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICAvKipcXG4gICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDIueCkuXFxuICAgICAgICAgKi9cXG4gICAgICAgIG1vdW50ZWQoKSB7XFxuICAgICAgICAgICAgdGhpcy5mZXRjaEZpbGVzKCk7XFxuICAgICAgICAgICAgbGV0IHZtID0gdGhpcztcXG4gICAgICAgICAgICAkKCcjZmlsZXVwbG9hZCcpLmZpbGV1cGxvYWQoe1xcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxcbiAgICAgICAgICAgICAgICBkb25lKGUsIGRhdGEpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZtLnByb2dyZXNzLmN1cnJlbnRDbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLXN1Y2Nlc3NcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3Muc3RhdHVzVGV4dCA9IFxcXCJTdWNjZXNzIVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB2bS5maWxlcyA9IGRhdGEucmVzdWx0LmZpbGVzLmNvbmNhdCh2bS5maWxlcyk7XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGFkZChlLCBkYXRhKSB7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhLmhlYWRlcnMgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlgtUmVxdWVzdGVkLVdpdGhcXFwiOiAnWE1MSHR0cFJlcXVlc3QnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJYLUNTUkYtVE9LRU5cXFwiOiBMYXJhdmVsLmNzcmZUb2tlblxcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJvY2VzcygpLmRvbmUoICgpID0+IHtkYXRhLnN1Ym1pdCgpO30pO1xcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3MudmlzaWJsZT10cnVlO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwcm9ncmVzcyhlLCBkYXRhKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZ3Jlc3MgPSBwYXJzZUludCgoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkpO1xcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3MuY3VycmVudFBlcmNlbnQgPSBwcm9ncmVzcztcXG4gICAgICAgICAgICAgICAgICAgIHZtLnByb2dyZXNzLnN0YXR1c1RleHQgPSBwcm9ncmVzcysnJSBDb21wbGV0ZSc7XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGZhaWwoZSwgZGF0YSkge1xcbiAgICAgICAgICAgICAgICAgICAgdm0ucHJvZ3Jlc3MuY3VycmVudENsYXNzID0gXFxcInByb2dyZXNzLWJhci1kYW5nZXJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGxheSBhbnkgZXJyb3JzIHJldHVybmVkIGZyb20gdGhlICQuYWpheCgpXFxuICAgICAgICAgICAgICAgICAgICB2bS5wcm9ncmVzcy5zdGF0dXNUZXh0ID0gZGF0YS5qcVhIUi5yZXNwb25zZUpTT04ubWVzc2FnZXM7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSxcXG5cXG4gICAgICAgIG1ldGhvZHM6IHtcXG4gICAgICAgICAgICBmZXRjaEZpbGVzKCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmdldCgnL2FwaS92MS9pbXBvcnRzJylcXG4gICAgICAgICAgICAgICAgLnRoZW4oICh7ZGF0YX0pID0+IHRoaXMuZmlsZXMgPSBkYXRhLCAvLyBTdWNjZXNzXFxuICAgICAgICAgICAgICAgICAgICAvL0ZhaWxcXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LnR5cGU9XFxcImRhbmdlclxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LnZpc2libGU9dHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQubWVzc2FnZT1cXFwiU29tZXRoaW5nIHdlbnQgd3JvbmcgZmV0Y2hpbmcgZmlsZXMuLi5cXFwiO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGRlbGV0ZUZpbGUoZmlsZSwga2V5KSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAuZGVsZXRlKFxcXCIvYXBpL3YxL2ltcG9ydHMvXFxcIitmaWxlLmlkKVxcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHRoaXMuZmlsZXMuc3BsaWNlKGtleSwgMSksIC8vIFN1Y2Nlc3NcXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gey8vIEZhaWxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LnR5cGU9XFxcImRhbmdlclxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC52aXNpYmxlPXRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5tZXNzYWdlPXJlc3BvbnNlLmJvZHkubWVzc2FnZXM7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBzaG93TW9kYWwoZmlsZSkge1xcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbGUgPSBmaWxlO1xcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlJbXBvcnRNb2RhbCA9IHRydWU7XFxuICAgICAgICAgICAgfSxcXG5cXG4gICAgICAgICAgICBwb3N0U2F2ZSgpIHtcXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zdGF0dXNUZXh0ID0gXFxcIlByb2Nlc3NpbmcuLi5cXFwiO1xcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLnBvc3QoJy9hcGkvdjEvaW1wb3J0cy9wcm9jZXNzLycrdGhpcy5hY3RpdmVGaWxlLmlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAnaW1wb3J0LXVwZGF0ZSc6IHRoaXMubW9kYWwudXBkYXRlLFxcbiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydC10eXBlJzogdGhpcy5tb2RhbC5pbXBvcnRUeXBlXFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oIChyZXNwb25zZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgLy8gU3VjY2Vzc1xcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zdGF0dXNUZXh0ID0gXFxcIlN1Y2Nlc3MuLi4gUmVkaXJlY3RpbmcuXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UuYm9keS5tZXNzYWdlcy5yZWRpcmVjdF91cmw7XFxuICAgICAgICAgICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFpbHVyZVxcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuYm9keS5zdGF0dXMgPT0gJ2ltcG9ydC1lcnJvcnMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRFcnJvcnMgPSByZXNwb25zZS5ib2R5Lm1lc3NhZ2VzO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lm1lc3NhZ2U9IHJlc3BvbnNlLmJvZHkubWVzc2FnZXM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC50eXBlPVxcXCJkYW5nZXJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQudmlzaWJsZT10cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW1wb3J0TW9kYWw9ZmFsc2U7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgIH0sXFxuXFxuICAgICAgICBjb21wdXRlZDoge1xcbiAgICAgICAgICAgIHByb2dyZXNzV2lkdGgoKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwid2lkdGg6IFxcXCIrdGhpcy5wcm9ncmVzcy5jdXJyZW50UGVyY2VudCoxMCsnJSc7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSxcXG5cXG4gICAgICAgIGNvbXBvbmVudHM6IHtcXG4gICAgICAgICAgICBtb2RhbCxcXG4gICAgICAgICAgICBlcnJvcnM6IHJlcXVpcmUoJy4vaW1wb3J0ZXItZXJyb3JzLnZ1ZScpLFxcbiAgICAgICAgICAgIGFsZXJ0OiByZXF1aXJlKCcuLi9hbGVydC52dWUnKSxcXG4gICAgICAgICAgICBzZWxlY3QyOiByZXF1aXJlKCcuLi9zZWxlY3QyLnZ1ZScpXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG48L3NjcmlwdD5cXG5cIl19XSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTUzMDFhMjM2XCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"importer-errors.vue\"}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXItZXJyb3JzLnZ1ZT84ZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoKTtcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIlxcblxcblwiLCBcIlwiLCB7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiXCIsXCJmaWxlXCI6XCJpbXBvcnRlci1lcnJvcnMudnVlXCJ9XSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTU2NjdjMzEyXCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXItZXJyb3JzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n.action-link[data-v-de0d0e4e] {\\n cursor: pointer;\\n}\\n.m-b-none[data-v-de0d0e4e] {\\n margin-bottom: 0;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"AuthorizedClients.vue?a99076c0\"],\"names\":[],\"mappings\":\";AACA;IACA,gBAAA;CACA;AAEA;IACA,iBAAA;CACA\",\"file\":\"AuthorizedClients.vue\",\"sourcesContent\":[\"<style scoped>\\n .action-link {\\n cursor: pointer;\\n }\\n\\n .m-b-none {\\n margin-bottom: 0;\\n }\\n</style>\\n\\n<template>\\n <div>\\n <div v-if=\\\"tokens.length > 0\\\">\\n <div class=\\\"panel panel-default\\\">\\n <div class=\\\"panel-heading\\\">Authorized Applications</div>\\n\\n <div class=\\\"panel-body\\\">\\n <!-- Authorized Tokens -->\\n <table class=\\\"table table-borderless m-b-none\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>Scopes</th>\\n <th></th>\\n </tr>\\n </thead>\\n\\n <tbody>\\n <tr v-for=\\\"token in tokens\\\">\\n <!-- Client Name -->\\n <td style=\\\"vertical-align: middle;\\\">\\n {{ token.client.name }}\\n </td>\\n\\n <!-- Scopes -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <span v-if=\\\"token.scopes.length > 0\\\">\\n {{ token.scopes.join(', ') }}\\n </span>\\n </td>\\n\\n <!-- Revoke Button -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <a class=\\\"action-link text-danger\\\" @click=\\\"revoke(token)\\\">\\n Revoke\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\n export default {\\n /*\\n * The component's data.\\n */\\n data() {\\n return {\\n tokens: []\\n };\\n },\\n\\n /**\\n * Prepare the component (Vue 1.x).\\n */\\n ready() {\\n this.prepareComponent();\\n },\\n\\n /**\\n * Prepare the component (Vue 2.x).\\n */\\n mounted() {\\n this.prepareComponent();\\n },\\n\\n methods: {\\n /**\\n * Prepare the component (Vue 2.x).\\n */\\n prepareComponent() {\\n this.getTokens();\\n },\\n\\n /**\\n * Get all of the authorized tokens for the user.\\n */\\n getTokens() {\\n this.$http.get('/oauth/tokens')\\n .then(response => {\\n this.tokens = response.data;\\n });\\n },\\n\\n /**\\n * Revoke the given token.\\n */\\n revoke(token) {\\n this.$http.delete('/oauth/tokens/' + token.id)\\n .then(response => {\\n this.getTokens();\\n });\\n }\\n }\\n }\\n</script>\\n\"]}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlPzJhOTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKSgpO1xuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmFjdGlvbi1saW5rW2RhdGEtdi1kZTBkMGU0ZV0ge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5tLWItbm9uZVtkYXRhLXYtZGUwZDBlNGVdIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIkF1dGhvcml6ZWRDbGllbnRzLnZ1ZT9hOTkwNzZjMFwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBQ0E7SUFDQSxnQkFBQTtDQUNBO0FBRUE7SUFDQSxpQkFBQTtDQUNBXCIsXCJmaWxlXCI6XCJBdXRob3JpemVkQ2xpZW50cy52dWVcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHN0eWxlIHNjb3BlZD5cXG4gICAgLmFjdGlvbi1saW5rIHtcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgfVxcblxcbiAgICAubS1iLW5vbmUge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgfVxcbjwvc3R5bGU+XFxuXFxuPHRlbXBsYXRlPlxcbiAgICA8ZGl2PlxcbiAgICAgICAgPGRpdiB2LWlmPVxcXCJ0b2tlbnMubGVuZ3RoID4gMFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWhlYWRpbmdcXFwiPkF1dGhvcml6ZWQgQXBwbGljYXRpb25zPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBdXRob3JpemVkIFRva2VucyAtLT5cXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cXFwidGFibGUgdGFibGUtYm9yZGVybGVzcyBtLWItbm9uZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U2NvcGVzPC90aD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XFxcInRva2VuIGluIHRva2Vuc1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENsaWVudCBOYW1lIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVxcXCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9rZW4uY2xpZW50Lm5hbWUgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNjb3BlcyAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cXFwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcInRva2VuLnNjb3Blcy5sZW5ndGggPiAwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9rZW4uc2NvcGVzLmpvaW4oJywgJykgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXZva2UgQnV0dG9uIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVxcXCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XFxcImFjdGlvbi1saW5rIHRleHQtZGFuZ2VyXFxcIiBAY2xpY2s9XFxcInJldm9rZSh0b2tlbilcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXZva2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQ+XFxuICAgIGV4cG9ydCBkZWZhdWx0IHtcXG4gICAgICAgIC8qXFxuICAgICAgICAgKiBUaGUgY29tcG9uZW50J3MgZGF0YS5cXG4gICAgICAgICAqL1xcbiAgICAgICAgZGF0YSgpIHtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICB0b2tlbnM6IFtdXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICAvKipcXG4gICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDEueCkuXFxuICAgICAgICAgKi9cXG4gICAgICAgIHJlYWR5KCkge1xcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUNvbXBvbmVudCgpO1xcbiAgICAgICAgfSxcXG5cXG4gICAgICAgIC8qKlxcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cXG4gICAgICAgICAqL1xcbiAgICAgICAgbW91bnRlZCgpIHtcXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICBtZXRob2RzOiB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBwcmVwYXJlQ29tcG9uZW50KCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLmdldFRva2VucygpO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogR2V0IGFsbCBvZiB0aGUgYXV0aG9yaXplZCB0b2tlbnMgZm9yIHRoZSB1c2VyLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGdldFRva2VucygpIHtcXG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5nZXQoJy9vYXV0aC90b2tlbnMnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlbnMgPSByZXNwb25zZS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogUmV2b2tlIHRoZSBnaXZlbiB0b2tlbi5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICByZXZva2UodG9rZW4pIHtcXG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cC5kZWxldGUoJy9vYXV0aC90b2tlbnMvJyArIHRva2VuLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbnMoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG48L3NjcmlwdD5cXG5cIl19XSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LWRlMGQwZTRlXCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlXG4vLyBtb2R1bGUgaWQgPSAyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n.action-link[data-v-e9c80318] {\\n cursor: pointer;\\n}\\n.m-b-none[data-v-e9c80318] {\\n margin-bottom: 0;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"Clients.vue?35867ce4\"],\"names\":[],\"mappings\":\";AACA;IACA,gBAAA;CACA;AAEA;IACA,iBAAA;CACA\",\"file\":\"Clients.vue\",\"sourcesContent\":[\"<style scoped>\\n .action-link {\\n cursor: pointer;\\n }\\n\\n .m-b-none {\\n margin-bottom: 0;\\n }\\n</style>\\n\\n<template>\\n <div>\\n <div class=\\\"panel panel-default\\\">\\n <div class=\\\"panel-heading\\\">\\n <div style=\\\"display: flex; justify-content: space-between; align-items: center;\\\">\\n <span>\\n OAuth Clients\\n </span>\\n\\n <a class=\\\"action-link\\\" @click=\\\"showCreateClientForm\\\">\\n Create New Client\\n </a>\\n </div>\\n </div>\\n\\n <div class=\\\"panel-body\\\">\\n <!-- Current Clients -->\\n <p class=\\\"m-b-none\\\" v-if=\\\"clients.length === 0\\\">\\n You have not created any OAuth clients.\\n </p>\\n\\n <table class=\\\"table table-borderless m-b-none\\\" v-if=\\\"clients.length > 0\\\">\\n <thead>\\n <tr>\\n <th>Client ID</th>\\n <th>Name</th>\\n <th>Secret</th>\\n <th></th>\\n <th></th>\\n </tr>\\n </thead>\\n\\n <tbody>\\n <tr v-for=\\\"client in clients\\\">\\n <!-- ID -->\\n <td style=\\\"vertical-align: middle;\\\">\\n {{ client.id }}\\n </td>\\n\\n <!-- Name -->\\n <td style=\\\"vertical-align: middle;\\\">\\n {{ client.name }}\\n </td>\\n\\n <!-- Secret -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <code>{{ client.secret }}</code>\\n </td>\\n\\n <!-- Edit Button -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <a class=\\\"action-link\\\" @click=\\\"edit(client)\\\">\\n Edit\\n </a>\\n </td>\\n\\n <!-- Delete Button -->\\n <td style=\\\"vertical-align: middle;\\\">\\n <a class=\\\"action-link text-danger\\\" @click=\\\"destroy(client)\\\">\\n Delete\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n\\n <!-- Create Client Modal -->\\n <div class=\\\"modal fade\\\" id=\\\"modal-create-client\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\">\\n <div class=\\\"modal-dialog\\\">\\n <div class=\\\"modal-content\\\">\\n <div class=\\\"modal-header\\\">\\n <button type=\\\"button \\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-hidden=\\\"true\\\">×</button>\\n\\n <h4 class=\\\"modal-title\\\">\\n Create Client\\n </h4>\\n </div>\\n\\n <div class=\\\"modal-body\\\">\\n <!-- Form Errors -->\\n <div class=\\\"alert alert-danger\\\" v-if=\\\"createForm.errors.length > 0\\\">\\n <p><strong>Whoops!</strong> Something went wrong!</p>\\n <br>\\n <ul>\\n <li v-for=\\\"error in createForm.errors\\\">\\n {{ error }}\\n </li>\\n </ul>\\n </div>\\n\\n <!-- Create Client Form -->\\n <form class=\\\"form-horizontal\\\" role=\\\"form\\\">\\n <!-- Name -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-md-3 control-label\\\">Name</label>\\n\\n <div class=\\\"col-md-7\\\">\\n <input id=\\\"create-client-name\\\" type=\\\"text\\\" class=\\\"form-control\\\"\\n @keyup.enter=\\\"store\\\" v-model=\\\"createForm.name\\\">\\n\\n <span class=\\\"help-block\\\">\\n Something your users will recognize and trust.\\n </span>\\n </div>\\n </div>\\n\\n <!-- Redirect URL -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-md-3 control-label\\\">Redirect URL</label>\\n\\n <div class=\\\"col-md-7\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"redirect\\\"\\n @keyup.enter=\\\"store\\\" v-model=\\\"createForm.redirect\\\">\\n\\n <span class=\\\"help-block\\\">\\n Your application's authorization callback URL.\\n </span>\\n </div>\\n </div>\\n </form>\\n </div>\\n\\n <!-- Modal Actions -->\\n <div class=\\\"modal-footer\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-dismiss=\\\"modal\\\">Close</button>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" @click=\\\"store\\\">\\n Create\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <!-- Edit Client Modal -->\\n <div class=\\\"modal fade\\\" id=\\\"modal-edit-client\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\">\\n <div class=\\\"modal-dialog\\\">\\n <div class=\\\"modal-content\\\">\\n <div class=\\\"modal-header\\\">\\n <button type=\\\"button \\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-hidden=\\\"true\\\">×</button>\\n\\n <h4 class=\\\"modal-title\\\">\\n Edit Client\\n </h4>\\n </div>\\n\\n <div class=\\\"modal-body\\\">\\n <!-- Form Errors -->\\n <div class=\\\"alert alert-danger\\\" v-if=\\\"editForm.errors.length > 0\\\">\\n <p><strong>Whoops!</strong> Something went wrong!</p>\\n <br>\\n <ul>\\n <li v-for=\\\"error in editForm.errors\\\">\\n {{ error }}\\n </li>\\n </ul>\\n </div>\\n\\n <!-- Edit Client Form -->\\n <form class=\\\"form-horizontal\\\" role=\\\"form\\\">\\n <!-- Name -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-md-3 control-label\\\">Name</label>\\n\\n <div class=\\\"col-md-7\\\">\\n <input id=\\\"edit-client-name\\\" type=\\\"text\\\" class=\\\"form-control\\\"\\n @keyup.enter=\\\"update\\\" v-model=\\\"editForm.name\\\">\\n\\n <span class=\\\"help-block\\\">\\n Something your users will recognize and trust.\\n </span>\\n </div>\\n </div>\\n\\n <!-- Redirect URL -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-md-3 control-label\\\">Redirect URL</label>\\n\\n <div class=\\\"col-md-7\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"redirect\\\"\\n @keyup.enter=\\\"update\\\" v-model=\\\"editForm.redirect\\\">\\n\\n <span class=\\\"help-block\\\">\\n Your application's authorization callback URL.\\n </span>\\n </div>\\n </div>\\n </form>\\n </div>\\n\\n <!-- Modal Actions -->\\n <div class=\\\"modal-footer\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-dismiss=\\\"modal\\\">Close</button>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" @click=\\\"update\\\">\\n Save Changes\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\n export default {\\n /*\\n * The component's data.\\n */\\n data() {\\n return {\\n clients: [],\\n\\n createForm: {\\n errors: [],\\n name: '',\\n redirect: ''\\n },\\n\\n editForm: {\\n errors: [],\\n name: '',\\n redirect: ''\\n }\\n };\\n },\\n\\n /**\\n * Prepare the component (Vue 1.x).\\n */\\n ready() {\\n this.prepareComponent();\\n },\\n\\n /**\\n * Prepare the component (Vue 2.x).\\n */\\n mounted() {\\n this.prepareComponent();\\n },\\n\\n methods: {\\n /**\\n * Prepare the component.\\n */\\n prepareComponent() {\\n this.getClients();\\n\\n $('#modal-create-client').on('shown.bs.modal', () => {\\n $('#create-client-name').focus();\\n });\\n\\n $('#modal-edit-client').on('shown.bs.modal', () => {\\n $('#edit-client-name').focus();\\n });\\n },\\n\\n /**\\n * Get all of the OAuth clients for the user.\\n */\\n getClients() {\\n this.$http.get('/oauth/clients')\\n .then(response => {\\n this.clients = response.data;\\n });\\n },\\n\\n /**\\n * Show the form for creating new clients.\\n */\\n showCreateClientForm() {\\n $('#modal-create-client').modal('show');\\n },\\n\\n /**\\n * Create a new OAuth client for the user.\\n */\\n store() {\\n this.persistClient(\\n 'post', '/oauth/clients',\\n this.createForm, '#modal-create-client'\\n );\\n },\\n\\n /**\\n * Edit the given client.\\n */\\n edit(client) {\\n this.editForm.id = client.id;\\n this.editForm.name = client.name;\\n this.editForm.redirect = client.redirect;\\n\\n $('#modal-edit-client').modal('show');\\n },\\n\\n /**\\n * Update the client being edited.\\n */\\n update() {\\n this.persistClient(\\n 'put', '/oauth/clients/' + this.editForm.id,\\n this.editForm, '#modal-edit-client'\\n );\\n },\\n\\n /**\\n * Persist the client to storage using the given form.\\n */\\n persistClient(method, uri, form, modal) {\\n form.errors = [];\\n\\n this.$http[method](uri, form)\\n .then(response => {\\n this.getClients();\\n\\n form.name = '';\\n form.redirect = '';\\n form.errors = [];\\n\\n $(modal).modal('hide');\\n })\\n .catch(response => {\\n if (typeof response.data === 'object') {\\n form.errors = _.flatten(_.toArray(response.data));\\n } else {\\n form.errors = ['Something went wrong. Please try again.'];\\n }\\n });\\n },\\n\\n /**\\n * Destroy the given client.\\n */\\n destroy(client) {\\n this.$http.delete('/oauth/clients/' + client.id)\\n .then(response => {\\n this.getClients();\\n });\\n }\\n }\\n }\\n</script>\\n\"]}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQ2xpZW50cy52dWU/MGI2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKCk7XG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uYWN0aW9uLWxpbmtbZGF0YS12LWU5YzgwMzE4XSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLm0tYi1ub25lW2RhdGEtdi1lOWM4MDMxOF0ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG5cIiwgXCJcIiwge1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wiQ2xpZW50cy52dWU/MzU4NjdjZTRcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQUNBO0lBQ0EsZ0JBQUE7Q0FDQTtBQUVBO0lBQ0EsaUJBQUE7Q0FDQVwiLFwiZmlsZVwiOlwiQ2xpZW50cy52dWVcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHN0eWxlIHNjb3BlZD5cXG4gICAgLmFjdGlvbi1saW5rIHtcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgfVxcblxcbiAgICAubS1iLW5vbmUge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgfVxcbjwvc3R5bGU+XFxuXFxuPHRlbXBsYXRlPlxcbiAgICA8ZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwtaGVhZGluZ1xcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XFxcImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgT0F1dGggQ2xpZW50c1xcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XFxcImFjdGlvbi1saW5rXFxcIiBAY2xpY2s9XFxcInNob3dDcmVhdGVDbGllbnRGb3JtXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgTmV3IENsaWVudFxcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgICAgICAgICAgICAgPCEtLSBDdXJyZW50IENsaWVudHMgLS0+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtLWItbm9uZVxcXCIgdi1pZj1cXFwiY2xpZW50cy5sZW5ndGggPT09IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IE9BdXRoIGNsaWVudHMuXFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVxcXCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIG0tYi1ub25lXFxcIiB2LWlmPVxcXCJjbGllbnRzLmxlbmd0aCA+IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNsaWVudCBJRDwvdGg+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlNlY3JldDwvdGg+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cXG5cXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XFxcImNsaWVudCBpbiBjbGllbnRzXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJRCAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVxcXCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjbGllbnQuaWQgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBOYW1lIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XFxcInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNsaWVudC5uYW1lIH19XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VjcmV0IC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XFxcInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPnt7IGNsaWVudC5zZWNyZXQgfX08L2NvZGU+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRWRpdCBCdXR0b24gLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cXFwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XFxcImFjdGlvbi1saW5rXFxcIiBAY2xpY2s9XFxcImVkaXQoY2xpZW50KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERlbGV0ZSBCdXR0b24gLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cXFwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XFxcImFjdGlvbi1saW5rIHRleHQtZGFuZ2VyXFxcIiBAY2xpY2s9XFxcImRlc3Ryb3koY2xpZW50KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgICAgIDwvdGFibGU+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDwhLS0gQ3JlYXRlIENsaWVudCBNb2RhbCAtLT5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsIGZhZGVcXFwiIGlkPVxcXCJtb2RhbC1jcmVhdGUtY2xpZW50XFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiIHJvbGU9XFxcImRpYWxvZ1xcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtZGlhbG9nXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtY29udGVudFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1oZWFkZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uIFxcXCIgY2xhc3M9XFxcImNsb3NlXFxcIiBkYXRhLWRpc21pc3M9XFxcIm1vZGFsXFxcIiBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCI+JnRpbWVzOzwvYnV0dG9uPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cXFwibW9kYWwtdGl0bGVcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgQ2xpZW50XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3JtIEVycm9ycyAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJhbGVydCBhbGVydC1kYW5nZXJcXFwiIHYtaWY9XFxcImNyZWF0ZUZvcm0uZXJyb3JzLmxlbmd0aCA+IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldob29wcyE8L3N0cm9uZz4gU29tZXRoaW5nIHdlbnQgd3JvbmchPC9wPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cXFwiZXJyb3IgaW4gY3JlYXRlRm9ybS5lcnJvcnNcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVycm9yIH19XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3JlYXRlIENsaWVudCBGb3JtIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVxcXCJmb3JtLWhvcml6b250YWxcXFwiIHJvbGU9XFxcImZvcm1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5hbWUgLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXFxcIj5OYW1lPC9sYWJlbD5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC03XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XFxcImNyZWF0ZS1jbGllbnQtbmFtZVxcXCIgdHlwZT1cXFwidGV4dFxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJzdG9yZVxcXCIgdi1tb2RlbD1cXFwiY3JlYXRlRm9ybS5uYW1lXFxcIj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWV0aGluZyB5b3VyIHVzZXJzIHdpbGwgcmVjb2duaXplIGFuZCB0cnVzdC5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmVkaXJlY3QgVVJMIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwiY29sLW1kLTMgY29udHJvbC1sYWJlbFxcXCI+UmVkaXJlY3QgVVJMPC9sYWJlbD5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC03XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cXFwidGV4dFxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgbmFtZT1cXFwicmVkaXJlY3RcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBrZXl1cC5lbnRlcj1cXFwic3RvcmVcXFwiIHYtbW9kZWw9XFxcImNyZWF0ZUZvcm0ucmVkaXJlY3RcXFwiPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJoZWxwLWJsb2NrXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBhcHBsaWNhdGlvbidzIGF1dGhvcml6YXRpb24gY2FsbGJhY2sgVVJMLlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTW9kYWwgQWN0aW9ucyAtLT5cXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWZvb3RlclxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJidG4gYnRuLWRlZmF1bHRcXFwiIGRhdGEtZGlzbWlzcz1cXFwibW9kYWxcXFwiPkNsb3NlPC9idXR0b24+XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiIEBjbGljaz1cXFwic3RvcmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPCEtLSBFZGl0IENsaWVudCBNb2RhbCAtLT5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsIGZhZGVcXFwiIGlkPVxcXCJtb2RhbC1lZGl0LWNsaWVudFxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIiByb2xlPVxcXCJkaWFsb2dcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWRpYWxvZ1xcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWNvbnRlbnRcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtaGVhZGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XFxcImJ1dHRvbiBcXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCIgZGF0YS1kaXNtaXNzPVxcXCJtb2RhbFxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiPiZ0aW1lczs8L2J1dHRvbj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XFxcIm1vZGFsLXRpdGxlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBDbGllbnRcXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1ib2R5XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm0gRXJyb3JzIC0tPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImFsZXJ0IGFsZXJ0LWRhbmdlclxcXCIgdi1pZj1cXFwiZWRpdEZvcm0uZXJyb3JzLmxlbmd0aCA+IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldob29wcyE8L3N0cm9uZz4gU29tZXRoaW5nIHdlbnQgd3JvbmchPC9wPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cXFwiZXJyb3IgaW4gZWRpdEZvcm0uZXJyb3JzXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlcnJvciB9fVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgQ2xpZW50IEZvcm0gLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XFxcImZvcm0taG9yaXpvbnRhbFxcXCIgcm9sZT1cXFwiZm9ybVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmFtZSAtLT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcXFwiPk5hbWU8L2xhYmVsPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTdcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cXFwiZWRpdC1jbGllbnQtbmFtZVxcXCIgdHlwZT1cXFwidGV4dFxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJ1cGRhdGVcXFwiIHYtbW9kZWw9XFxcImVkaXRGb3JtLm5hbWVcXFwiPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJoZWxwLWJsb2NrXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRoaW5nIHlvdXIgdXNlcnMgd2lsbCByZWNvZ25pemUgYW5kIHRydXN0LlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWRpcmVjdCBVUkwgLS0+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXFxcIj5SZWRpcmVjdCBVUkw8L2xhYmVsPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTdcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJ0ZXh0XFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBuYW1lPVxcXCJyZWRpcmVjdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJ1cGRhdGVcXFwiIHYtbW9kZWw9XFxcImVkaXRGb3JtLnJlZGlyZWN0XFxcIj5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYXBwbGljYXRpb24ncyBhdXRob3JpemF0aW9uIGNhbGxiYWNrIFVSTC5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1vZGFsIEFjdGlvbnMgLS0+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1mb290ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1kZWZhdWx0XFxcIiBkYXRhLWRpc21pc3M9XFxcIm1vZGFsXFxcIj5DbG9zZTwvYnV0dG9uPlxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIiBAY2xpY2s9XFxcInVwZGF0ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmUgQ2hhbmdlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdD5cXG4gICAgZXhwb3J0IGRlZmF1bHQge1xcbiAgICAgICAgLypcXG4gICAgICAgICAqIFRoZSBjb21wb25lbnQncyBkYXRhLlxcbiAgICAgICAgICovXFxuICAgICAgICBkYXRhKCkge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGNsaWVudHM6IFtdLFxcblxcbiAgICAgICAgICAgICAgICBjcmVhdGVGb3JtOiB7XFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJycsXFxuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogJydcXG4gICAgICAgICAgICAgICAgfSxcXG5cXG4gICAgICAgICAgICAgICAgZWRpdEZvcm06IHtcXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiAnJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICAvKipcXG4gICAgICAgICAqIFByZXBhcmUgdGhlIGNvbXBvbmVudCAoVnVlIDEueCkuXFxuICAgICAgICAgKi9cXG4gICAgICAgIHJlYWR5KCkge1xcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUNvbXBvbmVudCgpO1xcbiAgICAgICAgfSxcXG5cXG4gICAgICAgIC8qKlxcbiAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50IChWdWUgMi54KS5cXG4gICAgICAgICAqL1xcbiAgICAgICAgbW91bnRlZCgpIHtcXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVDb21wb25lbnQoKTtcXG4gICAgICAgIH0sXFxuXFxuICAgICAgICBtZXRob2RzOiB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogUHJlcGFyZSB0aGUgY29tcG9uZW50LlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHByZXBhcmVDb21wb25lbnQoKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2xpZW50cygpO1xcblxcbiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtY3JlYXRlLWNsaWVudCcpLm9uKCdzaG93bi5icy5tb2RhbCcsICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICQoJyNjcmVhdGUtY2xpZW50LW5hbWUnKS5mb2N1cygpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgJCgnI21vZGFsLWVkaXQtY2xpZW50Jykub24oJ3Nob3duLmJzLm1vZGFsJywgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgJCgnI2VkaXQtY2xpZW50LW5hbWUnKS5mb2N1cygpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIEdldCBhbGwgb2YgdGhlIE9BdXRoIGNsaWVudHMgZm9yIHRoZSB1c2VyLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGdldENsaWVudHMoKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuJGh0dHAuZ2V0KCcvb2F1dGgvY2xpZW50cycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaWVudHMgPSByZXNwb25zZS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogU2hvdyB0aGUgZm9ybSBmb3IgY3JlYXRpbmcgbmV3IGNsaWVudHMuXFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgc2hvd0NyZWF0ZUNsaWVudEZvcm0oKSB7XFxuICAgICAgICAgICAgICAgICQoJyNtb2RhbC1jcmVhdGUtY2xpZW50JykubW9kYWwoJ3Nob3cnKTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIENyZWF0ZSBhIG5ldyBPQXV0aCBjbGllbnQgZm9yIHRoZSB1c2VyLlxcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIHN0b3JlKCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLnBlcnNpc3RDbGllbnQoXFxuICAgICAgICAgICAgICAgICAgICAncG9zdCcsICcvb2F1dGgvY2xpZW50cycsXFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm0sICcjbW9kYWwtY3JlYXRlLWNsaWVudCdcXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIEVkaXQgdGhlIGdpdmVuIGNsaWVudC5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBlZGl0KGNsaWVudCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLmlkID0gY2xpZW50LmlkO1xcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLm5hbWUgPSBjbGllbnQubmFtZTtcXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5yZWRpcmVjdCA9IGNsaWVudC5yZWRpcmVjdDtcXG5cXG4gICAgICAgICAgICAgICAgJCgnI21vZGFsLWVkaXQtY2xpZW50JykubW9kYWwoJ3Nob3cnKTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIFVwZGF0ZSB0aGUgY2xpZW50IGJlaW5nIGVkaXRlZC5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICB1cGRhdGUoKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMucGVyc2lzdENsaWVudChcXG4gICAgICAgICAgICAgICAgICAgICdwdXQnLCAnL29hdXRoL2NsaWVudHMvJyArIHRoaXMuZWRpdEZvcm0uaWQsXFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLCAnI21vZGFsLWVkaXQtY2xpZW50J1xcbiAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgIH0sXFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICogUGVyc2lzdCB0aGUgY2xpZW50IHRvIHN0b3JhZ2UgdXNpbmcgdGhlIGdpdmVuIGZvcm0uXFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgcGVyc2lzdENsaWVudChtZXRob2QsIHVyaSwgZm9ybSwgbW9kYWwpIHtcXG4gICAgICAgICAgICAgICAgZm9ybS5lcnJvcnMgPSBbXTtcXG5cXG4gICAgICAgICAgICAgICAgdGhpcy4kaHR0cFttZXRob2RdKHVyaSwgZm9ybSlcXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENsaWVudHMoKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtLm5hbWUgPSAnJztcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlZGlyZWN0ID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5lcnJvcnMgPSBbXTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAkKG1vZGFsKS5tb2RhbCgnaGlkZScpO1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChyZXNwb25zZSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0Jykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmVycm9ycyA9IF8uZmxhdHRlbihfLnRvQXJyYXkocmVzcG9uc2UuZGF0YSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZXJyb3JzID0gWydTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9LFxcblxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIERlc3Ryb3kgdGhlIGdpdmVuIGNsaWVudC5cXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBkZXN0cm95KGNsaWVudCkge1xcbiAgICAgICAgICAgICAgICB0aGlzLiRodHRwLmRlbGV0ZSgnL29hdXRoL2NsaWVudHMvJyArIGNsaWVudC5pZClcXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2xpZW50cygpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbjwvc2NyaXB0PlxcblwiXX1dKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtZTljODAzMThcIixcInNjb3BlZFwiOnRydWUsXCJoYXNJbmxpbmVDb25maWdcIjp0cnVlfSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9DbGllbnRzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(0)();\nexports.push([module.i, \"\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"select2.vue\"}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWU/YzkyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKCk7XG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJcXG5cXG5cIiwgXCJcIiwge1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W10sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIlwiLFwiZmlsZVwiOlwic2VsZWN0Mi52dWVcIn1dKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtZmY1NjRhODZcIixcInNjb3BlZFwiOnRydWUsXCJoYXNJbmxpbmVDb25maWdcIjp0cnVlfSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWxlY3QyLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;( function( factory ) {\n\tif ( true ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(3) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.12.1\";\n\n} ) );\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2pxdWVyeS11aS91aS92ZXJzaW9uLmpzP2JkNDEiXSwic291cmNlc0NvbnRlbnQiOlsiKCBmdW5jdGlvbiggZmFjdG9yeSApIHtcblx0aWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblxuXHRcdC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cblx0XHRkZWZpbmUoIFsgXCJqcXVlcnlcIiBdLCBmYWN0b3J5ICk7XG5cdH0gZWxzZSB7XG5cblx0XHQvLyBCcm93c2VyIGdsb2JhbHNcblx0XHRmYWN0b3J5KCBqUXVlcnkgKTtcblx0fVxufSAoIGZ1bmN0aW9uKCAkICkge1xuXG4kLnVpID0gJC51aSB8fCB7fTtcblxucmV0dXJuICQudWkudmVyc2lvbiA9IFwiMS4xMi4xXCI7XG5cbn0gKSApO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2pxdWVyeS11aS91aS92ZXJzaW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\tif ( true ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(3), __webpack_require__(27) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} ) );\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2pxdWVyeS11aS91aS93aWRnZXQuanM/NDliZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGpRdWVyeSBVSSBXaWRnZXQgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFdpZGdldFxuLy8+Pmdyb3VwOiBDb3JlXG4vLz4+ZGVzY3JpcHRpb246IFByb3ZpZGVzIGEgZmFjdG9yeSBmb3IgY3JlYXRpbmcgc3RhdGVmdWwgd2lkZ2V0cyB3aXRoIGEgY29tbW9uIEFQSS5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9qUXVlcnkud2lkZ2V0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL3dpZGdldC9cblxuKCBmdW5jdGlvbiggZmFjdG9yeSApIHtcblx0aWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblxuXHRcdC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cblx0XHRkZWZpbmUoIFsgXCJqcXVlcnlcIiwgXCIuL3ZlcnNpb25cIiBdLCBmYWN0b3J5ICk7XG5cdH0gZWxzZSB7XG5cblx0XHQvLyBCcm93c2VyIGdsb2JhbHNcblx0XHRmYWN0b3J5KCBqUXVlcnkgKTtcblx0fVxufSggZnVuY3Rpb24oICQgKSB7XG5cbnZhciB3aWRnZXRVdWlkID0gMDtcbnZhciB3aWRnZXRTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuJC5jbGVhbkRhdGEgPSAoIGZ1bmN0aW9uKCBvcmlnICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBldmVudHMsIGVsZW0sIGk7XG5cdFx0Zm9yICggaSA9IDA7ICggZWxlbSA9IGVsZW1zWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHR0cnkge1xuXG5cdFx0XHRcdC8vIE9ubHkgdHJpZ2dlciByZW1vdmUgd2hlbiBuZWNlc3NhcnkgdG8gc2F2ZSB0aW1lXG5cdFx0XHRcdGV2ZW50cyA9ICQuX2RhdGEoIGVsZW0sIFwiZXZlbnRzXCIgKTtcblx0XHRcdFx0aWYgKCBldmVudHMgJiYgZXZlbnRzLnJlbW92ZSApIHtcblx0XHRcdFx0XHQkKCBlbGVtICkudHJpZ2dlckhhbmRsZXIoIFwicmVtb3ZlXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBIdHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1XG5cdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0fVxuXHRcdG9yaWcoIGVsZW1zICk7XG5cdH07XG59ICkoICQuY2xlYW5EYXRhICk7XG5cbiQud2lkZ2V0ID0gZnVuY3Rpb24oIG5hbWUsIGJhc2UsIHByb3RvdHlwZSApIHtcblx0dmFyIGV4aXN0aW5nQ29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBiYXNlUHJvdG90eXBlO1xuXG5cdC8vIFByb3hpZWRQcm90b3R5cGUgYWxsb3dzIHRoZSBwcm92aWRlZCBwcm90b3R5cGUgdG8gcmVtYWluIHVubW9kaWZpZWRcblx0Ly8gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhIG1peGluIGZvciBtdWx0aXBsZSB3aWRnZXRzICgjODg3Nilcblx0dmFyIHByb3hpZWRQcm90b3R5cGUgPSB7fTtcblxuXHR2YXIgbmFtZXNwYWNlID0gbmFtZS5zcGxpdCggXCIuXCIgKVsgMCBdO1xuXHRuYW1lID0gbmFtZS5zcGxpdCggXCIuXCIgKVsgMSBdO1xuXHR2YXIgZnVsbE5hbWUgPSBuYW1lc3BhY2UgKyBcIi1cIiArIG5hbWU7XG5cblx0aWYgKCAhcHJvdG90eXBlICkge1xuXHRcdHByb3RvdHlwZSA9IGJhc2U7XG5cdFx0YmFzZSA9ICQuV2lkZ2V0O1xuXHR9XG5cblx0aWYgKCAkLmlzQXJyYXkoIHByb3RvdHlwZSApICkge1xuXHRcdHByb3RvdHlwZSA9ICQuZXh0ZW5kLmFwcGx5KCBudWxsLCBbIHt9IF0uY29uY2F0KCBwcm90b3R5cGUgKSApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIHNlbGVjdG9yIGZvciBwbHVnaW5cblx0JC5leHByWyBcIjpcIiBdWyBmdWxsTmFtZS50b0xvd2VyQ2FzZSgpIF0gPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gISEkLmRhdGEoIGVsZW0sIGZ1bGxOYW1lICk7XG5cdH07XG5cblx0JFsgbmFtZXNwYWNlIF0gPSAkWyBuYW1lc3BhY2UgXSB8fCB7fTtcblx0ZXhpc3RpbmdDb25zdHJ1Y3RvciA9ICRbIG5hbWVzcGFjZSBdWyBuYW1lIF07XG5cdGNvbnN0cnVjdG9yID0gJFsgbmFtZXNwYWNlIF1bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkge1xuXG5cdFx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IFwibmV3XCIga2V5d29yZFxuXHRcdGlmICggIXRoaXMuX2NyZWF0ZVdpZGdldCApIHtcblx0XHRcdHJldHVybiBuZXcgY29uc3RydWN0b3IoIG9wdGlvbnMsIGVsZW1lbnQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGZvciBzaW1wbGUgaW5oZXJpdGFuY2Vcblx0XHQvLyBtdXN0IHVzZSBcIm5ld1wiIGtleXdvcmQgKHRoZSBjb2RlIGFib3ZlIGFsd2F5cyBwYXNzZXMgYXJncylcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLl9jcmVhdGVXaWRnZXQoIG9wdGlvbnMsIGVsZW1lbnQgKTtcblx0XHR9XG5cdH07XG5cblx0Ly8gRXh0ZW5kIHdpdGggdGhlIGV4aXN0aW5nIGNvbnN0cnVjdG9yIHRvIGNhcnJ5IG92ZXIgYW55IHN0YXRpYyBwcm9wZXJ0aWVzXG5cdCQuZXh0ZW5kKCBjb25zdHJ1Y3RvciwgZXhpc3RpbmdDb25zdHJ1Y3Rvciwge1xuXHRcdHZlcnNpb246IHByb3RvdHlwZS52ZXJzaW9uLFxuXG5cdFx0Ly8gQ29weSB0aGUgb2JqZWN0IHVzZWQgdG8gY3JlYXRlIHRoZSBwcm90b3R5cGUgaW4gY2FzZSB3ZSBuZWVkIHRvXG5cdFx0Ly8gcmVkZWZpbmUgdGhlIHdpZGdldCBsYXRlclxuXHRcdF9wcm90bzogJC5leHRlbmQoIHt9LCBwcm90b3R5cGUgKSxcblxuXHRcdC8vIFRyYWNrIHdpZGdldHMgdGhhdCBpbmhlcml0IGZyb20gdGhpcyB3aWRnZXQgaW4gY2FzZSB0aGlzIHdpZGdldCBpc1xuXHRcdC8vIHJlZGVmaW5lZCBhZnRlciBhIHdpZGdldCBpbmhlcml0cyBmcm9tIGl0XG5cdFx0X2NoaWxkQ29uc3RydWN0b3JzOiBbXVxuXHR9ICk7XG5cblx0YmFzZVByb3RvdHlwZSA9IG5ldyBiYXNlKCk7XG5cblx0Ly8gV2UgbmVlZCB0byBtYWtlIHRoZSBvcHRpb25zIGhhc2ggYSBwcm9wZXJ0eSBkaXJlY3RseSBvbiB0aGUgbmV3IGluc3RhbmNlXG5cdC8vIG90aGVyd2lzZSB3ZSdsbCBtb2RpZnkgdGhlIG9wdGlvbnMgaGFzaCBvbiB0aGUgcHJvdG90eXBlIHRoYXQgd2UncmVcblx0Ly8gaW5oZXJpdGluZyBmcm9tXG5cdGJhc2VQcm90b3R5cGUub3B0aW9ucyA9ICQud2lkZ2V0LmV4dGVuZCgge30sIGJhc2VQcm90b3R5cGUub3B0aW9ucyApO1xuXHQkLmVhY2goIHByb3RvdHlwZSwgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdGlmICggISQuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHByb3hpZWRQcm90b3R5cGVbIHByb3AgXSA9IHZhbHVlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRwcm94aWVkUHJvdG90eXBlWyBwcm9wIF0gPSAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZnVuY3Rpb24gX3N1cGVyKCkge1xuXHRcdFx0XHRyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIF9zdXBlckFwcGx5KCBhcmdzICkge1xuXHRcdFx0XHRyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJncyApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBfX3N1cGVyID0gdGhpcy5fc3VwZXI7XG5cdFx0XHRcdHZhciBfX3N1cGVyQXBwbHkgPSB0aGlzLl9zdXBlckFwcGx5O1xuXHRcdFx0XHR2YXIgcmV0dXJuVmFsdWU7XG5cblx0XHRcdFx0dGhpcy5fc3VwZXIgPSBfc3VwZXI7XG5cdFx0XHRcdHRoaXMuX3N1cGVyQXBwbHkgPSBfc3VwZXJBcHBseTtcblxuXHRcdFx0XHRyZXR1cm5WYWx1ZSA9IHZhbHVlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHR0aGlzLl9zdXBlciA9IF9fc3VwZXI7XG5cdFx0XHRcdHRoaXMuX3N1cGVyQXBwbHkgPSBfX3N1cGVyQXBwbHk7XG5cblx0XHRcdFx0cmV0dXJuIHJldHVyblZhbHVlO1xuXHRcdFx0fTtcblx0XHR9ICkoKTtcblx0fSApO1xuXHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSAkLndpZGdldC5leHRlbmQoIGJhc2VQcm90b3R5cGUsIHtcblxuXHRcdC8vIFRPRE86IHJlbW92ZSBzdXBwb3J0IGZvciB3aWRnZXRFdmVudFByZWZpeFxuXHRcdC8vIGFsd2F5cyB1c2UgdGhlIG5hbWUgKyBhIGNvbG9uIGFzIHRoZSBwcmVmaXgsIGUuZy4sIGRyYWdnYWJsZTpzdGFydFxuXHRcdC8vIGRvbid0IHByZWZpeCBmb3Igd2lkZ2V0cyB0aGF0IGFyZW4ndCBET00tYmFzZWRcblx0XHR3aWRnZXRFdmVudFByZWZpeDogZXhpc3RpbmdDb25zdHJ1Y3RvciA/ICggYmFzZVByb3RvdHlwZS53aWRnZXRFdmVudFByZWZpeCB8fCBuYW1lICkgOiBuYW1lXG5cdH0sIHByb3hpZWRQcm90b3R5cGUsIHtcblx0XHRjb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsXG5cdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2UsXG5cdFx0d2lkZ2V0TmFtZTogbmFtZSxcblx0XHR3aWRnZXRGdWxsTmFtZTogZnVsbE5hbWVcblx0fSApO1xuXG5cdC8vIElmIHRoaXMgd2lkZ2V0IGlzIGJlaW5nIHJlZGVmaW5lZCB0aGVuIHdlIG5lZWQgdG8gZmluZCBhbGwgd2lkZ2V0cyB0aGF0XG5cdC8vIGFyZSBpbmhlcml0aW5nIGZyb20gaXQgYW5kIHJlZGVmaW5lIGFsbCBvZiB0aGVtIHNvIHRoYXQgdGhleSBpbmhlcml0IGZyb21cblx0Ly8gdGhlIG5ldyB2ZXJzaW9uIG9mIHRoaXMgd2lkZ2V0LiBXZSdyZSBlc3NlbnRpYWxseSB0cnlpbmcgdG8gcmVwbGFjZSBvbmVcblx0Ly8gbGV2ZWwgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi5cblx0aWYgKCBleGlzdGluZ0NvbnN0cnVjdG9yICkge1xuXHRcdCQuZWFjaCggZXhpc3RpbmdDb25zdHJ1Y3Rvci5fY2hpbGRDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uKCBpLCBjaGlsZCApIHtcblx0XHRcdHZhciBjaGlsZFByb3RvdHlwZSA9IGNoaWxkLnByb3RvdHlwZTtcblxuXHRcdFx0Ly8gUmVkZWZpbmUgdGhlIGNoaWxkIHdpZGdldCB1c2luZyB0aGUgc2FtZSBwcm90b3R5cGUgdGhhdCB3YXNcblx0XHRcdC8vIG9yaWdpbmFsbHkgdXNlZCwgYnV0IGluaGVyaXQgZnJvbSB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGJhc2Vcblx0XHRcdCQud2lkZ2V0KCBjaGlsZFByb3RvdHlwZS5uYW1lc3BhY2UgKyBcIi5cIiArIGNoaWxkUHJvdG90eXBlLndpZGdldE5hbWUsIGNvbnN0cnVjdG9yLFxuXHRcdFx0XHRjaGlsZC5fcHJvdG8gKTtcblx0XHR9ICk7XG5cblx0XHQvLyBSZW1vdmUgdGhlIGxpc3Qgb2YgZXhpc3RpbmcgY2hpbGQgY29uc3RydWN0b3JzIGZyb20gdGhlIG9sZCBjb25zdHJ1Y3RvclxuXHRcdC8vIHNvIHRoZSBvbGQgY2hpbGQgY29uc3RydWN0b3JzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZFxuXHRcdGRlbGV0ZSBleGlzdGluZ0NvbnN0cnVjdG9yLl9jaGlsZENvbnN0cnVjdG9ycztcblx0fSBlbHNlIHtcblx0XHRiYXNlLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKCBjb25zdHJ1Y3RvciApO1xuXHR9XG5cblx0JC53aWRnZXQuYnJpZGdlKCBuYW1lLCBjb25zdHJ1Y3RvciApO1xuXG5cdHJldHVybiBjb25zdHJ1Y3Rvcjtcbn07XG5cbiQud2lkZ2V0LmV4dGVuZCA9IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdHZhciBpbnB1dCA9IHdpZGdldFNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApO1xuXHR2YXIgaW5wdXRJbmRleCA9IDA7XG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblx0dmFyIGtleTtcblx0dmFyIHZhbHVlO1xuXG5cdGZvciAoIDsgaW5wdXRJbmRleCA8IGlucHV0TGVuZ3RoOyBpbnB1dEluZGV4KysgKSB7XG5cdFx0Zm9yICgga2V5IGluIGlucHV0WyBpbnB1dEluZGV4IF0gKSB7XG5cdFx0XHR2YWx1ZSA9IGlucHV0WyBpbnB1dEluZGV4IF1bIGtleSBdO1xuXHRcdFx0aWYgKCBpbnB1dFsgaW5wdXRJbmRleCBdLmhhc093blByb3BlcnR5KCBrZXkgKSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdC8vIENsb25lIG9iamVjdHNcblx0XHRcdFx0aWYgKCAkLmlzUGxhaW5PYmplY3QoIHZhbHVlICkgKSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBrZXkgXSA9ICQuaXNQbGFpbk9iamVjdCggdGFyZ2V0WyBrZXkgXSApID9cblx0XHRcdFx0XHRcdCQud2lkZ2V0LmV4dGVuZCgge30sIHRhcmdldFsga2V5IF0sIHZhbHVlICkgOlxuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBleHRlbmQgc3RyaW5ncywgYXJyYXlzLCBldGMuIHdpdGggb2JqZWN0c1xuXHRcdFx0XHRcdFx0JC53aWRnZXQuZXh0ZW5kKCB7fSwgdmFsdWUgKTtcblxuXHRcdFx0XHQvLyBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBieSByZWZlcmVuY2Vcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YXJnZXRbIGtleSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbiQud2lkZ2V0LmJyaWRnZSA9IGZ1bmN0aW9uKCBuYW1lLCBvYmplY3QgKSB7XG5cdHZhciBmdWxsTmFtZSA9IG9iamVjdC5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWUgfHwgbmFtZTtcblx0JC5mblsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdFx0dmFyIGlzTWV0aG9kQ2FsbCA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiO1xuXHRcdHZhciBhcmdzID0gd2lkZ2V0U2xpY2UuY2FsbCggYXJndW1lbnRzLCAxICk7XG5cdFx0dmFyIHJldHVyblZhbHVlID0gdGhpcztcblxuXHRcdGlmICggaXNNZXRob2RDYWxsICkge1xuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGFuIGVtcHR5IGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8gaGF2ZSB0aGUgaW5zdGFuY2UgbWV0aG9kXG5cdFx0XHQvLyByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIGpRdWVyeSBpbnN0YW5jZVxuXHRcdFx0aWYgKCAhdGhpcy5sZW5ndGggJiYgb3B0aW9ucyA9PT0gXCJpbnN0YW5jZVwiICkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0dmFyIG1ldGhvZFZhbHVlO1xuXHRcdFx0XHRcdHZhciBpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgZnVsbE5hbWUgKTtcblxuXHRcdFx0XHRcdGlmICggb3B0aW9ucyA9PT0gXCJpbnN0YW5jZVwiICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuVmFsdWUgPSBpbnN0YW5jZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoICFpbnN0YW5jZSApIHtcblx0XHRcdFx0XHRcdHJldHVybiAkLmVycm9yKCBcImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gXCIgKyBuYW1lICtcblx0XHRcdFx0XHRcdFx0XCIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247IFwiICtcblx0XHRcdFx0XHRcdFx0XCJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJ1wiICsgb3B0aW9ucyArIFwiJ1wiICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCAhJC5pc0Z1bmN0aW9uKCBpbnN0YW5jZVsgb3B0aW9ucyBdICkgfHwgb3B0aW9ucy5jaGFyQXQoIDAgKSA9PT0gXCJfXCIgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJC5lcnJvciggXCJubyBzdWNoIG1ldGhvZCAnXCIgKyBvcHRpb25zICsgXCInIGZvciBcIiArIG5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcIiB3aWRnZXQgaW5zdGFuY2VcIiApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG1ldGhvZFZhbHVlID0gaW5zdGFuY2VbIG9wdGlvbnMgXS5hcHBseSggaW5zdGFuY2UsIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggbWV0aG9kVmFsdWUgIT09IGluc3RhbmNlICYmIG1ldGhvZFZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IG1ldGhvZFZhbHVlICYmIG1ldGhvZFZhbHVlLmpxdWVyeSA/XG5cdFx0XHRcdFx0XHRcdHJldHVyblZhbHVlLnB1c2hTdGFjayggbWV0aG9kVmFsdWUuZ2V0KCkgKSA6XG5cdFx0XHRcdFx0XHRcdG1ldGhvZFZhbHVlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIEFsbG93IG11bHRpcGxlIGhhc2hlcyB0byBiZSBwYXNzZWQgb24gaW5pdFxuXHRcdFx0aWYgKCBhcmdzLmxlbmd0aCApIHtcblx0XHRcdFx0b3B0aW9ucyA9ICQud2lkZ2V0LmV4dGVuZC5hcHBseSggbnVsbCwgWyBvcHRpb25zIF0uY29uY2F0KCBhcmdzICkgKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSApO1xuXHRcdFx0XHRpZiAoIGluc3RhbmNlICkge1xuXHRcdFx0XHRcdGluc3RhbmNlLm9wdGlvbiggb3B0aW9ucyB8fCB7fSApO1xuXHRcdFx0XHRcdGlmICggaW5zdGFuY2UuX2luaXQgKSB7XG5cdFx0XHRcdFx0XHRpbnN0YW5jZS5faW5pdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkLmRhdGEoIHRoaXMsIGZ1bGxOYW1lLCBuZXcgb2JqZWN0KCBvcHRpb25zLCB0aGlzICkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXR1cm5WYWx1ZTtcblx0fTtcbn07XG5cbiQuV2lkZ2V0ID0gZnVuY3Rpb24oIC8qIG9wdGlvbnMsIGVsZW1lbnQgKi8gKSB7fTtcbiQuV2lkZ2V0Ll9jaGlsZENvbnN0cnVjdG9ycyA9IFtdO1xuXG4kLldpZGdldC5wcm90b3R5cGUgPSB7XG5cdHdpZGdldE5hbWU6IFwid2lkZ2V0XCIsXG5cdHdpZGdldEV2ZW50UHJlZml4OiBcIlwiLFxuXHRkZWZhdWx0RWxlbWVudDogXCI8ZGl2PlwiLFxuXG5cdG9wdGlvbnM6IHtcblx0XHRjbGFzc2VzOiB7fSxcblx0XHRkaXNhYmxlZDogZmFsc2UsXG5cblx0XHQvLyBDYWxsYmFja3Ncblx0XHRjcmVhdGU6IG51bGxcblx0fSxcblxuXHRfY3JlYXRlV2lkZ2V0OiBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHtcblx0XHRlbGVtZW50ID0gJCggZWxlbWVudCB8fCB0aGlzLmRlZmF1bHRFbGVtZW50IHx8IHRoaXMgKVsgMCBdO1xuXHRcdHRoaXMuZWxlbWVudCA9ICQoIGVsZW1lbnQgKTtcblx0XHR0aGlzLnV1aWQgPSB3aWRnZXRVdWlkKys7XG5cdFx0dGhpcy5ldmVudE5hbWVzcGFjZSA9IFwiLlwiICsgdGhpcy53aWRnZXROYW1lICsgdGhpcy51dWlkO1xuXG5cdFx0dGhpcy5iaW5kaW5ncyA9ICQoKTtcblx0XHR0aGlzLmhvdmVyYWJsZSA9ICQoKTtcblx0XHR0aGlzLmZvY3VzYWJsZSA9ICQoKTtcblx0XHR0aGlzLmNsYXNzZXNFbGVtZW50TG9va3VwID0ge307XG5cblx0XHRpZiAoIGVsZW1lbnQgIT09IHRoaXMgKSB7XG5cdFx0XHQkLmRhdGEoIGVsZW1lbnQsIHRoaXMud2lkZ2V0RnVsbE5hbWUsIHRoaXMgKTtcblx0XHRcdHRoaXMuX29uKCB0cnVlLCB0aGlzLmVsZW1lbnQsIHtcblx0XHRcdFx0cmVtb3ZlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdFx0aWYgKCBldmVudC50YXJnZXQgPT09IGVsZW1lbnQgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSAkKCBlbGVtZW50LnN0eWxlID9cblxuXHRcdFx0XHQvLyBFbGVtZW50IHdpdGhpbiB0aGUgZG9jdW1lbnRcblx0XHRcdFx0ZWxlbWVudC5vd25lckRvY3VtZW50IDpcblxuXHRcdFx0XHQvLyBFbGVtZW50IGlzIHdpbmRvdyBvciBkb2N1bWVudFxuXHRcdFx0XHRlbGVtZW50LmRvY3VtZW50IHx8IGVsZW1lbnQgKTtcblx0XHRcdHRoaXMud2luZG93ID0gJCggdGhpcy5kb2N1bWVudFsgMCBdLmRlZmF1bHRWaWV3IHx8IHRoaXMuZG9jdW1lbnRbIDAgXS5wYXJlbnRXaW5kb3cgKTtcblx0XHR9XG5cblx0XHR0aGlzLm9wdGlvbnMgPSAkLndpZGdldC5leHRlbmQoIHt9LFxuXHRcdFx0dGhpcy5vcHRpb25zLFxuXHRcdFx0dGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLFxuXHRcdFx0b3B0aW9ucyApO1xuXG5cdFx0dGhpcy5fY3JlYXRlKCk7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kaXNhYmxlZCApIHtcblx0XHRcdHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKTtcblx0XHR9XG5cblx0XHR0aGlzLl90cmlnZ2VyKCBcImNyZWF0ZVwiLCBudWxsLCB0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSApO1xuXHRcdHRoaXMuX2luaXQoKTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHt9O1xuXHR9LFxuXG5cdF9nZXRDcmVhdGVFdmVudERhdGE6ICQubm9vcCxcblxuXHRfY3JlYXRlOiAkLm5vb3AsXG5cblx0X2luaXQ6ICQubm9vcCxcblxuXHRkZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGlzLl9kZXN0cm95KCk7XG5cdFx0JC5lYWNoKCB0aGlzLmNsYXNzZXNFbGVtZW50TG9va3VwLCBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCB2YWx1ZSwga2V5ICk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gV2UgY2FuIHByb2JhYmx5IHJlbW92ZSB0aGUgdW5iaW5kIGNhbGxzIGluIDIuMFxuXHRcdC8vIGFsbCBldmVudCBiaW5kaW5ncyBzaG91bGQgZ28gdGhyb3VnaCB0aGlzLl9vbigpXG5cdFx0dGhpcy5lbGVtZW50XG5cdFx0XHQub2ZmKCB0aGlzLmV2ZW50TmFtZXNwYWNlIClcblx0XHRcdC5yZW1vdmVEYXRhKCB0aGlzLndpZGdldEZ1bGxOYW1lICk7XG5cdFx0dGhpcy53aWRnZXQoKVxuXHRcdFx0Lm9mZiggdGhpcy5ldmVudE5hbWVzcGFjZSApXG5cdFx0XHQucmVtb3ZlQXR0ciggXCJhcmlhLWRpc2FibGVkXCIgKTtcblxuXHRcdC8vIENsZWFuIHVwIGV2ZW50cyBhbmQgc3RhdGVzXG5cdFx0dGhpcy5iaW5kaW5ncy5vZmYoIHRoaXMuZXZlbnROYW1lc3BhY2UgKTtcblx0fSxcblxuXHRfZGVzdHJveTogJC5ub29wLFxuXG5cdHdpZGdldDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWxlbWVudDtcblx0fSxcblxuXHRvcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBvcHRpb25zID0ga2V5O1xuXHRcdHZhciBwYXJ0cztcblx0XHR2YXIgY3VyT3B0aW9uO1xuXHRcdHZhciBpO1xuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAwICkge1xuXG5cdFx0XHQvLyBEb24ndCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGhhc2hcblx0XHRcdHJldHVybiAkLndpZGdldC5leHRlbmQoIHt9LCB0aGlzLm9wdGlvbnMgKTtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vIEhhbmRsZSBuZXN0ZWQga2V5cywgZS5nLiwgXCJmb28uYmFyXCIgPT4geyBmb286IHsgYmFyOiBfX18gfSB9XG5cdFx0XHRvcHRpb25zID0ge307XG5cdFx0XHRwYXJ0cyA9IGtleS5zcGxpdCggXCIuXCIgKTtcblx0XHRcdGtleSA9IHBhcnRzLnNoaWZ0KCk7XG5cdFx0XHRpZiAoIHBhcnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y3VyT3B0aW9uID0gb3B0aW9uc1sga2V5IF0gPSAkLndpZGdldC5leHRlbmQoIHt9LCB0aGlzLm9wdGlvbnNbIGtleSBdICk7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSsrICkge1xuXHRcdFx0XHRcdGN1ck9wdGlvblsgcGFydHNbIGkgXSBdID0gY3VyT3B0aW9uWyBwYXJ0c1sgaSBdIF0gfHwge307XG5cdFx0XHRcdFx0Y3VyT3B0aW9uID0gY3VyT3B0aW9uWyBwYXJ0c1sgaSBdIF07XG5cdFx0XHRcdH1cblx0XHRcdFx0a2V5ID0gcGFydHMucG9wKCk7XG5cdFx0XHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdFx0XHRyZXR1cm4gY3VyT3B0aW9uWyBrZXkgXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1ck9wdGlvblsga2V5IF07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VyT3B0aW9uWyBrZXkgXSA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnNbIGtleSBdID09PSB1bmRlZmluZWQgPyBudWxsIDogdGhpcy5vcHRpb25zWyBrZXkgXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvcHRpb25zWyBrZXkgXSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMuX3NldE9wdGlvbnMoIG9wdGlvbnMgKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdF9zZXRPcHRpb25zOiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHR2YXIga2V5O1xuXG5cdFx0Zm9yICgga2V5IGluIG9wdGlvbnMgKSB7XG5cdFx0XHR0aGlzLl9zZXRPcHRpb24oIGtleSwgb3B0aW9uc1sga2V5IF0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRpZiAoIGtleSA9PT0gXCJjbGFzc2VzXCIgKSB7XG5cdFx0XHR0aGlzLl9zZXRPcHRpb25DbGFzc2VzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdHRoaXMub3B0aW9uc1sga2V5IF0gPSB2YWx1ZTtcblxuXHRcdGlmICgga2V5ID09PSBcImRpc2FibGVkXCIgKSB7XG5cdFx0XHR0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCggdmFsdWUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRfc2V0T3B0aW9uQ2xhc3NlczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc0tleSwgZWxlbWVudHMsIGN1cnJlbnRFbGVtZW50cztcblxuXHRcdGZvciAoIGNsYXNzS2V5IGluIHZhbHVlICkge1xuXHRcdFx0Y3VycmVudEVsZW1lbnRzID0gdGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cFsgY2xhc3NLZXkgXTtcblx0XHRcdGlmICggdmFsdWVbIGNsYXNzS2V5IF0gPT09IHRoaXMub3B0aW9ucy5jbGFzc2VzWyBjbGFzc0tleSBdIHx8XG5cdFx0XHRcdFx0IWN1cnJlbnRFbGVtZW50cyB8fFxuXHRcdFx0XHRcdCFjdXJyZW50RWxlbWVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2UgYXJlIGRvaW5nIHRoaXMgdG8gY3JlYXRlIGEgbmV3IGpRdWVyeSBvYmplY3QgYmVjYXVzZSB0aGUgX3JlbW92ZUNsYXNzKCkgY2FsbFxuXHRcdFx0Ly8gb24gdGhlIG5leHQgbGluZSBpcyBnb2luZyB0byBkZXN0cm95IHRoZSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZWxlbWVudHMgYmVpbmdcblx0XHRcdC8vIHRyYWNrZWQuIFdlIG5lZWQgdG8gc2F2ZSBhIGNvcHkgb2YgdGhpcyBjb2xsZWN0aW9uIHNvIHRoYXQgd2UgY2FuIGFkZCB0aGUgbmV3IGNsYXNzZXNcblx0XHRcdC8vIGJlbG93LlxuXHRcdFx0ZWxlbWVudHMgPSAkKCBjdXJyZW50RWxlbWVudHMuZ2V0KCkgKTtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBjdXJyZW50RWxlbWVudHMsIGNsYXNzS2V5ICk7XG5cblx0XHRcdC8vIFdlIGRvbid0IHVzZSBfYWRkQ2xhc3MoKSBoZXJlLCBiZWNhdXNlIHRoYXQgdXNlcyB0aGlzLm9wdGlvbnMuY2xhc3Nlc1xuXHRcdFx0Ly8gZm9yIGdlbmVyYXRpbmcgdGhlIHN0cmluZyBvZiBjbGFzc2VzLiBXZSB3YW50IHRvIHVzZSB0aGUgdmFsdWUgcGFzc2VkIGluIGZyb21cblx0XHRcdC8vIF9zZXRPcHRpb24oKSwgdGhpcyBpcyB0aGUgbmV3IHZhbHVlIG9mIHRoZSBjbGFzc2VzIG9wdGlvbiB3aGljaCB3YXMgcGFzc2VkIHRvXG5cdFx0XHQvLyBfc2V0T3B0aW9uKCkuIFdlIHBhc3MgdGhpcyB2YWx1ZSBkaXJlY3RseSB0byBfY2xhc3NlcygpLlxuXHRcdFx0ZWxlbWVudHMuYWRkQ2xhc3MoIHRoaXMuX2NsYXNzZXMoIHtcblx0XHRcdFx0ZWxlbWVudDogZWxlbWVudHMsXG5cdFx0XHRcdGtleXM6IGNsYXNzS2V5LFxuXHRcdFx0XHRjbGFzc2VzOiB2YWx1ZSxcblx0XHRcdFx0YWRkOiB0cnVlXG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cdH0sXG5cblx0X3NldE9wdGlvbkRpc2FibGVkOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dGhpcy5fdG9nZ2xlQ2xhc3MoIHRoaXMud2lkZ2V0KCksIHRoaXMud2lkZ2V0RnVsbE5hbWUgKyBcIi1kaXNhYmxlZFwiLCBudWxsLCAhIXZhbHVlICk7XG5cblx0XHQvLyBJZiB0aGUgd2lkZ2V0IGlzIGJlY29taW5nIGRpc2FibGVkLCB0aGVuIG5vdGhpbmcgaXMgaW50ZXJhY3RpdmVcblx0XHRpZiAoIHZhbHVlICkge1xuXHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHRoaXMuaG92ZXJhYmxlLCBudWxsLCBcInVpLXN0YXRlLWhvdmVyXCIgKTtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmZvY3VzYWJsZSwgbnVsbCwgXCJ1aS1zdGF0ZS1mb2N1c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdGVuYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoIHsgZGlzYWJsZWQ6IGZhbHNlIH0gKTtcblx0fSxcblxuXHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyggeyBkaXNhYmxlZDogdHJ1ZSB9ICk7XG5cdH0sXG5cblx0X2NsYXNzZXM6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdHZhciBmdWxsID0gW107XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXG5cdFx0b3B0aW9ucyA9ICQuZXh0ZW5kKCB7XG5cdFx0XHRlbGVtZW50OiB0aGlzLmVsZW1lbnQsXG5cdFx0XHRjbGFzc2VzOiB0aGlzLm9wdGlvbnMuY2xhc3NlcyB8fCB7fVxuXHRcdH0sIG9wdGlvbnMgKTtcblxuXHRcdGZ1bmN0aW9uIHByb2Nlc3NDbGFzc1N0cmluZyggY2xhc3NlcywgY2hlY2tPcHRpb24gKSB7XG5cdFx0XHR2YXIgY3VycmVudCwgaTtcblx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3Nlcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0Y3VycmVudCA9IHRoYXQuY2xhc3Nlc0VsZW1lbnRMb29rdXBbIGNsYXNzZXNbIGkgXSBdIHx8ICQoKTtcblx0XHRcdFx0aWYgKCBvcHRpb25zLmFkZCApIHtcblx0XHRcdFx0XHRjdXJyZW50ID0gJCggJC51bmlxdWUoIGN1cnJlbnQuZ2V0KCkuY29uY2F0KCBvcHRpb25zLmVsZW1lbnQuZ2V0KCkgKSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudCA9ICQoIGN1cnJlbnQubm90KCBvcHRpb25zLmVsZW1lbnQgKS5nZXQoKSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoYXQuY2xhc3Nlc0VsZW1lbnRMb29rdXBbIGNsYXNzZXNbIGkgXSBdID0gY3VycmVudDtcblx0XHRcdFx0ZnVsbC5wdXNoKCBjbGFzc2VzWyBpIF0gKTtcblx0XHRcdFx0aWYgKCBjaGVja09wdGlvbiAmJiBvcHRpb25zLmNsYXNzZXNbIGNsYXNzZXNbIGkgXSBdICkge1xuXHRcdFx0XHRcdGZ1bGwucHVzaCggb3B0aW9ucy5jbGFzc2VzWyBjbGFzc2VzWyBpIF0gXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5fb24oIG9wdGlvbnMuZWxlbWVudCwge1xuXHRcdFx0XCJyZW1vdmVcIjogXCJfdW50cmFja0NsYXNzZXNFbGVtZW50XCJcblx0XHR9ICk7XG5cblx0XHRpZiAoIG9wdGlvbnMua2V5cyApIHtcblx0XHRcdHByb2Nlc3NDbGFzc1N0cmluZyggb3B0aW9ucy5rZXlzLm1hdGNoKCAvXFxTKy9nICkgfHwgW10sIHRydWUgKTtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmV4dHJhICkge1xuXHRcdFx0cHJvY2Vzc0NsYXNzU3RyaW5nKCBvcHRpb25zLmV4dHJhLm1hdGNoKCAvXFxTKy9nICkgfHwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZnVsbC5qb2luKCBcIiBcIiApO1xuXHR9LFxuXG5cdF91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cdFx0JC5lYWNoKCB0aGF0LmNsYXNzZXNFbGVtZW50TG9va3VwLCBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRcdGlmICggJC5pbkFycmF5KCBldmVudC50YXJnZXQsIHZhbHVlICkgIT09IC0xICkge1xuXHRcdFx0XHR0aGF0LmNsYXNzZXNFbGVtZW50TG9va3VwWyBrZXkgXSA9ICQoIHZhbHVlLm5vdCggZXZlbnQudGFyZ2V0ICkuZ2V0KCkgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0X3JlbW92ZUNsYXNzOiBmdW5jdGlvbiggZWxlbWVudCwga2V5cywgZXh0cmEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKCBlbGVtZW50LCBrZXlzLCBleHRyYSwgZmFsc2UgKTtcblx0fSxcblxuXHRfYWRkQ2xhc3M6IGZ1bmN0aW9uKCBlbGVtZW50LCBrZXlzLCBleHRyYSApIHtcblx0XHRyZXR1cm4gdGhpcy5fdG9nZ2xlQ2xhc3MoIGVsZW1lbnQsIGtleXMsIGV4dHJhLCB0cnVlICk7XG5cdH0sXG5cblx0X3RvZ2dsZUNsYXNzOiBmdW5jdGlvbiggZWxlbWVudCwga2V5cywgZXh0cmEsIGFkZCApIHtcblx0XHRhZGQgPSAoIHR5cGVvZiBhZGQgPT09IFwiYm9vbGVhblwiICkgPyBhZGQgOiBleHRyYTtcblx0XHR2YXIgc2hpZnQgPSAoIHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiIHx8IGVsZW1lbnQgPT09IG51bGwgKSxcblx0XHRcdG9wdGlvbnMgPSB7XG5cdFx0XHRcdGV4dHJhOiBzaGlmdCA/IGtleXMgOiBleHRyYSxcblx0XHRcdFx0a2V5czogc2hpZnQgPyBlbGVtZW50IDoga2V5cyxcblx0XHRcdFx0ZWxlbWVudDogc2hpZnQgPyB0aGlzLmVsZW1lbnQgOiBlbGVtZW50LFxuXHRcdFx0XHRhZGQ6IGFkZFxuXHRcdFx0fTtcblx0XHRvcHRpb25zLmVsZW1lbnQudG9nZ2xlQ2xhc3MoIHRoaXMuX2NsYXNzZXMoIG9wdGlvbnMgKSwgYWRkICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0X29uOiBmdW5jdGlvbiggc3VwcHJlc3NEaXNhYmxlZENoZWNrLCBlbGVtZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgZGVsZWdhdGVFbGVtZW50O1xuXHRcdHZhciBpbnN0YW5jZSA9IHRoaXM7XG5cblx0XHQvLyBObyBzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgZmxhZywgc2h1ZmZsZSBhcmd1bWVudHNcblx0XHRpZiAoIHR5cGVvZiBzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgIT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0aGFuZGxlcnMgPSBlbGVtZW50O1xuXHRcdFx0ZWxlbWVudCA9IHN1cHByZXNzRGlzYWJsZWRDaGVjaztcblx0XHRcdHN1cHByZXNzRGlzYWJsZWRDaGVjayA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIE5vIGVsZW1lbnQgYXJndW1lbnQsIHNodWZmbGUgYW5kIHVzZSB0aGlzLmVsZW1lbnRcblx0XHRpZiAoICFoYW5kbGVycyApIHtcblx0XHRcdGhhbmRsZXJzID0gZWxlbWVudDtcblx0XHRcdGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7XG5cdFx0XHRkZWxlZ2F0ZUVsZW1lbnQgPSB0aGlzLndpZGdldCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtZW50ID0gZGVsZWdhdGVFbGVtZW50ID0gJCggZWxlbWVudCApO1xuXHRcdFx0dGhpcy5iaW5kaW5ncyA9IHRoaXMuYmluZGluZ3MuYWRkKCBlbGVtZW50ICk7XG5cdFx0fVxuXG5cdFx0JC5lYWNoKCBoYW5kbGVycywgZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVyICkge1xuXHRcdFx0ZnVuY3Rpb24gaGFuZGxlclByb3h5KCkge1xuXG5cdFx0XHRcdC8vIEFsbG93IHdpZGdldHMgdG8gY3VzdG9taXplIHRoZSBkaXNhYmxlZCBoYW5kbGluZ1xuXHRcdFx0XHQvLyAtIGRpc2FibGVkIGFzIGFuIGFycmF5IGluc3RlYWQgb2YgYm9vbGVhblxuXHRcdFx0XHQvLyAtIGRpc2FibGVkIGNsYXNzIGFzIG1ldGhvZCBmb3IgZGlzYWJsaW5nIGluZGl2aWR1YWwgcGFydHNcblx0XHRcdFx0aWYgKCAhc3VwcHJlc3NEaXNhYmxlZENoZWNrICYmXG5cdFx0XHRcdFx0XHQoIGluc3RhbmNlLm9wdGlvbnMuZGlzYWJsZWQgPT09IHRydWUgfHxcblx0XHRcdFx0XHRcdCQoIHRoaXMgKS5oYXNDbGFzcyggXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiICkgKSApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuICggdHlwZW9mIGhhbmRsZXIgPT09IFwic3RyaW5nXCIgPyBpbnN0YW5jZVsgaGFuZGxlciBdIDogaGFuZGxlciApXG5cdFx0XHRcdFx0LmFwcGx5KCBpbnN0YW5jZSwgYXJndW1lbnRzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvcHkgdGhlIGd1aWQgc28gZGlyZWN0IHVuYmluZGluZyB3b3Jrc1xuXHRcdFx0aWYgKCB0eXBlb2YgaGFuZGxlciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0aGFuZGxlclByb3h5Lmd1aWQgPSBoYW5kbGVyLmd1aWQgPVxuXHRcdFx0XHRcdGhhbmRsZXIuZ3VpZCB8fCBoYW5kbGVyUHJveHkuZ3VpZCB8fCAkLmd1aWQrKztcblx0XHRcdH1cblxuXHRcdFx0dmFyIG1hdGNoID0gZXZlbnQubWF0Y2goIC9eKFtcXHc6LV0qKVxccyooLiopJC8gKTtcblx0XHRcdHZhciBldmVudE5hbWUgPSBtYXRjaFsgMSBdICsgaW5zdGFuY2UuZXZlbnROYW1lc3BhY2U7XG5cdFx0XHR2YXIgc2VsZWN0b3IgPSBtYXRjaFsgMiBdO1xuXG5cdFx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0XHRkZWxlZ2F0ZUVsZW1lbnQub24oIGV2ZW50TmFtZSwgc2VsZWN0b3IsIGhhbmRsZXJQcm94eSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudC5vbiggZXZlbnROYW1lLCBoYW5kbGVyUHJveHkgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0X29mZjogZnVuY3Rpb24oIGVsZW1lbnQsIGV2ZW50TmFtZSApIHtcblx0XHRldmVudE5hbWUgPSAoIGV2ZW50TmFtZSB8fCBcIlwiICkuc3BsaXQoIFwiIFwiICkuam9pbiggdGhpcy5ldmVudE5hbWVzcGFjZSArIFwiIFwiICkgK1xuXHRcdFx0dGhpcy5ldmVudE5hbWVzcGFjZTtcblx0XHRlbGVtZW50Lm9mZiggZXZlbnROYW1lICkub2ZmKCBldmVudE5hbWUgKTtcblxuXHRcdC8vIENsZWFyIHRoZSBzdGFjayB0byBhdm9pZCBtZW1vcnkgbGVha3MgKCMxMDA1Nilcblx0XHR0aGlzLmJpbmRpbmdzID0gJCggdGhpcy5iaW5kaW5ncy5ub3QoIGVsZW1lbnQgKS5nZXQoKSApO1xuXHRcdHRoaXMuZm9jdXNhYmxlID0gJCggdGhpcy5mb2N1c2FibGUubm90KCBlbGVtZW50ICkuZ2V0KCkgKTtcblx0XHR0aGlzLmhvdmVyYWJsZSA9ICQoIHRoaXMuaG92ZXJhYmxlLm5vdCggZWxlbWVudCApLmdldCgpICk7XG5cdH0sXG5cblx0X2RlbGF5OiBmdW5jdGlvbiggaGFuZGxlciwgZGVsYXkgKSB7XG5cdFx0ZnVuY3Rpb24gaGFuZGxlclByb3h5KCkge1xuXHRcdFx0cmV0dXJuICggdHlwZW9mIGhhbmRsZXIgPT09IFwic3RyaW5nXCIgPyBpbnN0YW5jZVsgaGFuZGxlciBdIDogaGFuZGxlciApXG5cdFx0XHRcdC5hcHBseSggaW5zdGFuY2UsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0XHR2YXIgaW5zdGFuY2UgPSB0aGlzO1xuXHRcdHJldHVybiBzZXRUaW1lb3V0KCBoYW5kbGVyUHJveHksIGRlbGF5IHx8IDAgKTtcblx0fSxcblxuXHRfaG92ZXJhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHtcblx0XHR0aGlzLmhvdmVyYWJsZSA9IHRoaXMuaG92ZXJhYmxlLmFkZCggZWxlbWVudCApO1xuXHRcdHRoaXMuX29uKCBlbGVtZW50LCB7XG5cdFx0XHRtb3VzZWVudGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksIG51bGwsIFwidWktc3RhdGUtaG92ZXJcIiApO1xuXHRcdFx0fSxcblx0XHRcdG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoICQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKSwgbnVsbCwgXCJ1aS1zdGF0ZS1ob3ZlclwiICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9mb2N1c2FibGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuXHRcdHRoaXMuZm9jdXNhYmxlID0gdGhpcy5mb2N1c2FibGUuYWRkKCBlbGVtZW50ICk7XG5cdFx0dGhpcy5fb24oIGVsZW1lbnQsIHtcblx0XHRcdGZvY3VzaW46IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dGhpcy5fYWRkQ2xhc3MoICQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKSwgbnVsbCwgXCJ1aS1zdGF0ZS1mb2N1c1wiICk7XG5cdFx0XHR9LFxuXHRcdFx0Zm9jdXNvdXQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoICQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKSwgbnVsbCwgXCJ1aS1zdGF0ZS1mb2N1c1wiICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF90cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZXZlbnQsIGRhdGEgKSB7XG5cdFx0dmFyIHByb3AsIG9yaWc7XG5cdFx0dmFyIGNhbGxiYWNrID0gdGhpcy5vcHRpb25zWyB0eXBlIF07XG5cblx0XHRkYXRhID0gZGF0YSB8fCB7fTtcblx0XHRldmVudCA9ICQuRXZlbnQoIGV2ZW50ICk7XG5cdFx0ZXZlbnQudHlwZSA9ICggdHlwZSA9PT0gdGhpcy53aWRnZXRFdmVudFByZWZpeCA/XG5cdFx0XHR0eXBlIDpcblx0XHRcdHRoaXMud2lkZ2V0RXZlbnRQcmVmaXggKyB0eXBlICkudG9Mb3dlckNhc2UoKTtcblxuXHRcdC8vIFRoZSBvcmlnaW5hbCBldmVudCBtYXkgY29tZSBmcm9tIGFueSBlbGVtZW50XG5cdFx0Ly8gc28gd2UgbmVlZCB0byByZXNldCB0aGUgdGFyZ2V0IG9uIHRoZSBuZXcgZXZlbnRcblx0XHRldmVudC50YXJnZXQgPSB0aGlzLmVsZW1lbnRbIDAgXTtcblxuXHRcdC8vIENvcHkgb3JpZ2luYWwgZXZlbnQgcHJvcGVydGllcyBvdmVyIHRvIHRoZSBuZXcgZXZlbnRcblx0XHRvcmlnID0gZXZlbnQub3JpZ2luYWxFdmVudDtcblx0XHRpZiAoIG9yaWcgKSB7XG5cdFx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHRcdGlmICggISggcHJvcCBpbiBldmVudCApICkge1xuXHRcdFx0XHRcdGV2ZW50WyBwcm9wIF0gPSBvcmlnWyBwcm9wIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmVsZW1lbnQudHJpZ2dlciggZXZlbnQsIGRhdGEgKTtcblx0XHRyZXR1cm4gISggJC5pc0Z1bmN0aW9uKCBjYWxsYmFjayApICYmXG5cdFx0XHRjYWxsYmFjay5hcHBseSggdGhpcy5lbGVtZW50WyAwIF0sIFsgZXZlbnQgXS5jb25jYXQoIGRhdGEgKSApID09PSBmYWxzZSB8fFxuXHRcdFx0ZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKTtcblx0fVxufTtcblxuJC5lYWNoKCB7IHNob3c6IFwiZmFkZUluXCIsIGhpZGU6IFwiZmFkZU91dFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIGRlZmF1bHRFZmZlY3QgKSB7XG5cdCQuV2lkZ2V0LnByb3RvdHlwZVsgXCJfXCIgKyBtZXRob2QgXSA9IGZ1bmN0aW9uKCBlbGVtZW50LCBvcHRpb25zLCBjYWxsYmFjayApIHtcblx0XHRpZiAoIHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b3B0aW9ucyA9IHsgZWZmZWN0OiBvcHRpb25zIH07XG5cdFx0fVxuXG5cdFx0dmFyIGhhc09wdGlvbnM7XG5cdFx0dmFyIGVmZmVjdE5hbWUgPSAhb3B0aW9ucyA/XG5cdFx0XHRtZXRob2QgOlxuXHRcdFx0b3B0aW9ucyA9PT0gdHJ1ZSB8fCB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIiA/XG5cdFx0XHRcdGRlZmF1bHRFZmZlY3QgOlxuXHRcdFx0XHRvcHRpb25zLmVmZmVjdCB8fCBkZWZhdWx0RWZmZWN0O1xuXG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cdFx0aWYgKCB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB7IGR1cmF0aW9uOiBvcHRpb25zIH07XG5cdFx0fVxuXG5cdFx0aGFzT3B0aW9ucyA9ICEkLmlzRW1wdHlPYmplY3QoIG9wdGlvbnMgKTtcblx0XHRvcHRpb25zLmNvbXBsZXRlID0gY2FsbGJhY2s7XG5cblx0XHRpZiAoIG9wdGlvbnMuZGVsYXkgKSB7XG5cdFx0XHRlbGVtZW50LmRlbGF5KCBvcHRpb25zLmRlbGF5ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBoYXNPcHRpb25zICYmICQuZWZmZWN0cyAmJiAkLmVmZmVjdHMuZWZmZWN0WyBlZmZlY3ROYW1lIF0gKSB7XG5cdFx0XHRlbGVtZW50WyBtZXRob2QgXSggb3B0aW9ucyApO1xuXHRcdH0gZWxzZSBpZiAoIGVmZmVjdE5hbWUgIT09IG1ldGhvZCAmJiBlbGVtZW50WyBlZmZlY3ROYW1lIF0gKSB7XG5cdFx0XHRlbGVtZW50WyBlZmZlY3ROYW1lIF0oIG9wdGlvbnMuZHVyYXRpb24sIG9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtZW50LnF1ZXVlKCBmdW5jdGlvbiggbmV4dCApIHtcblx0XHRcdFx0JCggdGhpcyApWyBtZXRob2QgXSgpO1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrLmNhbGwoIGVsZW1lbnRbIDAgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5leHQoKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cdH07XG59ICk7XG5cbnJldHVybiAkLndpZGdldDtcblxufSApICk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vanF1ZXJ5LXVpL3VpL3dpZGdldC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.4';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)',\n rsOrdUpper = '\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(args) {\n args.push(undefined, customDefaultsAssignIn);\n return apply(assignInWith, undefined, args);\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n var sourceURL = '//# sourceURL=' +\n ('sourceURL' in options\n ? options.sourceURL\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = (lodashFunc.name + ''),\n names = realNames[key] || (realNames[key] = []);\n\n names.push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (true) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return _;\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4), __webpack_require__(56)(module)))//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9sb2Rhc2guanM/MDNjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pzLmZvdW5kYXRpb24vPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG47KGZ1bmN0aW9uKCkge1xuXG4gIC8qKiBVc2VkIGFzIGEgc2FmZSByZWZlcmVuY2UgZm9yIGB1bmRlZmluZWRgIGluIHByZS1FUzUgZW52aXJvbm1lbnRzLiAqL1xuICB2YXIgdW5kZWZpbmVkO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci4gKi9cbiAgdmFyIFZFUlNJT04gPSAnNC4xNy40JztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovXG4gIHZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xuICB2YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xuICB2YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gIHZhciBXUkFQX0JJTkRfRkxBRyA9IDEsXG4gICAgICBXUkFQX0JJTkRfS0VZX0ZMQUcgPSAyLFxuICAgICAgV1JBUF9DVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICAgIFdSQVBfQ1VSUllfRkxBRyA9IDgsXG4gICAgICBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcgPSAxNixcbiAgICAgIFdSQVBfUEFSVElBTF9GTEFHID0gMzIsXG4gICAgICBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA9IDY0LFxuICAgICAgV1JBUF9BUllfRkxBRyA9IDEyOCxcbiAgICAgIFdSQVBfUkVBUkdfRkxBRyA9IDI1NixcbiAgICAgIFdSQVBfRkxJUF9GTEFHID0gNTEyO1xuXG4gIC8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL1xuICB2YXIgREVGQVVMVF9UUlVOQ19MRU5HVEggPSAzMCxcbiAgICAgIERFRkFVTFRfVFJVTkNfT01JU1NJT04gPSAnLi4uJztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG4gIHZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgICBIT1RfU1BBTiA9IDE2O1xuXG4gIC8qKiBVc2VkIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGxhenkgaXRlcmF0ZWVzLiAqL1xuICB2YXIgTEFaWV9GSUxURVJfRkxBRyA9IDEsXG4gICAgICBMQVpZX01BUF9GTEFHID0gMixcbiAgICAgIExBWllfV0hJTEVfRkxBRyA9IDM7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG4gIHZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgICAgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTEsXG4gICAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgICAgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbiAgdmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1LFxuICAgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDEsXG4gICAgICBIQUxGX01BWF9BUlJBWV9MRU5HVEggPSBNQVhfQVJSQVlfTEVOR1RIID4+PiAxO1xuXG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovXG4gIHZhciB3cmFwRmxhZ3MgPSBbXG4gICAgWydhcnknLCBXUkFQX0FSWV9GTEFHXSxcbiAgICBbJ2JpbmQnLCBXUkFQX0JJTkRfRkxBR10sXG4gICAgWydiaW5kS2V5JywgV1JBUF9CSU5EX0tFWV9GTEFHXSxcbiAgICBbJ2N1cnJ5JywgV1JBUF9DVVJSWV9GTEFHXSxcbiAgICBbJ2N1cnJ5UmlnaHQnLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUddLFxuICAgIFsnZmxpcCcsIFdSQVBfRkxJUF9GTEFHXSxcbiAgICBbJ3BhcnRpYWwnLCBXUkFQX1BBUlRJQUxfRkxBR10sXG4gICAgWydwYXJ0aWFsUmlnaHQnLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBR10sXG4gICAgWydyZWFyZycsIFdSQVBfUkVBUkdfRkxBR11cbiAgXTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgICAgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nLFxuICAgICAgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuICB2YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG4gIHZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICAgIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInXS9nLFxuICAgICAgcmVIYXNFc2NhcGVkSHRtbCA9IFJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSksXG4gICAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvLFxuICAgICAgcmVMZWFkaW5nRG90ID0gL15cXC4vLFxuICAgICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICovXG4gIHZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXG4gICAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nLFxuICAgICAgcmVUcmltU3RhcnQgPSAvXlxccysvLFxuICAgICAgcmVUcmltRW5kID0gL1xccyskLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/Oig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpXFxcXGIpJyxcbiAgICAgIHJzT3JkVXBwZXIgPSAnXFxcXGQqKD86KD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxcXGRUSClcXFxcYiknLFxuICAgICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgICAgcnNFbW9qaSA9ICcoPzonICsgW3JzRGluZ2JhdCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNTZXEsXG4gICAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBhcG9zdHJvcGhlcy4gKi9cbiAgdmFyIHJlQXBvcyA9IFJlZ0V4cChyc0Fwb3MsICdnJyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKSBhbmRcbiAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzX2Zvcl9TeW1ib2xzKS5cbiAgICovXG4gIHZhciByZUNvbWJvTWFyayA9IFJlZ0V4cChyc0NvbWJvLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG4gIHZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBjb21wbGV4IG9yIGNvbXBvdW5kIHdvcmRzLiAqL1xuICB2YXIgcmVVbmljb2RlV29yZCA9IFJlZ0V4cChbXG4gICAgcnNVcHBlciArICc/JyArIHJzTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIgKyAnKD89JyArIFtyc0JyZWFrLCByc1VwcGVyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc01pc2NVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIgKyByc01pc2NMb3dlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gICAgcnNVcHBlciArICc/JyArIHJzTWlzY0xvd2VyICsgJysnICsgcnNPcHRDb250ckxvd2VyLFxuICAgIHJzVXBwZXIgKyAnKycgKyByc09wdENvbnRyVXBwZXIsXG4gICAgcnNPcmRVcHBlcixcbiAgICByc09yZExvd2VyLFxuICAgIHJzRGlnaXRzLFxuICAgIHJzRW1vamlcbiAgXS5qb2luKCd8JyksICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG4gIHZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHRoYXQgbmVlZCBhIG1vcmUgcm9idXN0IHJlZ2V4cCB0byBtYXRjaCB3b3Jkcy4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZVdvcmQgPSAvW2Etel1bQS1aXXxbQS1aXXsyLH1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87XG5cbiAgLyoqIFVzZWQgdG8gYXNzaWduIGRlZmF1bHQgYGNvbnRleHRgIG9iamVjdCBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgY29udGV4dFByb3BzID0gW1xuICAgICdBcnJheScsICdCdWZmZXInLCAnRGF0YVZpZXcnLCAnRGF0ZScsICdFcnJvcicsICdGbG9hdDMyQXJyYXknLCAnRmxvYXQ2NEFycmF5JyxcbiAgICAnRnVuY3Rpb24nLCAnSW50OEFycmF5JywgJ0ludDE2QXJyYXknLCAnSW50MzJBcnJheScsICdNYXAnLCAnTWF0aCcsICdPYmplY3QnLFxuICAgICdQcm9taXNlJywgJ1JlZ0V4cCcsICdTZXQnLCAnU3RyaW5nJywgJ1N5bWJvbCcsICdUeXBlRXJyb3InLCAnVWludDhBcnJheScsXG4gICAgJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ1VpbnQxNkFycmF5JywgJ1VpbnQzMkFycmF5JywgJ1dlYWtNYXAnLFxuICAgICdfJywgJ2NsZWFyVGltZW91dCcsICdpc0Zpbml0ZScsICdwYXJzZUludCcsICdzZXRUaW1lb3V0J1xuICBdO1xuXG4gIC8qKiBVc2VkIHRvIG1ha2UgdGVtcGxhdGUgc291cmNlVVJMcyBlYXNpZXIgdG8gaWRlbnRpZnkuICovXG4gIHZhciB0ZW1wbGF0ZUNvdW50ZXIgPSAtMTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG4gIHZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xuICB0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICB0eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbiAgdmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbiAgY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbiAgY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBMYXRpbiBVbmljb2RlIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy4gKi9cbiAgdmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgYmxvY2suXG4gICAgJ1xceGMwJzogJ0EnLCAgJ1xceGMxJzogJ0EnLCAnXFx4YzInOiAnQScsICdcXHhjMyc6ICdBJywgJ1xceGM0JzogJ0EnLCAnXFx4YzUnOiAnQScsXG4gICAgJ1xceGUwJzogJ2EnLCAgJ1xceGUxJzogJ2EnLCAnXFx4ZTInOiAnYScsICdcXHhlMyc6ICdhJywgJ1xceGU0JzogJ2EnLCAnXFx4ZTUnOiAnYScsXG4gICAgJ1xceGM3JzogJ0MnLCAgJ1xceGU3JzogJ2MnLFxuICAgICdcXHhkMCc6ICdEJywgICdcXHhmMCc6ICdkJyxcbiAgICAnXFx4YzgnOiAnRScsICAnXFx4YzknOiAnRScsICdcXHhjYSc6ICdFJywgJ1xceGNiJzogJ0UnLFxuICAgICdcXHhlOCc6ICdlJywgICdcXHhlOSc6ICdlJywgJ1xceGVhJzogJ2UnLCAnXFx4ZWInOiAnZScsXG4gICAgJ1xceGNjJzogJ0knLCAgJ1xceGNkJzogJ0knLCAnXFx4Y2UnOiAnSScsICdcXHhjZic6ICdJJyxcbiAgICAnXFx4ZWMnOiAnaScsICAnXFx4ZWQnOiAnaScsICdcXHhlZSc6ICdpJywgJ1xceGVmJzogJ2knLFxuICAgICdcXHhkMSc6ICdOJywgICdcXHhmMSc6ICduJyxcbiAgICAnXFx4ZDInOiAnTycsICAnXFx4ZDMnOiAnTycsICdcXHhkNCc6ICdPJywgJ1xceGQ1JzogJ08nLCAnXFx4ZDYnOiAnTycsICdcXHhkOCc6ICdPJyxcbiAgICAnXFx4ZjInOiAnbycsICAnXFx4ZjMnOiAnbycsICdcXHhmNCc6ICdvJywgJ1xceGY1JzogJ28nLCAnXFx4ZjYnOiAnbycsICdcXHhmOCc6ICdvJyxcbiAgICAnXFx4ZDknOiAnVScsICAnXFx4ZGEnOiAnVScsICdcXHhkYic6ICdVJywgJ1xceGRjJzogJ1UnLFxuICAgICdcXHhmOSc6ICd1JywgICdcXHhmYSc6ICd1JywgJ1xceGZiJzogJ3UnLCAnXFx4ZmMnOiAndScsXG4gICAgJ1xceGRkJzogJ1knLCAgJ1xceGZkJzogJ3knLCAnXFx4ZmYnOiAneScsXG4gICAgJ1xceGM2JzogJ0FlJywgJ1xceGU2JzogJ2FlJyxcbiAgICAnXFx4ZGUnOiAnVGgnLCAnXFx4ZmUnOiAndGgnLFxuICAgICdcXHhkZic6ICdzcycsXG4gICAgLy8gTGF0aW4gRXh0ZW5kZWQtQSBibG9jay5cbiAgICAnXFx1MDEwMCc6ICdBJywgICdcXHUwMTAyJzogJ0EnLCAnXFx1MDEwNCc6ICdBJyxcbiAgICAnXFx1MDEwMSc6ICdhJywgICdcXHUwMTAzJzogJ2EnLCAnXFx1MDEwNSc6ICdhJyxcbiAgICAnXFx1MDEwNic6ICdDJywgICdcXHUwMTA4JzogJ0MnLCAnXFx1MDEwYSc6ICdDJywgJ1xcdTAxMGMnOiAnQycsXG4gICAgJ1xcdTAxMDcnOiAnYycsICAnXFx1MDEwOSc6ICdjJywgJ1xcdTAxMGInOiAnYycsICdcXHUwMTBkJzogJ2MnLFxuICAgICdcXHUwMTBlJzogJ0QnLCAgJ1xcdTAxMTAnOiAnRCcsICdcXHUwMTBmJzogJ2QnLCAnXFx1MDExMSc6ICdkJyxcbiAgICAnXFx1MDExMic6ICdFJywgICdcXHUwMTE0JzogJ0UnLCAnXFx1MDExNic6ICdFJywgJ1xcdTAxMTgnOiAnRScsICdcXHUwMTFhJzogJ0UnLFxuICAgICdcXHUwMTEzJzogJ2UnLCAgJ1xcdTAxMTUnOiAnZScsICdcXHUwMTE3JzogJ2UnLCAnXFx1MDExOSc6ICdlJywgJ1xcdTAxMWInOiAnZScsXG4gICAgJ1xcdTAxMWMnOiAnRycsICAnXFx1MDExZSc6ICdHJywgJ1xcdTAxMjAnOiAnRycsICdcXHUwMTIyJzogJ0cnLFxuICAgICdcXHUwMTFkJzogJ2cnLCAgJ1xcdTAxMWYnOiAnZycsICdcXHUwMTIxJzogJ2cnLCAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDEyNCc6ICdIJywgICdcXHUwMTI2JzogJ0gnLCAnXFx1MDEyNSc6ICdoJywgJ1xcdTAxMjcnOiAnaCcsXG4gICAgJ1xcdTAxMjgnOiAnSScsICAnXFx1MDEyYSc6ICdJJywgJ1xcdTAxMmMnOiAnSScsICdcXHUwMTJlJzogJ0knLCAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDEyOSc6ICdpJywgICdcXHUwMTJiJzogJ2knLCAnXFx1MDEyZCc6ICdpJywgJ1xcdTAxMmYnOiAnaScsICdcXHUwMTMxJzogJ2knLFxuICAgICdcXHUwMTM0JzogJ0onLCAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxMzYnOiAnSycsICAnXFx1MDEzNyc6ICdrJywgJ1xcdTAxMzgnOiAnaycsXG4gICAgJ1xcdTAxMzknOiAnTCcsICAnXFx1MDEzYic6ICdMJywgJ1xcdTAxM2QnOiAnTCcsICdcXHUwMTNmJzogJ0wnLCAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDEzYSc6ICdsJywgICdcXHUwMTNjJzogJ2wnLCAnXFx1MDEzZSc6ICdsJywgJ1xcdTAxNDAnOiAnbCcsICdcXHUwMTQyJzogJ2wnLFxuICAgICdcXHUwMTQzJzogJ04nLCAgJ1xcdTAxNDUnOiAnTicsICdcXHUwMTQ3JzogJ04nLCAnXFx1MDE0YSc6ICdOJyxcbiAgICAnXFx1MDE0NCc6ICduJywgICdcXHUwMTQ2JzogJ24nLCAnXFx1MDE0OCc6ICduJywgJ1xcdTAxNGInOiAnbicsXG4gICAgJ1xcdTAxNGMnOiAnTycsICAnXFx1MDE0ZSc6ICdPJywgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxNGQnOiAnbycsICAnXFx1MDE0Zic6ICdvJywgJ1xcdTAxNTEnOiAnbycsXG4gICAgJ1xcdTAxNTQnOiAnUicsICAnXFx1MDE1Nic6ICdSJywgJ1xcdTAxNTgnOiAnUicsXG4gICAgJ1xcdTAxNTUnOiAncicsICAnXFx1MDE1Nyc6ICdyJywgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAxNWEnOiAnUycsICAnXFx1MDE1Yyc6ICdTJywgJ1xcdTAxNWUnOiAnUycsICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUwMTViJzogJ3MnLCAgJ1xcdTAxNWQnOiAncycsICdcXHUwMTVmJzogJ3MnLCAnXFx1MDE2MSc6ICdzJyxcbiAgICAnXFx1MDE2Mic6ICdUJywgICdcXHUwMTY0JzogJ1QnLCAnXFx1MDE2Nic6ICdUJyxcbiAgICAnXFx1MDE2Myc6ICd0JywgICdcXHUwMTY1JzogJ3QnLCAnXFx1MDE2Nyc6ICd0JyxcbiAgICAnXFx1MDE2OCc6ICdVJywgICdcXHUwMTZhJzogJ1UnLCAnXFx1MDE2Yyc6ICdVJywgJ1xcdTAxNmUnOiAnVScsICdcXHUwMTcwJzogJ1UnLCAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MDE2OSc6ICd1JywgICdcXHUwMTZiJzogJ3UnLCAnXFx1MDE2ZCc6ICd1JywgJ1xcdTAxNmYnOiAndScsICdcXHUwMTcxJzogJ3UnLCAnXFx1MDE3Myc6ICd1JyxcbiAgICAnXFx1MDE3NCc6ICdXJywgICdcXHUwMTc1JzogJ3cnLFxuICAgICdcXHUwMTc2JzogJ1knLCAgJ1xcdTAxNzcnOiAneScsICdcXHUwMTc4JzogJ1knLFxuICAgICdcXHUwMTc5JzogJ1onLCAgJ1xcdTAxN2InOiAnWicsICdcXHUwMTdkJzogJ1onLFxuICAgICdcXHUwMTdhJzogJ3onLCAgJ1xcdTAxN2MnOiAneicsICdcXHUwMTdlJzogJ3onLFxuICAgICdcXHUwMTMyJzogJ0lKJywgJ1xcdTAxMzMnOiAnaWonLFxuICAgICdcXHUwMTUyJzogJ09lJywgJ1xcdTAxNTMnOiAnb2UnLFxuICAgICdcXHUwMTQ5JzogXCInblwiLCAnXFx1MDE3Zic6ICdzJ1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG4gIHZhciBodG1sRXNjYXBlcyA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgaHRtbFVuZXNjYXBlcyA9IHtcbiAgICAnJmFtcDsnOiAnJicsXG4gICAgJyZsdDsnOiAnPCcsXG4gICAgJyZndDsnOiAnPicsXG4gICAgJyZxdW90Oyc6ICdcIicsXG4gICAgJyYjMzk7JzogXCInXCJcbiAgfTtcblxuICAvKiogVXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xccic6ICdyJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbiAgdmFyIGZyZWVQYXJzZUZsb2F0ID0gcGFyc2VGbG9hdCxcbiAgICAgIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xuICB2YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuICAvKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbiAgdmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbiAgdmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbiAgdmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuICAvKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xuICB2YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbiAgLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG4gIHZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH0oKSk7XG5cbiAgLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG5vZGVJc0FycmF5QnVmZmVyID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcixcbiAgICAgIG5vZGVJc0RhdGUgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0RhdGUsXG4gICAgICBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcCxcbiAgICAgIG5vZGVJc1JlZ0V4cCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzUmVnRXhwLFxuICAgICAgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQsXG4gICAgICBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBrZXktdmFsdWUgYHBhaXJgIHRvIGBtYXBgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwYWlyIFRoZSBrZXktdmFsdWUgcGFpciB0byBhZGQuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG1hcGAuXG4gICAqL1xuICBmdW5jdGlvbiBhZGRNYXBFbnRyeShtYXAsIHBhaXIpIHtcbiAgICAvLyBEb24ndCByZXR1cm4gYG1hcC5zZXRgIGJlY2F1c2UgaXQncyBub3QgY2hhaW5hYmxlIGluIElFIDExLlxuICAgIG1hcC5zZXQocGFpclswXSwgcGFpclsxXSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGB2YWx1ZWAgdG8gYHNldGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZC5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgc2V0YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFNldEVudHJ5KHNldCwgdmFsdWUpIHtcbiAgICAvLyBEb24ndCByZXR1cm4gYHNldC5hZGRgIGJlY2F1c2UgaXQncyBub3QgY2hhaW5hYmxlIGluIElFIDExLlxuICAgIHNldC5hZGQodmFsdWUpO1xuICAgIHJldHVybiBzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUFnZ3JlZ2F0b3JgIGZvciBhcnJheXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5QWdncmVnYXRvcihhcnJheSwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2hSaWdodChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZXZlcnlgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RXZlcnkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoIXByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2VSaWdodChhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbLS1sZW5ndGhdO1xuICAgIH1cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIHZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhbiBBU0NJSSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZUFzY2lpV29yZCkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmZpbmRLZXlgIGFuZCBgXy5maW5kTGFzdEtleWAsXG4gICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmBcbiAgICogdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZm91bmQgZWxlbWVudCBvciBpdHMga2V5LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBlYWNoRnVuYykge1xuICAgIHZhciByZXN1bHQ7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXN1bHQgPSBrZXk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlSW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2ZXaXRoKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVhbmAgYW5kIGBfLm1lYW5CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZU1lYW4oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyAoYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIC8gbGVuZ3RoKSA6IE5BTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eU9mYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHlPZihvYmplY3QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICAgKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaW5pdEFjY3VtXG4gICAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICAgKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gICAqIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc3VtYCBhbmQgYF8uc3VtQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgcmVzdWx0LFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBpdGVyYXRlZShhcnJheVtpbmRleF0pO1xuICAgICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGN1cnJlbnQgOiAocmVzdWx0ICsgY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICAgKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvUGFpcnNgIGFuZCBgXy50b1BhaXJzSW5gIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXlcbiAgICogb2Yga2V5LXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRvUGFpcnMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gW2tleSwgb2JqZWN0W2tleV1dO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGJhc2VDbG9uZSwgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAgICAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gICAgICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgICAgIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmRlbGF5YCBhbmQgYF8uZGVmZXJgIHdoaWNoIGFjY2VwdHMgYGFyZ3NgXG4gICAgICogdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGVsYXkoZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsgfSwgd2FpdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPT0gbnVsbCA/IHZhbHVlIDogaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlc0luZGV4ID0gdmFsdWVzTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hSaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2hSaWdodCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd25SaWdodCwgdHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ldmVyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFdmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9ICEhcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gICAgICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsbGAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gbGVuZ3RoKSA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVuZCA9IHN0YXJ0ID4gZW5kID8gMCA6IHRvTGVuZ3RoKGVuZCk7XG4gICAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcbiAgICAgICAgYXJyYXlbc3RhcnQrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gICAgICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICAgICAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUZvcmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzXG4gICAgICogaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yUmlnaHQgPSBjcmVhdGVCYXNlRm9yKHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93blJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JSaWdodChvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mdW5jdGlvbnNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBgb2JqZWN0YCBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmaWx0ZXJlZCBmcm9tIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCwgcHJvcHMpIHtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iamVjdFtrZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gICAgICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICAgIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICAgIH1cbiAgICAgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICAgICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pblJhbmdlYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBudW1iZXIgPj0gbmF0aXZlTWluKHN0YXJ0LCBlbmQpICYmIG51bWJlciA8IG5hdGl2ZU1heChzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHNoYXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5jbHVkZXMgPSBjb21wYXJhdG9yID8gYXJyYXlJbmNsdWRlc1dpdGggOiBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aCxcbiAgICAgICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAob3RoSW5kZXggJiYgaXRlcmF0ZWUpIHtcbiAgICAgICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXhMZW5ndGggPSBuYXRpdmVNaW4oYXJyYXkubGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgICAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgcmVzdWx0Lmxlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmICghKHNlZW5cbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhyZXN1bHQsIGNvbXB1dGVkLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgtLW90aEluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgICAgID8gY2FjaGVIYXMoY2FjaGUsIGNvbXB1dGVkKVxuICAgICAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludmVydGAgYW5kIGBfLmludmVydEJ5YCB3aGljaCBpbnZlcnRzXG4gICAgICogYG9iamVjdGAgd2l0aCB2YWx1ZXMgdHJhbnNmb3JtZWQgYnkgYGl0ZXJhdGVlYCBhbmQgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0gdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCBpdGVyYXRlZSh2YWx1ZSksIGtleSwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludm9rZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogbWV0aG9kIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgdmFyIGZ1bmMgPSBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYXBwbHkoZnVuYywgb2JqZWN0LCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcnJheUJ1ZmZlclRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gZGF0ZVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gICAgICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gICAgICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICAgICAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gICAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICAgICAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICAgICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgICAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICAgICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzU2FtZVRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICAgICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSByZWdleHBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICAgICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gICAgICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgICAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgc3JjVmFsdWUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCAoc3JjSW5kZXggJiYgaXNGdW5jdGlvbihvYmpWYWx1ZSkpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMubGVuZ3RoID8gaXRlcmF0ZWVzIDogW2lkZW50aXR5XSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgICAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICogc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4T2YgPSBjb21wYXJhdG9yID8gYmFzZUluZGV4T2ZXaXRoIDogYmFzZUluZGV4T2YsXG4gICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHNlZW4gPSBhcnJheTtcblxuICAgICAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICAgICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSBhcnJheSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXMgVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBpbmRleCwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93ZXIgVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcikge1xuICAgICAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAgICAgKiBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ICs9IHN0ZXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLCBuKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAoIXN0cmluZyB8fCBuIDwgMSB8fCBuID4gTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgLy8gTGV2ZXJhZ2UgdGhlIGV4cG9uZW50aWF0aW9uIGJ5IHNxdWFyaW5nIGFsZ29yaXRobSBmb3IgYSBmYXN0ZXIgcmVwZWF0LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWF0aW9uX2J5X3NxdWFyaW5nIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuICUgMikge1xuICAgICAgICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbiA9IG5hdGl2ZUZsb29yKG4gLyAyKTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICBzdHJpbmcgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlU2l6ZWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuKSB7XG4gICAgICB2YXIgYXJyYXkgPSB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gICAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkge1xuICAgICAgbWV0YU1hcC5zZXQoZnVuYywgZGF0YSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zaHVmZmxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgICAgIHN0YXJ0ID4+Pj0gMDtcblxuICAgICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvbWVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gIXJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4YCB3aGljaFxuICAgICAqIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBvZiBgYXJyYXlgIHRvIGRldGVybWluZSB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gbG93IDogYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkge1xuICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgIHZhciBtaWQgPSAobG93ICsgaGlnaCkgPj4+IDEsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTtcblxuICAgICAgICAgIGlmIChjb21wdXRlZCAhPT0gbnVsbCAmJiAhaXNTeW1ib2woY29tcHV0ZWQpICYmXG4gICAgICAgICAgICAgIChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWdoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4QnlgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhCeWBcbiAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgKiB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHZhbElzTmFOID0gdmFsdWUgIT09IHZhbHVlLFxuICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpLFxuICAgICAgICAgIHZhbElzVW5kZWZpbmVkID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgdmFyIG1pZCA9IG5hdGl2ZUZsb29yKChsb3cgKyBoaWdoKSAvIDIpLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZShhcnJheVttaWRdKSxcbiAgICAgICAgICAgIG90aElzRGVmaW5lZCA9IGNvbXB1dGVkICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBjb21wdXRlZCA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gY29tcHV0ZWQgPT09IGNvbXB1dGVkLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChjb21wdXRlZCk7XG5cbiAgICAgICAgaWYgKHZhbElzTmFOKSB7XG4gICAgICAgICAgdmFyIHNldExvdyA9IHJldEhpZ2hlc3QgfHwgb3RoSXNSZWZsZXhpdmU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNVbmRlZmluZWQpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiAocmV0SGlnaGVzdCB8fCBvdGhJc0RlZmluZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzTnVsbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNOdWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAhb3RoSXNOdWxsICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc1N5bWJvbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3RoSXNOdWxsIHx8IG90aElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0TG93ID0gcmV0SGlnaGVzdCA/IChjb21wdXRlZCA8PSB2YWx1ZSkgOiAoY29tcHV0ZWQgPCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldExvdykge1xuICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZU1pbihoaWdoLCBNQVhfQVJSQVlfSU5ERVgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZFVuaXFgIGFuZCBgXy5zb3J0ZWRVbmlxQnlgIHdpdGhvdXRcbiAgICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIGlmICghaW5kZXggfHwgIWVxKGNvbXB1dGVkLCBzZWVuKSkge1xuICAgICAgICAgIHZhciBzZWVuID0gY29tcHV0ZWQ7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9OdW1iZXJgIHdoaWNoIGRvZXNuJ3QgZW5zdXJlIGNvcnJlY3RcbiAgICAgKiBjb252ZXJzaW9ucyBvZiBiaW5hcnksIGhleGFkZWNpbWFsLCBvciBvY3RhbCBzdHJpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgcmV0dXJuICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAgICAgKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuaXFCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoc2VlbltzZWVuSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHNlZW4sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHByb3BlcnR5IHBhdGggdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCB8fCBkZWxldGUgb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51cGRhdGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1cGRhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHJldHVybiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdXBkYXRlcihiYXNlR2V0KG9iamVjdCwgcGF0aCkpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZHJvcFdoaWxlYCBhbmQgYF8udGFrZVdoaWxlYFxuICAgICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRHJvcF0gU3BlY2lmeSBkcm9wcGluZyBlbGVtZW50cyBpbnN0ZWFkIG9mIHRha2luZyB0aGVtLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV2hpbGUoYXJyYXksIHByZWRpY2F0ZSwgaXNEcm9wLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMTtcblxuICAgICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkgJiZcbiAgICAgICAgcHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge31cblxuICAgICAgcmV0dXJuIGlzRHJvcFxuICAgICAgICA/IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IDAgOiBpbmRleCksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiBsZW5ndGgpKVxuICAgICAgICA6IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IDApLCAoZnJvbVJpZ2h0ID8gbGVuZ3RoIDogaW5kZXgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgd3JhcHBlclZhbHVlYCB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2ZcbiAgICAgKiBwZXJmb3JtaW5nIGEgc2VxdWVuY2Ugb2YgYWN0aW9ucyBvbiB0aGUgdW53cmFwcGVkIGB2YWx1ZWAsIHdoZXJlIGVhY2hcbiAgICAgKiBzdWNjZXNzaXZlIGFjdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFjdGlvbnMgQWN0aW9ucyB0byBwZXJmb3JtIHRvIHJlc29sdmUgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdyYXBwZXJWYWx1ZSh2YWx1ZSwgYWN0aW9ucykge1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC52YWx1ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKGFjdGlvbnMsIGZ1bmN0aW9uKHJlc3VsdCwgYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb24uZnVuYy5hcHBseShhY3Rpb24udGhpc0FyZywgYXJyYXlQdXNoKFtyZXN1bHRdLCBhY3Rpb24uYXJncykpO1xuICAgICAgfSwgcmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ueG9yYCwgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWG9yKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VVbmlxKGFycmF5c1swXSkgOiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tpbmRleF0sXG4gICAgICAgICAgICBvdGhJbmRleCA9IC0xO1xuXG4gICAgICAgIHdoaWxlICgrK290aEluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKG90aEluZGV4ICE9IGluZGV4KSB7XG4gICAgICAgICAgICByZXN1bHRbaW5kZXhdID0gYmFzZURpZmZlcmVuY2UocmVzdWx0W2luZGV4XSB8fCBhcnJheSwgYXJyYXlzW290aEluZGV4XSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKHJlc3VsdCwgMSksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uemlwT2JqZWN0YCB3aGljaCBhc3NpZ25zIHZhbHVlcyB1c2luZyBgYXNzaWduRnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGFzc2lnbkZ1bmMocmVzdWx0LCBwcm9wc1tpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhbiBlbXB0eSBhcnJheSBpZiBpdCdzIG5vdCBhbiBhcnJheSBsaWtlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgYGJhc2VSZXN0YCBhbGlhcyB3aGljaCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBgaWRlbnRpdHlgIGJ5IG1vZHVsZVxuICAgICAqIHJlcGxhY2VtZW50IHBsdWdpbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIHZhciBjYXN0UmVzdCA9IGJhc2VSZXN0O1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYGFycmF5YCB0byBhIHNsaWNlIGlmIGl0J3MgbmVlZGVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3Qgc2xpY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQ7XG4gICAgICByZXR1cm4gKCFzdGFydCAmJiBlbmQgPj0gbGVuZ3RoKSA/IGFycmF5IDogYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgY2xlYXJUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vY2xlYXJUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ8T2JqZWN0fSBpZCBUaGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3Qgb2YgdGhlIHRpbWVyIHRvIGNsZWFyLlxuICAgICAqL1xuICAgIHZhciBjbGVhclRpbWVvdXQgPSBjdHhDbGVhclRpbWVvdXQgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICAgIHJldHVybiByb290LmNsZWFyVGltZW91dChpZCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICBidWZmZXIuY29weShyZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgbWFwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNsb25lRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2xvbmUgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIG1hcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZU1hcChtYXAsIGlzRGVlcCwgY2xvbmVGdW5jKSB7XG4gICAgICB2YXIgYXJyYXkgPSBpc0RlZXAgPyBjbG9uZUZ1bmMobWFwVG9BcnJheShtYXApLCBDTE9ORV9ERUVQX0ZMQUcpIDogbWFwVG9BcnJheShtYXApO1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKGFycmF5LCBhZGRNYXBFbnRyeSwgbmV3IG1hcC5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjbG9uZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNsb25lIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzZXQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVTZXQoc2V0LCBpc0RlZXAsIGNsb25lRnVuYykge1xuICAgICAgdmFyIGFycmF5ID0gaXNEZWVwID8gY2xvbmVGdW5jKHNldFRvQXJyYXkoc2V0KSwgQ0xPTkVfREVFUF9GTEFHKSA6IHNldFRvQXJyYXkoc2V0KTtcbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhcnJheSwgYWRkU2V0RW50cnksIG5ldyBzZXQuY29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24pIHtcbiAgICAgICAgICAvLyBTaGlmdCB3aXRoIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGlzc3Vlcy5cbiAgICAgICAgICAvLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgdmFyIHBhaXIgPSAodG9TdHJpbmcobnVtYmVyKSArICdlJykuc3BsaXQoJ2UnKSxcbiAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gKyBwcmVjaXNpb24pKTtcblxuICAgICAgICAgIHBhaXIgPSAodG9TdHJpbmcodmFsdWUpICsgJ2UnKS5zcGxpdCgnZScpO1xuICAgICAgICAgIHJldHVybiArKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gLSBwcmVjaXNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhudW1iZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAgICAgKi9cbiAgICB2YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnRvUGFpcnNgIG9yIGBfLnRvUGFpcnNJbmAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKG9iamVjdCk7XG4gICAgICAgIGlmICh0YWcgPT0gbWFwVGFnKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXkob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IHNldFRhZykge1xuICAgICAgICAgIHJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCwga2V5c0Z1bmMob2JqZWN0KSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVpdGhlciBjdXJyaWVzIG9yIGludm9rZXMgYGZ1bmNgIHdpdGggb3B0aW9uYWxcbiAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgICAxIC0gYF8uYmluZGBcbiAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgKiAgICA0IC0gYF8uY3VycnlgIG9yIGBfLmN1cnJ5UmlnaHRgIG9mIGEgYm91bmQgZnVuY3Rpb25cbiAgICAgKiAgICA4IC0gYF8uY3VycnlgXG4gICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICogICAzMiAtIGBfLnBhcnRpYWxgXG4gICAgICogICA2NCAtIGBfLnBhcnRpYWxSaWdodGBcbiAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICogIDI1NiAtIGBfLmFyeWBcbiAgICAgKiAgNTEyIC0gYF8uZmxpcGBcbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKCFpc0JpbmRLZXkgJiYgdHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGFydGlhbHMgPyBwYXJ0aWFscy5sZW5ndGggOiAwO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnkgPSBhcnkgPT09IHVuZGVmaW5lZCA/IGFyeSA6IG5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwgMCk7XG4gICAgICBhcml0eSA9IGFyaXR5ID09PSB1bmRlZmluZWQgPyBhcml0eSA6IHRvSW50ZWdlcihhcml0eSk7XG4gICAgICBsZW5ndGggLT0gaG9sZGVycyA/IGhvbGRlcnMubGVuZ3RoIDogMDtcblxuICAgICAgaWYgKGJpdG1hc2sgJiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRykge1xuICAgICAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLFxuICAgICAgICAgICAgaG9sZGVyc1JpZ2h0ID0gaG9sZGVycztcblxuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGdldERhdGEoZnVuYyk7XG5cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LFxuICAgICAgICBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIGZ1bmMgPSBuZXdEYXRhWzBdO1xuICAgICAgYml0bWFzayA9IG5ld0RhdGFbMV07XG4gICAgICB0aGlzQXJnID0gbmV3RGF0YVsyXTtcbiAgICAgIHBhcnRpYWxzID0gbmV3RGF0YVszXTtcbiAgICAgIGhvbGRlcnMgPSBuZXdEYXRhWzRdO1xuICAgICAgYXJpdHkgPSBuZXdEYXRhWzldID0gbmV3RGF0YVs5XSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKGlzQmluZEtleSA/IDAgOiBmdW5jLmxlbmd0aClcbiAgICAgICAgOiBuYXRpdmVNYXgobmV3RGF0YVs5XSAtIGxlbmd0aCwgMCk7XG5cbiAgICAgIGlmICghYXJpdHkgJiYgYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpO1xuICAgICAgfVxuICAgICAgaWYgKCFiaXRtYXNrIHx8IGJpdG1hc2sgPT0gV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZyk7XG4gICAgICB9IGVsc2UgaWYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHIHx8IGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KTtcbiAgICAgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gV1JBUF9QQVJUSUFMX0ZMQUcgfHwgYml0bWFzayA9PSAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRykpICYmICFob2xkZXJzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZC5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHNldHRlciA9IGRhdGEgPyBiYXNlU2V0RGF0YSA6IHNldERhdGE7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsIG5ld0RhdGEpLCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICAgICAqIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzQXNzaWduSW4ob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub21pdGAgdG8gY3VzdG9taXplIGl0cyBgXy5jbG9uZURlZXBgIHVzZSB0byBvbmx5IGNsb25lIHBsYWluXG4gICAgICogb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVuY2xvbmVkIHZhbHVlIG9yIGB1bmRlZmluZWRgIHRvIGRlZmVyIGNsb25pbmcgdG8gYF8uY2xvbmVEZWVwYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgICAgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgICAgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gICAgICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICAgICAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkICYmIHN0YWNrLmdldChvdGhlcikpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gICAgICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgICAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICAgICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgICAgIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjbG9uZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNsb25lIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBjbG9uZUZ1bmMsIGlzRGVlcCkge1xuICAgICAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBib29sVGFnOlxuICAgICAgICBjYXNlIGRhdGVUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgICAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lTWFwKG9iamVjdCwgaXNEZWVwLCBjbG9uZUZ1bmMpO1xuXG4gICAgICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVTZXQob2JqZWN0LCBpc0RlZXAsIGNsb25lRnVuYyk7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyB3cmFwcGVyIGBkZXRhaWxzYCBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgYHNvdXJjZWAgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gaW5zZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIGRldGFpbHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBkZXRhaWxzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGRldGFpbHNbbGFzdEluZGV4XSA9IChsZW5ndGggPiAxID8gJyYgJyA6ICcnKSArIGRldGFpbHNbbGFzdEluZGV4XTtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmpvaW4obGVuZ3RoID4gMiA/ICcsICcgOiAnICcpO1xuICAgICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKHJlV3JhcENvbW1lbnQsICd7XFxuLyogW3dyYXBwZWQgd2l0aCAnICsgZGV0YWlscyArICddICovXFxuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG4gICAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fCByZUlzVWludC50ZXN0KHZhbHVlKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICAgICApIHtcbiAgICAgICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgICAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICAgICAgOiAodmFsdWUgPT09IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMYXppYWJsZShmdW5jKSB7XG4gICAgICB2YXIgZnVuY05hbWUgPSBnZXRGdW5jTmFtZShmdW5jKSxcbiAgICAgICAgICBvdGhlciA9IGxvZGFzaFtmdW5jTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2Ygb3RoZXIgIT0gJ2Z1bmN0aW9uJyB8fCAhKGZ1bmNOYW1lIGluIExhenlXcmFwcGVyLnByb3RvdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZ1bmMgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGRhdGEgPSBnZXREYXRhKG90aGVyKTtcbiAgICAgIHJldHVybiAhIWRhdGEgJiYgZnVuYyA9PT0gZGF0YVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2FibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICB2YXIgaXNNYXNrYWJsZSA9IGNvcmVKc0RhdGEgPyBpc0Z1bmN0aW9uIDogc3R1YkZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICAgICAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICAgICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gICAgICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBtYXRjaGVzUHJvcGVydHlgIGZvciBzb3VyY2UgdmFsdWVzIHN1aXRhYmxlXG4gICAgICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gICAgICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIHRoZSBmdW5jdGlvbiBtZXRhZGF0YSBvZiBgc291cmNlYCBpbnRvIGBkYXRhYC5cbiAgICAgKlxuICAgICAqIE1lcmdpbmcgbWV0YWRhdGEgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIHVzZWQgdG8gaW52b2tlIGEgZnVuY3Rpb24uXG4gICAgICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1ldGhvZHMgbGlrZSBgXy5iaW5kYCwgYF8uY3VycnlgLCBhbmQgYF8ucGFydGlhbGBcbiAgICAgKiBtYXkgYmUgYXBwbGllZCByZWdhcmRsZXNzIG9mIGV4ZWN1dGlvbiBvcmRlci4gTWV0aG9kcyBsaWtlIGBfLmFyeWAgYW5kXG4gICAgICogYF8ucmVhcmdgIG1vZGlmeSBmdW5jdGlvbiBhcmd1bWVudHMsIG1ha2luZyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmVcbiAgICAgKiBleGVjdXRlZCBpbXBvcnRhbnQsIHByZXZlbnRpbmcgdGhlIG1lcmdpbmcgb2YgbWV0YWRhdGEuIEhvd2V2ZXIsIHdlIG1ha2VcbiAgICAgKiBhbiBleGNlcHRpb24gZm9yIGEgc2FmZSBjb21iaW5lZCBjYXNlIHdoZXJlIGN1cnJpZWQgZnVuY3Rpb25zIGhhdmUgYF8uYXJ5YFxuICAgICAqIGFuZCBvciBgXy5yZWFyZ2AgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gZGF0YSBUaGUgZGVzdGluYXRpb24gbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBzb3VyY2UgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkYXRhYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZXJnZURhdGEoZGF0YSwgc291cmNlKSB7XG4gICAgICB2YXIgYml0bWFzayA9IGRhdGFbMV0sXG4gICAgICAgICAgc3JjQml0bWFzayA9IHNvdXJjZVsxXSxcbiAgICAgICAgICBuZXdCaXRtYXNrID0gYml0bWFzayB8IHNyY0JpdG1hc2ssXG4gICAgICAgICAgaXNDb21tb24gPSBuZXdCaXRtYXNrIDwgKFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHIHwgV1JBUF9BUllfRkxBRyk7XG5cbiAgICAgIHZhciBpc0NvbWJvID1cbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX1JFQVJHX0ZMQUcpICYmIChkYXRhWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpKSAmJiAoc291cmNlWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpO1xuXG4gICAgICAvLyBFeGl0IGVhcmx5IGlmIG1ldGFkYXRhIGNhbid0IGJlIG1lcmdlZC5cbiAgICAgIGlmICghKGlzQ29tbW9uIHx8IGlzQ29tYm8pKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgdGhpc0FyZ2AgaWYgYXZhaWxhYmxlLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICBkYXRhWzJdID0gc291cmNlWzJdO1xuICAgICAgICAvLyBTZXQgd2hlbiBjdXJyeWluZyBhIGJvdW5kIGZ1bmN0aW9uLlxuICAgICAgICBuZXdCaXRtYXNrIHw9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyA/IDAgOiBXUkFQX0NVUlJZX0JPVU5EX0ZMQUc7XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgYXJndW1lbnRzLlxuICAgICAgdmFyIHZhbHVlID0gc291cmNlWzNdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHZhciBwYXJ0aWFscyA9IGRhdGFbM107XG4gICAgICAgIGRhdGFbM10gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzKHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzRdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzRdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzNdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNF07XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgcmlnaHQgYXJndW1lbnRzLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbNV07XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcGFydGlhbHMgPSBkYXRhWzVdO1xuICAgICAgICBkYXRhWzVdID0gcGFydGlhbHMgPyBjb21wb3NlQXJnc1JpZ2h0KHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzZdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzZdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzVdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNl07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcmdQb3NgIGlmIGF2YWlsYWJsZS5cbiAgICAgIHZhbHVlID0gc291cmNlWzddO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGRhdGFbN10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyeWAgaWYgaXQncyBzbWFsbGVyLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0FSWV9GTEFHKSB7XG4gICAgICAgIGRhdGFbOF0gPSBkYXRhWzhdID09IG51bGwgPyBzb3VyY2VbOF0gOiBuYXRpdmVNaW4oZGF0YVs4XSwgc291cmNlWzhdKTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyaXR5YCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgICAgaWYgKGRhdGFbOV0gPT0gbnVsbCkge1xuICAgICAgICBkYXRhWzldID0gc291cmNlWzldO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgZnVuY2AgYW5kIG1lcmdlIGJpdG1hc2tzLlxuICAgICAgZGF0YVswXSA9IHNvdXJjZVswXTtcbiAgICAgIGRhdGFbMV0gPSBuZXdCaXRtYXNrO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAgICAgKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICAgICAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlb3JkZXIgYGFycmF5YCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBpbmRleGVzIHdoZXJlIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIGZpcnN0IGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBmaXJzdCBlbGVtZW50LCB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBzZWNvbmQgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIHNlY29uZCBlbGVtZW50LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byByZW9yZGVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFycmF5IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVvcmRlcihhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4oaW5kZXhlcy5sZW5ndGgsIGFyckxlbmd0aCksXG4gICAgICAgICAgb2xkQXJyYXkgPSBjb3B5QXJyYXkoYXJyYXkpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBhcnJheVtsZW5ndGhdID0gaXNJbmRleChpbmRleCwgYXJyTGVuZ3RoKSA/IG9sZEFycmF5W2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgdGhpcyBmdW5jdGlvbiBiZWNvbWVzIGhvdCwgaS5lLiBpcyBpbnZva2VkIGEgbG90IGluIGEgc2hvcnRcbiAgICAgKiBwZXJpb2Qgb2YgdGltZSwgaXQgd2lsbCB0cmlwIGl0cyBicmVha2VyIGFuZCB0cmFuc2l0aW9uIHRvIGFuIGlkZW50aXR5XG4gICAgICogZnVuY3Rpb24gdG8gYXZvaWQgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhdXNlcyBpbiBWOC4gU2VlXG4gICAgICogW1Y4IGlzc3VlIDIwNzBdKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIwNzApXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXREYXRhID0gc2hvcnRPdXQoYmFzZVNldERhdGEpO1xuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYHNldFRpbWVvdXRgXShodHRwczovL21kbi5pby9zZXRUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIHNldFRpbWVvdXQgPSBjdHhTZXRUaW1lb3V0IHx8IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICAgIHJldHVybiByb290LnNldFRpbWVvdXQoZnVuYywgd2FpdCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGB3cmFwcGVyYCB0byBtaW1pYyB0aGUgc291cmNlIG9mIGByZWZlcmVuY2VgXG4gICAgICogd2l0aCB3cmFwcGVyIGRldGFpbHMgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwcGVyIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYHdyYXBwZXJgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdyYXBUb1N0cmluZyh3cmFwcGVyLCByZWZlcmVuY2UsIGJpdG1hc2spIHtcbiAgICAgIHZhciBzb3VyY2UgPSAocmVmZXJlbmNlICsgJycpO1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKHdyYXBwZXIsIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgdXBkYXRlV3JhcERldGFpbHMoZ2V0V3JhcERldGFpbHMoc291cmNlKSwgYml0bWFzaykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAgICAgKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAgICAgKiBtaWxsaXNlY29uZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gICAgICB2YXIgY291bnQgPSAwLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgd2hpY2ggbXV0YXRlcyBhbmQgc2V0cyB0aGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9YXJyYXkubGVuZ3RoXSBUaGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGVTZWxmKGFycmF5LCBzaXplKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICAgICAgc2l6ZSA9IHNpemUgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHNpemU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IHNpemUpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBiYXNlUmFuZG9tKGluZGV4LCBsYXN0SW5kZXgpLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtyYW5kXTtcblxuICAgICAgICBhcnJheVtyYW5kXSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBhcnJheS5sZW5ndGggPSBzaXplO1xuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIHZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKHJlTGVhZGluZ0RvdC50ZXN0KHN0cmluZykpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgfVxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICAgIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgd3JhcHBlciBgZGV0YWlsc2AgYmFzZWQgb24gYGJpdG1hc2tgIGZsYWdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkZXRhaWxzYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLCBiaXRtYXNrKSB7XG4gICAgICBhcnJheUVhY2god3JhcEZsYWdzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9ICdfLicgKyBwYWlyWzBdO1xuICAgICAgICBpZiAoKGJpdG1hc2sgJiBwYWlyWzFdKSAmJiAhYXJyYXlJbmNsdWRlcyhkZXRhaWxzLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZXRhaWxzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXRhaWxzLnNvcnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHdyYXBwZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gd3JhcHBlciBUaGUgd3JhcHBlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2xvbmUod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5jbG9uZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZXIuX19jaGFpbl9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2luZGV4X18gID0gd3JhcHBlci5fX2luZGV4X187XG4gICAgICByZXN1bHQuX192YWx1ZXNfXyA9IHdyYXBwZXIuX192YWx1ZXNfXztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIGdyb3VwcyB0aGUgbGVuZ3RoIG9mIGBzaXplYC5cbiAgICAgKiBJZiBgYXJyYXlgIGNhbid0IGJlIHNwbGl0IGV2ZW5seSwgdGhlIGZpbmFsIGNodW5rIHdpbGwgYmUgdGhlIHJlbWFpbmluZ1xuICAgICAqIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPTFdIFRoZSBsZW5ndGggb2YgZWFjaCBjaHVua1xuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWydjJywgJ2QnXV1cbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYicsICdjJ10sIFsnZCddXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBzaXplLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzaXplLCBndWFyZCkgOiBzaXplID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHNpemUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSA9IG5hdGl2ZU1heCh0b0ludGVnZXIoc2l6ZSksIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobmF0aXZlQ2VpbChsZW5ndGggLyBzaXplKSk7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBiYXNlU2xpY2UoYXJyYXksIGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgKiBhbmQvb3IgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNvbmNhdChhcnJheSwgMiwgWzNdLCBbWzRdXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXQoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICAgICAgYXJyYXkgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGFyZ3NbaW5kZXggLSAxXSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGBhcnJheWAgdmFsdWVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLndpdGhvdXQsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2UgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsQnlgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZUJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIG9yZGVyIGFuZFxuICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZVdpdGgob2JqZWN0cywgW3sgJ3gnOiAxLCAneSc6IDIgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZVdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSkge1xuICAgICAgICBjb21wYXJhdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZWxlbWVudHMgb2YgYGFycmF5YCB3aXRoIGB2YWx1ZWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90XG4gICAgICogaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8uZmlsbChhcnJheSwgJ2EnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICpcbiAgICAgKiBfLmZpbGwoQXJyYXkoMyksIDIpO1xuICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAqXG4gICAgICogXy5maWxsKFs0LCA2LCA4LCAxMF0sICcqJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXJ0ICYmIHR5cGVvZiBzdGFydCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgdmFsdWUsIHN0YXJ0KSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRJbmRleGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50c1xuICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggPCAwXG4gICAgICAgICAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApXG4gICAgICAgICAgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYGFycmF5YCB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgWzIsIFszLCBbNF1dLCA1XV07XG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LCBkZXB0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBgXy50b1BhaXJzYDsgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYmplY3QgY29tcG9zZWRcbiAgICAgKiBmcm9tIGtleS12YWx1ZSBgcGFpcnNgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IHBhaXJbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmhlYWQoW10pO1xuICAgICAqIC8vID0+IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzIHRoZVxuICAgICAqIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbml0aWFsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMCwgLTEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGFsbCBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsyXVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBpZiAoaXRlcmF0ZWUgPT09IGxhc3QobWFwcGVkKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYWxsIGVsZW1lbnRzIGluIGBhcnJheWAgaW50byBhIHN0cmluZyBzZXBhcmF0ZWQgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBqb2luZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmpvaW4oWydhJywgJ2InLCAnYyddLCAnficpO1xuICAgICAqIC8vID0+ICdhfmJ+YydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBqb2luKGFycmF5LCBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gJycgOiBuYXRpdmVKb2luLmNhbGwoYXJyYXksIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBhcnJheWAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKSA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleClcbiAgICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjExLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIC0yKTtcbiAgICAgKiAvLyA9PiAnYyc7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlTnRoKGFycmF5LCB0b0ludGVnZXIobikpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGdpdmVuIHZhbHVlcyBmcm9tIGBhcnJheWAgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgKiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSBwcmVkaWNhdGUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbChhcnJheSwgJ2EnLCAnYycpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgdmFyIHB1bGwgPSBiYXNlUmVzdChwdWxsQWxsKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbEJ5KGFycmF5LCBbeyAneCc6IDEgfSwgeyAneCc6IDMgfV0sICd4Jyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxCeShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsV2l0aChhcnJheSwgW3sgJ3gnOiAzLCAneSc6IDQgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiA1LCAneSc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsV2l0aChhcnJheSwgdmFsdWVzLCBjb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyBmcm9tIGBhcnJheWAgY29ycmVzcG9uZGluZyB0byBgaW5kZXhlc2AgYW5kIHJldHVybnMgYW5cbiAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5hdGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKiB2YXIgcHVsbGVkID0gXy5wdWxsQXQoYXJyYXksIFsxLCAzXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2MnXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cocHVsbGVkKTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnZCddXG4gICAgICovXG4gICAgdmFyIHB1bGxBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZUF0KGFycmF5LCBpbmRleGVzKTtcblxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgYXJyYXlNYXAoaW5kZXhlcywgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5kZXgoaW5kZXgsIGxlbmd0aCkgPyAraW5kZXggOiBpbmRleDtcbiAgICAgIH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gICAgICogdG8gcHVsbCBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHZhbHVlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICAgICAqIHZhciBldmVucyA9IF8ucmVtb3ZlKGFycmF5LCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgKiAvLyA9PiBbMiwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgYGFycmF5YCBzbyB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IGJlY29tZXMgdGhlIGxhc3QsIHRoZSBzZWNvbmRcbiAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgIGFuZCBpcyBiYXNlZCBvblxuICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IGFycmF5IDogbmF0aXZlUmV2ZXJzZS5jYWxsKGFycmF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gICAgICogcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAmJiB0eXBlb2YgZW5kICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSB0aGUgbG93ZXN0IGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleChbMzAsIDUwXSwgNDApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgKiBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG9cbiAgICAgKiBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4KFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gNFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubGFzdEluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpIC0gMTtcbiAgICAgICAgaWYgKGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXEoWzEsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMSwgMi4zXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWlsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAxLCBsZW5ndGgpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC4gRWxlbWVudHMgYXJlXG4gICAgICogdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGZhbHNlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLiBFbGVtZW50c1xuICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICogYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uQnkoWzIuMV0sIFsxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbVxuICAgICAqIHRoZSBmaXJzdCBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAqIGluIHRoZSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICAgICAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXFCeShbMi4xLCAxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiBncm91cGVkXG4gICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAqIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwKHppcHBlZCk7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICAgIGFycmF5ID0gYXJyYXlGaWx0ZXIoYXJyYXksIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChncm91cCkpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAoYXJyYXksIGJhc2VQcm9wZXJ0eShpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgcmVncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIHJlZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICogLy8gPT4gW1sxLCAxMCwgMTAwXSwgWzIsIDIwLCAyMDBdXVxuICAgICAqXG4gICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICogLy8gPT4gWzMsIDMwLCAzMDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXBXaXRoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdW56aXAoYXJyYXkpO1xuICAgICAgaWYgKGl0ZXJhdGVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheU1hcChyZXN1bHQsIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdW5kZWZpbmVkLCBncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKi9cbiAgICB2YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgaXMgdGhlXG4gICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgKiBvZiB0aGUgZ2l2ZW4gYXJyYXlzLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlclxuICAgICAqIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ud2l0aG91dFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvcihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICovXG4gICAgdmFyIHhvciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgKiBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjIsIDMuNF1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ueG9yQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHhvckJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy54b3JXaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHhvcldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMsIHRoZSBmaXJzdCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBmaXJzdCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCB0aGUgc2Vjb25kIG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKi9cbiAgICB2YXIgemlwID0gYmFzZVJlc3QodW56aXApO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3REZWVwKFsnYS5iWzBdLmMnLCAnYS5iWzFdLmQnXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3REZWVwKHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGJhc2VTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBXaXRoKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0sIGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBhICsgYiArIGM7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gWzExMSwgMjIyXVxuICAgICAqL1xuICAgIHZhciB6aXBXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBpdGVyYXRlZSA9IGxlbmd0aCA+IDEgPyBhcnJheXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGl0ZXJhdGVlID0gdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgPyAoYXJyYXlzLnBvcCgpLCBpdGVyYXRlZSkgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdW56aXBXaXRoKGFycmF5cywgaXRlcmF0ZWUpO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UgdGhhdCB3cmFwcyBgdmFsdWVgIHdpdGggZXhwbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuIFRoZSByZXN1bHQgb2Ygc3VjaCBzZXF1ZW5jZXMgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiB2YXIgeW91bmdlc3QgPSBfXG4gICAgICogICAuY2hhaW4odXNlcnMpXG4gICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAqICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICogICAgIHJldHVybiBvLnVzZXIgKyAnIGlzICcgKyBvLmFnZTtcbiAgICAgKiAgIH0pXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNoYWluKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoKHZhbHVlKTtcbiAgICAgIHJlc3VsdC5fX2NoYWluX18gPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIGBpbnRlcmNlcHRvcmAgYW5kIHJldHVybnMgYHZhbHVlYC4gVGhlIGludGVyY2VwdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgKiBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UgaW4gb3JkZXIgdG8gbW9kaWZ5IGludGVybWVkaWF0ZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAqICAudGFwKGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICogICAgLy8gTXV0YXRlIGlucHV0IGFycmF5LlxuICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAqICB9KVxuICAgICAqICAucmV2ZXJzZSgpXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhcCh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnRhcGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJwYXNzIHRocnVcIiB2YWx1ZXMgcmVwbGFjaW5nIGludGVybWVkaWF0ZVxuICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKCcgIGFiYyAgJylcbiAgICAgKiAgLmNoYWluKClcbiAgICAgKiAgLnRyaW0oKVxuICAgICAqICAudGhydShmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAqICB9KVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhydSh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5hdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfKG9iamVjdCkuYXQoWydhWzBdLmIuYycsICdhWzFdJ10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIHdyYXBwZXJBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKHBhdGhzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0ID0gbGVuZ3RoID8gcGF0aHNbMF0gOiAwLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXyxcbiAgICAgICAgICBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gYmFzZUF0KG9iamVjdCwgcGF0aHMpOyB9O1xuXG4gICAgICBpZiAobGVuZ3RoID4gMSB8fCB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCB8fFxuICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikgfHwgIWlzSW5kZXgoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdGFydCwgK3N0YXJ0ICsgKGxlbmd0aCA/IDEgOiAwKSk7XG4gICAgICB2YWx1ZS5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAnYXJncyc6IFtpbnRlcmNlcHRvcl0sXG4gICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSwgdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgICAgaWYgKGxlbmd0aCAmJiAhYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2Ugd2l0aCBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjaGFpblxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycykuaGVhZCgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKVxuICAgICAqICAgLmNoYWluKClcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC5waWNrKCd1c2VyJylcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNoYWluKCkge1xuICAgICAgcmV0dXJuIGNoYWluKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21taXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAqIHZhciB3cmFwcGVkID0gXyhhcnJheSkucHVzaCgzKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubGFzdCgpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCkge1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSwgdGhpcy5fX2NoYWluX18pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5leHQgdmFsdWUgb24gYSB3cmFwcGVkIG9iamVjdCBmb2xsb3dpbmcgdGhlXG4gICAgICogW2l0ZXJhdG9yIHByb3RvY29sXShodHRwczovL21kbi5pby9pdGVyYXRpb25fcHJvdG9jb2xzI2l0ZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG5leHRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXh0IGl0ZXJhdG9yIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMSB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDIgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IHRydWUsICd2YWx1ZSc6IHVuZGVmaW5lZCB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlck5leHQoKSB7XG4gICAgICBpZiAodGhpcy5fX3ZhbHVlc19fID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdG9BcnJheSh0aGlzLnZhbHVlKCkpO1xuICAgICAgfVxuICAgICAgdmFyIGRvbmUgPSB0aGlzLl9faW5kZXhfXyA+PSB0aGlzLl9fdmFsdWVzX18ubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtcblxuICAgICAgcmV0dXJuIHsgJ2RvbmUnOiBkb25lLCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBTeW1ib2wuaXRlcmF0b3JcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkW1N5bWJvbC5pdGVyYXRvcl0oKSA9PT0gd3JhcHBlZDtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBBcnJheS5mcm9tKHdyYXBwZWQpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgcGxhbnRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKS5tYXAoc3F1YXJlKTtcbiAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICpcbiAgICAgKiBvdGhlci52YWx1ZSgpO1xuICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUGxhbnQodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgcGFyZW50ID0gdGhpcztcblxuICAgICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpIHtcbiAgICAgICAgdmFyIGNsb25lID0gd3JhcHBlckNsb25lKHBhcmVudCk7XG4gICAgICAgIGNsb25lLl9faW5kZXhfXyA9IDA7XG4gICAgICAgIGNsb25lLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IGNsb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91cyA9IGNsb25lO1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuX193cmFwcGVkX187XG4gICAgICB9XG4gICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIHdyYXBwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8oYXJyYXkpLnJldmVyc2UoKS52YWx1ZSgpXG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgdmFyIHdyYXBwZWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSB7XG4gICAgICAgICAgd3JhcHBlZCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVkID0gd3JhcHBlZC5yZXZlcnNlKCk7XG4gICAgICAgIHdyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAgICdhcmdzJzogW3JldmVyc2VdLFxuICAgICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCwgdGhpcy5fX2NoYWluX18pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudGhydShyZXZlcnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyB0b0pTT04sIHZhbHVlT2ZcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclZhbHVlKCkge1xuICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXywgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IHdhcyByZXR1cm5lZCBieSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvdW50QnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiAyLCAnNSc6IDEgfVxuICAgICAqL1xuICAgIHZhciBjb3VudEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICArK3Jlc3VsdFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBbZW1wdHkgY29sbGVjdGlvbnNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcHR5X3NldCkgYmVjYXVzZVxuICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICogZWxlbWVudHMgb2YgZW1wdHkgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmV2ZXJ5KFt0cnVlLCAxLCBudWxsLCAneWVzJ10sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUV2ZXJ5IDogYmFzZUV2ZXJ5O1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5yZWplY3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAncGViYmxlcydcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqL1xuICAgIHZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9Y29sbGVjdGlvbi5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3QoWzEsIDIsIDMsIDRdLCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgdmFyIGZpbmRMYXN0ID0gY3JlYXRlRmluZChmaW5kTGFzdEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmbGF0dGVuZWQgYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYFxuICAgICAqIHRocnUgYGl0ZXJhdGVlYCBhbmQgZmxhdHRlbmluZyB0aGUgbWFwcGVkIHJlc3VsdHMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbbiwgbl07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlZXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZWVwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgSU5GSU5JVFkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVwdGg9MV0gVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlcHRoKFsxLCAyXSwgZHVwbGljYXRlLCAyKTtcbiAgICAgKiAvLyA9PiBbWzEsIDFdLCBbMiwgMl1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlcHRoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBkZXB0aCkge1xuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAgICAgKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGVhY2hcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvckVhY2hgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGFsaWFzIGVhY2hSaWdodFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaFJpZ2h0KFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAyYCB0aGVuIGAxYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaFJpZ2h0IDogYmFzZUVhY2hSaWdodDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBvcmRlciBvZiBncm91cGVkIHZhbHVlc1xuICAgICAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICAgICAqIHZhbHVlIG9mIGVhY2gga2V5IGlzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAqIGtleS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3JvdXBCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiBbNC4yXSwgJzYnOiBbNi4xLCA2LjNdIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZ3JvdXBCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICAgICAqL1xuICAgIHZhciBncm91cEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgW3ZhbHVlXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiBgY29sbGVjdGlvbmAuIElmIGBjb2xsZWN0aW9uYCBpcyBhIHN0cmluZywgaXQnc1xuICAgICAqIGNoZWNrZWQgZm9yIGEgc3Vic3RyaW5nIG9mIGB2YWx1ZWAsIG90aGVyd2lzZVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogaXMgdXNlZCBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXNcbiAgICAgKiB0aGUgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyh7ICdhJzogMSwgJ2InOiAyIH0sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoJ2FiY2QnLCAnYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICBmcm9tSW5kZXggPSAoZnJvbUluZGV4ICYmICFndWFyZCkgPyB0b0ludGVnZXIoZnJvbUluZGV4KSA6IDA7XG5cbiAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgICAgIGZyb21JbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBmcm9tSW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pXG4gICAgICAgID8gKGZyb21JbmRleCA8PSBsZW5ndGggJiYgY29sbGVjdGlvbi5pbmRleE9mKHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpXG4gICAgICAgIDogKCEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nXG4gICAgICogYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgZWFjaCBpbnZva2VkIG1ldGhvZC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogYXJlIHByb3ZpZGVkIHRvIGVhY2ggaW52b2tlZCBtZXRob2QuIElmIGBwYXRoYCBpcyBhIGZ1bmN0aW9uLCBpdCdzIGludm9rZWRcbiAgICAgKiBmb3IsIGFuZCBgdGhpc2AgYm91bmQgdG8sIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZSBvclxuICAgICAqICB0aGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGVhY2ggbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbWzUsIDEsIDddLCBbMywgMiwgMV1dLCAnc29ydCcpO1xuICAgICAqIC8vID0+IFtbMSwgNSwgN10sIFsxLCAyLCAzXV1cbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFsxMjMsIDQ1Nl0sIFN0cmluZy5wcm90b3R5cGUuc3BsaXQsICcnKTtcbiAgICAgKiAvLyA9PiBbWycxJywgJzInLCAnMyddLCBbJzQnLCAnNScsICc2J11dXG4gICAgICovXG4gICAgdmFyIGludm9rZU1hcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGlzRnVuYyA9IHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXNGdW5jID8gYXBwbHkocGF0aCwgdmFsdWUsIGFyZ3MpIDogYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbGFzdCBlbGVtZW50IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBrZXkuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtcbiAgICAgKiAgIHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LFxuICAgICAqICAgeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCBmdW5jdGlvbihvKSB7XG4gICAgICogICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShvLmNvZGUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ2QnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksICdkaXInKTtcbiAgICAgKiAvLyA9PiB7ICdsZWZ0JzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdyaWdodCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqL1xuICAgIHZhciBrZXlCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIHZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICAgICAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICAgICAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdXG4gICAgICpcbiAgICAgKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRCeWAgZXhjZXB0IHRoYXQgaXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIHNvcnRcbiAgICAgKiBvcmRlcnMgb2YgdGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlc1xuICAgICAqIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yXG4gICAgICogZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlciBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXlbXXxGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IFtvcmRlcnNdIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBTb3J0IGJ5IGB1c2VyYCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIGJ5IGBhZ2VgIGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICogXy5vcmRlckJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10sIFsnYXNjJywgJ2Rlc2MnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycywgZ3VhcmQpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0FycmF5KGl0ZXJhdGVlcykpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gaXRlcmF0ZWVzID09IG51bGwgPyBbXSA6IFtpdGVyYXRlZXNdO1xuICAgICAgfVxuICAgICAgb3JkZXJzID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBvcmRlcnM7XG4gICAgICBpZiAoIWlzQXJyYXkob3JkZXJzKSkge1xuICAgICAgICBvcmRlcnMgPSBvcmRlcnMgPT0gbnVsbCA/IFtdIDogW29yZGVyc107XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byB0d28gZ3JvdXBzLCB0aGUgZmlyc3Qgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IsIHRoZSBzZWNvbmQgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleSBmb3IuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydwZWJibGVzJ10sIFsnYmFybmV5JywgJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsICdwZWJibGVzJ10sIFsnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKi9cbiAgICB2YXIgcGFydGl0aW9uID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFtrZXkgPyAwIDogMV0ucHVzaCh2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24oKSB7IHJldHVybiBbW10sIFtdXTsgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZWR1Y2VzIGBjb2xsZWN0aW9uYCB0byBhIHZhbHVlIHdoaWNoIGlzIHRoZSBhY2N1bXVsYXRlZCByZXN1bHQgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAgICAgKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gICAgICogaXMgbm90IGdpdmVuLCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgaXMgdXNlZCBhcyB0aGUgaW5pdGlhbFxuICAgICAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICAgICAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gICAgICogYW5kIGBzb3J0QnlgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICAgICAqICAgcmV0dXJuIHN1bSArIG47XG4gICAgICogfSwgMCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZWR1Y2UoeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmVkdWNlYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbWzAsIDFdLCBbMiwgM10sIFs0LCA1XV07XG4gICAgICpcbiAgICAgKiBfLnJlZHVjZVJpZ2h0KGFycmF5LCBmdW5jdGlvbihmbGF0dGVuZWQsIG90aGVyKSB7XG4gICAgICogICByZXR1cm4gZmxhdHRlbmVkLmNvbmNhdChvdGhlcik7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA1LCAyLCAzLCAwLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2VSaWdodCA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2hSaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmZpbHRlcmA7IHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYFxuICAgICAqIHRoYXQgYHByZWRpY2F0ZWAgZG9lcyAqKm5vdCoqIHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5maWx0ZXJcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5yZWplY3QodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVqZWN0KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZSA6IGJhc2VTYW1wbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGBuYCByYW5kb20gZWxlbWVudHMgYXQgdW5pcXVlIGtleXMgZnJvbSBgY29sbGVjdGlvbmAgdXAgdG8gdGhlXG4gICAgICogc2l6ZSBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzMsIDFdXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCA0KTtcbiAgICAgKiAvLyA9PiBbMiwgMywgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZVNpemUgOiBiYXNlU2FtcGxlU2l6ZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc2h1ZmZsZWQgdmFsdWVzLCB1c2luZyBhIHZlcnNpb24gb2YgdGhlXG4gICAgICogW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1ZmZsZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2h1ZmZsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IFs0LCAxLCAzLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTaHVmZmxlIDogYmFzZVNodWZmbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICAgICAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb2xsZWN0aW9uIHNpemUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2l6ZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uc2l6ZSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8uc2l6ZSgncGViYmxlcycpO1xuICAgICAqIC8vID0+IDdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaXplKGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc2l6ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFueSoqIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb21lKFtudWxsLCAwLCAneWVzJywgZmFsc2VdLCBCb29sZWFuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U29tZSA6IGJhc2VTb21lO1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICAgICAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICAgICAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCA0MF0sIFsnZnJlZCcsIDQ4XV1cbiAgICAgKi9cbiAgICB2YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICAgICAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gICAgICogfSwgXy5ub3coKSk7XG4gICAgICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgbm93ID0gY3R4Tm93IHx8IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbiAgICB9O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmJlZm9yZWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiBgZnVuY2Agb25jZSBpdCdzIGNhbGxlZCBgbmAgb3IgbW9yZSB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYmVmb3JlIGBmdW5jYCBpcyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXZlcyA9IFsncHJvZmlsZScsICdzZXR0aW5ncyddO1xuICAgICAqXG4gICAgICogdmFyIGRvbmUgPSBfLmFmdGVyKHNhdmVzLmxlbmd0aCwgZnVuY3Rpb24oKSB7XG4gICAgICogICBjb25zb2xlLmxvZygnZG9uZSBzYXZpbmchJyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goc2F2ZXMsIGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgKiAgIGFzeW5jU2F2ZSh7ICd0eXBlJzogdHlwZSwgJ2NvbXBsZXRlJzogZG9uZSB9KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdkb25lIHNhdmluZyEnIGFmdGVyIHRoZSB0d28gYXN5bmMgc2F2ZXMgaGF2ZSBjb21wbGV0ZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWZ0ZXIobiwgZnVuYykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHVwIHRvIGBuYCBhcmd1bWVudHMsXG4gICAgICogaWdub3JpbmcgYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgY2FwLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLmFyeShwYXJzZUludCwgMSkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnkoZnVuYywgbiwgZ3VhcmQpIHtcbiAgICAgIG4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IG47XG4gICAgICBuID0gKGZ1bmMgJiYgbiA9PSBudWxsKSA/IGZ1bmMubGVuZ3RoIDogbjtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQVJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHNcbiAgICAgKiBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hpbGUgaXQncyBjYWxsZWQgbGVzcyB0aGFuIGBuYCB0aW1lcy4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBhdCB3aGljaCBgZnVuY2AgaXMgbm8gbG9uZ2VyIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uYmVmb3JlKDUsIGFkZENvbnRhY3RUb0xpc3QpKTtcbiAgICAgKiAvLyA9PiBBbGxvd3MgYWRkaW5nIHVwIHRvIDQgY29udGFjdHMgdG8gdGhlIGxpc3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmVmb3JlKG4sIGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uID4gMCkge1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8PSAxKSB7XG4gICAgICAgICAgZnVuYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2BcbiAgICAgKiBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgbmF0aXZlIGBGdW5jdGlvbiNiaW5kYCwgdGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBiaW5kLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmQpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgb2JqZWN0W2tleV1gIHdpdGggYHBhcnRpYWxzYFxuICAgICAqIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIGBfLmJpbmRgIGJ5IGFsbG93aW5nIGJvdW5kIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VcbiAgICAgKiBtZXRob2RzIHRoYXQgbWF5IGJlIHJlZGVmaW5lZCBvciBkb24ndCB5ZXQgZXhpc3QuIFNlZVxuICAgICAqIFtQZXRlciBNaWNoYXV4J3MgYXJ0aWNsZV0oaHR0cDovL3BldGVyLm1pY2hhdXguY2EvYXJ0aWNsZXMvbGF6eS1mdW5jdGlvbi1kZWZpbml0aW9uLXBhdHRlcm4pXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kS2V5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAndXNlcic6ICdmcmVkJyxcbiAgICAgKiAgICdncmVldCc6IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiBvYmplY3QuZ3JlZXQgPSBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICd5YSAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kS2V5ID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBrZXksIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZEtleSkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoa2V5LCBiaXRtYXNrLCBvYmplY3QsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYXJndW1lbnRzIG9mIGBmdW5jYCBhbmQgZWl0aGVyIGludm9rZXNcbiAgICAgKiBgZnVuY2AgcmV0dXJuaW5nIGl0cyByZXN1bHQsIGlmIGF0IGxlYXN0IGBhcml0eWAgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlXG4gICAgICogYmVlbiBwcm92aWRlZCwgb3IgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVtYWluaW5nIGBmdW5jYFxuICAgICAqIGFyZ3VtZW50cywgYW5kIHNvIG9uLiBUaGUgYXJpdHkgb2YgYGZ1bmNgIG1heSBiZSBzcGVjaWZpZWQgaWYgYGZ1bmMubGVuZ3RoYFxuICAgICAqIGlzIG5vdCBzdWZmaWNpZW50LlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEpKDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMSkoXywgMykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnkoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeS5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jdXJyeWAgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBhcHBsaWVkIHRvIGBmdW5jYFxuICAgICAqIGluIHRoZSBtYW5uZXIgb2YgYF8ucGFydGlhbFJpZ2h0YCBpbnN0ZWFkIG9mIGBfLnBhcnRpYWxgLlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5UmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnlSaWdodChhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgzKSgyKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMiwgMykoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDMpKDEsIF8pKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5UmlnaHQoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeVJpZ2h0LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAgICAgKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAgICAgKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gICAgICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gICAgICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gICAgICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICAgICAqIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICAgICAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gICAgICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gICAgICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICAgICAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxhc3RBcmdzLFxuICAgICAgICAgIGxhc3RUaGlzLFxuICAgICAgICAgIG1heFdhaXQsXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIHRpbWVySWQsXG4gICAgICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgICAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICAgICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgICAgICByZXN1bHQgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZyA/IG5hdGl2ZU1pbihyZXN1bHQsIG1heFdhaXQgLSB0aW1lU2luY2VMYXN0SW52b2tlKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAgICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICAgIHJldHVybiBkZWJvdW5jZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmZXJzIGludm9raW5nIHRoZSBgZnVuY2AgdW50aWwgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXMgY2xlYXJlZC4gQW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlZmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAqIC8vID0+IExvZ3MgJ2RlZmVycmVkJyBhZnRlciBvbmUgbWlsbGlzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlZmVyID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCAxLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlbGF5KGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAqIC8vID0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWxheSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgdG9OdW1iZXIod2FpdCkgfHwgMCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZsaXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbGlwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZmxpcHBlZCA9IF8uZmxpcChmdW5jdGlvbigpIHtcbiAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiBbJ2QnLCAnYycsICdiJywgJ2EnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsaXAoZnVuYykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9GTElQX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAgICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICpcbiAgICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICpcbiAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAgICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqXG4gICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICAgICAgcmV0dXJuIG1lbW9pemVkO1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxuICAgIG1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJlZGljYXRlIGBmdW5jYC4gVGhlXG4gICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBuZWdhdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0V2ZW4obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgKiAvLyA9PiBbMSwgMywgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlzIHJlc3RyaWN0ZWQgdG8gaW52b2tpbmcgYGZ1bmNgIG9uY2UuIFJlcGVhdCBjYWxsc1xuICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGluaXRpYWxpemUgPSBfLm9uY2UoY3JlYXRlQXBwbGljYXRpb24pO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogLy8gPT4gYGNyZWF0ZUFwcGxpY2F0aW9uYCBpcyBpbnZva2VkIG9uY2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbmNlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiZWZvcmUoMiwgZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnRzIHRyYW5zZm9ybWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3RyYW5zZm9ybXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZG91YmxlZChuKSB7XG4gICAgICogICByZXR1cm4gbiAqIDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIFt4LCB5XTtcbiAgICAgKiB9LCBbc3F1YXJlLCBkb3VibGVkXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDksIDMpO1xuICAgICAqIC8vID0+IFs4MSwgNl1cbiAgICAgKlxuICAgICAqIGZ1bmMoMTAsIDUpO1xuICAgICAqIC8vID0+IFsxMDAsIDEwXVxuICAgICAqL1xuICAgIHZhciBvdmVyQXJncyA9IGNhc3RSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHRyYW5zZm9ybXMgPSAodHJhbnNmb3Jtcy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHRyYW5zZm9ybXNbMF0pKVxuICAgICAgICA/IGFycmF5TWFwKHRyYW5zZm9ybXNbMF0sIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSlcbiAgICAgICAgOiBhcnJheU1hcChiYXNlRmxhdHRlbih0cmFuc2Zvcm1zLCAxKSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIGZ1bmNzTGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihhcmdzLmxlbmd0aCwgZnVuY3NMZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSB0cmFuc2Zvcm1zW2luZGV4XS5jYWxsKHRoaXMsIGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICogYXJndW1lbnRzIGl0IHJlY2VpdmVzLiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmJpbmRgIGV4Y2VwdCBpdCBkb2VzICoqbm90KipcbiAgICAgKiBhbHRlciB0aGUgYHRoaXNgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbChncmVldCwgJ2hlbGxvJyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbChncmVldCwgXywgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWwgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWwpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucGFydGlhbGAgZXhjZXB0IHRoYXQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzXG4gICAgICogYXJlIGFwcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbFJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnaGVsbG8nLCBfKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWxSaWdodCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbFJpZ2h0KSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyBhcnJhbmdlZCBhY2NvcmRpbmdcbiAgICAgKiB0byB0aGUgc3BlY2lmaWVkIGBpbmRleGVzYCB3aGVyZSB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIGZpcnN0IGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlYXJyYW5nZSBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFyZ3VtZW50IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH0sIFsyLCAwLCAxXSk7XG4gICAgICpcbiAgICAgKiByZWFyZ2VkKCdiJywgJ2MnLCAnYScpXG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgdmFyIHJlYXJnID0gZmxhdFJlc3QoZnVuY3Rpb24oZnVuYywgaW5kZXhlcykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9SRUFSR19GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpbmRleGVzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAqIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gICAgICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgKiBbYEZ1bmN0aW9uI2FwcGx5YF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3NwcmVhZCBvcGVyYXRvcl0oaHR0cHM6Ly9tZG4uaW8vc3ByZWFkX29wZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHNwcmVhZCBhcmd1bWVudHMgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgc3ByZWFkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICogICByZXR1cm4gd2hvICsgJyBzYXlzICcgKyB3aGF0O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KFsnZnJlZCcsICdoZWxsbyddKTtcbiAgICAgKiAvLyA9PiAnZnJlZCBzYXlzIGhlbGxvJ1xuICAgICAqXG4gICAgICogdmFyIG51bWJlcnMgPSBQcm9taXNlLmFsbChbXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoNDApLFxuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiB4ICsgeTtcbiAgICAgKiB9KSk7XG4gICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3ByZWFkKGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogbmF0aXZlTWF4KHRvSW50ZWdlcihzdGFydCksIDApO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJnc1tzdGFydF0sXG4gICAgICAgICAgICBvdGhlckFyZ3MgPSBjYXN0U2xpY2UoYXJncywgMCwgc3RhcnQpO1xuXG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIGFycmF5UHVzaChvdGhlckFyZ3MsIGFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICAgICAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gICAgICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAgICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy51bmFyeShwYXJzZUludCkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmFyeShmdW5jKSB7XG4gICAgICByZXR1cm4gYXJ5KGZ1bmMsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGB2YWx1ZWAgdG8gYHdyYXBwZXJgIGFzIGl0cyBmaXJzdFxuICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAqIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBgd3JhcHBlcmAuIFRoZSB3cmFwcGVyIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcCA9IF8ud3JhcChfLmVzY2FwZSwgZnVuY3Rpb24oZnVuYywgdGV4dCkge1xuICAgICAqICAgcmV0dXJuICc8cD4nICsgZnVuYyh0ZXh0KSArICc8L3A+JztcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHAoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcCh2YWx1ZSwgd3JhcHBlcikge1xuICAgICAgcmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtudWxsXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAgICAgKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICAgICAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmd0KDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAgICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICAgICAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgKiBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICAgICAqXG4gICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICogcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAgICAgKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gICAgICogZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAgICAgKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBvYmplY3QgPT09IG90aGVyO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICAgICAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKF8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAgIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gICAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAgICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gICAgICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hTihOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBpc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gICAgICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAgICAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gICAgICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAgICAgKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICAgICAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05pbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbChOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC44LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHQoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHRlKDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoMSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgICAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gNDI5NDk2NzI5NVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgnMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gSW5maW5pdHlcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG4gICAgICByZXR1cm4gYXBwbHkoYXNzaWduSW5XaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIHZhbHVlKSkge1xuICAgICAgICByZXN1bHRbdmFsdWVdLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0gPSBba2V5XTtcbiAgICAgIH1cbiAgICB9LCBnZXRJdGVyYXRlZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogWzEsIDIsIDMsIDRdIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uaW52b2tlKG9iamVjdCwgJ2FbMF0uYi5jLnNsaWNlJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICovXG4gICAgdmFyIGludm9rZSA9IGJhc2VSZXN0KGJhc2VJbnZva2UpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICAgICAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8ua2V5cygnaGknKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMSddXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWFwVmFsdWVzYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgKiBzYW1lIHZhbHVlcyBhcyBgb2JqZWN0YCBhbmQga2V5cyBnZW5lcmF0ZWQgYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlXG4gICAgICogc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwVmFsdWVzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwS2V5cyh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIHJldHVybiBrZXkgKyB2YWx1ZTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhMSc6IDEsICdiMic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcEtleXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhcyBgb2JqZWN0YCBhbmQgdmFsdWVzIGdlbmVyYXRlZFxuICAgICAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcEtleXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCAnYWdlJyk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcFZhbHVlcyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gICAgICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAgICAgKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAgICAgKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgb3RoZXIgPSB7XG4gICAgICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAgICAgKiBwcm9wZXJ0aWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgbWVyZ2luZyBpcyBoYW5kbGVkIGJ5IHRoZVxuICAgICAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICAgICAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gICAgICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBwYXRocyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gYF8ucGlja2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBvbWl0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0KG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgdmFyIG9taXQgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0RlZXAgPSBmYWxzZTtcbiAgICAgIHBhdGhzID0gYXJyYXlNYXAocGF0aHMsIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICAgIGlzRGVlcCB8fCAoaXNEZWVwID0gcGF0aC5sZW5ndGggPiAxKTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICB9KTtcbiAgICAgIGNvcHlPYmplY3Qob2JqZWN0LCBnZXRBbGxLZXlzSW4ob2JqZWN0KSwgcmVzdWx0KTtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBiYXNlVW5zZXQocmVzdWx0LCBwYXRoc1tsZW5ndGhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2ZcbiAgICAgKiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0XG4gICAgICogYHByZWRpY2F0ZWAgZG9lc24ndCByZXR1cm4gdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdEJ5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gb21pdEJ5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gcGlja0J5KG9iamVjdCwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGBvYmplY3RgIHByb3BlcnRpZXMgYHByZWRpY2F0ZWAgcmV0dXJuc1xuICAgICAqIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrQnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwaWNrQnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICB2YXIgcHJvcHMgPSBhcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSwgZnVuY3Rpb24ocHJvcCkge1xuICAgICAgICByZXR1cm4gW3Byb3BdO1xuICAgICAgfSk7XG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUpO1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwcm9wcywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSwgcGF0aFswXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmdldGAgZXhjZXB0IHRoYXQgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFcbiAgICAgKiBmdW5jdGlvbiBpdCdzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgaXRzIHBhcmVudCBvYmplY3QgYW5kXG4gICAgICogaXRzIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHJlc29sdmUuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjMSc6IDMsICdjMic6IF8uY29uc3RhbnQoNCkgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMxJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMyJyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsIF8uY29uc3RhbnQoJ2RlZmF1bHQnKSk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdWx0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbG9vcCBpcyBlbnRlcmVkIHdoZW4gcGF0aCBpcyBlbXB0eS5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICAgIG9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXhdKV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG4gICAgICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZS5jYWxsKG9iamVjdCkgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiBhIHBvcnRpb24gb2YgYHBhdGhgIGRvZXNuJ3QgZXhpc3QsXG4gICAgICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gICAgICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAgICAgKiBgcGF0aGAgY3JlYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8uc2V0V2l0aChvYmplY3QsICdbMF1bMV0nLCAnYScsIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V2l0aChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YFxuICAgICAqIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcCBvciBzZXQsIGl0c1xuICAgICAqIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl1dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnMgPSBjcmVhdGVUb1BhaXJzKGtleXMpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlyc1xuICAgICAqIGZvciBgb2JqZWN0YCB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXBcbiAgICAgKiBvciBzZXQsIGl0cyBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzSW5cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXSwgWydjJywgM11dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnNJbiA9IGNyZWF0ZVRvUGFpcnMoa2V5c0luKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAgICAgKiBgYWNjdW11bGF0b3JgIG9iamVjdCB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgZWFjaCBvZiBpdHMgb3duXG4gICAgICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gICAgICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICAgICAqIHByb3ZpZGVkLCBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBgW1tQcm90b3R5cGVdXWAgd2lsbCBiZSB1c2VkLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gICAgICogICByZXN1bHQucHVzaChuICo9IG4pO1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA5XVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIGlzQXJyTGlrZSA9IGlzQXJyIHx8IGlzQnVmZmVyKG9iamVjdCkgfHwgaXNUeXBlZEFycmF5KG9iamVjdCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpO1xuICAgICAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICAgICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgICBpZiAoaXNBcnJMaWtlKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwcm9wZXJ0eSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiA3IH0gfV0gfTtcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqXG4gICAgICogXy51bnNldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB0cnVlIDogYmFzZVVuc2V0KG9iamVjdCwgcGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGFjY2VwdHMgYHVwZGF0ZXJgIHRvIHByb2R1Y2UgdGhlXG4gICAgICogdmFsdWUgdG8gc2V0LiBVc2UgYF8udXBkYXRlV2l0aGAgdG8gY3VzdG9taXplIGBwYXRoYCBjcmVhdGlvbi4gVGhlIGB1cGRhdGVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAnYVswXS5iLmMnLCBmdW5jdGlvbihuKSB7IHJldHVybiBuICogbjsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICd4WzBdLnkueicsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPyBuICsgMSA6IDA7IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udXBkYXRlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy51cGRhdGVXaXRoKG9iamVjdCwgJ1swXVsxXScsIF8uY29uc3RhbnQoJ2EnKSwgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXaXRoKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy52YWx1ZXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWydoJywgJ2knXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENsYW1wcyBgbnVtYmVyYCB3aXRoaW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoLTEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gLTVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSB0b051bWJlcih1cHBlcik7XG4gICAgICAgIHVwcGVyID0gdXBwZXIgPT09IHVwcGVyID8gdXBwZXIgOiAwO1xuICAgICAgfVxuICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSB0b051bWJlcihsb3dlcik7XG4gICAgICAgIGxvd2VyID0gbG93ZXIgPT09IGxvd2VyID8gbG93ZXIgOiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VDbGFtcCh0b051bWJlcihudW1iZXIpLCBsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgbmAgaXMgYmV0d2VlbiBgc3RhcnRgIGFuZCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBJZlxuICAgICAqIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAgICAgKiBJZiBgc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBgZW5kYCB0aGUgcGFyYW1zIGFyZSBzd2FwcGVkIHRvIHN1cHBvcnRcbiAgICAgKiBuZWdhdGl2ZSByYW5nZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ucmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMywgMiwgNCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDgpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDIsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMS4yLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNS4yLCA0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKC0zLCAtMiwgLTYpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICB9XG4gICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgcmV0dXJuIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZHVjZXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKiBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwcm92aWRlZCBhIG51bWJlciBiZXR3ZWVuIGAwYCBhbmQgdGhlIGdpdmVuIG51bWJlclxuICAgICAqIGlzIHJldHVybmVkLiBJZiBgZmxvYXRpbmdgIGlzIGB0cnVlYCwgb3IgZWl0aGVyIGBsb3dlcmAgb3IgYHVwcGVyYCBhcmVcbiAgICAgKiBmbG9hdHMsIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIHJldHVybmVkIGluc3RlYWQgb2YgYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXI9MF0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdXBwZXI9MV0gVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zsb2F0aW5nXSBTcGVjaWZ5IHJldHVybmluZyBhIGZsb2F0aW5nLXBvaW50IG51bWJlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgwLCA1KTtcbiAgICAgKiAvLyA9PiBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSk7XG4gICAgICogLy8gPT4gYWxzbyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSwgdHJ1ZSk7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgxLjIsIDUuMik7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAxLjIgYW5kIDUuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJhbmRvbShsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSB7XG4gICAgICBpZiAoZmxvYXRpbmcgJiYgdHlwZW9mIGZsb2F0aW5nICE9ICdib29sZWFuJyAmJiBpc0l0ZXJhdGVlQ2FsbChsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSkge1xuICAgICAgICB1cHBlciA9IGZsb2F0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cHBlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IHVwcGVyO1xuICAgICAgICAgIHVwcGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb3dlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPT09IHVuZGVmaW5lZCAmJiB1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgdXBwZXIgPSAxO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGxvd2VyID0gdG9GaW5pdGUobG93ZXIpO1xuICAgICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwcGVyID0gdG9GaW5pdGUodXBwZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPiB1cHBlcikge1xuICAgICAgICB2YXIgdGVtcCA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVwcGVyO1xuICAgICAgICB1cHBlciA9IHRlbXA7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgfHwgbG93ZXIgJSAxIHx8IHVwcGVyICUgMSkge1xuICAgICAgICB2YXIgcmFuZCA9IG5hdGl2ZVJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlTWluKGxvd2VyICsgKHJhbmQgKiAodXBwZXIgLSBsb3dlciArIGZyZWVQYXJzZUZsb2F0KCcxZS0nICsgKChyYW5kICsgJycpLmxlbmd0aCAtIDEpKSkpLCB1cHBlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJhbmRvbShsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIFtjYW1lbCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYW1lbENhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FtZWwgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKi9cbiAgICB2YXIgY2FtZWxDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICB3b3JkID0gd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/IGNhcGl0YWxpemUod29yZCkgOiB3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZSBhbmQgdGhlIHJlbWFpbmluZ1xuICAgICAqIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYXBpdGFsaXplZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FwaXRhbGl6ZSgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdXBwZXJGaXJzdCh0b1N0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlYnVycnMgYHN0cmluZ2AgYnkgY29udmVydGluZ1xuICAgICAqIFtMYXRpbi0xIFN1cHBsZW1lbnRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluLTFfU3VwcGxlbWVudF8oVW5pY29kZV9ibG9jaykjQ2hhcmFjdGVyX3RhYmxlKVxuICAgICAqIGFuZCBbTGF0aW4gRXh0ZW5kZWQtQV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fRXh0ZW5kZWQtQSlcbiAgICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMgYW5kIHJlbW92aW5nXG4gICAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBkZWJ1cnIuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlYnVycignZMOpasOgIHZ1Jyk7XG4gICAgICogLy8gPT4gJ2RlamEgdnUnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVidXJyKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiBzdHJpbmcgJiYgc3RyaW5nLnJlcGxhY2UocmVMYXRpbiwgZGVidXJyTGV0dGVyKS5yZXBsYWNlKHJlQ29tYm9NYXJrLCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj1zdHJpbmcubGVuZ3RoXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBlbmRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2MnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcblxuICAgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBsZW5ndGhcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgbGVuZ3RoKTtcblxuICAgICAgdmFyIGVuZCA9IHBvc2l0aW9uO1xuICAgICAgcG9zaXRpb24gLT0gdGFyZ2V0Lmxlbmd0aDtcbiAgICAgIHJldHVybiBwb3NpdGlvbiA+PSAwICYmIHN0cmluZy5zbGljZShwb3NpdGlvbiwgZW5kKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gICAgICogY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gICAgICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gICAgICpcbiAgICAgKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gICAgICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAgICAgKiB1bmxlc3MgdGhleSdyZSBwYXJ0IG9mIGEgdGFnIG9yIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS4gU2VlXG4gICAgICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICAgICAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICAgICAqIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZykgdG8gcmVkdWNlXG4gICAgICogWFNTIHZlY3RvcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZXMgdGhlIGBSZWdFeHBgIHNwZWNpYWwgY2hhcmFjdGVycyBcIl5cIiwgXCIkXCIsIFwiXFxcIiwgXCIuXCIsIFwiKlwiLCBcIitcIixcbiAgICAgKiBcIj9cIiwgXCIoXCIsIFwiKVwiLCBcIltcIiwgXCJdXCIsIFwie1wiLCBcIn1cIiwgYW5kIFwifFwiIGluIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGVSZWdFeHAoJ1tsb2Rhc2hdKGh0dHBzOi8vbG9kYXNoLmNvbS8pJyk7XG4gICAgICogLy8gPT4gJ1xcW2xvZGFzaFxcXVxcKGh0dHBzOi8vbG9kYXNoXFwuY29tL1xcKSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNSZWdFeHBDaGFyLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtrZWJhYiBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTcGVjaWFsX2Nhc2Vfc3R5bGVzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGtlYmFiIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqL1xuICAgIHZhciBrZWJhYkNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnLScgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbG93ZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdmUkVEJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckZpcnN0ID0gY3JlYXRlQ2FzZUZpcnN0KCd0b0xvd2VyQ2FzZScpO1xuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuXG4gICAgICogUGFkZGluZyBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBjYW4ndCBiZSBldmVubHkgZGl2aWRlZCBieSBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCk7XG4gICAgICogLy8gPT4gJyAgYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgsICdfLScpO1xuICAgICAqIC8vID0+ICdfLWFiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzdHJMZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgbWlkID0gKGxlbmd0aCAtIHN0ckxlbmd0aCkgLyAyO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVGbG9vcihtaWQpLCBjaGFycykgK1xuICAgICAgICBzdHJpbmcgK1xuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUNlaWwobWlkKSwgY2hhcnMpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIHJpZ2h0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICdhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ2FiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZEVuZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKHN0cmluZyArIGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnICAgYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tX2FiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpICsgc3RyaW5nKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBpbnRlZ2VyIG9mIHRoZSBzcGVjaWZpZWQgcmFkaXguIElmIGByYWRpeGAgaXNcbiAgICAgKiBgdW5kZWZpbmVkYCBvciBgMGAsIGEgYHJhZGl4YCBvZiBgMTBgIGlzIHVzZWQgdW5sZXNzIGB2YWx1ZWAgaXMgYVxuICAgICAqIGhleGFkZWNpbWFsLCBpbiB3aGljaCBjYXNlIGEgYHJhZGl4YCBvZiBgMTZgIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgYWxpZ25zIHdpdGggdGhlXG4gICAgICogW0VTNSBpbXBsZW1lbnRhdGlvbl0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTUuMS4yLjIpIG9mIGBwYXJzZUludGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpeD0xMF0gVGhlIHJhZGl4IHRvIGludGVycHJldCBgdmFsdWVgIGJ5LlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFyc2VJbnQoJzA4Jyk7XG4gICAgICogLy8gPT4gOFxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzA4JywgJzEwJ10sIF8ucGFyc2VJbnQpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4LCBndWFyZCkge1xuICAgICAgaWYgKGd1YXJkIHx8IHJhZGl4ID09IG51bGwpIHtcbiAgICAgICAgcmFkaXggPSAwO1xuICAgICAgfSBlbHNlIGlmIChyYWRpeCkge1xuICAgICAgICByYWRpeCA9ICtyYWRpeDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVQYXJzZUludCh0b1N0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKSwgcmFkaXggfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwZWF0cyB0aGUgZ2l2ZW4gc3RyaW5nIGBuYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCcqJywgMyk7XG4gICAgICogLy8gPT4gJyoqKidcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAyKTtcbiAgICAgKiAvLyA9PiAnYWJjYWJjJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDApO1xuICAgICAqIC8vID0+ICcnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSZXBlYXQodG9TdHJpbmcoc3RyaW5nKSwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgbWF0Y2hlcyBmb3IgYHBhdHRlcm5gIGluIGBzdHJpbmdgIHdpdGggYHJlcGxhY2VtZW50YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3JlcGxhY2VgXShodHRwczovL21kbi5pby9TdHJpbmcvcmVwbGFjZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgbWF0Y2ggcmVwbGFjZW1lbnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGxhY2UoJ0hpIEZyZWQnLCAnRnJlZCcsICdCYXJuZXknKTtcbiAgICAgKiAvLyA9PiAnSGkgQmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGxhY2UoKSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhhcmdzWzBdKTtcblxuICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoIDwgMyA/IHN0cmluZyA6IHN0cmluZy5yZXBsYWNlKGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3NuYWtlIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NuYWtlX2Nhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc25ha2UgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJy0tRk9PLUJBUi0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICovXG4gICAgdmFyIHNuYWtlQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICdfJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3NwbGl0YF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3NwbGl0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHNlcGFyYXRvciBUaGUgc2VwYXJhdG9yIHBhdHRlcm4gdG8gc3BsaXQgYnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW1pdF0gVGhlIGxlbmd0aCB0byB0cnVuY2F0ZSByZXN1bHRzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc3RyaW5nIHNlZ21lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNwbGl0KCdhLWItYycsICctJywgMik7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNwbGl0KHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgaWYgKGxpbWl0ICYmIHR5cGVvZiBsaW1pdCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGxpbWl0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX0FSUkFZX0xFTkdUSCA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKCFsaW1pdCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoXG4gICAgICAgICAgICB0eXBlb2Ygc2VwYXJhdG9yID09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAoc2VwYXJhdG9yICE9IG51bGwgJiYgIWlzUmVnRXhwKHNlcGFyYXRvcikpXG4gICAgICAgICAgKSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKCFzZXBhcmF0b3IgJiYgaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJpbmdUb0FycmF5KHN0cmluZyksIDAsIGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzdGFydCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTdHlsaXN0aWNfb3Jfc3BlY2lhbGlzZWRfdXNhZ2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RhcnQgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqL1xuICAgIHZhciBzdGFydENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB1cHBlckZpcnN0KHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPTBdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT0gbnVsbFxuICAgICAgICA/IDBcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgc3RyaW5nLmxlbmd0aCk7XG5cbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHN0cmluZy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyB0YXJnZXQubGVuZ3RoKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICAgICAqIGluIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXJzLCBIVE1MLWVzY2FwZSBpbnRlcnBvbGF0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluXG4gICAgICogXCJlc2NhcGVcIiBkZWxpbWl0ZXJzLCBhbmQgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLiBEYXRhXG4gICAgICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAgICAgKiBvYmplY3QgaXMgZ2l2ZW4sIGl0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgXy50ZW1wbGF0ZVNldHRpbmdzYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICAgICAqIFtzb3VyY2VVUkxzXShodHRwOi8vd3d3Lmh0bWw1cm9ja3MuY29tL2VuL3R1dG9yaWFscy9kZXZlbG9wZXJ0b29scy9zb3VyY2VtYXBzLyN0b2Mtc291cmNldXJsKVxuICAgICAqIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcHJlY29tcGlsaW5nIHRlbXBsYXRlcyBzZWVcbiAgICAgKiBbbG9kYXNoJ3MgY3VzdG9tIGJ1aWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL2xvZGFzaC5jb20vY3VzdG9tLWJ1aWxkcykuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBDaHJvbWUgZXh0ZW5zaW9uIHNhbmRib3hlcyBzZWVcbiAgICAgKiBbQ2hyb21lJ3MgZXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvc2FuZGJveGluZ0V2YWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgdGVtcGxhdGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5lc2NhcGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmVzY2FwZV1cbiAgICAgKiAgVGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAgICAgKiAgVGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmltcG9ydHM9Xy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNdXG4gICAgICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmludGVycG9sYXRlPV8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZV1cbiAgICAgKiAgVGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0nbG9kYXNoLnRlbXBsYXRlU291cmNlc1tuXSddXG4gICAgICogIFRoZSBzb3VyY2VVUkwgb2YgdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAgICAgKiAgVGhlIGRhdGEgb2JqZWN0IHZhcmlhYmxlIG5hbWUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdmcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIgdG8gZXNjYXBlIGRhdGEgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICc8c2NyaXB0PicgfSk7XG4gICAgICogLy8gPT4gJzxiPiZsdDtzY3JpcHQmZ3Q7PC9iPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlciB0byBleGVjdXRlIEphdmFTY3JpcHQgYW5kIGdlbmVyYXRlIEhUTUwuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgXy5mb3JFYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBwcmludChcImhlbGxvIFwiICsgdXNlcik7ICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnYmFybmV5JyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgRVMgdGVtcGxhdGUgbGl0ZXJhbCBkZWxpbWl0ZXIgYXMgYW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvICR7IHVzZXIgfSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ3BlYmJsZXMnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSBiYWNrc2xhc2hlcyB0byB0cmVhdCBkZWxpbWl0ZXJzIGFzIHBsYWluIHRleHQuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJ2lnbm9yZWQnIH0pO1xuICAgICAqIC8vID0+ICc8JS0gdmFsdWUgJT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBpbXBvcnRzYCBvcHRpb24gdG8gaW1wb3J0IGBqUXVlcnlgIGFzIGBqcWAuXG4gICAgICogdmFyIHRleHQgPSAnPCUganEuZWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+JztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlVVJMYCBvcHRpb24gdG8gc3BlY2lmeSBhIGN1c3RvbSBzb3VyY2VVUkwgZm9yIHRoZSB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnLCB7ICdzb3VyY2VVUkwnOiAnL2Jhc2ljL2dyZWV0aW5nLmpzdCcgfSk7XG4gICAgICogY29tcGlsZWQoZGF0YSk7XG4gICAgICogLy8gPT4gRmluZCB0aGUgc291cmNlIG9mIFwiZ3JlZXRpbmcuanN0XCIgdW5kZXIgdGhlIFNvdXJjZXMgdGFiIG9yIFJlc291cmNlcyBwYW5lbCBvZiB0aGUgd2ViIGluc3BlY3Rvci5cbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGkgPCU9IGRhdGEudXNlciAlPiEnLCB7ICd2YXJpYWJsZSc6ICdkYXRhJyB9KTtcbiAgICAgKiBjb21waWxlZC5zb3VyY2U7XG4gICAgICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICAgICAqIC8vICAgdmFyIF9fdCwgX19wID0gJyc7XG4gICAgICogLy8gICBfX3AgKz0gJ2hpICcgKyAoKF9fdCA9ICggZGF0YS51c2VyICkpID09IG51bGwgPyAnJyA6IF9fdCkgKyAnISc7XG4gICAgICogLy8gICByZXR1cm4gX19wO1xuICAgICAqIC8vIH1cbiAgICAgKlxuICAgICAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAgICAgKiBfLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGUgPSAve3soW1xcc1xcU10rPyl9fS9nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIHt7IHVzZXIgfX0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIG11c3RhY2hlISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICAgICAqIC8vIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzLlxuICAgICAqIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdqc3QuanMnKSwgJ1xcXG4gICAgICogICB2YXIgSlNUID0ge1xcXG4gICAgICogICAgIFwibWFpblwiOiAnICsgXy50ZW1wbGF0ZShtYWluVGV4dCkuc291cmNlICsgJ1xcXG4gICAgICogICB9O1xcXG4gICAgICogJyk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkge1xuICAgICAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gKGh0dHA6Ly9lam9obi5vcmcvYmxvZy9qYXZhc2NyaXB0LW1pY3JvLXRlbXBsYXRpbmcvKVxuICAgICAgLy8gYW5kIExhdXJhIERva3Rvcm92YSdzIGRvVC5qcyAoaHR0cHM6Ly9naXRodWIuY29tL29sYWRvL2RvVCkuXG4gICAgICB2YXIgc2V0dGluZ3MgPSBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncztcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgb3B0aW9ucyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucywgc2V0dGluZ3MsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pO1xuXG4gICAgICB2YXIgaW1wb3J0cyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucy5pbXBvcnRzLCBzZXR0aW5ncy5pbXBvcnRzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxcbiAgICAgICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICAgICAgaW1wb3J0c1ZhbHVlcyA9IGJhc2VWYWx1ZXMoaW1wb3J0cywgaW1wb3J0c0tleXMpO1xuXG4gICAgICB2YXIgaXNFc2NhcGluZyxcbiAgICAgICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICAgICAgaW5kZXggPSAwLFxuICAgICAgICAgIGludGVycG9sYXRlID0gb3B0aW9ucy5pbnRlcnBvbGF0ZSB8fCByZU5vTWF0Y2gsXG4gICAgICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gICAgICAvLyBDb21waWxlIHRoZSByZWdleHAgdG8gbWF0Y2ggZWFjaCBkZWxpbWl0ZXIuXG4gICAgICB2YXIgcmVEZWxpbWl0ZXJzID0gUmVnRXhwKFxuICAgICAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICBpbnRlcnBvbGF0ZS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAoaW50ZXJwb2xhdGUgPT09IHJlSW50ZXJwb2xhdGUgPyByZUVzVGVtcGxhdGUgOiByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAgICAgLCAnZycpO1xuXG4gICAgICAvLyBVc2UgYSBzb3VyY2VVUkwgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICB2YXIgc291cmNlVVJMID0gJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgICgnc291cmNlVVJMJyBpbiBvcHRpb25zXG4gICAgICAgICAgPyBvcHRpb25zLnNvdXJjZVVSTFxuICAgICAgICAgIDogKCdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWycgKyAoKyt0ZW1wbGF0ZUNvdW50ZXIpICsgJ10nKVxuICAgICAgICApICsgJ1xcbic7XG5cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgICAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgICAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICAgICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICAgICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gICAgICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gICAgICB2YXIgdmFyaWFibGUgPSBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbcHJlZGljYXRlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBwcmVkaWNhdGVzIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckV2ZXJ5KFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBvdmVyRXZlcnkgPSBjcmVhdGVPdmVyKGFycmF5RXZlcnkpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmICoqYW55Kiogb2YgdGhlIGBwcmVkaWNhdGVzYCByZXR1cm5cbiAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSAobG9kYXNoRnVuYy5uYW1lICsgJycpLFxuICAgICAgICAgICAgbmFtZXMgPSByZWFsTmFtZXNba2V5XSB8fCAocmVhbE5hbWVzW2tleV0gPSBbXSk7XG5cbiAgICAgICAgbmFtZXMucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vbG9kYXNoL2xvZGFzaC5qc1xuLy8gbW9kdWxlIGlkID0gMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!\r\n * Select2 4.0.3\r\n * https://select2.github.io\r\n *\r\n * Released under the MIT license\r\n * https://github.com/select2/select2/blob/master/LICENSE.md\r\n */\r\n(function (factory) {\r\n if (true) {\r\n // AMD. Register as an anonymous module.\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n } else if (typeof exports === 'object') {\r\n // Node/CommonJS\r\n factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function (jQuery) {\r\n // This is needed so we can catch the AMD loader configuration and use it\r\n // The inner file should be wrapped (by `banner.start.js`) in a function that\r\n // returns the AMD loader references.\r\n var S2 =\r\n(function () {\r\n // Restore the Select2 AMD loader so it can be used\r\n // Needed mostly in the language files, where the loader is not inserted\r\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\r\n var S2 = jQuery.fn.select2.amd;\r\n }\r\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name && name.charAt(0) === \".\") {\n //If have a base name, try to normalize against it,\n //otherwise, assume it is a top-level require that will\n //be relative to baseUrl in the end.\n if (baseName) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // Node .js allowance:\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n //Lop off the last part of baseParts, so that . matches the\n //\"directory\" and not name of the baseName's module. For instance,\n //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n //want the directory, \"one/two\" for this normalization.\n name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n //start trimDots\n for (i = 0; i < name.length; i += 1) {\n part = name[i];\n if (part === \".\") {\n name.splice(i, 1);\n i -= 1;\n } else if (part === \"..\") {\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n //End of the line. Keep at least one non-dot\n //path segment at the front so it can be mapped\n //correctly to disk. Otherwise, there is likely\n //no path mapping for a path starting with '..'.\n //This can still fail, but catches the most reasonable\n //uses of ..\n break;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join(\"/\");\n } else if (name.indexOf('./') === 0) {\n // No baseName, so this is ID is resolved relative\n // to baseUrl, pull off the leading dot.\n name = name.substring(2);\n }\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relName) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relName));\n } else {\n name = normalize(name, relName);\n }\n } else {\n name = normalize(name, relName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relName);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, callback).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\r\nS2.define('jquery',[],function () {\r\n var _$ = jQuery || $;\r\n\r\n if (_$ == null && console && console.error) {\r\n console.error(\r\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\r\n 'found. Make sure that you are including jQuery before Select2 on your ' +\r\n 'web page.'\r\n );\r\n }\r\n\r\n return _$;\r\n});\r\n\nS2.define('select2/utils',[\r\n 'jquery'\r\n], function ($) {\r\n var Utils = {};\r\n\r\n Utils.Extend = function (ChildClass, SuperClass) {\r\n var __hasProp = {}.hasOwnProperty;\r\n\r\n function BaseConstructor () {\r\n this.constructor = ChildClass;\r\n }\r\n\r\n for (var key in SuperClass) {\r\n if (__hasProp.call(SuperClass, key)) {\r\n ChildClass[key] = SuperClass[key];\r\n }\r\n }\r\n\r\n BaseConstructor.prototype = SuperClass.prototype;\r\n ChildClass.prototype = new BaseConstructor();\r\n ChildClass.__super__ = SuperClass.prototype;\r\n\r\n return ChildClass;\r\n };\r\n\r\n function getMethods (theClass) {\r\n var proto = theClass.prototype;\r\n\r\n var methods = [];\r\n\r\n for (var methodName in proto) {\r\n var m = proto[methodName];\r\n\r\n if (typeof m !== 'function') {\r\n continue;\r\n }\r\n\r\n if (methodName === 'constructor') {\r\n continue;\r\n }\r\n\r\n methods.push(methodName);\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n Utils.Decorate = function (SuperClass, DecoratorClass) {\r\n var decoratedMethods = getMethods(DecoratorClass);\r\n var superMethods = getMethods(SuperClass);\r\n\r\n function DecoratedClass () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n var argCount = DecoratorClass.prototype.constructor.length;\r\n\r\n var calledConstructor = SuperClass.prototype.constructor;\r\n\r\n if (argCount > 0) {\r\n unshift.call(arguments, SuperClass.prototype.constructor);\r\n\r\n calledConstructor = DecoratorClass.prototype.constructor;\r\n }\r\n\r\n calledConstructor.apply(this, arguments);\r\n }\r\n\r\n DecoratorClass.displayName = SuperClass.displayName;\r\n\r\n function ctr () {\r\n this.constructor = DecoratedClass;\r\n }\r\n\r\n DecoratedClass.prototype = new ctr();\r\n\r\n for (var m = 0; m < superMethods.length; m++) {\r\n var superMethod = superMethods[m];\r\n\r\n DecoratedClass.prototype[superMethod] =\r\n SuperClass.prototype[superMethod];\r\n }\r\n\r\n var calledMethod = function (methodName) {\r\n // Stub out the original method if it's not decorating an actual method\r\n var originalMethod = function () {};\r\n\r\n if (methodName in DecoratedClass.prototype) {\r\n originalMethod = DecoratedClass.prototype[methodName];\r\n }\r\n\r\n var decoratedMethod = DecoratorClass.prototype[methodName];\r\n\r\n return function () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n unshift.call(arguments, originalMethod);\r\n\r\n return decoratedMethod.apply(this, arguments);\r\n };\r\n };\r\n\r\n for (var d = 0; d < decoratedMethods.length; d++) {\r\n var decoratedMethod = decoratedMethods[d];\r\n\r\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\r\n }\r\n\r\n return DecoratedClass;\r\n };\r\n\r\n var Observable = function () {\r\n this.listeners = {};\r\n };\r\n\r\n Observable.prototype.on = function (event, callback) {\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.listeners[event].push(callback);\r\n } else {\r\n this.listeners[event] = [callback];\r\n }\r\n };\r\n\r\n Observable.prototype.trigger = function (event) {\r\n var slice = Array.prototype.slice;\r\n var params = slice.call(arguments, 1);\r\n\r\n this.listeners = this.listeners || {};\r\n\r\n // Params should always come in as an array\r\n if (params == null) {\r\n params = [];\r\n }\r\n\r\n // If there are no arguments to the event, use a temporary object\r\n if (params.length === 0) {\r\n params.push({});\r\n }\r\n\r\n // Set the `_type` of the first object to the event\r\n params[0]._type = event;\r\n\r\n if (event in this.listeners) {\r\n this.invoke(this.listeners[event], slice.call(arguments, 1));\r\n }\r\n\r\n if ('*' in this.listeners) {\r\n this.invoke(this.listeners['*'], arguments);\r\n }\r\n };\r\n\r\n Observable.prototype.invoke = function (listeners, params) {\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i].apply(this, params);\r\n }\r\n };\r\n\r\n Utils.Observable = Observable;\r\n\r\n Utils.generateChars = function (length) {\r\n var chars = '';\r\n\r\n for (var i = 0; i < length; i++) {\r\n var randomChar = Math.floor(Math.random() * 36);\r\n chars += randomChar.toString(36);\r\n }\r\n\r\n return chars;\r\n };\r\n\r\n Utils.bind = function (func, context) {\r\n return function () {\r\n func.apply(context, arguments);\r\n };\r\n };\r\n\r\n Utils._convertData = function (data) {\r\n for (var originalKey in data) {\r\n var keys = originalKey.split('-');\r\n\r\n var dataLevel = data;\r\n\r\n if (keys.length === 1) {\r\n continue;\r\n }\r\n\r\n for (var k = 0; k < keys.length; k++) {\r\n var key = keys[k];\r\n\r\n // Lowercase the first letter\r\n // By default, dash-separated becomes camelCase\r\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\r\n\r\n if (!(key in dataLevel)) {\r\n dataLevel[key] = {};\r\n }\r\n\r\n if (k == keys.length - 1) {\r\n dataLevel[key] = data[originalKey];\r\n }\r\n\r\n dataLevel = dataLevel[key];\r\n }\r\n\r\n delete data[originalKey];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Utils.hasScroll = function (index, el) {\r\n // Adapted from the function created by @ShadowScripter\r\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\r\n // The original code can be found at\r\n // http://codereview.stackexchange.com/q/13338\r\n // and was designed to be used with the Sizzle selector engine.\r\n\r\n var $el = $(el);\r\n var overflowX = el.style.overflowX;\r\n var overflowY = el.style.overflowY;\r\n\r\n //Check both x and y declarations\r\n if (overflowX === overflowY &&\r\n (overflowY === 'hidden' || overflowY === 'visible')) {\r\n return false;\r\n }\r\n\r\n if (overflowX === 'scroll' || overflowY === 'scroll') {\r\n return true;\r\n }\r\n\r\n return ($el.innerHeight() < el.scrollHeight ||\r\n $el.innerWidth() < el.scrollWidth);\r\n };\r\n\r\n Utils.escapeMarkup = function (markup) {\r\n var replaceMap = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '\\'': ''',\r\n '/': '/'\r\n };\r\n\r\n // Do not try to escape the markup if it's not a string\r\n if (typeof markup !== 'string') {\r\n return markup;\r\n }\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replaceMap[match];\r\n });\r\n };\r\n\r\n // Append an array of jQuery nodes to a given element.\r\n Utils.appendMany = function ($element, $nodes) {\r\n // jQuery 1.7.x does not support $.fn.append() with an array\r\n // Fall back to a jQuery object collection using $.fn.add()\r\n if ($.fn.jquery.substr(0, 3) === '1.7') {\r\n var $jqNodes = $();\r\n\r\n $.map($nodes, function (node) {\r\n $jqNodes = $jqNodes.add(node);\r\n });\r\n\r\n $nodes = $jqNodes;\r\n }\r\n\r\n $element.append($nodes);\r\n };\r\n\r\n return Utils;\r\n});\r\n\nS2.define('select2/results',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Results ($element, options, dataAdapter) {\r\n this.$element = $element;\r\n this.data = dataAdapter;\r\n this.options = options;\r\n\r\n Results.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Results, Utils.Observable);\r\n\r\n Results.prototype.render = function () {\r\n var $results = $(\r\n '<ul class=\"select2-results__options\" role=\"tree\"></ul>'\r\n );\r\n\r\n if (this.options.get('multiple')) {\r\n $results.attr('aria-multiselectable', 'true');\r\n }\r\n\r\n this.$results = $results;\r\n\r\n return $results;\r\n };\r\n\r\n Results.prototype.clear = function () {\r\n this.$results.empty();\r\n };\r\n\r\n Results.prototype.displayMessage = function (params) {\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n this.clear();\r\n this.hideLoading();\r\n\r\n var $message = $(\r\n '<li role=\"treeitem\" aria-live=\"assertive\"' +\r\n ' class=\"select2-results__option\"></li>'\r\n );\r\n\r\n var message = this.options.get('translations').get(params.message);\r\n\r\n $message.append(\r\n escapeMarkup(\r\n message(params.args)\r\n )\r\n );\r\n\r\n $message[0].className += ' select2-results__message';\r\n\r\n this.$results.append($message);\r\n };\r\n\r\n Results.prototype.hideMessages = function () {\r\n this.$results.find('.select2-results__message').remove();\r\n };\r\n\r\n Results.prototype.append = function (data) {\r\n this.hideLoading();\r\n\r\n var $options = [];\r\n\r\n if (data.results == null || data.results.length === 0) {\r\n if (this.$results.children().length === 0) {\r\n this.trigger('results:message', {\r\n message: 'noResults'\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n data.results = this.sort(data.results);\r\n\r\n for (var d = 0; d < data.results.length; d++) {\r\n var item = data.results[d];\r\n\r\n var $option = this.option(item);\r\n\r\n $options.push($option);\r\n }\r\n\r\n this.$results.append($options);\r\n };\r\n\r\n Results.prototype.position = function ($results, $dropdown) {\r\n var $resultsContainer = $dropdown.find('.select2-results');\r\n $resultsContainer.append($results);\r\n };\r\n\r\n Results.prototype.sort = function (data) {\r\n var sorter = this.options.get('sorter');\r\n\r\n return sorter(data);\r\n };\r\n\r\n Results.prototype.highlightFirstItem = function () {\r\n var $options = this.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n var $selected = $options.filter('[aria-selected=true]');\r\n\r\n // Check if there are any selected options\r\n if ($selected.length > 0) {\r\n // If there are selected options, highlight the first\r\n $selected.first().trigger('mouseenter');\r\n } else {\r\n // If there are no selected options, highlight the first option\r\n // in the dropdown\r\n $options.first().trigger('mouseenter');\r\n }\r\n\r\n this.ensureHighlightVisible();\r\n };\r\n\r\n Results.prototype.setClasses = function () {\r\n var self = this;\r\n\r\n this.data.current(function (selected) {\r\n var selectedIds = $.map(selected, function (s) {\r\n return s.id.toString();\r\n });\r\n\r\n var $options = self.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n var item = $.data(this, 'data');\r\n\r\n // id needs to be converted to a string when comparing\r\n var id = '' + item.id;\r\n\r\n if ((item.element != null && item.element.selected) ||\r\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\r\n $option.attr('aria-selected', 'true');\r\n } else {\r\n $option.attr('aria-selected', 'false');\r\n }\r\n });\r\n\r\n });\r\n };\r\n\r\n Results.prototype.showLoading = function (params) {\r\n this.hideLoading();\r\n\r\n var loadingMore = this.options.get('translations').get('searching');\r\n\r\n var loading = {\r\n disabled: true,\r\n loading: true,\r\n text: loadingMore(params)\r\n };\r\n var $loading = this.option(loading);\r\n $loading.className += ' loading-results';\r\n\r\n this.$results.prepend($loading);\r\n };\r\n\r\n Results.prototype.hideLoading = function () {\r\n this.$results.find('.loading-results').remove();\r\n };\r\n\r\n Results.prototype.option = function (data) {\r\n var option = document.createElement('li');\r\n option.className = 'select2-results__option';\r\n\r\n var attrs = {\r\n 'role': 'treeitem',\r\n 'aria-selected': 'false'\r\n };\r\n\r\n if (data.disabled) {\r\n delete attrs['aria-selected'];\r\n attrs['aria-disabled'] = 'true';\r\n }\r\n\r\n if (data.id == null) {\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n if (data._resultId != null) {\r\n option.id = data._resultId;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n if (data.children) {\r\n attrs.role = 'group';\r\n attrs['aria-label'] = data.text;\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n for (var attr in attrs) {\r\n var val = attrs[attr];\r\n\r\n option.setAttribute(attr, val);\r\n }\r\n\r\n if (data.children) {\r\n var $option = $(option);\r\n\r\n var label = document.createElement('strong');\r\n label.className = 'select2-results__group';\r\n\r\n var $label = $(label);\r\n this.template(data, label);\r\n\r\n var $children = [];\r\n\r\n for (var c = 0; c < data.children.length; c++) {\r\n var child = data.children[c];\r\n\r\n var $child = this.option(child);\r\n\r\n $children.push($child);\r\n }\r\n\r\n var $childrenContainer = $('<ul></ul>', {\r\n 'class': 'select2-results__options select2-results__options--nested'\r\n });\r\n\r\n $childrenContainer.append($children);\r\n\r\n $option.append(label);\r\n $option.append($childrenContainer);\r\n } else {\r\n this.template(data, option);\r\n }\r\n\r\n $.data(option, 'data', data);\r\n\r\n return option;\r\n };\r\n\r\n Results.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-results';\r\n\r\n this.$results.attr('id', id);\r\n\r\n container.on('results:all', function (params) {\r\n self.clear();\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('results:append', function (params) {\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('query', function (params) {\r\n self.hideMessages();\r\n self.showLoading(params);\r\n });\r\n\r\n container.on('select', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('unselect', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expended=\"true\"\r\n self.$results.attr('aria-expanded', 'true');\r\n self.$results.attr('aria-hidden', 'false');\r\n\r\n self.setClasses();\r\n self.ensureHighlightVisible();\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expended=\"false\"\r\n self.$results.attr('aria-expanded', 'false');\r\n self.$results.attr('aria-hidden', 'true');\r\n self.$results.removeAttr('aria-activedescendant');\r\n });\r\n\r\n container.on('results:toggle', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n $highlighted.trigger('mouseup');\r\n });\r\n\r\n container.on('results:select', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var data = $highlighted.data('data');\r\n\r\n if ($highlighted.attr('aria-selected') == 'true') {\r\n self.trigger('close', {});\r\n } else {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n });\r\n\r\n container.on('results:previous', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n // If we are already at te top, don't move further\r\n if (currentIndex === 0) {\r\n return;\r\n }\r\n\r\n var nextIndex = currentIndex - 1;\r\n\r\n // If none are highlighted, highlight the first\r\n if ($highlighted.length === 0) {\r\n nextIndex = 0;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top;\r\n var nextTop = $next.offset().top;\r\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextTop - currentOffset < 0) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:next', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var nextIndex = currentIndex + 1;\r\n\r\n // If we are at the last option, stay there\r\n if (nextIndex >= $options.length) {\r\n return;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var nextBottom = $next.offset().top + $next.outerHeight(false);\r\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextBottom > currentOffset) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n params.element.addClass('select2-results__option--highlighted');\r\n });\r\n\r\n container.on('results:message', function (params) {\r\n self.displayMessage(params);\r\n });\r\n\r\n if ($.fn.mousewheel) {\r\n this.$results.on('mousewheel', function (e) {\r\n var top = self.$results.scrollTop();\r\n\r\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\r\n\r\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\r\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\r\n\r\n if (isAtTop) {\r\n self.$results.scrollTop(0);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (isAtBottom) {\r\n self.$results.scrollTop(\r\n self.$results.get(0).scrollHeight - self.$results.height()\r\n );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var $this = $(this);\r\n\r\n var data = $this.data('data');\r\n\r\n if ($this.attr('aria-selected') === 'true') {\r\n if (self.options.get('multiple')) {\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n } else {\r\n self.trigger('close', {});\r\n }\r\n\r\n return;\r\n }\r\n\r\n self.trigger('select', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n });\r\n\r\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var data = $(this).data('data');\r\n\r\n self.getHighlightedResults()\r\n .removeClass('select2-results__option--highlighted');\r\n\r\n self.trigger('results:focus', {\r\n data: data,\r\n element: $(this)\r\n });\r\n });\r\n };\r\n\r\n Results.prototype.getHighlightedResults = function () {\r\n var $highlighted = this.$results\r\n .find('.select2-results__option--highlighted');\r\n\r\n return $highlighted;\r\n };\r\n\r\n Results.prototype.destroy = function () {\r\n this.$results.remove();\r\n };\r\n\r\n Results.prototype.ensureHighlightVisible = function () {\r\n var $highlighted = this.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var $options = this.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var currentOffset = this.$results.offset().top;\r\n var nextTop = $highlighted.offset().top;\r\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n var offsetDelta = nextTop - currentOffset;\r\n nextOffset -= $highlighted.outerHeight(false) * 2;\r\n\r\n if (currentIndex <= 2) {\r\n this.$results.scrollTop(0);\r\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\r\n this.$results.scrollTop(nextOffset);\r\n }\r\n };\r\n\r\n Results.prototype.template = function (result, container) {\r\n var template = this.options.get('templateResult');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n var content = template(result, container);\r\n\r\n if (content == null) {\r\n container.style.display = 'none';\r\n } else if (typeof content === 'string') {\r\n container.innerHTML = escapeMarkup(content);\r\n } else {\r\n $(container).append(content);\r\n }\r\n };\r\n\r\n return Results;\r\n});\r\n\nS2.define('select2/keys',[\r\n\r\n], function () {\r\n var KEYS = {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46\r\n };\r\n\r\n return KEYS;\r\n});\r\n\nS2.define('select2/selection/base',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function BaseSelection ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n BaseSelection.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseSelection, Utils.Observable);\r\n\r\n BaseSelection.prototype.render = function () {\r\n var $selection = $(\r\n '<span class=\"select2-selection\" role=\"combobox\" ' +\r\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\r\n '</span>'\r\n );\r\n\r\n this._tabindex = 0;\r\n\r\n if (this.$element.data('old-tabindex') != null) {\r\n this._tabindex = this.$element.data('old-tabindex');\r\n } else if (this.$element.attr('tabindex') != null) {\r\n this._tabindex = this.$element.attr('tabindex');\r\n }\r\n\r\n $selection.attr('title', this.$element.attr('title'));\r\n $selection.attr('tabindex', this._tabindex);\r\n\r\n this.$selection = $selection;\r\n\r\n return $selection;\r\n };\r\n\r\n BaseSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-container';\r\n var resultsId = container.id + '-results';\r\n\r\n this.container = container;\r\n\r\n this.$selection.on('focus', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n if (evt.which === KEYS.SPACE) {\r\n evt.preventDefault();\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$selection.attr('aria-activedescendant', params.data._resultId);\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expanded=\"true\"\r\n self.$selection.attr('aria-expanded', 'true');\r\n self.$selection.attr('aria-owns', resultsId);\r\n\r\n self._attachCloseHandler(container);\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expanded=\"false\"\r\n self.$selection.attr('aria-expanded', 'false');\r\n self.$selection.removeAttr('aria-activedescendant');\r\n self.$selection.removeAttr('aria-owns');\r\n\r\n self.$selection.focus();\r\n\r\n self._detachCloseHandler(container);\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$selection.attr('tabindex', self._tabindex);\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$selection.attr('tabindex', '-1');\r\n });\r\n };\r\n\r\n BaseSelection.prototype._handleBlur = function (evt) {\r\n var self = this;\r\n\r\n // This needs to be delayed as the active element is the body when the tab\r\n // key is pressed, possibly along with others.\r\n window.setTimeout(function () {\r\n // Don't trigger `blur` if the focus is still in the selection\r\n if (\r\n (document.activeElement == self.$selection[0]) ||\r\n ($.contains(self.$selection[0], document.activeElement))\r\n ) {\r\n return;\r\n }\r\n\r\n self.trigger('blur', evt);\r\n }, 1);\r\n };\r\n\r\n BaseSelection.prototype._attachCloseHandler = function (container) {\r\n var self = this;\r\n\r\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\r\n var $target = $(e.target);\r\n\r\n var $select = $target.closest('.select2');\r\n\r\n var $all = $('.select2.select2-container--open');\r\n\r\n $all.each(function () {\r\n var $this = $(this);\r\n\r\n if (this == $select[0]) {\r\n return;\r\n }\r\n\r\n var $element = $this.data('element');\r\n\r\n $element.select2('close');\r\n });\r\n });\r\n };\r\n\r\n BaseSelection.prototype._detachCloseHandler = function (container) {\r\n $(document.body).off('mousedown.select2.' + container.id);\r\n };\r\n\r\n BaseSelection.prototype.position = function ($selection, $container) {\r\n var $selectionContainer = $container.find('.selection');\r\n $selectionContainer.append($selection);\r\n };\r\n\r\n BaseSelection.prototype.destroy = function () {\r\n this._detachCloseHandler(this.container);\r\n };\r\n\r\n BaseSelection.prototype.update = function (data) {\r\n throw new Error('The `update` method must be defined in child classes.');\r\n };\r\n\r\n return BaseSelection;\r\n});\r\n\nS2.define('select2/selection/single',[\r\n 'jquery',\r\n './base',\r\n '../utils',\r\n '../keys'\r\n], function ($, BaseSelection, Utils, KEYS) {\r\n function SingleSelection () {\r\n SingleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(SingleSelection, BaseSelection);\r\n\r\n SingleSelection.prototype.render = function () {\r\n var $selection = SingleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--single');\r\n\r\n $selection.html(\r\n '<span class=\"select2-selection__rendered\"></span>' +\r\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\r\n '<b role=\"presentation\"></b>' +\r\n '</span>'\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n SingleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n SingleSelection.__super__.bind.apply(this, arguments);\r\n\r\n var id = container.id + '-container';\r\n\r\n this.$selection.find('.select2-selection__rendered').attr('id', id);\r\n this.$selection.attr('aria-labelledby', id);\r\n\r\n this.$selection.on('mousedown', function (evt) {\r\n // Only respond to left clicks\r\n if (evt.which !== 1) {\r\n return;\r\n }\r\n\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on('focus', function (evt) {\r\n // User focuses on the container\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n // User exits the container\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n if (!container.isOpen()) {\r\n self.$selection.focus();\r\n }\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n };\r\n\r\n SingleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n SingleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n SingleSelection.prototype.selectionContainer = function () {\r\n return $('<span></span>');\r\n };\r\n\r\n SingleSelection.prototype.update = function (data) {\r\n if (data.length === 0) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n var selection = data[0];\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n var formatted = this.display(selection, $rendered);\r\n\r\n $rendered.empty().append(formatted);\r\n $rendered.prop('title', selection.title || selection.text);\r\n };\r\n\r\n return SingleSelection;\r\n});\r\n\nS2.define('select2/selection/multiple',[\r\n 'jquery',\r\n './base',\r\n '../utils'\r\n], function ($, BaseSelection, Utils) {\r\n function MultipleSelection ($element, options) {\r\n MultipleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(MultipleSelection, BaseSelection);\r\n\r\n MultipleSelection.prototype.render = function () {\r\n var $selection = MultipleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--multiple');\r\n\r\n $selection.html(\r\n '<ul class=\"select2-selection__rendered\"></ul>'\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n MultipleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n MultipleSelection.__super__.bind.apply(this, arguments);\r\n\r\n this.$selection.on('click', function (evt) {\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on(\r\n 'click',\r\n '.select2-selection__choice__remove',\r\n function (evt) {\r\n // Ignore the event if it is disabled\r\n if (self.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $remove = $(this);\r\n var $selection = $remove.parent();\r\n\r\n var data = $selection.data('data');\r\n\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n }\r\n );\r\n };\r\n\r\n MultipleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n MultipleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n MultipleSelection.prototype.selectionContainer = function () {\r\n var $container = $(\r\n '<li class=\"select2-selection__choice\">' +\r\n '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\r\n '×' +\r\n '</span>' +\r\n '</li>'\r\n );\r\n\r\n return $container;\r\n };\r\n\r\n MultipleSelection.prototype.update = function (data) {\r\n this.clear();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n var $selections = [];\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var selection = data[d];\r\n\r\n var $selection = this.selectionContainer();\r\n var formatted = this.display(selection, $selection);\r\n\r\n $selection.append(formatted);\r\n $selection.prop('title', selection.title || selection.text);\r\n\r\n $selection.data('data', selection);\r\n\r\n $selections.push($selection);\r\n }\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n\r\n Utils.appendMany($rendered, $selections);\r\n };\r\n\r\n return MultipleSelection;\r\n});\r\n\nS2.define('select2/selection/placeholder',[\r\n '../utils'\r\n], function (Utils) {\r\n function Placeholder (decorated, $element, options) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\r\n var $placeholder = this.selectionContainer();\r\n\r\n $placeholder.html(this.display(placeholder));\r\n $placeholder.addClass('select2-selection__placeholder')\r\n .removeClass('select2-selection__choice');\r\n\r\n return $placeholder;\r\n };\r\n\r\n Placeholder.prototype.update = function (decorated, data) {\r\n var singlePlaceholder = (\r\n data.length == 1 && data[0].id != this.placeholder.id\r\n );\r\n var multipleSelections = data.length > 1;\r\n\r\n if (multipleSelections || singlePlaceholder) {\r\n return decorated.call(this, data);\r\n }\r\n\r\n this.clear();\r\n\r\n var $placeholder = this.createPlaceholder(this.placeholder);\r\n\r\n this.$selection.find('.select2-selection__rendered').append($placeholder);\r\n };\r\n\r\n return Placeholder;\r\n});\r\n\nS2.define('select2/selection/allowClear',[\r\n 'jquery',\r\n '../keys'\r\n], function ($, KEYS) {\r\n function AllowClear () { }\r\n\r\n AllowClear.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n if (this.placeholder == null) {\r\n if (this.options.get('debug') && window.console && console.error) {\r\n console.error(\r\n 'Select2: The `allowClear` option should be used in combination ' +\r\n 'with the `placeholder` option.'\r\n );\r\n }\r\n }\r\n\r\n this.$selection.on('mousedown', '.select2-selection__clear',\r\n function (evt) {\r\n self._handleClear(evt);\r\n });\r\n\r\n container.on('keypress', function (evt) {\r\n self._handleKeyboardClear(evt, container);\r\n });\r\n };\r\n\r\n AllowClear.prototype._handleClear = function (_, evt) {\r\n // Ignore the event if it is disabled\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $clear = this.$selection.find('.select2-selection__clear');\r\n\r\n // Ignore the event if nothing has been selected\r\n if ($clear.length === 0) {\r\n return;\r\n }\r\n\r\n evt.stopPropagation();\r\n\r\n var data = $clear.data('data');\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var unselectData = {\r\n data: data[d]\r\n };\r\n\r\n // Trigger the `unselect` event, so people can prevent it from being\r\n // cleared.\r\n this.trigger('unselect', unselectData);\r\n\r\n // If the event was prevented, don't clear it out.\r\n if (unselectData.prevented) {\r\n return;\r\n }\r\n }\r\n\r\n this.$element.val(this.placeholder.id).trigger('change');\r\n\r\n this.trigger('toggle', {});\r\n };\r\n\r\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\r\n if (container.isOpen()) {\r\n return;\r\n }\r\n\r\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\r\n this._handleClear(evt);\r\n }\r\n };\r\n\r\n AllowClear.prototype.update = function (decorated, data) {\r\n decorated.call(this, data);\r\n\r\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\r\n data.length === 0) {\r\n return;\r\n }\r\n\r\n var $remove = $(\r\n '<span class=\"select2-selection__clear\">' +\r\n '×' +\r\n '</span>'\r\n );\r\n $remove.data('data', data);\r\n\r\n this.$selection.find('.select2-selection__rendered').prepend($remove);\r\n };\r\n\r\n return AllowClear;\r\n});\r\n\nS2.define('select2/selection/search',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function Search (decorated, $element, options) {\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $search = $(\r\n '<li class=\"select2-search select2-search--inline\">' +\r\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\r\n ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\r\n ' spellcheck=\"false\" role=\"textbox\" aria-autocomplete=\"list\" />' +\r\n '</li>'\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n var $rendered = decorated.call(this);\r\n\r\n this._transferTabIndex();\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.val('');\r\n self.$search.removeAttr('aria-activedescendant');\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$search.prop('disabled', false);\r\n\r\n self._transferTabIndex();\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$search.prop('disabled', true);\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$search.attr('aria-activedescendant', params.id);\r\n });\r\n\r\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\r\n evt.stopPropagation();\r\n\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n\r\n var key = evt.which;\r\n\r\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\r\n var $previousChoice = self.$searchContainer\r\n .prev('.select2-selection__choice');\r\n\r\n if ($previousChoice.length > 0) {\r\n var item = $previousChoice.data('data');\r\n\r\n self.searchRemoveChoice(item);\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n\r\n // Try to detect the IE version should the `documentMode` property that\r\n // is stored on the document. This is only implemented in IE and is\r\n // slightly cleaner than doing a user agent check.\r\n // This property is not available in Edge, but Edge also doesn't have\r\n // this bug.\r\n var msie = document.documentMode;\r\n var disableInputEvents = msie && msie <= 11;\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$selection.on(\r\n 'input.searchcheck',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents) {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n // Unbind the duplicated `keyup` event\r\n self.$selection.off('keyup.search');\r\n }\r\n );\r\n\r\n this.$selection.on(\r\n 'keyup.search input.search',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents && evt.type === 'input') {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n var key = evt.which;\r\n\r\n // We can freely ignore events from modifier keys\r\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\r\n return;\r\n }\r\n\r\n // Tabbing will be handled during the `keydown` phase\r\n if (key == KEYS.TAB) {\r\n return;\r\n }\r\n\r\n self.handleSearch(evt);\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * This method will transfer the tabindex attribute from the rendered\r\n * selection to the search box. This allows for the search box to be used as\r\n * the primary focus instead of the selection container.\r\n *\r\n * @private\r\n */\r\n Search.prototype._transferTabIndex = function (decorated) {\r\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\r\n this.$selection.attr('tabindex', '-1');\r\n };\r\n\r\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\r\n this.$search.attr('placeholder', placeholder.text);\r\n };\r\n\r\n Search.prototype.update = function (decorated, data) {\r\n var searchHadFocus = this.$search[0] == document.activeElement;\r\n\r\n this.$search.attr('placeholder', '');\r\n\r\n decorated.call(this, data);\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .append(this.$searchContainer);\r\n\r\n this.resizeSearch();\r\n if (searchHadFocus) {\r\n this.$search.focus();\r\n }\r\n };\r\n\r\n Search.prototype.handleSearch = function () {\r\n this.resizeSearch();\r\n\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.searchRemoveChoice = function (decorated, item) {\r\n this.trigger('unselect', {\r\n data: item\r\n });\r\n\r\n this.$search.val(item.text);\r\n this.handleSearch();\r\n };\r\n\r\n Search.prototype.resizeSearch = function () {\r\n this.$search.css('width', '25px');\r\n\r\n var width = '';\r\n\r\n if (this.$search.attr('placeholder') !== '') {\r\n width = this.$selection.find('.select2-selection__rendered').innerWidth();\r\n } else {\r\n var minimumWidth = this.$search.val().length + 1;\r\n\r\n width = (minimumWidth * 0.75) + 'em';\r\n }\r\n\r\n this.$search.css('width', width);\r\n };\r\n\r\n return Search;\r\n});\r\n\nS2.define('select2/selection/eventRelay',[\r\n 'jquery'\r\n], function ($) {\r\n function EventRelay () { }\r\n\r\n EventRelay.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n var relayEvents = [\r\n 'open', 'opening',\r\n 'close', 'closing',\r\n 'select', 'selecting',\r\n 'unselect', 'unselecting'\r\n ];\r\n\r\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('*', function (name, params) {\r\n // Ignore events that should not be relayed\r\n if ($.inArray(name, relayEvents) === -1) {\r\n return;\r\n }\r\n\r\n // The parameters should always be an object\r\n params = params || {};\r\n\r\n // Generate the jQuery event for the Select2 event\r\n var evt = $.Event('select2:' + name, {\r\n params: params\r\n });\r\n\r\n self.$element.trigger(evt);\r\n\r\n // Only handle preventable events if it was one\r\n if ($.inArray(name, preventableEvents) === -1) {\r\n return;\r\n }\r\n\r\n params.prevented = evt.isDefaultPrevented();\r\n });\r\n };\r\n\r\n return EventRelay;\r\n});\r\n\nS2.define('select2/translation',[\r\n 'jquery',\r\n 'require'\r\n], function ($, require) {\r\n function Translation (dict) {\r\n this.dict = dict || {};\r\n }\r\n\r\n Translation.prototype.all = function () {\r\n return this.dict;\r\n };\r\n\r\n Translation.prototype.get = function (key) {\r\n return this.dict[key];\r\n };\r\n\r\n Translation.prototype.extend = function (translation) {\r\n this.dict = $.extend({}, translation.all(), this.dict);\r\n };\r\n\r\n // Static functions\r\n\r\n Translation._cache = {};\r\n\r\n Translation.loadPath = function (path) {\r\n if (!(path in Translation._cache)) {\r\n var translations = require(path);\r\n\r\n Translation._cache[path] = translations;\r\n }\r\n\r\n return new Translation(Translation._cache[path]);\r\n };\r\n\r\n return Translation;\r\n});\r\n\nS2.define('select2/diacritics',[\r\n\r\n], function () {\r\n var diacritics = {\r\n '\\u24B6': 'A',\r\n '\\uFF21': 'A',\r\n '\\u00C0': 'A',\r\n '\\u00C1': 'A',\r\n '\\u00C2': 'A',\r\n '\\u1EA6': 'A',\r\n '\\u1EA4': 'A',\r\n '\\u1EAA': 'A',\r\n '\\u1EA8': 'A',\r\n '\\u00C3': 'A',\r\n '\\u0100': 'A',\r\n '\\u0102': 'A',\r\n '\\u1EB0': 'A',\r\n '\\u1EAE': 'A',\r\n '\\u1EB4': 'A',\r\n '\\u1EB2': 'A',\r\n '\\u0226': 'A',\r\n '\\u01E0': 'A',\r\n '\\u00C4': 'A',\r\n '\\u01DE': 'A',\r\n '\\u1EA2': 'A',\r\n '\\u00C5': 'A',\r\n '\\u01FA': 'A',\r\n '\\u01CD': 'A',\r\n '\\u0200': 'A',\r\n '\\u0202': 'A',\r\n '\\u1EA0': 'A',\r\n '\\u1EAC': 'A',\r\n '\\u1EB6': 'A',\r\n '\\u1E00': 'A',\r\n '\\u0104': 'A',\r\n '\\u023A': 'A',\r\n '\\u2C6F': 'A',\r\n '\\uA732': 'AA',\r\n '\\u00C6': 'AE',\r\n '\\u01FC': 'AE',\r\n '\\u01E2': 'AE',\r\n '\\uA734': 'AO',\r\n '\\uA736': 'AU',\r\n '\\uA738': 'AV',\r\n '\\uA73A': 'AV',\r\n '\\uA73C': 'AY',\r\n '\\u24B7': 'B',\r\n '\\uFF22': 'B',\r\n '\\u1E02': 'B',\r\n '\\u1E04': 'B',\r\n '\\u1E06': 'B',\r\n '\\u0243': 'B',\r\n '\\u0182': 'B',\r\n '\\u0181': 'B',\r\n '\\u24B8': 'C',\r\n '\\uFF23': 'C',\r\n '\\u0106': 'C',\r\n '\\u0108': 'C',\r\n '\\u010A': 'C',\r\n '\\u010C': 'C',\r\n '\\u00C7': 'C',\r\n '\\u1E08': 'C',\r\n '\\u0187': 'C',\r\n '\\u023B': 'C',\r\n '\\uA73E': 'C',\r\n '\\u24B9': 'D',\r\n '\\uFF24': 'D',\r\n '\\u1E0A': 'D',\r\n '\\u010E': 'D',\r\n '\\u1E0C': 'D',\r\n '\\u1E10': 'D',\r\n '\\u1E12': 'D',\r\n '\\u1E0E': 'D',\r\n '\\u0110': 'D',\r\n '\\u018B': 'D',\r\n '\\u018A': 'D',\r\n '\\u0189': 'D',\r\n '\\uA779': 'D',\r\n '\\u01F1': 'DZ',\r\n '\\u01C4': 'DZ',\r\n '\\u01F2': 'Dz',\r\n '\\u01C5': 'Dz',\r\n '\\u24BA': 'E',\r\n '\\uFF25': 'E',\r\n '\\u00C8': 'E',\r\n '\\u00C9': 'E',\r\n '\\u00CA': 'E',\r\n '\\u1EC0': 'E',\r\n '\\u1EBE': 'E',\r\n '\\u1EC4': 'E',\r\n '\\u1EC2': 'E',\r\n '\\u1EBC': 'E',\r\n '\\u0112': 'E',\r\n '\\u1E14': 'E',\r\n '\\u1E16': 'E',\r\n '\\u0114': 'E',\r\n '\\u0116': 'E',\r\n '\\u00CB': 'E',\r\n '\\u1EBA': 'E',\r\n '\\u011A': 'E',\r\n '\\u0204': 'E',\r\n '\\u0206': 'E',\r\n '\\u1EB8': 'E',\r\n '\\u1EC6': 'E',\r\n '\\u0228': 'E',\r\n '\\u1E1C': 'E',\r\n '\\u0118': 'E',\r\n '\\u1E18': 'E',\r\n '\\u1E1A': 'E',\r\n '\\u0190': 'E',\r\n '\\u018E': 'E',\r\n '\\u24BB': 'F',\r\n '\\uFF26': 'F',\r\n '\\u1E1E': 'F',\r\n '\\u0191': 'F',\r\n '\\uA77B': 'F',\r\n '\\u24BC': 'G',\r\n '\\uFF27': 'G',\r\n '\\u01F4': 'G',\r\n '\\u011C': 'G',\r\n '\\u1E20': 'G',\r\n '\\u011E': 'G',\r\n '\\u0120': 'G',\r\n '\\u01E6': 'G',\r\n '\\u0122': 'G',\r\n '\\u01E4': 'G',\r\n '\\u0193': 'G',\r\n '\\uA7A0': 'G',\r\n '\\uA77D': 'G',\r\n '\\uA77E': 'G',\r\n '\\u24BD': 'H',\r\n '\\uFF28': 'H',\r\n '\\u0124': 'H',\r\n '\\u1E22': 'H',\r\n '\\u1E26': 'H',\r\n '\\u021E': 'H',\r\n '\\u1E24': 'H',\r\n '\\u1E28': 'H',\r\n '\\u1E2A': 'H',\r\n '\\u0126': 'H',\r\n '\\u2C67': 'H',\r\n '\\u2C75': 'H',\r\n '\\uA78D': 'H',\r\n '\\u24BE': 'I',\r\n '\\uFF29': 'I',\r\n '\\u00CC': 'I',\r\n '\\u00CD': 'I',\r\n '\\u00CE': 'I',\r\n '\\u0128': 'I',\r\n '\\u012A': 'I',\r\n '\\u012C': 'I',\r\n '\\u0130': 'I',\r\n '\\u00CF': 'I',\r\n '\\u1E2E': 'I',\r\n '\\u1EC8': 'I',\r\n '\\u01CF': 'I',\r\n '\\u0208': 'I',\r\n '\\u020A': 'I',\r\n '\\u1ECA': 'I',\r\n '\\u012E': 'I',\r\n '\\u1E2C': 'I',\r\n '\\u0197': 'I',\r\n '\\u24BF': 'J',\r\n '\\uFF2A': 'J',\r\n '\\u0134': 'J',\r\n '\\u0248': 'J',\r\n '\\u24C0': 'K',\r\n '\\uFF2B': 'K',\r\n '\\u1E30': 'K',\r\n '\\u01E8': 'K',\r\n '\\u1E32': 'K',\r\n '\\u0136': 'K',\r\n '\\u1E34': 'K',\r\n '\\u0198': 'K',\r\n '\\u2C69': 'K',\r\n '\\uA740': 'K',\r\n '\\uA742': 'K',\r\n '\\uA744': 'K',\r\n '\\uA7A2': 'K',\r\n '\\u24C1': 'L',\r\n '\\uFF2C': 'L',\r\n '\\u013F': 'L',\r\n '\\u0139': 'L',\r\n '\\u013D': 'L',\r\n '\\u1E36': 'L',\r\n '\\u1E38': 'L',\r\n '\\u013B': 'L',\r\n '\\u1E3C': 'L',\r\n '\\u1E3A': 'L',\r\n '\\u0141': 'L',\r\n '\\u023D': 'L',\r\n '\\u2C62': 'L',\r\n '\\u2C60': 'L',\r\n '\\uA748': 'L',\r\n '\\uA746': 'L',\r\n '\\uA780': 'L',\r\n '\\u01C7': 'LJ',\r\n '\\u01C8': 'Lj',\r\n '\\u24C2': 'M',\r\n '\\uFF2D': 'M',\r\n '\\u1E3E': 'M',\r\n '\\u1E40': 'M',\r\n '\\u1E42': 'M',\r\n '\\u2C6E': 'M',\r\n '\\u019C': 'M',\r\n '\\u24C3': 'N',\r\n '\\uFF2E': 'N',\r\n '\\u01F8': 'N',\r\n '\\u0143': 'N',\r\n '\\u00D1': 'N',\r\n '\\u1E44': 'N',\r\n '\\u0147': 'N',\r\n '\\u1E46': 'N',\r\n '\\u0145': 'N',\r\n '\\u1E4A': 'N',\r\n '\\u1E48': 'N',\r\n '\\u0220': 'N',\r\n '\\u019D': 'N',\r\n '\\uA790': 'N',\r\n '\\uA7A4': 'N',\r\n '\\u01CA': 'NJ',\r\n '\\u01CB': 'Nj',\r\n '\\u24C4': 'O',\r\n '\\uFF2F': 'O',\r\n '\\u00D2': 'O',\r\n '\\u00D3': 'O',\r\n '\\u00D4': 'O',\r\n '\\u1ED2': 'O',\r\n '\\u1ED0': 'O',\r\n '\\u1ED6': 'O',\r\n '\\u1ED4': 'O',\r\n '\\u00D5': 'O',\r\n '\\u1E4C': 'O',\r\n '\\u022C': 'O',\r\n '\\u1E4E': 'O',\r\n '\\u014C': 'O',\r\n '\\u1E50': 'O',\r\n '\\u1E52': 'O',\r\n '\\u014E': 'O',\r\n '\\u022E': 'O',\r\n '\\u0230': 'O',\r\n '\\u00D6': 'O',\r\n '\\u022A': 'O',\r\n '\\u1ECE': 'O',\r\n '\\u0150': 'O',\r\n '\\u01D1': 'O',\r\n '\\u020C': 'O',\r\n '\\u020E': 'O',\r\n '\\u01A0': 'O',\r\n '\\u1EDC': 'O',\r\n '\\u1EDA': 'O',\r\n '\\u1EE0': 'O',\r\n '\\u1EDE': 'O',\r\n '\\u1EE2': 'O',\r\n '\\u1ECC': 'O',\r\n '\\u1ED8': 'O',\r\n '\\u01EA': 'O',\r\n '\\u01EC': 'O',\r\n '\\u00D8': 'O',\r\n '\\u01FE': 'O',\r\n '\\u0186': 'O',\r\n '\\u019F': 'O',\r\n '\\uA74A': 'O',\r\n '\\uA74C': 'O',\r\n '\\u01A2': 'OI',\r\n '\\uA74E': 'OO',\r\n '\\u0222': 'OU',\r\n '\\u24C5': 'P',\r\n '\\uFF30': 'P',\r\n '\\u1E54': 'P',\r\n '\\u1E56': 'P',\r\n '\\u01A4': 'P',\r\n '\\u2C63': 'P',\r\n '\\uA750': 'P',\r\n '\\uA752': 'P',\r\n '\\uA754': 'P',\r\n '\\u24C6': 'Q',\r\n '\\uFF31': 'Q',\r\n '\\uA756': 'Q',\r\n '\\uA758': 'Q',\r\n '\\u024A': 'Q',\r\n '\\u24C7': 'R',\r\n '\\uFF32': 'R',\r\n '\\u0154': 'R',\r\n '\\u1E58': 'R',\r\n '\\u0158': 'R',\r\n '\\u0210': 'R',\r\n '\\u0212': 'R',\r\n '\\u1E5A': 'R',\r\n '\\u1E5C': 'R',\r\n '\\u0156': 'R',\r\n '\\u1E5E': 'R',\r\n '\\u024C': 'R',\r\n '\\u2C64': 'R',\r\n '\\uA75A': 'R',\r\n '\\uA7A6': 'R',\r\n '\\uA782': 'R',\r\n '\\u24C8': 'S',\r\n '\\uFF33': 'S',\r\n '\\u1E9E': 'S',\r\n '\\u015A': 'S',\r\n '\\u1E64': 'S',\r\n '\\u015C': 'S',\r\n '\\u1E60': 'S',\r\n '\\u0160': 'S',\r\n '\\u1E66': 'S',\r\n '\\u1E62': 'S',\r\n '\\u1E68': 'S',\r\n '\\u0218': 'S',\r\n '\\u015E': 'S',\r\n '\\u2C7E': 'S',\r\n '\\uA7A8': 'S',\r\n '\\uA784': 'S',\r\n '\\u24C9': 'T',\r\n '\\uFF34': 'T',\r\n '\\u1E6A': 'T',\r\n '\\u0164': 'T',\r\n '\\u1E6C': 'T',\r\n '\\u021A': 'T',\r\n '\\u0162': 'T',\r\n '\\u1E70': 'T',\r\n '\\u1E6E': 'T',\r\n '\\u0166': 'T',\r\n '\\u01AC': 'T',\r\n '\\u01AE': 'T',\r\n '\\u023E': 'T',\r\n '\\uA786': 'T',\r\n '\\uA728': 'TZ',\r\n '\\u24CA': 'U',\r\n '\\uFF35': 'U',\r\n '\\u00D9': 'U',\r\n '\\u00DA': 'U',\r\n '\\u00DB': 'U',\r\n '\\u0168': 'U',\r\n '\\u1E78': 'U',\r\n '\\u016A': 'U',\r\n '\\u1E7A': 'U',\r\n '\\u016C': 'U',\r\n '\\u00DC': 'U',\r\n '\\u01DB': 'U',\r\n '\\u01D7': 'U',\r\n '\\u01D5': 'U',\r\n '\\u01D9': 'U',\r\n '\\u1EE6': 'U',\r\n '\\u016E': 'U',\r\n '\\u0170': 'U',\r\n '\\u01D3': 'U',\r\n '\\u0214': 'U',\r\n '\\u0216': 'U',\r\n '\\u01AF': 'U',\r\n '\\u1EEA': 'U',\r\n '\\u1EE8': 'U',\r\n '\\u1EEE': 'U',\r\n '\\u1EEC': 'U',\r\n '\\u1EF0': 'U',\r\n '\\u1EE4': 'U',\r\n '\\u1E72': 'U',\r\n '\\u0172': 'U',\r\n '\\u1E76': 'U',\r\n '\\u1E74': 'U',\r\n '\\u0244': 'U',\r\n '\\u24CB': 'V',\r\n '\\uFF36': 'V',\r\n '\\u1E7C': 'V',\r\n '\\u1E7E': 'V',\r\n '\\u01B2': 'V',\r\n '\\uA75E': 'V',\r\n '\\u0245': 'V',\r\n '\\uA760': 'VY',\r\n '\\u24CC': 'W',\r\n '\\uFF37': 'W',\r\n '\\u1E80': 'W',\r\n '\\u1E82': 'W',\r\n '\\u0174': 'W',\r\n '\\u1E86': 'W',\r\n '\\u1E84': 'W',\r\n '\\u1E88': 'W',\r\n '\\u2C72': 'W',\r\n '\\u24CD': 'X',\r\n '\\uFF38': 'X',\r\n '\\u1E8A': 'X',\r\n '\\u1E8C': 'X',\r\n '\\u24CE': 'Y',\r\n '\\uFF39': 'Y',\r\n '\\u1EF2': 'Y',\r\n '\\u00DD': 'Y',\r\n '\\u0176': 'Y',\r\n '\\u1EF8': 'Y',\r\n '\\u0232': 'Y',\r\n '\\u1E8E': 'Y',\r\n '\\u0178': 'Y',\r\n '\\u1EF6': 'Y',\r\n '\\u1EF4': 'Y',\r\n '\\u01B3': 'Y',\r\n '\\u024E': 'Y',\r\n '\\u1EFE': 'Y',\r\n '\\u24CF': 'Z',\r\n '\\uFF3A': 'Z',\r\n '\\u0179': 'Z',\r\n '\\u1E90': 'Z',\r\n '\\u017B': 'Z',\r\n '\\u017D': 'Z',\r\n '\\u1E92': 'Z',\r\n '\\u1E94': 'Z',\r\n '\\u01B5': 'Z',\r\n '\\u0224': 'Z',\r\n '\\u2C7F': 'Z',\r\n '\\u2C6B': 'Z',\r\n '\\uA762': 'Z',\r\n '\\u24D0': 'a',\r\n '\\uFF41': 'a',\r\n '\\u1E9A': 'a',\r\n '\\u00E0': 'a',\r\n '\\u00E1': 'a',\r\n '\\u00E2': 'a',\r\n '\\u1EA7': 'a',\r\n '\\u1EA5': 'a',\r\n '\\u1EAB': 'a',\r\n '\\u1EA9': 'a',\r\n '\\u00E3': 'a',\r\n '\\u0101': 'a',\r\n '\\u0103': 'a',\r\n '\\u1EB1': 'a',\r\n '\\u1EAF': 'a',\r\n '\\u1EB5': 'a',\r\n '\\u1EB3': 'a',\r\n '\\u0227': 'a',\r\n '\\u01E1': 'a',\r\n '\\u00E4': 'a',\r\n '\\u01DF': 'a',\r\n '\\u1EA3': 'a',\r\n '\\u00E5': 'a',\r\n '\\u01FB': 'a',\r\n '\\u01CE': 'a',\r\n '\\u0201': 'a',\r\n '\\u0203': 'a',\r\n '\\u1EA1': 'a',\r\n '\\u1EAD': 'a',\r\n '\\u1EB7': 'a',\r\n '\\u1E01': 'a',\r\n '\\u0105': 'a',\r\n '\\u2C65': 'a',\r\n '\\u0250': 'a',\r\n '\\uA733': 'aa',\r\n '\\u00E6': 'ae',\r\n '\\u01FD': 'ae',\r\n '\\u01E3': 'ae',\r\n '\\uA735': 'ao',\r\n '\\uA737': 'au',\r\n '\\uA739': 'av',\r\n '\\uA73B': 'av',\r\n '\\uA73D': 'ay',\r\n '\\u24D1': 'b',\r\n '\\uFF42': 'b',\r\n '\\u1E03': 'b',\r\n '\\u1E05': 'b',\r\n '\\u1E07': 'b',\r\n '\\u0180': 'b',\r\n '\\u0183': 'b',\r\n '\\u0253': 'b',\r\n '\\u24D2': 'c',\r\n '\\uFF43': 'c',\r\n '\\u0107': 'c',\r\n '\\u0109': 'c',\r\n '\\u010B': 'c',\r\n '\\u010D': 'c',\r\n '\\u00E7': 'c',\r\n '\\u1E09': 'c',\r\n '\\u0188': 'c',\r\n '\\u023C': 'c',\r\n '\\uA73F': 'c',\r\n '\\u2184': 'c',\r\n '\\u24D3': 'd',\r\n '\\uFF44': 'd',\r\n '\\u1E0B': 'd',\r\n '\\u010F': 'd',\r\n '\\u1E0D': 'd',\r\n '\\u1E11': 'd',\r\n '\\u1E13': 'd',\r\n '\\u1E0F': 'd',\r\n '\\u0111': 'd',\r\n '\\u018C': 'd',\r\n '\\u0256': 'd',\r\n '\\u0257': 'd',\r\n '\\uA77A': 'd',\r\n '\\u01F3': 'dz',\r\n '\\u01C6': 'dz',\r\n '\\u24D4': 'e',\r\n '\\uFF45': 'e',\r\n '\\u00E8': 'e',\r\n '\\u00E9': 'e',\r\n '\\u00EA': 'e',\r\n '\\u1EC1': 'e',\r\n '\\u1EBF': 'e',\r\n '\\u1EC5': 'e',\r\n '\\u1EC3': 'e',\r\n '\\u1EBD': 'e',\r\n '\\u0113': 'e',\r\n '\\u1E15': 'e',\r\n '\\u1E17': 'e',\r\n '\\u0115': 'e',\r\n '\\u0117': 'e',\r\n '\\u00EB': 'e',\r\n '\\u1EBB': 'e',\r\n '\\u011B': 'e',\r\n '\\u0205': 'e',\r\n '\\u0207': 'e',\r\n '\\u1EB9': 'e',\r\n '\\u1EC7': 'e',\r\n '\\u0229': 'e',\r\n '\\u1E1D': 'e',\r\n '\\u0119': 'e',\r\n '\\u1E19': 'e',\r\n '\\u1E1B': 'e',\r\n '\\u0247': 'e',\r\n '\\u025B': 'e',\r\n '\\u01DD': 'e',\r\n '\\u24D5': 'f',\r\n '\\uFF46': 'f',\r\n '\\u1E1F': 'f',\r\n '\\u0192': 'f',\r\n '\\uA77C': 'f',\r\n '\\u24D6': 'g',\r\n '\\uFF47': 'g',\r\n '\\u01F5': 'g',\r\n '\\u011D': 'g',\r\n '\\u1E21': 'g',\r\n '\\u011F': 'g',\r\n '\\u0121': 'g',\r\n '\\u01E7': 'g',\r\n '\\u0123': 'g',\r\n '\\u01E5': 'g',\r\n '\\u0260': 'g',\r\n '\\uA7A1': 'g',\r\n '\\u1D79': 'g',\r\n '\\uA77F': 'g',\r\n '\\u24D7': 'h',\r\n '\\uFF48': 'h',\r\n '\\u0125': 'h',\r\n '\\u1E23': 'h',\r\n '\\u1E27': 'h',\r\n '\\u021F': 'h',\r\n '\\u1E25': 'h',\r\n '\\u1E29': 'h',\r\n '\\u1E2B': 'h',\r\n '\\u1E96': 'h',\r\n '\\u0127': 'h',\r\n '\\u2C68': 'h',\r\n '\\u2C76': 'h',\r\n '\\u0265': 'h',\r\n '\\u0195': 'hv',\r\n '\\u24D8': 'i',\r\n '\\uFF49': 'i',\r\n '\\u00EC': 'i',\r\n '\\u00ED': 'i',\r\n '\\u00EE': 'i',\r\n '\\u0129': 'i',\r\n '\\u012B': 'i',\r\n '\\u012D': 'i',\r\n '\\u00EF': 'i',\r\n '\\u1E2F': 'i',\r\n '\\u1EC9': 'i',\r\n '\\u01D0': 'i',\r\n '\\u0209': 'i',\r\n '\\u020B': 'i',\r\n '\\u1ECB': 'i',\r\n '\\u012F': 'i',\r\n '\\u1E2D': 'i',\r\n '\\u0268': 'i',\r\n '\\u0131': 'i',\r\n '\\u24D9': 'j',\r\n '\\uFF4A': 'j',\r\n '\\u0135': 'j',\r\n '\\u01F0': 'j',\r\n '\\u0249': 'j',\r\n '\\u24DA': 'k',\r\n '\\uFF4B': 'k',\r\n '\\u1E31': 'k',\r\n '\\u01E9': 'k',\r\n '\\u1E33': 'k',\r\n '\\u0137': 'k',\r\n '\\u1E35': 'k',\r\n '\\u0199': 'k',\r\n '\\u2C6A': 'k',\r\n '\\uA741': 'k',\r\n '\\uA743': 'k',\r\n '\\uA745': 'k',\r\n '\\uA7A3': 'k',\r\n '\\u24DB': 'l',\r\n '\\uFF4C': 'l',\r\n '\\u0140': 'l',\r\n '\\u013A': 'l',\r\n '\\u013E': 'l',\r\n '\\u1E37': 'l',\r\n '\\u1E39': 'l',\r\n '\\u013C': 'l',\r\n '\\u1E3D': 'l',\r\n '\\u1E3B': 'l',\r\n '\\u017F': 'l',\r\n '\\u0142': 'l',\r\n '\\u019A': 'l',\r\n '\\u026B': 'l',\r\n '\\u2C61': 'l',\r\n '\\uA749': 'l',\r\n '\\uA781': 'l',\r\n '\\uA747': 'l',\r\n '\\u01C9': 'lj',\r\n '\\u24DC': 'm',\r\n '\\uFF4D': 'm',\r\n '\\u1E3F': 'm',\r\n '\\u1E41': 'm',\r\n '\\u1E43': 'm',\r\n '\\u0271': 'm',\r\n '\\u026F': 'm',\r\n '\\u24DD': 'n',\r\n '\\uFF4E': 'n',\r\n '\\u01F9': 'n',\r\n '\\u0144': 'n',\r\n '\\u00F1': 'n',\r\n '\\u1E45': 'n',\r\n '\\u0148': 'n',\r\n '\\u1E47': 'n',\r\n '\\u0146': 'n',\r\n '\\u1E4B': 'n',\r\n '\\u1E49': 'n',\r\n '\\u019E': 'n',\r\n '\\u0272': 'n',\r\n '\\u0149': 'n',\r\n '\\uA791': 'n',\r\n '\\uA7A5': 'n',\r\n '\\u01CC': 'nj',\r\n '\\u24DE': 'o',\r\n '\\uFF4F': 'o',\r\n '\\u00F2': 'o',\r\n '\\u00F3': 'o',\r\n '\\u00F4': 'o',\r\n '\\u1ED3': 'o',\r\n '\\u1ED1': 'o',\r\n '\\u1ED7': 'o',\r\n '\\u1ED5': 'o',\r\n '\\u00F5': 'o',\r\n '\\u1E4D': 'o',\r\n '\\u022D': 'o',\r\n '\\u1E4F': 'o',\r\n '\\u014D': 'o',\r\n '\\u1E51': 'o',\r\n '\\u1E53': 'o',\r\n '\\u014F': 'o',\r\n '\\u022F': 'o',\r\n '\\u0231': 'o',\r\n '\\u00F6': 'o',\r\n '\\u022B': 'o',\r\n '\\u1ECF': 'o',\r\n '\\u0151': 'o',\r\n '\\u01D2': 'o',\r\n '\\u020D': 'o',\r\n '\\u020F': 'o',\r\n '\\u01A1': 'o',\r\n '\\u1EDD': 'o',\r\n '\\u1EDB': 'o',\r\n '\\u1EE1': 'o',\r\n '\\u1EDF': 'o',\r\n '\\u1EE3': 'o',\r\n '\\u1ECD': 'o',\r\n '\\u1ED9': 'o',\r\n '\\u01EB': 'o',\r\n '\\u01ED': 'o',\r\n '\\u00F8': 'o',\r\n '\\u01FF': 'o',\r\n '\\u0254': 'o',\r\n '\\uA74B': 'o',\r\n '\\uA74D': 'o',\r\n '\\u0275': 'o',\r\n '\\u01A3': 'oi',\r\n '\\u0223': 'ou',\r\n '\\uA74F': 'oo',\r\n '\\u24DF': 'p',\r\n '\\uFF50': 'p',\r\n '\\u1E55': 'p',\r\n '\\u1E57': 'p',\r\n '\\u01A5': 'p',\r\n '\\u1D7D': 'p',\r\n '\\uA751': 'p',\r\n '\\uA753': 'p',\r\n '\\uA755': 'p',\r\n '\\u24E0': 'q',\r\n '\\uFF51': 'q',\r\n '\\u024B': 'q',\r\n '\\uA757': 'q',\r\n '\\uA759': 'q',\r\n '\\u24E1': 'r',\r\n '\\uFF52': 'r',\r\n '\\u0155': 'r',\r\n '\\u1E59': 'r',\r\n '\\u0159': 'r',\r\n '\\u0211': 'r',\r\n '\\u0213': 'r',\r\n '\\u1E5B': 'r',\r\n '\\u1E5D': 'r',\r\n '\\u0157': 'r',\r\n '\\u1E5F': 'r',\r\n '\\u024D': 'r',\r\n '\\u027D': 'r',\r\n '\\uA75B': 'r',\r\n '\\uA7A7': 'r',\r\n '\\uA783': 'r',\r\n '\\u24E2': 's',\r\n '\\uFF53': 's',\r\n '\\u00DF': 's',\r\n '\\u015B': 's',\r\n '\\u1E65': 's',\r\n '\\u015D': 's',\r\n '\\u1E61': 's',\r\n '\\u0161': 's',\r\n '\\u1E67': 's',\r\n '\\u1E63': 's',\r\n '\\u1E69': 's',\r\n '\\u0219': 's',\r\n '\\u015F': 's',\r\n '\\u023F': 's',\r\n '\\uA7A9': 's',\r\n '\\uA785': 's',\r\n '\\u1E9B': 's',\r\n '\\u24E3': 't',\r\n '\\uFF54': 't',\r\n '\\u1E6B': 't',\r\n '\\u1E97': 't',\r\n '\\u0165': 't',\r\n '\\u1E6D': 't',\r\n '\\u021B': 't',\r\n '\\u0163': 't',\r\n '\\u1E71': 't',\r\n '\\u1E6F': 't',\r\n '\\u0167': 't',\r\n '\\u01AD': 't',\r\n '\\u0288': 't',\r\n '\\u2C66': 't',\r\n '\\uA787': 't',\r\n '\\uA729': 'tz',\r\n '\\u24E4': 'u',\r\n '\\uFF55': 'u',\r\n '\\u00F9': 'u',\r\n '\\u00FA': 'u',\r\n '\\u00FB': 'u',\r\n '\\u0169': 'u',\r\n '\\u1E79': 'u',\r\n '\\u016B': 'u',\r\n '\\u1E7B': 'u',\r\n '\\u016D': 'u',\r\n '\\u00FC': 'u',\r\n '\\u01DC': 'u',\r\n '\\u01D8': 'u',\r\n '\\u01D6': 'u',\r\n '\\u01DA': 'u',\r\n '\\u1EE7': 'u',\r\n '\\u016F': 'u',\r\n '\\u0171': 'u',\r\n '\\u01D4': 'u',\r\n '\\u0215': 'u',\r\n '\\u0217': 'u',\r\n '\\u01B0': 'u',\r\n '\\u1EEB': 'u',\r\n '\\u1EE9': 'u',\r\n '\\u1EEF': 'u',\r\n '\\u1EED': 'u',\r\n '\\u1EF1': 'u',\r\n '\\u1EE5': 'u',\r\n '\\u1E73': 'u',\r\n '\\u0173': 'u',\r\n '\\u1E77': 'u',\r\n '\\u1E75': 'u',\r\n '\\u0289': 'u',\r\n '\\u24E5': 'v',\r\n '\\uFF56': 'v',\r\n '\\u1E7D': 'v',\r\n '\\u1E7F': 'v',\r\n '\\u028B': 'v',\r\n '\\uA75F': 'v',\r\n '\\u028C': 'v',\r\n '\\uA761': 'vy',\r\n '\\u24E6': 'w',\r\n '\\uFF57': 'w',\r\n '\\u1E81': 'w',\r\n '\\u1E83': 'w',\r\n '\\u0175': 'w',\r\n '\\u1E87': 'w',\r\n '\\u1E85': 'w',\r\n '\\u1E98': 'w',\r\n '\\u1E89': 'w',\r\n '\\u2C73': 'w',\r\n '\\u24E7': 'x',\r\n '\\uFF58': 'x',\r\n '\\u1E8B': 'x',\r\n '\\u1E8D': 'x',\r\n '\\u24E8': 'y',\r\n '\\uFF59': 'y',\r\n '\\u1EF3': 'y',\r\n '\\u00FD': 'y',\r\n '\\u0177': 'y',\r\n '\\u1EF9': 'y',\r\n '\\u0233': 'y',\r\n '\\u1E8F': 'y',\r\n '\\u00FF': 'y',\r\n '\\u1EF7': 'y',\r\n '\\u1E99': 'y',\r\n '\\u1EF5': 'y',\r\n '\\u01B4': 'y',\r\n '\\u024F': 'y',\r\n '\\u1EFF': 'y',\r\n '\\u24E9': 'z',\r\n '\\uFF5A': 'z',\r\n '\\u017A': 'z',\r\n '\\u1E91': 'z',\r\n '\\u017C': 'z',\r\n '\\u017E': 'z',\r\n '\\u1E93': 'z',\r\n '\\u1E95': 'z',\r\n '\\u01B6': 'z',\r\n '\\u0225': 'z',\r\n '\\u0240': 'z',\r\n '\\u2C6C': 'z',\r\n '\\uA763': 'z',\r\n '\\u0386': '\\u0391',\r\n '\\u0388': '\\u0395',\r\n '\\u0389': '\\u0397',\r\n '\\u038A': '\\u0399',\r\n '\\u03AA': '\\u0399',\r\n '\\u038C': '\\u039F',\r\n '\\u038E': '\\u03A5',\r\n '\\u03AB': '\\u03A5',\r\n '\\u038F': '\\u03A9',\r\n '\\u03AC': '\\u03B1',\r\n '\\u03AD': '\\u03B5',\r\n '\\u03AE': '\\u03B7',\r\n '\\u03AF': '\\u03B9',\r\n '\\u03CA': '\\u03B9',\r\n '\\u0390': '\\u03B9',\r\n '\\u03CC': '\\u03BF',\r\n '\\u03CD': '\\u03C5',\r\n '\\u03CB': '\\u03C5',\r\n '\\u03B0': '\\u03C5',\r\n '\\u03C9': '\\u03C9',\r\n '\\u03C2': '\\u03C3'\r\n };\r\n\r\n return diacritics;\r\n});\r\n\nS2.define('select2/data/base',[\r\n '../utils'\r\n], function (Utils) {\r\n function BaseAdapter ($element, options) {\r\n BaseAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseAdapter, Utils.Observable);\r\n\r\n BaseAdapter.prototype.current = function (callback) {\r\n throw new Error('The `current` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.query = function (params, callback) {\r\n throw new Error('The `query` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.bind = function (container, $container) {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.destroy = function () {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.generateResultId = function (container, data) {\r\n var id = container.id + '-result-';\r\n\r\n id += Utils.generateChars(4);\r\n\r\n if (data.id != null) {\r\n id += '-' + data.id.toString();\r\n } else {\r\n id += '-' + Utils.generateChars(4);\r\n }\r\n return id;\r\n };\r\n\r\n return BaseAdapter;\r\n});\r\n\nS2.define('select2/data/select',[\r\n './base',\r\n '../utils',\r\n 'jquery'\r\n], function (BaseAdapter, Utils, $) {\r\n function SelectAdapter ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n SelectAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(SelectAdapter, BaseAdapter);\r\n\r\n SelectAdapter.prototype.current = function (callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n this.$element.find(':selected').each(function () {\r\n var $option = $(this);\r\n\r\n var option = self.item($option);\r\n\r\n data.push(option);\r\n });\r\n\r\n callback(data);\r\n };\r\n\r\n SelectAdapter.prototype.select = function (data) {\r\n var self = this;\r\n\r\n data.selected = true;\r\n\r\n // If data.element is a DOM node, use it instead\r\n if ($(data.element).is('option')) {\r\n data.element.selected = true;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n if (this.$element.prop('multiple')) {\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n data = [data];\r\n data.push.apply(data, currentData);\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var id = data[d].id;\r\n\r\n if ($.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n self.$element.trigger('change');\r\n });\r\n } else {\r\n var val = data.id;\r\n\r\n this.$element.val(val);\r\n this.$element.trigger('change');\r\n }\r\n };\r\n\r\n SelectAdapter.prototype.unselect = function (data) {\r\n var self = this;\r\n\r\n if (!this.$element.prop('multiple')) {\r\n return;\r\n }\r\n\r\n data.selected = false;\r\n\r\n if ($(data.element).is('option')) {\r\n data.element.selected = false;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n for (var d = 0; d < currentData.length; d++) {\r\n var id = currentData[d].id;\r\n\r\n if (id !== data.id && $.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n\r\n self.$element.trigger('change');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n this.container = container;\r\n\r\n container.on('select', function (params) {\r\n self.select(params.data);\r\n });\r\n\r\n container.on('unselect', function (params) {\r\n self.unselect(params.data);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.destroy = function () {\r\n // Remove anything added to child elements\r\n this.$element.find('*').each(function () {\r\n // Remove any custom data set by Select2\r\n $.removeData(this, 'data');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.query = function (params, callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n var $options = this.$element.children();\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n if (!$option.is('option') && !$option.is('optgroup')) {\r\n return;\r\n }\r\n\r\n var option = self.item($option);\r\n\r\n var matches = self.matches(params, option);\r\n\r\n if (matches !== null) {\r\n data.push(matches);\r\n }\r\n });\r\n\r\n callback({\r\n results: data\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.addOptions = function ($options) {\r\n Utils.appendMany(this.$element, $options);\r\n };\r\n\r\n SelectAdapter.prototype.option = function (data) {\r\n var option;\r\n\r\n if (data.children) {\r\n option = document.createElement('optgroup');\r\n option.label = data.text;\r\n } else {\r\n option = document.createElement('option');\r\n\r\n if (option.textContent !== undefined) {\r\n option.textContent = data.text;\r\n } else {\r\n option.innerText = data.text;\r\n }\r\n }\r\n\r\n if (data.id) {\r\n option.value = data.id;\r\n }\r\n\r\n if (data.disabled) {\r\n option.disabled = true;\r\n }\r\n\r\n if (data.selected) {\r\n option.selected = true;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n var $option = $(option);\r\n\r\n var normalizedData = this._normalizeItem(data);\r\n normalizedData.element = option;\r\n\r\n // Override the option's data with the combined data\r\n $.data(option, 'data', normalizedData);\r\n\r\n return $option;\r\n };\r\n\r\n SelectAdapter.prototype.item = function ($option) {\r\n var data = {};\r\n\r\n data = $.data($option[0], 'data');\r\n\r\n if (data != null) {\r\n return data;\r\n }\r\n\r\n if ($option.is('option')) {\r\n data = {\r\n id: $option.val(),\r\n text: $option.text(),\r\n disabled: $option.prop('disabled'),\r\n selected: $option.prop('selected'),\r\n title: $option.prop('title')\r\n };\r\n } else if ($option.is('optgroup')) {\r\n data = {\r\n text: $option.prop('label'),\r\n children: [],\r\n title: $option.prop('title')\r\n };\r\n\r\n var $children = $option.children('option');\r\n var children = [];\r\n\r\n for (var c = 0; c < $children.length; c++) {\r\n var $child = $($children[c]);\r\n\r\n var child = this.item($child);\r\n\r\n children.push(child);\r\n }\r\n\r\n data.children = children;\r\n }\r\n\r\n data = this._normalizeItem(data);\r\n data.element = $option[0];\r\n\r\n $.data($option[0], 'data', data);\r\n\r\n return data;\r\n };\r\n\r\n SelectAdapter.prototype._normalizeItem = function (item) {\r\n if (!$.isPlainObject(item)) {\r\n item = {\r\n id: item,\r\n text: item\r\n };\r\n }\r\n\r\n item = $.extend({}, {\r\n text: ''\r\n }, item);\r\n\r\n var defaults = {\r\n selected: false,\r\n disabled: false\r\n };\r\n\r\n if (item.id != null) {\r\n item.id = item.id.toString();\r\n }\r\n\r\n if (item.text != null) {\r\n item.text = item.text.toString();\r\n }\r\n\r\n if (item._resultId == null && item.id && this.container != null) {\r\n item._resultId = this.generateResultId(this.container, item);\r\n }\r\n\r\n return $.extend({}, defaults, item);\r\n };\r\n\r\n SelectAdapter.prototype.matches = function (params, data) {\r\n var matcher = this.options.get('matcher');\r\n\r\n return matcher(params, data);\r\n };\r\n\r\n return SelectAdapter;\r\n});\r\n\nS2.define('select2/data/array',[\r\n './select',\r\n '../utils',\r\n 'jquery'\r\n], function (SelectAdapter, Utils, $) {\r\n function ArrayAdapter ($element, options) {\r\n var data = options.get('data') || [];\r\n\r\n ArrayAdapter.__super__.constructor.call(this, $element, options);\r\n\r\n this.addOptions(this.convertToOptions(data));\r\n }\r\n\r\n Utils.Extend(ArrayAdapter, SelectAdapter);\r\n\r\n ArrayAdapter.prototype.select = function (data) {\r\n var $option = this.$element.find('option').filter(function (i, elm) {\r\n return elm.value == data.id.toString();\r\n });\r\n\r\n if ($option.length === 0) {\r\n $option = this.option(data);\r\n\r\n this.addOptions($option);\r\n }\r\n\r\n ArrayAdapter.__super__.select.call(this, data);\r\n };\r\n\r\n ArrayAdapter.prototype.convertToOptions = function (data) {\r\n var self = this;\r\n\r\n var $existing = this.$element.find('option');\r\n var existingIds = $existing.map(function () {\r\n return self.item($(this)).id;\r\n }).get();\r\n\r\n var $options = [];\r\n\r\n // Filter out all items except for the one passed in the argument\r\n function onlyItem (item) {\r\n return function () {\r\n return $(this).val() == item.id;\r\n };\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = this._normalizeItem(data[d]);\r\n\r\n // Skip items which were pre-loaded, only merge the data\r\n if ($.inArray(item.id, existingIds) >= 0) {\r\n var $existingOption = $existing.filter(onlyItem(item));\r\n\r\n var existingData = this.item($existingOption);\r\n var newData = $.extend(true, {}, item, existingData);\r\n\r\n var $newOption = this.option(newData);\r\n\r\n $existingOption.replaceWith($newOption);\r\n\r\n continue;\r\n }\r\n\r\n var $option = this.option(item);\r\n\r\n if (item.children) {\r\n var $children = this.convertToOptions(item.children);\r\n\r\n Utils.appendMany($option, $children);\r\n }\r\n\r\n $options.push($option);\r\n }\r\n\r\n return $options;\r\n };\r\n\r\n return ArrayAdapter;\r\n});\r\n\nS2.define('select2/data/ajax',[\r\n './array',\r\n '../utils',\r\n 'jquery'\r\n], function (ArrayAdapter, Utils, $) {\r\n function AjaxAdapter ($element, options) {\r\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\r\n\r\n if (this.ajaxOptions.processResults != null) {\r\n this.processResults = this.ajaxOptions.processResults;\r\n }\r\n\r\n AjaxAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(AjaxAdapter, ArrayAdapter);\r\n\r\n AjaxAdapter.prototype._applyDefaults = function (options) {\r\n var defaults = {\r\n data: function (params) {\r\n return $.extend({}, params, {\r\n q: params.term\r\n });\r\n },\r\n transport: function (params, success, failure) {\r\n var $request = $.ajax(params);\r\n\r\n $request.then(success);\r\n $request.fail(failure);\r\n\r\n return $request;\r\n }\r\n };\r\n\r\n return $.extend({}, defaults, options, true);\r\n };\r\n\r\n AjaxAdapter.prototype.processResults = function (results) {\r\n return results;\r\n };\r\n\r\n AjaxAdapter.prototype.query = function (params, callback) {\r\n var matches = [];\r\n var self = this;\r\n\r\n if (this._request != null) {\r\n // JSONP requests cannot always be aborted\r\n if ($.isFunction(this._request.abort)) {\r\n this._request.abort();\r\n }\r\n\r\n this._request = null;\r\n }\r\n\r\n var options = $.extend({\r\n type: 'GET'\r\n }, this.ajaxOptions);\r\n\r\n if (typeof options.url === 'function') {\r\n options.url = options.url.call(this.$element, params);\r\n }\r\n\r\n if (typeof options.data === 'function') {\r\n options.data = options.data.call(this.$element, params);\r\n }\r\n\r\n function request () {\r\n var $request = options.transport(options, function (data) {\r\n var results = self.processResults(data, params);\r\n\r\n if (self.options.get('debug') && window.console && console.error) {\r\n // Check to make sure that the response included a `results` key.\r\n if (!results || !results.results || !$.isArray(results.results)) {\r\n console.error(\r\n 'Select2: The AJAX results did not return an array in the ' +\r\n '`results` key of the response.'\r\n );\r\n }\r\n }\r\n\r\n callback(results);\r\n }, function () {\r\n // Attempt to detect if a request was aborted\r\n // Only works if the transport exposes a status property\r\n if ($request.status && $request.status === '0') {\r\n return;\r\n }\r\n\r\n self.trigger('results:message', {\r\n message: 'errorLoading'\r\n });\r\n });\r\n\r\n self._request = $request;\r\n }\r\n\r\n if (this.ajaxOptions.delay && params.term != null) {\r\n if (this._queryTimeout) {\r\n window.clearTimeout(this._queryTimeout);\r\n }\r\n\r\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\r\n } else {\r\n request();\r\n }\r\n };\r\n\r\n return AjaxAdapter;\r\n});\r\n\nS2.define('select2/data/tags',[\r\n 'jquery'\r\n], function ($) {\r\n function Tags (decorated, $element, options) {\r\n var tags = options.get('tags');\r\n\r\n var createTag = options.get('createTag');\r\n\r\n if (createTag !== undefined) {\r\n this.createTag = createTag;\r\n }\r\n\r\n var insertTag = options.get('insertTag');\r\n\r\n if (insertTag !== undefined) {\r\n this.insertTag = insertTag;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n\r\n if ($.isArray(tags)) {\r\n for (var t = 0; t < tags.length; t++) {\r\n var tag = tags[t];\r\n var item = this._normalizeItem(tag);\r\n\r\n var $option = this.option(item);\r\n\r\n this.$element.append($option);\r\n }\r\n }\r\n }\r\n\r\n Tags.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._removeOldTags();\r\n\r\n if (params.term == null || params.page != null) {\r\n decorated.call(this, params, callback);\r\n return;\r\n }\r\n\r\n function wrapper (obj, child) {\r\n var data = obj.results;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var option = data[i];\r\n\r\n var checkChildren = (\r\n option.children != null &&\r\n !wrapper({\r\n results: option.children\r\n }, true)\r\n );\r\n\r\n var checkText = option.text === params.term;\r\n\r\n if (checkText || checkChildren) {\r\n if (child) {\r\n return false;\r\n }\r\n\r\n obj.data = data;\r\n callback(obj);\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (child) {\r\n return true;\r\n }\r\n\r\n var tag = self.createTag(params);\r\n\r\n if (tag != null) {\r\n var $option = self.option(tag);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self.addOptions([$option]);\r\n\r\n self.insertTag(data, tag);\r\n }\r\n\r\n obj.results = data;\r\n\r\n callback(obj);\r\n }\r\n\r\n decorated.call(this, params, wrapper);\r\n };\r\n\r\n Tags.prototype.createTag = function (decorated, params) {\r\n var term = $.trim(params.term);\r\n\r\n if (term === '') {\r\n return null;\r\n }\r\n\r\n return {\r\n id: term,\r\n text: term\r\n };\r\n };\r\n\r\n Tags.prototype.insertTag = function (_, data, tag) {\r\n data.unshift(tag);\r\n };\r\n\r\n Tags.prototype._removeOldTags = function (_) {\r\n var tag = this._lastTag;\r\n\r\n var $options = this.$element.find('option[data-select2-tag]');\r\n\r\n $options.each(function () {\r\n if (this.selected) {\r\n return;\r\n }\r\n\r\n $(this).remove();\r\n });\r\n };\r\n\r\n return Tags;\r\n});\r\n\nS2.define('select2/data/tokenizer',[\r\n 'jquery'\r\n], function ($) {\r\n function Tokenizer (decorated, $element, options) {\r\n var tokenizer = options.get('tokenizer');\r\n\r\n if (tokenizer !== undefined) {\r\n this.tokenizer = tokenizer;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Tokenizer.prototype.bind = function (decorated, container, $container) {\r\n decorated.call(this, container, $container);\r\n\r\n this.$search = container.dropdown.$search || container.selection.$search ||\r\n $container.find('.select2-search__field');\r\n };\r\n\r\n Tokenizer.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n function createAndSelect (data) {\r\n // Normalize the data object so we can use it for checks\r\n var item = self._normalizeItem(data);\r\n\r\n // Check if the data object already exists as a tag\r\n // Select it if it doesn't\r\n var $existingOptions = self.$element.find('option').filter(function () {\r\n return $(this).val() === item.id;\r\n });\r\n\r\n // If an existing option wasn't found for it, create the option\r\n if (!$existingOptions.length) {\r\n var $option = self.option(item);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self._removeOldTags();\r\n self.addOptions([$option]);\r\n }\r\n\r\n // Select the item, now that we know there is an option for it\r\n select(item);\r\n }\r\n\r\n function select (data) {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n\r\n params.term = params.term || '';\r\n\r\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\r\n\r\n if (tokenData.term !== params.term) {\r\n // Replace the search term if we have the search box\r\n if (this.$search.length) {\r\n this.$search.val(tokenData.term);\r\n this.$search.focus();\r\n }\r\n\r\n params.term = tokenData.term;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\r\n var separators = options.get('tokenSeparators') || [];\r\n var term = params.term;\r\n var i = 0;\r\n\r\n var createTag = this.createTag || function (params) {\r\n return {\r\n id: params.term,\r\n text: params.term\r\n };\r\n };\r\n\r\n while (i < term.length) {\r\n var termChar = term[i];\r\n\r\n if ($.inArray(termChar, separators) === -1) {\r\n i++;\r\n\r\n continue;\r\n }\r\n\r\n var part = term.substr(0, i);\r\n var partParams = $.extend({}, params, {\r\n term: part\r\n });\r\n\r\n var data = createTag(partParams);\r\n\r\n if (data == null) {\r\n i++;\r\n continue;\r\n }\r\n\r\n callback(data);\r\n\r\n // Reset the term to not include the tokenized portion\r\n term = term.substr(i + 1) || '';\r\n i = 0;\r\n }\r\n\r\n return {\r\n term: term\r\n };\r\n };\r\n\r\n return Tokenizer;\r\n});\r\n\nS2.define('select2/data/minimumInputLength',[\r\n\r\n], function () {\r\n function MinimumInputLength (decorated, $e, options) {\r\n this.minimumInputLength = options.get('minimumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (params.term.length < this.minimumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooShort',\r\n args: {\r\n minimum: this.minimumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MinimumInputLength;\r\n});\r\n\nS2.define('select2/data/maximumInputLength',[\r\n\r\n], function () {\r\n function MaximumInputLength (decorated, $e, options) {\r\n this.maximumInputLength = options.get('maximumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (this.maximumInputLength > 0 &&\r\n params.term.length > this.maximumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooLong',\r\n args: {\r\n maximum: this.maximumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MaximumInputLength;\r\n});\r\n\nS2.define('select2/data/maximumSelectionLength',[\r\n\r\n], function (){\r\n function MaximumSelectionLength (decorated, $e, options) {\r\n this.maximumSelectionLength = options.get('maximumSelectionLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumSelectionLength.prototype.query =\r\n function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this.current(function (currentData) {\r\n var count = currentData != null ? currentData.length : 0;\r\n if (self.maximumSelectionLength > 0 &&\r\n count >= self.maximumSelectionLength) {\r\n self.trigger('results:message', {\r\n message: 'maximumSelected',\r\n args: {\r\n maximum: self.maximumSelectionLength\r\n }\r\n });\r\n return;\r\n }\r\n decorated.call(self, params, callback);\r\n });\r\n };\r\n\r\n return MaximumSelectionLength;\r\n});\r\n\nS2.define('select2/dropdown',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Dropdown ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n Dropdown.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Dropdown, Utils.Observable);\r\n\r\n Dropdown.prototype.render = function () {\r\n var $dropdown = $(\r\n '<span class=\"select2-dropdown\">' +\r\n '<span class=\"select2-results\"></span>' +\r\n '</span>'\r\n );\r\n\r\n $dropdown.attr('dir', this.options.get('dir'));\r\n\r\n this.$dropdown = $dropdown;\r\n\r\n return $dropdown;\r\n };\r\n\r\n Dropdown.prototype.bind = function () {\r\n // Should be implemented in subclasses\r\n };\r\n\r\n Dropdown.prototype.position = function ($dropdown, $container) {\r\n // Should be implmented in subclasses\r\n };\r\n\r\n Dropdown.prototype.destroy = function () {\r\n // Remove the dropdown from the DOM\r\n this.$dropdown.remove();\r\n };\r\n\r\n return Dropdown;\r\n});\r\n\nS2.define('select2/dropdown/search',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function Search () { }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $rendered = decorated.call(this);\r\n\r\n var $search = $(\r\n '<span class=\"select2-search select2-search--dropdown\">' +\r\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\r\n ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\r\n ' spellcheck=\"false\" role=\"textbox\" />' +\r\n '</span>'\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n $rendered.prepend($search);\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n this.$search.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$search.on('input', function (evt) {\r\n // Unbind the duplicated `keyup` event\r\n $(this).off('keyup');\r\n });\r\n\r\n this.$search.on('keyup input', function (evt) {\r\n self.handleSearch(evt);\r\n });\r\n\r\n container.on('open', function () {\r\n self.$search.attr('tabindex', 0);\r\n\r\n self.$search.focus();\r\n\r\n window.setTimeout(function () {\r\n self.$search.focus();\r\n }, 0);\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.attr('tabindex', -1);\r\n\r\n self.$search.val('');\r\n });\r\n\r\n container.on('focus', function () {\r\n if (container.isOpen()) {\r\n self.$search.focus();\r\n }\r\n });\r\n\r\n container.on('results:all', function (params) {\r\n if (params.query.term == null || params.query.term === '') {\r\n var showSearch = self.showSearch(params);\r\n\r\n if (showSearch) {\r\n self.$searchContainer.removeClass('select2-search--hide');\r\n } else {\r\n self.$searchContainer.addClass('select2-search--hide');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Search.prototype.handleSearch = function (evt) {\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.showSearch = function (_, params) {\r\n return true;\r\n };\r\n\r\n return Search;\r\n});\r\n\nS2.define('select2/dropdown/hidePlaceholder',[\r\n\r\n], function () {\r\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n HidePlaceholder.prototype.append = function (decorated, data) {\r\n data.results = this.removePlaceholder(data.results);\r\n\r\n decorated.call(this, data);\r\n };\r\n\r\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\r\n var modifiedData = data.slice(0);\r\n\r\n for (var d = data.length - 1; d >= 0; d--) {\r\n var item = data[d];\r\n\r\n if (this.placeholder.id === item.id) {\r\n modifiedData.splice(d, 1);\r\n }\r\n }\r\n\r\n return modifiedData;\r\n };\r\n\r\n return HidePlaceholder;\r\n});\r\n\nS2.define('select2/dropdown/infiniteScroll',[\r\n 'jquery'\r\n], function ($) {\r\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\r\n this.lastParams = {};\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n\r\n this.$loadingMore = this.createLoadingMore();\r\n this.loading = false;\r\n }\r\n\r\n InfiniteScroll.prototype.append = function (decorated, data) {\r\n this.$loadingMore.remove();\r\n this.loading = false;\r\n\r\n decorated.call(this, data);\r\n\r\n if (this.showLoadingMore(data)) {\r\n this.$results.append(this.$loadingMore);\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('query', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n container.on('query:append', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n this.$results.on('scroll', function () {\r\n var isLoadMoreVisible = $.contains(\r\n document.documentElement,\r\n self.$loadingMore[0]\r\n );\r\n\r\n if (self.loading || !isLoadMoreVisible) {\r\n return;\r\n }\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var loadingMoreOffset = self.$loadingMore.offset().top +\r\n self.$loadingMore.outerHeight(false);\r\n\r\n if (currentOffset + 50 >= loadingMoreOffset) {\r\n self.loadMore();\r\n }\r\n });\r\n };\r\n\r\n InfiniteScroll.prototype.loadMore = function () {\r\n this.loading = true;\r\n\r\n var params = $.extend({}, {page: 1}, this.lastParams);\r\n\r\n params.page++;\r\n\r\n this.trigger('query:append', params);\r\n };\r\n\r\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\r\n return data.pagination && data.pagination.more;\r\n };\r\n\r\n InfiniteScroll.prototype.createLoadingMore = function () {\r\n var $option = $(\r\n '<li ' +\r\n 'class=\"select2-results__option select2-results__option--load-more\"' +\r\n 'role=\"treeitem\" aria-disabled=\"true\"></li>'\r\n );\r\n\r\n var message = this.options.get('translations').get('loadingMore');\r\n\r\n $option.html(message(this.lastParams));\r\n\r\n return $option;\r\n };\r\n\r\n return InfiniteScroll;\r\n});\r\n\nS2.define('select2/dropdown/attachBody',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function AttachBody (decorated, $element, options) {\r\n this.$dropdownParent = options.get('dropdownParent') || $(document.body);\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n AttachBody.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var setupResultsEvents = false;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self._showDropdown();\r\n self._attachPositioningHandler(container);\r\n\r\n if (!setupResultsEvents) {\r\n setupResultsEvents = true;\r\n\r\n container.on('results:all', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:append', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n }\r\n });\r\n\r\n container.on('close', function () {\r\n self._hideDropdown();\r\n self._detachPositioningHandler(container);\r\n });\r\n\r\n this.$dropdownContainer.on('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n });\r\n };\r\n\r\n AttachBody.prototype.destroy = function (decorated) {\r\n decorated.call(this);\r\n\r\n this.$dropdownContainer.remove();\r\n };\r\n\r\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\r\n // Clone all of the container classes\r\n $dropdown.attr('class', $container.attr('class'));\r\n\r\n $dropdown.removeClass('select2');\r\n $dropdown.addClass('select2-container--open');\r\n\r\n $dropdown.css({\r\n position: 'absolute',\r\n top: -999999\r\n });\r\n\r\n this.$container = $container;\r\n };\r\n\r\n AttachBody.prototype.render = function (decorated) {\r\n var $container = $('<span></span>');\r\n\r\n var $dropdown = decorated.call(this);\r\n $container.append($dropdown);\r\n\r\n this.$dropdownContainer = $container;\r\n\r\n return $container;\r\n };\r\n\r\n AttachBody.prototype._hideDropdown = function (decorated) {\r\n this.$dropdownContainer.detach();\r\n };\r\n\r\n AttachBody.prototype._attachPositioningHandler =\r\n function (decorated, container) {\r\n var self = this;\r\n\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.each(function () {\r\n $(this).data('select2-scroll-position', {\r\n x: $(this).scrollLeft(),\r\n y: $(this).scrollTop()\r\n });\r\n });\r\n\r\n $watchers.on(scrollEvent, function (ev) {\r\n var position = $(this).data('select2-scroll-position');\r\n $(this).scrollTop(position.y);\r\n });\r\n\r\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\r\n function (e) {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n };\r\n\r\n AttachBody.prototype._detachPositioningHandler =\r\n function (decorated, container) {\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.off(scrollEvent);\r\n\r\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\r\n };\r\n\r\n AttachBody.prototype._positionDropdown = function () {\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n // Determine what the parent element is to use for calciulating the offset\r\n var $offsetParent = this.$dropdownParent;\r\n\r\n // For statically positoned elements, we need to get the element\r\n // that is determining the offset\r\n if ($offsetParent.css('position') === 'static') {\r\n $offsetParent = $offsetParent.offsetParent();\r\n }\r\n\r\n var parentOffset = $offsetParent.offset();\r\n\r\n css.top -= parentOffset.top;\r\n css.left -= parentOffset.left;\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - parentOffset.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n };\r\n\r\n AttachBody.prototype._resizeDropdown = function () {\r\n var css = {\r\n width: this.$container.outerWidth(false) + 'px'\r\n };\r\n\r\n if (this.options.get('dropdownAutoWidth')) {\r\n css.minWidth = css.width;\r\n css.position = 'relative';\r\n css.width = 'auto';\r\n }\r\n\r\n this.$dropdown.css(css);\r\n };\r\n\r\n AttachBody.prototype._showDropdown = function (decorated) {\r\n this.$dropdownContainer.appendTo(this.$dropdownParent);\r\n\r\n this._positionDropdown();\r\n this._resizeDropdown();\r\n };\r\n\r\n return AttachBody;\r\n});\r\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\r\n\r\n], function () {\r\n function countResults (data) {\r\n var count = 0;\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = data[d];\r\n\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\r\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\r\n\r\n if (this.minimumResultsForSearch < 0) {\r\n this.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\r\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\r\n return false;\r\n }\r\n\r\n return decorated.call(this, params);\r\n };\r\n\r\n return MinimumResultsForSearch;\r\n});\r\n\nS2.define('select2/dropdown/selectOnClose',[\r\n\r\n], function () {\r\n function SelectOnClose () { }\r\n\r\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('close', function (params) {\r\n self._handleSelectOnClose(params);\r\n });\r\n };\r\n\r\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\r\n if (params && params.originalSelect2Event != null) {\r\n var event = params.originalSelect2Event;\r\n\r\n // Don't select an item if the close event was triggered from a select or\r\n // unselect event\r\n if (event._type === 'select' || event._type === 'unselect') {\r\n return;\r\n }\r\n }\r\n\r\n var $highlightedResults = this.getHighlightedResults();\r\n\r\n // Only select highlighted results\r\n if ($highlightedResults.length < 1) {\r\n return;\r\n }\r\n\r\n var data = $highlightedResults.data('data');\r\n\r\n // Don't re-select already selected resulte\r\n if (\r\n (data.element != null && data.element.selected) ||\r\n (data.element == null && data.selected)\r\n ) {\r\n return;\r\n }\r\n\r\n this.trigger('select', {\r\n data: data\r\n });\r\n };\r\n\r\n return SelectOnClose;\r\n});\r\n\nS2.define('select2/dropdown/closeOnSelect',[\r\n\r\n], function () {\r\n function CloseOnSelect () { }\r\n\r\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n\r\n container.on('unselect', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n };\r\n\r\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\r\n var originalEvent = evt.originalEvent;\r\n\r\n // Don't close if the control key is being held\r\n if (originalEvent && originalEvent.ctrlKey) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {\r\n originalEvent: originalEvent,\r\n originalSelect2Event: evt\r\n });\r\n };\r\n\r\n return CloseOnSelect;\r\n});\r\n\nS2.define('select2/i18n/en',[],function () {\r\n // English\r\n return {\r\n errorLoading: function () {\r\n return 'The results could not be loaded.';\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n\r\n var message = 'Please delete ' + overChars + ' character';\r\n\r\n if (overChars != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n\r\n var message = 'Please enter ' + remainingChars + ' or more characters';\r\n\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return 'Loading more results…';\r\n },\r\n maximumSelected: function (args) {\r\n var message = 'You can only select ' + args.maximum + ' item';\r\n\r\n if (args.maximum != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n noResults: function () {\r\n return 'No results found';\r\n },\r\n searching: function () {\r\n return 'Searching…';\r\n }\r\n };\r\n});\r\n\nS2.define('select2/defaults',[\r\n 'jquery',\r\n 'require',\r\n\r\n './results',\r\n\r\n './selection/single',\r\n './selection/multiple',\r\n './selection/placeholder',\r\n './selection/allowClear',\r\n './selection/search',\r\n './selection/eventRelay',\r\n\r\n './utils',\r\n './translation',\r\n './diacritics',\r\n\r\n './data/select',\r\n './data/array',\r\n './data/ajax',\r\n './data/tags',\r\n './data/tokenizer',\r\n './data/minimumInputLength',\r\n './data/maximumInputLength',\r\n './data/maximumSelectionLength',\r\n\r\n './dropdown',\r\n './dropdown/search',\r\n './dropdown/hidePlaceholder',\r\n './dropdown/infiniteScroll',\r\n './dropdown/attachBody',\r\n './dropdown/minimumResultsForSearch',\r\n './dropdown/selectOnClose',\r\n './dropdown/closeOnSelect',\r\n\r\n './i18n/en'\r\n], function ($, require,\r\n\r\n ResultsList,\r\n\r\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\r\n SelectionSearch, EventRelay,\r\n\r\n Utils, Translation, DIACRITICS,\r\n\r\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\r\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\r\n\r\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\r\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\r\n\r\n EnglishTranslation) {\r\n function Defaults () {\r\n this.reset();\r\n }\r\n\r\n Defaults.prototype.apply = function (options) {\r\n options = $.extend(true, {}, this.defaults, options);\r\n\r\n if (options.dataAdapter == null) {\r\n if (options.ajax != null) {\r\n options.dataAdapter = AjaxData;\r\n } else if (options.data != null) {\r\n options.dataAdapter = ArrayData;\r\n } else {\r\n options.dataAdapter = SelectData;\r\n }\r\n\r\n if (options.minimumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MinimumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumSelectionLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumSelectionLength\r\n );\r\n }\r\n\r\n if (options.tags) {\r\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\r\n }\r\n\r\n if (options.tokenSeparators != null || options.tokenizer != null) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Tokenizer\r\n );\r\n }\r\n\r\n if (options.query != null) {\r\n var Query = require(options.amdBase + 'compat/query');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Query\r\n );\r\n }\r\n\r\n if (options.initSelection != null) {\r\n var InitSelection = require(options.amdBase + 'compat/initSelection');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n InitSelection\r\n );\r\n }\r\n }\r\n\r\n if (options.resultsAdapter == null) {\r\n options.resultsAdapter = ResultsList;\r\n\r\n if (options.ajax != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n InfiniteScroll\r\n );\r\n }\r\n\r\n if (options.placeholder != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n HidePlaceholder\r\n );\r\n }\r\n\r\n if (options.selectOnClose) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n SelectOnClose\r\n );\r\n }\r\n }\r\n\r\n if (options.dropdownAdapter == null) {\r\n if (options.multiple) {\r\n options.dropdownAdapter = Dropdown;\r\n } else {\r\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\r\n\r\n options.dropdownAdapter = SearchableDropdown;\r\n }\r\n\r\n if (options.minimumResultsForSearch !== 0) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n MinimumResultsForSearch\r\n );\r\n }\r\n\r\n if (options.closeOnSelect) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n CloseOnSelect\r\n );\r\n }\r\n\r\n if (\r\n options.dropdownCssClass != null ||\r\n options.dropdownCss != null ||\r\n options.adaptDropdownCssClass != null\r\n ) {\r\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n DropdownCSS\r\n );\r\n }\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n AttachBody\r\n );\r\n }\r\n\r\n if (options.selectionAdapter == null) {\r\n if (options.multiple) {\r\n options.selectionAdapter = MultipleSelection;\r\n } else {\r\n options.selectionAdapter = SingleSelection;\r\n }\r\n\r\n // Add the placeholder mixin if a placeholder was specified\r\n if (options.placeholder != null) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n Placeholder\r\n );\r\n }\r\n\r\n if (options.allowClear) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n AllowClear\r\n );\r\n }\r\n\r\n if (options.multiple) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n SelectionSearch\r\n );\r\n }\r\n\r\n if (\r\n options.containerCssClass != null ||\r\n options.containerCss != null ||\r\n options.adaptContainerCssClass != null\r\n ) {\r\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n ContainerCSS\r\n );\r\n }\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n EventRelay\r\n );\r\n }\r\n\r\n if (typeof options.language === 'string') {\r\n // Check if the language is specified with a region\r\n if (options.language.indexOf('-') > 0) {\r\n // Extract the region information if it is included\r\n var languageParts = options.language.split('-');\r\n var baseLanguage = languageParts[0];\r\n\r\n options.language = [options.language, baseLanguage];\r\n } else {\r\n options.language = [options.language];\r\n }\r\n }\r\n\r\n if ($.isArray(options.language)) {\r\n var languages = new Translation();\r\n options.language.push('en');\r\n\r\n var languageNames = options.language;\r\n\r\n for (var l = 0; l < languageNames.length; l++) {\r\n var name = languageNames[l];\r\n var language = {};\r\n\r\n try {\r\n // Try to load it with the original name\r\n language = Translation.loadPath(name);\r\n } catch (e) {\r\n try {\r\n // If we couldn't load it, check if it wasn't the full path\r\n name = this.defaults.amdLanguageBase + name;\r\n language = Translation.loadPath(name);\r\n } catch (ex) {\r\n // The translation could not be loaded at all. Sometimes this is\r\n // because of a configuration problem, other times this can be\r\n // because of how Select2 helps load all possible translation files.\r\n if (options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The language file for \"' + name + '\" could not be ' +\r\n 'automatically loaded. A fallback will be used instead.'\r\n );\r\n }\r\n\r\n continue;\r\n }\r\n }\r\n\r\n languages.extend(language);\r\n }\r\n\r\n options.translations = languages;\r\n } else {\r\n var baseTranslation = Translation.loadPath(\r\n this.defaults.amdLanguageBase + 'en'\r\n );\r\n var customTranslation = new Translation(options.language);\r\n\r\n customTranslation.extend(baseTranslation);\r\n\r\n options.translations = customTranslation;\r\n }\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype.reset = function () {\r\n function stripDiacritics (text) {\r\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\r\n function match(a) {\r\n return DIACRITICS[a] || a;\r\n }\r\n\r\n return text.replace(/[^\\u0000-\\u007E]/g, match);\r\n }\r\n\r\n function matcher (params, data) {\r\n // Always return the object if there is nothing to compare\r\n if ($.trim(params.term) === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return matcher(params, match);\r\n }\r\n\r\n var original = stripDiacritics(data.text).toUpperCase();\r\n var term = stripDiacritics(params.term).toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n }\r\n\r\n this.defaults = {\r\n amdBase: './',\r\n amdLanguageBase: './i18n/',\r\n closeOnSelect: true,\r\n debug: false,\r\n dropdownAutoWidth: false,\r\n escapeMarkup: Utils.escapeMarkup,\r\n language: EnglishTranslation,\r\n matcher: matcher,\r\n minimumInputLength: 0,\r\n maximumInputLength: 0,\r\n maximumSelectionLength: 0,\r\n minimumResultsForSearch: 0,\r\n selectOnClose: false,\r\n sorter: function (data) {\r\n return data;\r\n },\r\n templateResult: function (result) {\r\n return result.text;\r\n },\r\n templateSelection: function (selection) {\r\n return selection.text;\r\n },\r\n theme: 'default',\r\n width: 'resolve'\r\n };\r\n };\r\n\r\n Defaults.prototype.set = function (key, value) {\r\n var camelKey = $.camelCase(key);\r\n\r\n var data = {};\r\n data[camelKey] = value;\r\n\r\n var convertedData = Utils._convertData(data);\r\n\r\n $.extend(this.defaults, convertedData);\r\n };\r\n\r\n var defaults = new Defaults();\r\n\r\n return defaults;\r\n});\r\n\nS2.define('select2/options',[\r\n 'require',\r\n 'jquery',\r\n './defaults',\r\n './utils'\r\n], function (require, $, Defaults, Utils) {\r\n function Options (options, $element) {\r\n this.options = options;\r\n\r\n if ($element != null) {\r\n this.fromElement($element);\r\n }\r\n\r\n this.options = Defaults.apply(this.options);\r\n\r\n if ($element && $element.is('input')) {\r\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\r\n\r\n this.options.dataAdapter = Utils.Decorate(\r\n this.options.dataAdapter,\r\n InputCompat\r\n );\r\n }\r\n }\r\n\r\n Options.prototype.fromElement = function ($e) {\r\n var excludedData = ['select2'];\r\n\r\n if (this.options.multiple == null) {\r\n this.options.multiple = $e.prop('multiple');\r\n }\r\n\r\n if (this.options.disabled == null) {\r\n this.options.disabled = $e.prop('disabled');\r\n }\r\n\r\n if (this.options.language == null) {\r\n if ($e.prop('lang')) {\r\n this.options.language = $e.prop('lang').toLowerCase();\r\n } else if ($e.closest('[lang]').prop('lang')) {\r\n this.options.language = $e.closest('[lang]').prop('lang');\r\n }\r\n }\r\n\r\n if (this.options.dir == null) {\r\n if ($e.prop('dir')) {\r\n this.options.dir = $e.prop('dir');\r\n } else if ($e.closest('[dir]').prop('dir')) {\r\n this.options.dir = $e.closest('[dir]').prop('dir');\r\n } else {\r\n this.options.dir = 'ltr';\r\n }\r\n }\r\n\r\n $e.prop('disabled', this.options.disabled);\r\n $e.prop('multiple', this.options.multiple);\r\n\r\n if ($e.data('select2Tags')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\r\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\r\n 'removed in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.data('data', $e.data('select2Tags'));\r\n $e.data('tags', true);\r\n }\r\n\r\n if ($e.data('ajaxUrl')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\r\n '`data-ajax--url` and support for the old attribute will be removed' +\r\n ' in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.attr('ajax--url', $e.data('ajaxUrl'));\r\n $e.data('ajax--url', $e.data('ajaxUrl'));\r\n }\r\n\r\n var dataset = {};\r\n\r\n // Prefer the element's `dataset` attribute if it exists\r\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\r\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\r\n dataset = $.extend(true, {}, $e[0].dataset, $e.data());\r\n } else {\r\n dataset = $e.data();\r\n }\r\n\r\n var data = $.extend(true, {}, dataset);\r\n\r\n data = Utils._convertData(data);\r\n\r\n for (var key in data) {\r\n if ($.inArray(key, excludedData) > -1) {\r\n continue;\r\n }\r\n\r\n if ($.isPlainObject(this.options[key])) {\r\n $.extend(this.options[key], data[key]);\r\n } else {\r\n this.options[key] = data[key];\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n Options.prototype.get = function (key) {\r\n return this.options[key];\r\n };\r\n\r\n Options.prototype.set = function (key, val) {\r\n this.options[key] = val;\r\n };\r\n\r\n return Options;\r\n});\r\n\nS2.define('select2/core',[\r\n 'jquery',\r\n './options',\r\n './utils',\r\n './keys'\r\n], function ($, Options, Utils, KEYS) {\r\n var Select2 = function ($element, options) {\r\n if ($element.data('select2') != null) {\r\n $element.data('select2').destroy();\r\n }\r\n\r\n this.$element = $element;\r\n\r\n this.id = this._generateId($element);\r\n\r\n options = options || {};\r\n\r\n this.options = new Options(options, $element);\r\n\r\n Select2.__super__.constructor.call(this);\r\n\r\n // Set up the tabindex\r\n\r\n var tabindex = $element.attr('tabindex') || 0;\r\n $element.data('old-tabindex', tabindex);\r\n $element.attr('tabindex', '-1');\r\n\r\n // Set up containers and adapters\r\n\r\n var DataAdapter = this.options.get('dataAdapter');\r\n this.dataAdapter = new DataAdapter($element, this.options);\r\n\r\n var $container = this.render();\r\n\r\n this._placeContainer($container);\r\n\r\n var SelectionAdapter = this.options.get('selectionAdapter');\r\n this.selection = new SelectionAdapter($element, this.options);\r\n this.$selection = this.selection.render();\r\n\r\n this.selection.position(this.$selection, $container);\r\n\r\n var DropdownAdapter = this.options.get('dropdownAdapter');\r\n this.dropdown = new DropdownAdapter($element, this.options);\r\n this.$dropdown = this.dropdown.render();\r\n\r\n this.dropdown.position(this.$dropdown, $container);\r\n\r\n var ResultsAdapter = this.options.get('resultsAdapter');\r\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\r\n this.$results = this.results.render();\r\n\r\n this.results.position(this.$results, this.$dropdown);\r\n\r\n // Bind events\r\n\r\n var self = this;\r\n\r\n // Bind the container to all of the adapters\r\n this._bindAdapters();\r\n\r\n // Register any DOM event handlers\r\n this._registerDomEvents();\r\n\r\n // Register any internal event handlers\r\n this._registerDataEvents();\r\n this._registerSelectionEvents();\r\n this._registerDropdownEvents();\r\n this._registerResultsEvents();\r\n this._registerEvents();\r\n\r\n // Set the initial state\r\n this.dataAdapter.current(function (initialData) {\r\n self.trigger('selection:update', {\r\n data: initialData\r\n });\r\n });\r\n\r\n // Hide the original select\r\n $element.addClass('select2-hidden-accessible');\r\n $element.attr('aria-hidden', 'true');\r\n\r\n // Synchronize any monitored attributes\r\n this._syncAttributes();\r\n\r\n $element.data('select2', this);\r\n };\r\n\r\n Utils.Extend(Select2, Utils.Observable);\r\n\r\n Select2.prototype._generateId = function ($element) {\r\n var id = '';\r\n\r\n if ($element.attr('id') != null) {\r\n id = $element.attr('id');\r\n } else if ($element.attr('name') != null) {\r\n id = $element.attr('name') + '-' + Utils.generateChars(2);\r\n } else {\r\n id = Utils.generateChars(4);\r\n }\r\n\r\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\r\n id = 'select2-' + id;\r\n\r\n return id;\r\n };\r\n\r\n Select2.prototype._placeContainer = function ($container) {\r\n $container.insertAfter(this.$element);\r\n\r\n var width = this._resolveWidth(this.$element, this.options.get('width'));\r\n\r\n if (width != null) {\r\n $container.css('width', width);\r\n }\r\n };\r\n\r\n Select2.prototype._resolveWidth = function ($element, method) {\r\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\r\n\r\n if (method == 'resolve') {\r\n var styleWidth = this._resolveWidth($element, 'style');\r\n\r\n if (styleWidth != null) {\r\n return styleWidth;\r\n }\r\n\r\n return this._resolveWidth($element, 'element');\r\n }\r\n\r\n if (method == 'element') {\r\n var elementWidth = $element.outerWidth(false);\r\n\r\n if (elementWidth <= 0) {\r\n return 'auto';\r\n }\r\n\r\n return elementWidth + 'px';\r\n }\r\n\r\n if (method == 'style') {\r\n var style = $element.attr('style');\r\n\r\n if (typeof(style) !== 'string') {\r\n return null;\r\n }\r\n\r\n var attrs = style.split(';');\r\n\r\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\r\n var attr = attrs[i].replace(/\\s/g, '');\r\n var matches = attr.match(WIDTH);\r\n\r\n if (matches !== null && matches.length >= 1) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return method;\r\n };\r\n\r\n Select2.prototype._bindAdapters = function () {\r\n this.dataAdapter.bind(this, this.$container);\r\n this.selection.bind(this, this.$container);\r\n\r\n this.dropdown.bind(this, this.$container);\r\n this.results.bind(this, this.$container);\r\n };\r\n\r\n Select2.prototype._registerDomEvents = function () {\r\n var self = this;\r\n\r\n this.$element.on('change.select2', function () {\r\n self.dataAdapter.current(function (data) {\r\n self.trigger('selection:update', {\r\n data: data\r\n });\r\n });\r\n });\r\n\r\n this.$element.on('focus.select2', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this._syncA = Utils.bind(this._syncAttributes, this);\r\n this._syncS = Utils.bind(this._syncSubtree, this);\r\n\r\n if (this.$element[0].attachEvent) {\r\n this.$element[0].attachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n var observer = window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n ;\r\n\r\n if (observer != null) {\r\n this._observer = new observer(function (mutations) {\r\n $.each(mutations, self._syncA);\r\n $.each(mutations, self._syncS);\r\n });\r\n this._observer.observe(this.$element[0], {\r\n attributes: true,\r\n childList: true,\r\n subtree: false\r\n });\r\n } else if (this.$element[0].addEventListener) {\r\n this.$element[0].addEventListener(\r\n 'DOMAttrModified',\r\n self._syncA,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeInserted',\r\n self._syncS,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeRemoved',\r\n self._syncS,\r\n false\r\n );\r\n }\r\n };\r\n\r\n Select2.prototype._registerDataEvents = function () {\r\n var self = this;\r\n\r\n this.dataAdapter.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerSelectionEvents = function () {\r\n var self = this;\r\n var nonRelayEvents = ['toggle', 'focus'];\r\n\r\n this.selection.on('toggle', function () {\r\n self.toggleDropdown();\r\n });\r\n\r\n this.selection.on('focus', function (params) {\r\n self.focus(params);\r\n });\r\n\r\n this.selection.on('*', function (name, params) {\r\n if ($.inArray(name, nonRelayEvents) !== -1) {\r\n return;\r\n }\r\n\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerDropdownEvents = function () {\r\n var self = this;\r\n\r\n this.dropdown.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerResultsEvents = function () {\r\n var self = this;\r\n\r\n this.results.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerEvents = function () {\r\n var self = this;\r\n\r\n this.on('open', function () {\r\n self.$container.addClass('select2-container--open');\r\n });\r\n\r\n this.on('close', function () {\r\n self.$container.removeClass('select2-container--open');\r\n });\r\n\r\n this.on('enable', function () {\r\n self.$container.removeClass('select2-container--disabled');\r\n });\r\n\r\n this.on('disable', function () {\r\n self.$container.addClass('select2-container--disabled');\r\n });\r\n\r\n this.on('blur', function () {\r\n self.$container.removeClass('select2-container--focus');\r\n });\r\n\r\n this.on('query', function (params) {\r\n if (!self.isOpen()) {\r\n self.trigger('open', {});\r\n }\r\n\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:all', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('query:append', function (params) {\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:append', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('keypress', function (evt) {\r\n var key = evt.which;\r\n\r\n if (self.isOpen()) {\r\n if (key === KEYS.ESC || key === KEYS.TAB ||\r\n (key === KEYS.UP && evt.altKey)) {\r\n self.close();\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.ENTER) {\r\n self.trigger('results:select', {});\r\n\r\n evt.preventDefault();\r\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\r\n self.trigger('results:toggle', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.UP) {\r\n self.trigger('results:previous', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.DOWN) {\r\n self.trigger('results:next', {});\r\n\r\n evt.preventDefault();\r\n }\r\n } else {\r\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\r\n (key === KEYS.DOWN && evt.altKey)) {\r\n self.open();\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n\r\n Select2.prototype._syncAttributes = function () {\r\n this.options.set('disabled', this.$element.prop('disabled'));\r\n\r\n if (this.options.get('disabled')) {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n\r\n this.trigger('disable', {});\r\n } else {\r\n this.trigger('enable', {});\r\n }\r\n };\r\n\r\n Select2.prototype._syncSubtree = function (evt, mutations) {\r\n var changed = false;\r\n var self = this;\r\n\r\n // Ignore any mutation events raised for elements that aren't options or\r\n // optgroups. This handles the case when the select element is destroyed\r\n if (\r\n evt && evt.target && (\r\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n if (!mutations) {\r\n // If mutation events aren't supported, then we can only assume that the\r\n // change affected the selections\r\n changed = true;\r\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\r\n for (var n = 0; n < mutations.addedNodes.length; n++) {\r\n var node = mutations.addedNodes[n];\r\n\r\n if (node.selected) {\r\n changed = true;\r\n }\r\n }\r\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\r\n changed = true;\r\n }\r\n\r\n // Only re-pull the data if we think there is a change\r\n if (changed) {\r\n this.dataAdapter.current(function (currentData) {\r\n self.trigger('selection:update', {\r\n data: currentData\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Override the trigger method to automatically trigger pre-events when\r\n * there are events that can be prevented.\r\n */\r\n Select2.prototype.trigger = function (name, args) {\r\n var actualTrigger = Select2.__super__.trigger;\r\n var preTriggerMap = {\r\n 'open': 'opening',\r\n 'close': 'closing',\r\n 'select': 'selecting',\r\n 'unselect': 'unselecting'\r\n };\r\n\r\n if (args === undefined) {\r\n args = {};\r\n }\r\n\r\n if (name in preTriggerMap) {\r\n var preTriggerName = preTriggerMap[name];\r\n var preTriggerArgs = {\r\n prevented: false,\r\n name: name,\r\n args: args\r\n };\r\n\r\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\r\n\r\n if (preTriggerArgs.prevented) {\r\n args.prevented = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n actualTrigger.call(this, name, args);\r\n };\r\n\r\n Select2.prototype.toggleDropdown = function () {\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n Select2.prototype.open = function () {\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('query', {});\r\n };\r\n\r\n Select2.prototype.close = function () {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {});\r\n };\r\n\r\n Select2.prototype.isOpen = function () {\r\n return this.$container.hasClass('select2-container--open');\r\n };\r\n\r\n Select2.prototype.hasFocus = function () {\r\n return this.$container.hasClass('select2-container--focus');\r\n };\r\n\r\n Select2.prototype.focus = function (data) {\r\n // No need to re-trigger focus events if we are already focused\r\n if (this.hasFocus()) {\r\n return;\r\n }\r\n\r\n this.$container.addClass('select2-container--focus');\r\n this.trigger('focus', {});\r\n };\r\n\r\n Select2.prototype.enable = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\r\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\r\n ' instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n args = [true];\r\n }\r\n\r\n var disabled = !args[0];\r\n\r\n this.$element.prop('disabled', disabled);\r\n };\r\n\r\n Select2.prototype.data = function () {\r\n if (this.options.get('debug') &&\r\n arguments.length > 0 && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\r\n 'should consider setting the value instead using `$element.val()`.'\r\n );\r\n }\r\n\r\n var data = [];\r\n\r\n this.dataAdapter.current(function (currentData) {\r\n data = currentData;\r\n });\r\n\r\n return data;\r\n };\r\n\r\n Select2.prototype.val = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\r\n ' removed in later Select2 versions. Use $element.val() instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n return this.$element.val();\r\n }\r\n\r\n var newVal = args[0];\r\n\r\n if ($.isArray(newVal)) {\r\n newVal = $.map(newVal, function (obj) {\r\n return obj.toString();\r\n });\r\n }\r\n\r\n this.$element.val(newVal).trigger('change');\r\n };\r\n\r\n Select2.prototype.destroy = function () {\r\n this.$container.remove();\r\n\r\n if (this.$element[0].detachEvent) {\r\n this.$element[0].detachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n if (this._observer != null) {\r\n this._observer.disconnect();\r\n this._observer = null;\r\n } else if (this.$element[0].removeEventListener) {\r\n this.$element[0]\r\n .removeEventListener('DOMAttrModified', this._syncA, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeInserted', this._syncS, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\r\n }\r\n\r\n this._syncA = null;\r\n this._syncS = null;\r\n\r\n this.$element.off('.select2');\r\n this.$element.attr('tabindex', this.$element.data('old-tabindex'));\r\n\r\n this.$element.removeClass('select2-hidden-accessible');\r\n this.$element.attr('aria-hidden', 'false');\r\n this.$element.removeData('select2');\r\n\r\n this.dataAdapter.destroy();\r\n this.selection.destroy();\r\n this.dropdown.destroy();\r\n this.results.destroy();\r\n\r\n this.dataAdapter = null;\r\n this.selection = null;\r\n this.dropdown = null;\r\n this.results = null;\r\n };\r\n\r\n Select2.prototype.render = function () {\r\n var $container = $(\r\n '<span class=\"select2 select2-container\">' +\r\n '<span class=\"selection\"></span>' +\r\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\r\n '</span>'\r\n );\r\n\r\n $container.attr('dir', this.options.get('dir'));\r\n\r\n this.$container = $container;\r\n\r\n this.$container.addClass('select2-container--' + this.options.get('theme'));\r\n\r\n $container.data('element', this.$element);\r\n\r\n return $container;\r\n };\r\n\r\n return Select2;\r\n});\r\n\nS2.define('jquery-mousewheel',[\r\n 'jquery'\r\n], function ($) {\r\n // Used to shim jQuery.mousewheel for non-full builds.\r\n return $;\r\n});\r\n\nS2.define('jquery.select2',[\r\n 'jquery',\r\n 'jquery-mousewheel',\r\n\r\n './select2/core',\r\n './select2/defaults'\r\n], function ($, _, Select2, Defaults) {\r\n if ($.fn.select2 == null) {\r\n // All methods that should return the element\r\n var thisMethods = ['open', 'close', 'destroy'];\r\n\r\n $.fn.select2 = function (options) {\r\n options = options || {};\r\n\r\n if (typeof options === 'object') {\r\n this.each(function () {\r\n var instanceOptions = $.extend(true, {}, options);\r\n\r\n var instance = new Select2($(this), instanceOptions);\r\n });\r\n\r\n return this;\r\n } else if (typeof options === 'string') {\r\n var ret;\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n this.each(function () {\r\n var instance = $(this).data('select2');\r\n\r\n if (instance == null && window.console && console.error) {\r\n console.error(\r\n 'The select2(\\'' + options + '\\') method was called on an ' +\r\n 'element that is not using Select2.'\r\n );\r\n }\r\n\r\n ret = instance[options].apply(instance, args);\r\n });\r\n\r\n // Check if we should be returning `this`\r\n if ($.inArray(options, thisMethods) > -1) {\r\n return this;\r\n }\r\n\r\n return ret;\r\n } else {\r\n throw new Error('Invalid arguments for Select2: ' + options);\r\n }\r\n };\r\n }\r\n\r\n if ($.fn.select2.defaults == null) {\r\n $.fn.select2.defaults = Defaults;\r\n }\r\n\r\n return Select2;\r\n});\r\n\n // Return the AMD loader configuration so it can be used outside of this file\r\n return {\r\n define: S2.define,\r\n require: S2.require\r\n };\r\n}());\r\n\r\n // Autoload the jQuery bindings\r\n // We know that all of the modules exist above this, so we're safe\r\n var select2 = S2.require('jquery.select2');\r\n\r\n // Hold the AMD module references on the jQuery function that was just loaded\r\n // This allows Select2 to use the internal loader outside of this file, such\r\n // as in the language files.\r\n jQuery.fn.select2.amd = S2;\r\n\r\n // Return the Select2 instance for anyone who is importing it.\r\n return select2;\r\n}));\r\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3NlbGVjdDIvZGlzdC9qcy9zZWxlY3QyLmpzPzdiNzAiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIFNlbGVjdDIgNC4wLjNcclxuICogaHR0cHM6Ly9zZWxlY3QyLmdpdGh1Yi5pb1xyXG4gKlxyXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcclxuICogaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9ibG9iL21hc3Rlci9MSUNFTlNFLm1kXHJcbiAqL1xyXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcclxuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XHJcbiAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuXHJcbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHtcclxuICAgIC8vIE5vZGUvQ29tbW9uSlNcclxuICAgIGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBCcm93c2VyIGdsb2JhbHNcclxuICAgIGZhY3RvcnkoalF1ZXJ5KTtcclxuICB9XHJcbn0oZnVuY3Rpb24gKGpRdWVyeSkge1xyXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHdlIGNhbiBjYXRjaCB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIGFuZCB1c2UgaXRcclxuICAvLyBUaGUgaW5uZXIgZmlsZSBzaG91bGQgYmUgd3JhcHBlZCAoYnkgYGJhbm5lci5zdGFydC5qc2ApIGluIGEgZnVuY3Rpb24gdGhhdFxyXG4gIC8vIHJldHVybnMgdGhlIEFNRCBsb2FkZXIgcmVmZXJlbmNlcy5cclxuICB2YXIgUzIgPVxyXG4oZnVuY3Rpb24gKCkge1xyXG4gIC8vIFJlc3RvcmUgdGhlIFNlbGVjdDIgQU1EIGxvYWRlciBzbyBpdCBjYW4gYmUgdXNlZFxyXG4gIC8vIE5lZWRlZCBtb3N0bHkgaW4gdGhlIGxhbmd1YWdlIGZpbGVzLCB3aGVyZSB0aGUgbG9hZGVyIGlzIG5vdCBpbnNlcnRlZFxyXG4gIGlmIChqUXVlcnkgJiYgalF1ZXJ5LmZuICYmIGpRdWVyeS5mbi5zZWxlY3QyICYmIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCkge1xyXG4gICAgdmFyIFMyID0galF1ZXJ5LmZuLnNlbGVjdDIuYW1kO1xyXG4gIH1cclxudmFyIFMyOyhmdW5jdGlvbiAoKSB7IGlmICghUzIgfHwgIVMyLnJlcXVpcmVqcykge1xuaWYgKCFTMikgeyBTMiA9IHt9OyB9IGVsc2UgeyByZXF1aXJlID0gUzI7IH1cbi8qKlxuICogQGxpY2Vuc2UgYWxtb25kIDAuMy4xIENvcHlyaWdodCAoYykgMjAxMS0yMDE0LCBUaGUgRG9qbyBGb3VuZGF0aW9uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBBdmFpbGFibGUgdmlhIHRoZSBNSVQgb3IgbmV3IEJTRCBsaWNlbnNlLlxuICogc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL2FsbW9uZCBmb3IgZGV0YWlsc1xuICovXG4vL0dvaW5nIHNsb3BweSB0byBhdm9pZCAndXNlIHN0cmljdCcgc3RyaW5nIGNvc3QsIGJ1dCBzdHJpY3QgcHJhY3RpY2VzIHNob3VsZFxuLy9iZSBmb2xsb3dlZC5cbi8qanNsaW50IHNsb3BweTogdHJ1ZSAqL1xuLypnbG9iYWwgc2V0VGltZW91dDogZmFsc2UgKi9cblxudmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lO1xuKGZ1bmN0aW9uICh1bmRlZikge1xuICAgIHZhciBtYWluLCByZXEsIG1ha2VNYXAsIGhhbmRsZXJzLFxuICAgICAgICBkZWZpbmVkID0ge30sXG4gICAgICAgIHdhaXRpbmcgPSB7fSxcbiAgICAgICAgY29uZmlnID0ge30sXG4gICAgICAgIGRlZmluaW5nID0ge30sXG4gICAgICAgIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICAgIGFwcyA9IFtdLnNsaWNlLFxuICAgICAgICBqc1N1ZmZpeFJlZ0V4cCA9IC9cXC5qcyQvO1xuXG4gICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwgbGlrZSAuL3NvbWV0aGluZywgbm9ybWFsaXplIGl0IHRvXG4gICAgICogYSByZWFsIG5hbWUgdGhhdCBjYW4gYmUgbWFwcGVkIHRvIGEgcGF0aC5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgcmVsYXRpdmUgbmFtZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlTmFtZSBhIHJlYWwgbmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZVxuICAgICAqIHRvLlxuICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSkge1xuICAgICAgICB2YXIgbmFtZVBhcnRzLCBuYW1lU2VnbWVudCwgbWFwVmFsdWUsIGZvdW5kTWFwLCBsYXN0SW5kZXgsXG4gICAgICAgICAgICBmb3VuZEksIGZvdW5kU3Rhck1hcCwgc3RhckksIGksIGosIHBhcnQsXG4gICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlTmFtZSAmJiBiYXNlTmFtZS5zcGxpdChcIi9cIiksXG4gICAgICAgICAgICBtYXAgPSBjb25maWcubWFwLFxuICAgICAgICAgICAgc3Rhck1hcCA9IChtYXAgJiYgbWFwWycqJ10pIHx8IHt9O1xuXG4gICAgICAgIC8vQWRqdXN0IGFueSByZWxhdGl2ZSBwYXRocy5cbiAgICAgICAgaWYgKG5hbWUgJiYgbmFtZS5jaGFyQXQoMCkgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICAvL0lmIGhhdmUgYSBiYXNlIG5hbWUsIHRyeSB0byBub3JtYWxpemUgYWdhaW5zdCBpdCxcbiAgICAgICAgICAgIC8vb3RoZXJ3aXNlLCBhc3N1bWUgaXQgaXMgYSB0b3AtbGV2ZWwgcmVxdWlyZSB0aGF0IHdpbGxcbiAgICAgICAgICAgIC8vYmUgcmVsYXRpdmUgdG8gYmFzZVVybCBpbiB0aGUgZW5kLlxuICAgICAgICAgICAgaWYgKGJhc2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBuYW1lLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICAvLyBOb2RlIC5qcyBhbGxvd2FuY2U6XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ub2RlSWRDb21wYXQgJiYganNTdWZmaXhSZWdFeHAudGVzdChuYW1lW2xhc3RJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9Mb3Agb2ZmIHRoZSBsYXN0IHBhcnQgb2YgYmFzZVBhcnRzLCBzbyB0aGF0IC4gbWF0Y2hlcyB0aGVcbiAgICAgICAgICAgICAgICAvL1wiZGlyZWN0b3J5XCIgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzIG1vZHVsZS4gRm9yIGluc3RhbmNlLFxuICAgICAgICAgICAgICAgIC8vYmFzZU5hbWUgb2YgXCJvbmUvdHdvL3RocmVlXCIsIG1hcHMgdG8gXCJvbmUvdHdvL3RocmVlLmpzXCIsIGJ1dCB3ZVxuICAgICAgICAgICAgICAgIC8vd2FudCB0aGUgZGlyZWN0b3J5LCBcIm9uZS90d29cIiBmb3IgdGhpcyBub3JtYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgIG5hbWUgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpLmNvbmNhdChuYW1lKTtcblxuICAgICAgICAgICAgICAgIC8vc3RhcnQgdHJpbURvdHNcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gbmFtZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSBcIi4uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAxICYmIChuYW1lWzJdID09PSAnLi4nIHx8IG5hbWVbMF0gPT09ICcuLicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9FbmQgb2YgdGhlIGxpbmUuIEtlZXAgYXQgbGVhc3Qgb25lIG5vbi1kb3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3BhdGggc2VnbWVudCBhdCB0aGUgZnJvbnQgc28gaXQgY2FuIGJlIG1hcHBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29ycmVjdGx5IHRvIGRpc2suIE90aGVyd2lzZSwgdGhlcmUgaXMgbGlrZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ubyBwYXRoIG1hcHBpbmcgZm9yIGEgcGF0aCBzdGFydGluZyB3aXRoICcuLicuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9UaGlzIGNhbiBzdGlsbCBmYWlsLCBidXQgY2F0Y2hlcyB0aGUgbW9zdCByZWFzb25hYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2VzIG9mIC4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zcGxpY2UoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL2VuZCB0cmltRG90c1xuXG4gICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbihcIi9cIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuaW5kZXhPZignLi8nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIE5vIGJhc2VOYW1lLCBzbyB0aGlzIGlzIElEIGlzIHJlc29sdmVkIHJlbGF0aXZlXG4gICAgICAgICAgICAgICAgLy8gdG8gYmFzZVVybCwgcHVsbCBvZmYgdGhlIGxlYWRpbmcgZG90LlxuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuXG4gICAgICAgIGlmICgoYmFzZVBhcnRzIHx8IHN0YXJNYXApICYmIG1hcCkge1xuICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSBuYW1lUGFydHMubGVuZ3RoOyBpID4gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgbmFtZVNlZ21lbnQgPSBuYW1lUGFydHMuc2xpY2UoMCwgaSkuam9pbihcIi9cIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFzZVBhcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRmluZCB0aGUgbG9uZ2VzdCBiYXNlTmFtZSBzZWdtZW50IG1hdGNoIGluIHRoZSBjb25maWcuXG4gICAgICAgICAgICAgICAgICAgIC8vU28sIGRvIGpvaW5zIG9uIHRoZSBiaWdnZXN0IHRvIHNtYWxsZXN0IGxlbmd0aHMgb2YgYmFzZVBhcnRzLlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiYXNlUGFydHMubGVuZ3RoOyBqID4gMDsgaiAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IG1hcFtiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9iYXNlTmFtZSBzZWdtZW50IGhhcyAgY29uZmlnLCBmaW5kIGlmIGl0IGhhcyBvbmUgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gbWFwVmFsdWVbbmFtZVNlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9DaGVjayBmb3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCxcbiAgICAgICAgICAgICAgICAvL2lmIHRoZXJlIGlzIGEgc2hvcnRlciBzZWdtZW50IG1hdGNoIGxhdGVyIGluIGEgbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuXG4gICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJNYXAgJiYgc3Rhck1hcCAmJiBzdGFyTWFwW25hbWVTZWdtZW50XSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZFN0YXJNYXAgPSBzdGFyTWFwW25hbWVTZWdtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3VuZE1hcCAmJiBmb3VuZFN0YXJNYXApIHtcbiAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IGZvdW5kU3Rhck1hcDtcbiAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvdW5kTWFwKSB7XG4gICAgICAgICAgICAgICAgbmFtZVBhcnRzLnNwbGljZSgwLCBmb3VuZEksIGZvdW5kTWFwKTtcbiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZVBhcnRzLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VSZXF1aXJlKHJlbE5hbWUsIGZvcmNlU3luYykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9BIHZlcnNpb24gb2YgYSByZXF1aXJlIGZ1bmN0aW9uIHRoYXQgcGFzc2VzIGEgbW9kdWxlTmFtZVxuICAgICAgICAgICAgLy92YWx1ZSBmb3IgaXRlbXMgdGhhdCBtYXkgbmVlZCB0b1xuICAgICAgICAgICAgLy9sb29rIHVwIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGVOYW1lXG4gICAgICAgICAgICB2YXIgYXJncyA9IGFwcy5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgICAgIC8vSWYgZmlyc3QgYXJnIGlzIG5vdCByZXF1aXJlKCdzdHJpbmcnKSwgYW5kIHRoZXJlIGlzIG9ubHlcbiAgICAgICAgICAgIC8vb25lIGFyZywgaXQgaXMgdGhlIGFycmF5IGZvcm0gd2l0aG91dCBhIGNhbGxiYWNrLiBJbnNlcnRcbiAgICAgICAgICAgIC8vYSBudWxsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBjb25jYXQgaXMgY29ycmVjdC5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSAhPT0gJ3N0cmluZycgJiYgYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxLmFwcGx5KHVuZGVmLCBhcmdzLmNvbmNhdChbcmVsTmFtZSwgZm9yY2VTeW5jXSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VOb3JtYWxpemUocmVsTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUobmFtZSwgcmVsTmFtZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUxvYWQoZGVwTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBkZWZpbmVkW2RlcE5hbWVdID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsbERlcChuYW1lKSB7XG4gICAgICAgIGlmIChoYXNQcm9wKHdhaXRpbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IHdhaXRpbmdbbmFtZV07XG4gICAgICAgICAgICBkZWxldGUgd2FpdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIGRlZmluaW5nW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgIG1haW4uYXBwbHkodW5kZWYsIGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIG5hbWUpICYmICFoYXNQcm9wKGRlZmluaW5nLCBuYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAnICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmluZWRbbmFtZV07XG4gICAgfVxuXG4gICAgLy9UdXJucyBhIHBsdWdpbiFyZXNvdXJjZSB0byBbcGx1Z2luLCByZXNvdXJjZV1cbiAgICAvL3dpdGggdGhlIHBsdWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhlIG5hbWVcbiAgICAvL2RpZCBub3QgaGF2ZSBhIHBsdWdpbiBwcmVmaXguXG4gICAgZnVuY3Rpb24gc3BsaXRQcmVmaXgobmFtZSkge1xuICAgICAgICB2YXIgcHJlZml4LFxuICAgICAgICAgICAgaW5kZXggPSBuYW1lID8gbmFtZS5pbmRleE9mKCchJykgOiAtMTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZyhpbmRleCArIDEsIG5hbWUubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3ByZWZpeCwgbmFtZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuYW1lIG1hcCwgbm9ybWFsaXppbmcgdGhlIG5hbWUsIGFuZCB1c2luZyBhIHBsdWdpblxuICAgICAqIGZvciBub3JtYWxpemF0aW9uIGlmIG5lY2Vzc2FyeS4gR3JhYnMgYSByZWYgdG8gcGx1Z2luXG4gICAgICogdG9vLCBhcyBhbiBvcHRpbWl6YXRpb24uXG4gICAgICovXG4gICAgbWFrZU1hcCA9IGZ1bmN0aW9uIChuYW1lLCByZWxOYW1lKSB7XG4gICAgICAgIHZhciBwbHVnaW4sXG4gICAgICAgICAgICBwYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpLFxuICAgICAgICAgICAgcHJlZml4ID0gcGFydHNbMF07XG5cbiAgICAgICAgbmFtZSA9IHBhcnRzWzFdO1xuXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHJlbE5hbWUpO1xuICAgICAgICAgICAgcGx1Z2luID0gY2FsbERlcChwcmVmaXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9Ob3JtYWxpemUgYWNjb3JkaW5nXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIGlmIChwbHVnaW4gJiYgcGx1Z2luLm5vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIG1ha2VOb3JtYWxpemUocmVsTmFtZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZShuYW1lLCByZWxOYW1lKTtcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7XG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTtcbiAgICAgICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1VzaW5nIHJpZGljdWxvdXMgcHJvcGVydHkgbmFtZXMgZm9yIHNwYWNlIHJlYXNvbnNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lXG4gICAgICAgICAgICBuOiBuYW1lLFxuICAgICAgICAgICAgcHI6IHByZWZpeCxcbiAgICAgICAgICAgIHA6IHBsdWdpblxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlQ29uZmlnKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaGFuZGxlcnMgPSB7XG4gICAgICAgIHJlcXVpcmU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydHM6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFtuYW1lXSA9IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICAgICAgICB1cmk6ICcnLFxuICAgICAgICAgICAgICAgIGV4cG9ydHM6IGRlZmluZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1haW4gPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpIHtcbiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksXG4gICAgICAgICAgICBhcmdzID0gW10sXG4gICAgICAgICAgICBjYWxsYmFja1R5cGUgPSB0eXBlb2YgY2FsbGJhY2ssXG4gICAgICAgICAgICB1c2luZ0V4cG9ydHM7XG5cbiAgICAgICAgLy9Vc2UgbmFtZSBpZiBubyByZWxOYW1lXG4gICAgICAgIHJlbE5hbWUgPSByZWxOYW1lIHx8IG5hbWU7XG5cbiAgICAgICAgLy9DYWxsIHRoZSBjYWxsYmFjayB0byBkZWZpbmUgdGhlIG1vZHVsZSwgaWYgbmVjZXNzYXJ5LlxuICAgICAgICBpZiAoY2FsbGJhY2tUeXBlID09PSAndW5kZWZpbmVkJyB8fCBjYWxsYmFja1R5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vUHVsbCBvdXQgdGhlIGRlZmluZWQgZGVwZW5kZW5jaWVzIGFuZCBwYXNzIHRoZSBvcmRlcmVkXG4gICAgICAgICAgICAvL3ZhbHVlcyB0byB0aGUgY2FsbGJhY2suXG4gICAgICAgICAgICAvL0RlZmF1bHQgdG8gW3JlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZV0gaWYgbm8gZGVwc1xuICAgICAgICAgICAgZGVwcyA9ICFkZXBzLmxlbmd0aCAmJiBjYWxsYmFjay5sZW5ndGggPyBbJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnXSA6IGRlcHM7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNYXAoZGVwc1tpXSwgcmVsTmFtZSk7XG4gICAgICAgICAgICAgICAgZGVwTmFtZSA9IG1hcC5mO1xuXG4gICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuICAgICAgICAgICAgICAgIGlmIChkZXBOYW1lID09PSBcInJlcXVpcmVcIikge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gaGFuZGxlcnMucmVxdWlyZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09IFwiZXhwb3J0c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQ29tbW9uSlMgbW9kdWxlIHNwZWMgMS4xXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1c2luZ0V4cG9ydHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVwTmFtZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMVxuICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzUHJvcChkZWZpbmVkLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcCh3YWl0aW5nLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGNhbGxEZXAoZGVwTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXAucCkge1xuICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGRlZmluZWRbZGVwTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgPyBjYWxsYmFjay5hcHBseShkZWZpbmVkW25hbWVdLCBhcmdzKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAvL0lmIHNldHRpbmcgZXhwb3J0cyB2aWEgXCJtb2R1bGVcIiBpcyBpbiBwbGF5LFxuICAgICAgICAgICAgICAgIC8vZmF2b3IgdGhhdCBvdmVyIHJldHVybiB2YWx1ZSBhbmQgZXhwb3J0cy4gQWZ0ZXIgdGhhdCxcbiAgICAgICAgICAgICAgICAvL2Zhdm9yIGEgbm9uLXVuZGVmaW5lZCByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzIHVzZS5cbiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlLmV4cG9ydHMgIT09IGRlZmluZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNqc01vZHVsZS5leHBvcnRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHlcbiAgICAgICAgICAgIC8vd29ycnkgYWJvdXQgZGVmaW5pbmcgaWYgaGF2ZSBhIG1vZHVsZSBuYW1lLlxuICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXJzW2RlcHNdKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpbiB0aGlzIGNhc2UgaXMgcmVhbGx5IHJlbE5hbWVcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9KdXN0IHJldHVybiB0aGUgbW9kdWxlIHdhbnRlZC4gSW4gdGhpcyBzY2VuYXJpbywgdGhlXG4gICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZClcbiAgICAgICAgICAgIC8vaXMganVzdCB0aGUgcmVsTmFtZS5cbiAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uXG4gICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIGNhbGxiYWNrKS5mKTtcbiAgICAgICAgfSBlbHNlIGlmICghZGVwcy5zcGxpY2UpIHtcbiAgICAgICAgICAgIC8vZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QsIG5vdCBhbiBhcnJheS5cbiAgICAgICAgICAgIGNvbmZpZyA9IGRlcHM7XG4gICAgICAgICAgICBpZiAoY29uZmlnLmRlcHMpIHtcbiAgICAgICAgICAgICAgICByZXEoY29uZmlnLmRlcHMsIGNvbmZpZy5jYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2suc3BsaWNlKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpcyBhbiBhcnJheSwgd2hpY2ggbWVhbnMgaXQgaXMgYSBkZXBlbmRlbmN5IGxpc3QuXG4gICAgICAgICAgICAgICAgLy9BZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgICAgZGVwcyA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gcmVsTmFtZTtcbiAgICAgICAgICAgICAgICByZWxOYW1lID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVwcyA9IHVuZGVmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9TdXBwb3J0IHJlcXVpcmUoWydhJ10pXG4gICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgICAgICAgLy9JZiByZWxOYW1lIGlzIGEgZnVuY3Rpb24sIGl0IGlzIGFuIGVycmJhY2sgaGFuZGxlcixcbiAgICAgICAgLy9zbyByZW1vdmUgaXQuXG4gICAgICAgIGlmICh0eXBlb2YgcmVsTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmVsTmFtZSA9IGZvcmNlU3luYztcbiAgICAgICAgICAgIGZvcmNlU3luYyA9IGFsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vU2ltdWxhdGUgYXN5bmMgY2FsbGJhY2s7XG4gICAgICAgIGlmIChmb3JjZVN5bmMpIHtcbiAgICAgICAgICAgIG1haW4odW5kZWYsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vVXNpbmcgYSBub24temVybyB2YWx1ZSBiZWNhdXNlIG9mIGNvbmNlcm4gZm9yIHdoYXQgb2xkIGJyb3dzZXJzXG4gICAgICAgICAgICAvL2RvLCBhbmQgbGF0ZXN0IGJyb3dzZXJzIFwidXBncmFkZVwiIHRvIDQgaWYgbG93ZXIgdmFsdWUgaXMgdXNlZDpcbiAgICAgICAgICAgIC8vaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGltZXJzLmh0bWwjZG9tLXdpbmRvd3RpbWVycy1zZXR0aW1lb3V0OlxuICAgICAgICAgICAgLy9JZiB3YW50IGEgdmFsdWUgaW1tZWRpYXRlbHksIHVzZSByZXF1aXJlKCdpZCcpIGluc3RlYWQgLS0gc29tZXRoaW5nXG4gICAgICAgICAgICAvL3RoYXQgd29ya3MgaW4gYWxtb25kIG9uIHRoZSBnbG9iYWwgbGV2ZWwsIGJ1dCBub3QgZ3VhcmFudGVlZCBhbmRcbiAgICAgICAgICAgIC8vdW5saWtlbHkgdG8gd29yayBpbiBvdGhlciBBTUQgaW1wbGVtZW50YXRpb25zLlxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpO1xuICAgICAgICAgICAgfSwgNCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVxO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBKdXN0IGRyb3BzIHRoZSBjb25maWcgb24gdGhlIGZsb29yLCBidXQgcmV0dXJucyByZXEgaW4gY2FzZVxuICAgICAqIHRoZSBjb25maWcgcmV0dXJuIHZhbHVlIGlzIHVzZWQuXG4gICAgICovXG4gICAgcmVxLmNvbmZpZyA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICAgICAgcmV0dXJuIHJlcShjZmcpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBFeHBvc2UgbW9kdWxlIHJlZ2lzdHJ5IGZvciBkZWJ1Z2dpbmcgYW5kIHRvb2xpbmdcbiAgICAgKi9cbiAgICByZXF1aXJlanMuX2RlZmluZWQgPSBkZWZpbmVkO1xuXG4gICAgZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2VlIGFsbW9uZCBSRUFETUU6IGluY29ycmVjdCBtb2R1bGUgYnVpbGQsIG5vIG1vZHVsZSBuYW1lJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgaWYgKCFkZXBzLnNwbGljZSkge1xuICAgICAgICAgICAgLy9kZXBzIGlzIG5vdCBhbiBhcnJheSwgc28gcHJvYmFibHkgbWVhbnNcbiAgICAgICAgICAgIC8vYW4gb2JqZWN0IGxpdGVyYWwgb3IgZmFjdG9yeSBmdW5jdGlvbiBmb3JcbiAgICAgICAgICAgIC8vdGhlIHZhbHVlLiBBZGp1c3QgYXJncy5cbiAgICAgICAgICAgIGNhbGxiYWNrID0gZGVwcztcbiAgICAgICAgICAgIGRlcHMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcCh3YWl0aW5nLCBuYW1lKSkge1xuICAgICAgICAgICAgd2FpdGluZ1tuYW1lXSA9IFtuYW1lLCBkZXBzLCBjYWxsYmFja107XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZGVmaW5lLmFtZCA9IHtcbiAgICAgICAgalF1ZXJ5OiB0cnVlXG4gICAgfTtcbn0oKSk7XG5cblMyLnJlcXVpcmVqcyA9IHJlcXVpcmVqcztTMi5yZXF1aXJlID0gcmVxdWlyZTtTMi5kZWZpbmUgPSBkZWZpbmU7XG59XG59KCkpO1xuUzIuZGVmaW5lKFwiYWxtb25kXCIsIGZ1bmN0aW9uKCl7fSk7XG5cbi8qIGdsb2JhbCBqUXVlcnk6ZmFsc2UsICQ6ZmFsc2UgKi9cclxuUzIuZGVmaW5lKCdqcXVlcnknLFtdLGZ1bmN0aW9uICgpIHtcclxuICB2YXIgXyQgPSBqUXVlcnkgfHwgJDtcclxuXHJcbiAgaWYgKF8kID09IG51bGwgJiYgY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAnU2VsZWN0MjogQW4gaW5zdGFuY2Ugb2YgalF1ZXJ5IG9yIGEgalF1ZXJ5LWNvbXBhdGlibGUgbGlicmFyeSB3YXMgbm90ICcgK1xyXG4gICAgICAnZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyICcgK1xyXG4gICAgICAnd2ViIHBhZ2UuJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBfJDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3V0aWxzJyxbXHJcbiAgJ2pxdWVyeSdcclxuXSwgZnVuY3Rpb24gKCQpIHtcclxuICB2YXIgVXRpbHMgPSB7fTtcclxuXHJcbiAgVXRpbHMuRXh0ZW5kID0gZnVuY3Rpb24gKENoaWxkQ2xhc3MsIFN1cGVyQ2xhc3MpIHtcclxuICAgIHZhciBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcclxuXHJcbiAgICBmdW5jdGlvbiBCYXNlQ29uc3RydWN0b3IgKCkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gQ2hpbGRDbGFzcztcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBrZXkgaW4gU3VwZXJDbGFzcykge1xyXG4gICAgICBpZiAoX19oYXNQcm9wLmNhbGwoU3VwZXJDbGFzcywga2V5KSkge1xyXG4gICAgICAgIENoaWxkQ2xhc3Nba2V5XSA9IFN1cGVyQ2xhc3Nba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEJhc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcclxuICAgIENoaWxkQ2xhc3MucHJvdG90eXBlID0gbmV3IEJhc2VDb25zdHJ1Y3RvcigpO1xyXG4gICAgQ2hpbGRDbGFzcy5fX3N1cGVyX18gPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcclxuXHJcbiAgICByZXR1cm4gQ2hpbGRDbGFzcztcclxuICB9O1xyXG5cclxuICBmdW5jdGlvbiBnZXRNZXRob2RzICh0aGVDbGFzcykge1xyXG4gICAgdmFyIHByb3RvID0gdGhlQ2xhc3MucHJvdG90eXBlO1xyXG5cclxuICAgIHZhciBtZXRob2RzID0gW107XHJcblxyXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBwcm90bykge1xyXG4gICAgICB2YXIgbSA9IHByb3RvW21ldGhvZE5hbWVdO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBtICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtZXRob2ROYW1lID09PSAnY29uc3RydWN0b3InKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1ldGhvZHMucHVzaChtZXRob2ROYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWV0aG9kcztcclxuICB9XHJcblxyXG4gIFV0aWxzLkRlY29yYXRlID0gZnVuY3Rpb24gKFN1cGVyQ2xhc3MsIERlY29yYXRvckNsYXNzKSB7XHJcbiAgICB2YXIgZGVjb3JhdGVkTWV0aG9kcyA9IGdldE1ldGhvZHMoRGVjb3JhdG9yQ2xhc3MpO1xyXG4gICAgdmFyIHN1cGVyTWV0aG9kcyA9IGdldE1ldGhvZHMoU3VwZXJDbGFzcyk7XHJcblxyXG4gICAgZnVuY3Rpb24gRGVjb3JhdGVkQ2xhc3MgKCkge1xyXG4gICAgICB2YXIgdW5zaGlmdCA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0O1xyXG5cclxuICAgICAgdmFyIGFyZ0NvdW50ID0gRGVjb3JhdG9yQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yLmxlbmd0aDtcclxuXHJcbiAgICAgIHZhciBjYWxsZWRDb25zdHJ1Y3RvciA9IFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xyXG5cclxuICAgICAgaWYgKGFyZ0NvdW50ID4gMCkge1xyXG4gICAgICAgIHVuc2hpZnQuY2FsbChhcmd1bWVudHMsIFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtcclxuXHJcbiAgICAgICAgY2FsbGVkQ29uc3RydWN0b3IgPSBEZWNvcmF0b3JDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhbGxlZENvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgRGVjb3JhdG9yQ2xhc3MuZGlzcGxheU5hbWUgPSBTdXBlckNsYXNzLmRpc3BsYXlOYW1lO1xyXG5cclxuICAgIGZ1bmN0aW9uIGN0ciAoKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBEZWNvcmF0ZWRDbGFzcztcclxuICAgIH1cclxuXHJcbiAgICBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGUgPSBuZXcgY3RyKCk7XHJcblxyXG4gICAgZm9yICh2YXIgbSA9IDA7IG0gPCBzdXBlck1ldGhvZHMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICB2YXIgc3VwZXJNZXRob2QgPSBzdXBlck1ldGhvZHNbbV07XHJcblxyXG4gICAgICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF0gPVxyXG4gICAgICAgICAgU3VwZXJDbGFzcy5wcm90b3R5cGVbc3VwZXJNZXRob2RdO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjYWxsZWRNZXRob2QgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSkge1xyXG4gICAgICAvLyBTdHViIG91dCB0aGUgb3JpZ2luYWwgbWV0aG9kIGlmIGl0J3Mgbm90IGRlY29yYXRpbmcgYW4gYWN0dWFsIG1ldGhvZFxyXG4gICAgICB2YXIgb3JpZ2luYWxNZXRob2QgPSBmdW5jdGlvbiAoKSB7fTtcclxuXHJcbiAgICAgIGlmIChtZXRob2ROYW1lIGluIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSkge1xyXG4gICAgICAgIG9yaWdpbmFsTWV0aG9kID0gRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW21ldGhvZE5hbWVdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgZGVjb3JhdGVkTWV0aG9kID0gRGVjb3JhdG9yQ2xhc3MucHJvdG90eXBlW21ldGhvZE5hbWVdO1xyXG5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdW5zaGlmdCA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0O1xyXG5cclxuICAgICAgICB1bnNoaWZ0LmNhbGwoYXJndW1lbnRzLCBvcmlnaW5hbE1ldGhvZCk7XHJcblxyXG4gICAgICAgIHJldHVybiBkZWNvcmF0ZWRNZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkZWNvcmF0ZWRNZXRob2RzLmxlbmd0aDsgZCsrKSB7XHJcbiAgICAgIHZhciBkZWNvcmF0ZWRNZXRob2QgPSBkZWNvcmF0ZWRNZXRob2RzW2RdO1xyXG5cclxuICAgICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW2RlY29yYXRlZE1ldGhvZF0gPSBjYWxsZWRNZXRob2QoZGVjb3JhdGVkTWV0aG9kKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gRGVjb3JhdGVkQ2xhc3M7XHJcbiAgfTtcclxuXHJcbiAgdmFyIE9ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLmxpc3RlbmVycyA9IHt9O1xyXG4gIH07XHJcblxyXG4gIE9ic2VydmFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2ZW50LCBjYWxsYmFjaykge1xyXG4gICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycyB8fCB7fTtcclxuXHJcbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcclxuICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnRdLnB1c2goY2FsbGJhY2spO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnRdID0gW2NhbGxiYWNrXTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XHJcbiAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xyXG5cclxuICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge307XHJcblxyXG4gICAgLy8gUGFyYW1zIHNob3VsZCBhbHdheXMgY29tZSBpbiBhcyBhbiBhcnJheVxyXG4gICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7XHJcbiAgICAgIHBhcmFtcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBhcmd1bWVudHMgdG8gdGhlIGV2ZW50LCB1c2UgYSB0ZW1wb3Jhcnkgb2JqZWN0XHJcbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBwYXJhbXMucHVzaCh7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRoZSBgX3R5cGVgIG9mIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIGV2ZW50XHJcbiAgICBwYXJhbXNbMF0uX3R5cGUgPSBldmVudDtcclxuXHJcbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcclxuICAgICAgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbZXZlbnRdLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgnKicgaW4gdGhpcy5saXN0ZW5lcnMpIHtcclxuICAgICAgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbJyonXSwgYXJndW1lbnRzKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAobGlzdGVuZXJzLCBwYXJhbXMpIHtcclxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgVXRpbHMuT2JzZXJ2YWJsZSA9IE9ic2VydmFibGU7XHJcblxyXG4gIFV0aWxzLmdlbmVyYXRlQ2hhcnMgPSBmdW5jdGlvbiAobGVuZ3RoKSB7XHJcbiAgICB2YXIgY2hhcnMgPSAnJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciByYW5kb21DaGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYpO1xyXG4gICAgICBjaGFycyArPSByYW5kb21DaGFyLnRvU3RyaW5nKDM2KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2hhcnM7XHJcbiAgfTtcclxuXHJcbiAgVXRpbHMuYmluZCA9IGZ1bmN0aW9uIChmdW5jLCBjb250ZXh0KSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIFV0aWxzLl9jb252ZXJ0RGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICBmb3IgKHZhciBvcmlnaW5hbEtleSBpbiBkYXRhKSB7XHJcbiAgICAgIHZhciBrZXlzID0gb3JpZ2luYWxLZXkuc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgIHZhciBkYXRhTGV2ZWwgPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwga2V5cy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2tdO1xyXG5cclxuICAgICAgICAvLyBMb3dlcmNhc2UgdGhlIGZpcnN0IGxldHRlclxyXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGRhc2gtc2VwYXJhdGVkIGJlY29tZXMgY2FtZWxDYXNlXHJcbiAgICAgICAga2V5ID0ga2V5LnN1YnN0cmluZygwLCAxKS50b0xvd2VyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcclxuXHJcbiAgICAgICAgaWYgKCEoa2V5IGluIGRhdGFMZXZlbCkpIHtcclxuICAgICAgICAgIGRhdGFMZXZlbFtrZXldID0ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoayA9PSBrZXlzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIGRhdGFMZXZlbFtrZXldID0gZGF0YVtvcmlnaW5hbEtleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhTGV2ZWwgPSBkYXRhTGV2ZWxba2V5XTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIGRhdGFbb3JpZ2luYWxLZXldO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH07XHJcblxyXG4gIFV0aWxzLmhhc1Njcm9sbCA9IGZ1bmN0aW9uIChpbmRleCwgZWwpIHtcclxuICAgIC8vIEFkYXB0ZWQgZnJvbSB0aGUgZnVuY3Rpb24gY3JlYXRlZCBieSBAU2hhZG93U2NyaXB0ZXJcclxuICAgIC8vIGFuZCBhZGFwdGVkIGJ5IEBCaWxsQmFycnkgb24gdGhlIFN0YWNrIEV4Y2hhbmdlIENvZGUgUmV2aWV3IHdlYnNpdGUuXHJcbiAgICAvLyBUaGUgb3JpZ2luYWwgY29kZSBjYW4gYmUgZm91bmQgYXRcclxuICAgIC8vIGh0dHA6Ly9jb2RlcmV2aWV3LnN0YWNrZXhjaGFuZ2UuY29tL3EvMTMzMzhcclxuICAgIC8vIGFuZCB3YXMgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBTaXp6bGUgc2VsZWN0b3IgZW5naW5lLlxyXG5cclxuICAgIHZhciAkZWwgPSAkKGVsKTtcclxuICAgIHZhciBvdmVyZmxvd1ggPSBlbC5zdHlsZS5vdmVyZmxvd1g7XHJcbiAgICB2YXIgb3ZlcmZsb3dZID0gZWwuc3R5bGUub3ZlcmZsb3dZO1xyXG5cclxuICAgIC8vQ2hlY2sgYm90aCB4IGFuZCB5IGRlY2xhcmF0aW9uc1xyXG4gICAgaWYgKG92ZXJmbG93WCA9PT0gb3ZlcmZsb3dZICYmXHJcbiAgICAgICAgKG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgb3ZlcmZsb3dZID09PSAndmlzaWJsZScpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3ZlcmZsb3dYID09PSAnc2Nyb2xsJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoJGVsLmlubmVySGVpZ2h0KCkgPCBlbC5zY3JvbGxIZWlnaHQgfHxcclxuICAgICAgJGVsLmlubmVyV2lkdGgoKSA8IGVsLnNjcm9sbFdpZHRoKTtcclxuICB9O1xyXG5cclxuICBVdGlscy5lc2NhcGVNYXJrdXAgPSBmdW5jdGlvbiAobWFya3VwKSB7XHJcbiAgICB2YXIgcmVwbGFjZU1hcCA9IHtcclxuICAgICAgJ1xcXFwnOiAnJiM5MjsnLFxyXG4gICAgICAnJic6ICcmYW1wOycsXHJcbiAgICAgICc8JzogJyZsdDsnLFxyXG4gICAgICAnPic6ICcmZ3Q7JyxcclxuICAgICAgJ1wiJzogJyZxdW90OycsXHJcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxyXG4gICAgICAnLyc6ICcmIzQ3OydcclxuICAgIH07XHJcblxyXG4gICAgLy8gRG8gbm90IHRyeSB0byBlc2NhcGUgdGhlIG1hcmt1cCBpZiBpdCdzIG5vdCBhIHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBtYXJrdXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFN0cmluZyhtYXJrdXApLnJlcGxhY2UoL1smPD5cIidcXC9cXFxcXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcclxuICAgICAgcmV0dXJuIHJlcGxhY2VNYXBbbWF0Y2hdO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgLy8gQXBwZW5kIGFuIGFycmF5IG9mIGpRdWVyeSBub2RlcyB0byBhIGdpdmVuIGVsZW1lbnQuXHJcbiAgVXRpbHMuYXBwZW5kTWFueSA9IGZ1bmN0aW9uICgkZWxlbWVudCwgJG5vZGVzKSB7XHJcbiAgICAvLyBqUXVlcnkgMS43LnggZG9lcyBub3Qgc3VwcG9ydCAkLmZuLmFwcGVuZCgpIHdpdGggYW4gYXJyYXlcclxuICAgIC8vIEZhbGwgYmFjayB0byBhIGpRdWVyeSBvYmplY3QgY29sbGVjdGlvbiB1c2luZyAkLmZuLmFkZCgpXHJcbiAgICBpZiAoJC5mbi5qcXVlcnkuc3Vic3RyKDAsIDMpID09PSAnMS43Jykge1xyXG4gICAgICB2YXIgJGpxTm9kZXMgPSAkKCk7XHJcblxyXG4gICAgICAkLm1hcCgkbm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XHJcbiAgICAgICAgJGpxTm9kZXMgPSAkanFOb2Rlcy5hZGQobm9kZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgJG5vZGVzID0gJGpxTm9kZXM7XHJcbiAgICB9XHJcblxyXG4gICAgJGVsZW1lbnQuYXBwZW5kKCRub2Rlcyk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIFV0aWxzO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvcmVzdWx0cycsW1xyXG4gICdqcXVlcnknLFxyXG4gICcuL3V0aWxzJ1xyXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMpIHtcclxuICBmdW5jdGlvbiBSZXN1bHRzICgkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcclxuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGFBZGFwdGVyO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICBSZXN1bHRzLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgVXRpbHMuRXh0ZW5kKFJlc3VsdHMsIFV0aWxzLk9ic2VydmFibGUpO1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgJHJlc3VsdHMgPSAkKFxyXG4gICAgICAnPHVsIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zXCIgcm9sZT1cInRyZWVcIj48L3VsPidcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ211bHRpcGxlJykpIHtcclxuICAgICAgJHJlc3VsdHMuYXR0cignYXJpYS1tdWx0aXNlbGVjdGFibGUnLCAndHJ1ZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuJHJlc3VsdHMgPSAkcmVzdWx0cztcclxuXHJcbiAgICByZXR1cm4gJHJlc3VsdHM7XHJcbiAgfTtcclxuXHJcbiAgUmVzdWx0cy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCk7XHJcbiAgfTtcclxuXHJcbiAgUmVzdWx0cy5wcm90b3R5cGUuZGlzcGxheU1lc3NhZ2UgPSBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XHJcblxyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gICAgdGhpcy5oaWRlTG9hZGluZygpO1xyXG5cclxuICAgIHZhciAkbWVzc2FnZSA9ICQoXHJcbiAgICAgICc8bGkgcm9sZT1cInRyZWVpdGVtXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCInICtcclxuICAgICAgJyBjbGFzcz1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uXCI+PC9saT4nXHJcbiAgICApO1xyXG5cclxuICAgIHZhciBtZXNzYWdlID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KHBhcmFtcy5tZXNzYWdlKTtcclxuXHJcbiAgICAkbWVzc2FnZS5hcHBlbmQoXHJcbiAgICAgIGVzY2FwZU1hcmt1cChcclxuICAgICAgICBtZXNzYWdlKHBhcmFtcy5hcmdzKVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgICRtZXNzYWdlWzBdLmNsYXNzTmFtZSArPSAnIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZSc7XHJcblxyXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG1lc3NhZ2UpO1xyXG4gIH07XHJcblxyXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVNZXNzYWdlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fbWVzc2FnZScpLnJlbW92ZSgpO1xyXG4gIH07XHJcblxyXG4gIFJlc3VsdHMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XHJcblxyXG4gICAgdmFyICRvcHRpb25zID0gW107XHJcblxyXG4gICAgaWYgKGRhdGEucmVzdWx0cyA9PSBudWxsIHx8IGRhdGEucmVzdWx0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgaWYgKHRoaXMuJHJlc3VsdHMuY2hpbGRyZW4oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcclxuICAgICAgICAgIG1lc3NhZ2U6ICdub1Jlc3VsdHMnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBkYXRhLnJlc3VsdHMgPSB0aGlzLnNvcnQoZGF0YS5yZXN1bHRzKTtcclxuXHJcbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEucmVzdWx0cy5sZW5ndGg7IGQrKykge1xyXG4gICAgICB2YXIgaXRlbSA9IGRhdGEucmVzdWx0c1tkXTtcclxuXHJcbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XHJcblxyXG4gICAgICAkb3B0aW9ucy5wdXNoKCRvcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKCRvcHRpb25zKTtcclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uICgkcmVzdWx0cywgJGRyb3Bkb3duKSB7XHJcbiAgICB2YXIgJHJlc3VsdHNDb250YWluZXIgPSAkZHJvcGRvd24uZmluZCgnLnNlbGVjdDItcmVzdWx0cycpO1xyXG4gICAgJHJlc3VsdHNDb250YWluZXIuYXBwZW5kKCRyZXN1bHRzKTtcclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBzb3J0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdzb3J0ZXInKTtcclxuXHJcbiAgICByZXR1cm4gc29ydGVyKGRhdGEpO1xyXG4gIH07XHJcblxyXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZ2hsaWdodEZpcnN0SXRlbSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHNcclxuICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXScpO1xyXG5cclxuICAgIHZhciAkc2VsZWN0ZWQgPSAkb3B0aW9ucy5maWx0ZXIoJ1thcmlhLXNlbGVjdGVkPXRydWVdJyk7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZWxlY3RlZCBvcHRpb25zXHJcbiAgICBpZiAoJHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdGVkIG9wdGlvbnMsIGhpZ2hsaWdodCB0aGUgZmlyc3RcclxuICAgICAgJHNlbGVjdGVkLmZpcnN0KCkudHJpZ2dlcignbW91c2VlbnRlcicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIG9wdGlvbnMsIGhpZ2hsaWdodCB0aGUgZmlyc3Qgb3B0aW9uXHJcbiAgICAgIC8vIGluIHRoZSBkcm9wZG93blxyXG4gICAgICAkb3B0aW9ucy5maXJzdCgpLnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKTtcclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5zZXRDbGFzc2VzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHRoaXMuZGF0YS5jdXJyZW50KGZ1bmN0aW9uIChzZWxlY3RlZCkge1xyXG4gICAgICB2YXIgc2VsZWN0ZWRJZHMgPSAkLm1hcChzZWxlY3RlZCwgZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICByZXR1cm4gcy5pZC50b1N0cmluZygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHNcclxuICAgICAgICAuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdJyk7XHJcblxyXG4gICAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgJG9wdGlvbiA9ICQodGhpcyk7XHJcblxyXG4gICAgICAgIHZhciBpdGVtID0gJC5kYXRhKHRoaXMsICdkYXRhJyk7XHJcblxyXG4gICAgICAgIC8vIGlkIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aGVuIGNvbXBhcmluZ1xyXG4gICAgICAgIHZhciBpZCA9ICcnICsgaXRlbS5pZDtcclxuXHJcbiAgICAgICAgaWYgKChpdGVtLmVsZW1lbnQgIT0gbnVsbCAmJiBpdGVtLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XHJcbiAgICAgICAgICAgIChpdGVtLmVsZW1lbnQgPT0gbnVsbCAmJiAkLmluQXJyYXkoaWQsIHNlbGVjdGVkSWRzKSA+IC0xKSkge1xyXG4gICAgICAgICAgJG9wdGlvbi5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgJG9wdGlvbi5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5zaG93TG9hZGluZyA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcclxuXHJcbiAgICB2YXIgbG9hZGluZ01vcmUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaGluZycpO1xyXG5cclxuICAgIHZhciBsb2FkaW5nID0ge1xyXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgdGV4dDogbG9hZGluZ01vcmUocGFyYW1zKVxyXG4gICAgfTtcclxuICAgIHZhciAkbG9hZGluZyA9IHRoaXMub3B0aW9uKGxvYWRpbmcpO1xyXG4gICAgJGxvYWRpbmcuY2xhc3NOYW1lICs9ICcgbG9hZGluZy1yZXN1bHRzJztcclxuXHJcbiAgICB0aGlzLiRyZXN1bHRzLnByZXBlbmQoJGxvYWRpbmcpO1xyXG4gIH07XHJcblxyXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVMb2FkaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy4kcmVzdWx0cy5maW5kKCcubG9hZGluZy1yZXN1bHRzJykucmVtb3ZlKCk7XHJcbiAgfTtcclxuXHJcbiAgUmVzdWx0cy5wcm90b3R5cGUub3B0aW9uID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xyXG4gICAgb3B0aW9uLmNsYXNzTmFtZSA9ICdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbic7XHJcblxyXG4gICAgdmFyIGF0dHJzID0ge1xyXG4gICAgICAncm9sZSc6ICd0cmVlaXRlbScsXHJcbiAgICAgICdhcmlhLXNlbGVjdGVkJzogJ2ZhbHNlJ1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZGF0YS5kaXNhYmxlZCkge1xyXG4gICAgICBkZWxldGUgYXR0cnNbJ2FyaWEtc2VsZWN0ZWQnXTtcclxuICAgICAgYXR0cnNbJ2FyaWEtZGlzYWJsZWQnXSA9ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YS5pZCA9PSBudWxsKSB7XHJcbiAgICAgIGRlbGV0ZSBhdHRyc1snYXJpYS1zZWxlY3RlZCddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLl9yZXN1bHRJZCAhPSBudWxsKSB7XHJcbiAgICAgIG9wdGlvbi5pZCA9IGRhdGEuX3Jlc3VsdElkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLnRpdGxlKSB7XHJcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcclxuICAgICAgYXR0cnMucm9sZSA9ICdncm91cCc7XHJcbiAgICAgIGF0dHJzWydhcmlhLWxhYmVsJ10gPSBkYXRhLnRleHQ7XHJcbiAgICAgIGRlbGV0ZSBhdHRyc1snYXJpYS1zZWxlY3RlZCddO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGF0dHIgaW4gYXR0cnMpIHtcclxuICAgICAgdmFyIHZhbCA9IGF0dHJzW2F0dHJdO1xyXG5cclxuICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZShhdHRyLCB2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XHJcbiAgICAgIHZhciAkb3B0aW9uID0gJChvcHRpb24pO1xyXG5cclxuICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyk7XHJcbiAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdzZWxlY3QyLXJlc3VsdHNfX2dyb3VwJztcclxuXHJcbiAgICAgIHZhciAkbGFiZWwgPSAkKGxhYmVsKTtcclxuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBsYWJlbCk7XHJcblxyXG4gICAgICB2YXIgJGNoaWxkcmVuID0gW107XHJcblxyXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGRhdGEuY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICB2YXIgY2hpbGQgPSBkYXRhLmNoaWxkcmVuW2NdO1xyXG5cclxuICAgICAgICB2YXIgJGNoaWxkID0gdGhpcy5vcHRpb24oY2hpbGQpO1xyXG5cclxuICAgICAgICAkY2hpbGRyZW4ucHVzaCgkY2hpbGQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgJGNoaWxkcmVuQ29udGFpbmVyID0gJCgnPHVsPjwvdWw+Jywge1xyXG4gICAgICAgICdjbGFzcyc6ICdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMgc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zLS1uZXN0ZWQnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgJGNoaWxkcmVuQ29udGFpbmVyLmFwcGVuZCgkY2hpbGRyZW4pO1xyXG5cclxuICAgICAgJG9wdGlvbi5hcHBlbmQobGFiZWwpO1xyXG4gICAgICAkb3B0aW9uLmFwcGVuZCgkY2hpbGRyZW5Db250YWluZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBvcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgICQuZGF0YShvcHRpb24sICdkYXRhJywgZGF0YSk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XHJcblxyXG4gICAgdGhpcy4kcmVzdWx0cy5hdHRyKCdpZCcsIGlkKTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YWxsJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBzZWxmLmNsZWFyKCk7XHJcbiAgICAgIHNlbGYuYXBwZW5kKHBhcmFtcy5kYXRhKTtcclxuXHJcbiAgICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcclxuICAgICAgICBzZWxmLnNldENsYXNzZXMoKTtcclxuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBzZWxmLmFwcGVuZChwYXJhbXMuZGF0YSk7XHJcblxyXG4gICAgICBpZiAoY29udGFpbmVyLmlzT3BlbigpKSB7XHJcbiAgICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIHNlbGYuaGlkZU1lc3NhZ2VzKCk7XHJcbiAgICAgIHNlbGYuc2hvd0xvYWRpbmcocGFyYW1zKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XHJcbiAgICAgIHNlbGYuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XHJcbiAgICAgIHNlbGYuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4sIGFyaWEtZXhwZW5kZWQ9XCJ0cnVlXCJcclxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcclxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xyXG5cclxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XHJcbiAgICAgIHNlbGYuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkLCBhcmlhLWV4cGVuZGVkPVwiZmFsc2VcIlxyXG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcclxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XHJcbiAgICAgIHNlbGYuJHJlc3VsdHMucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6dG9nZ2xlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcclxuXHJcbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAkaGlnaGxpZ2h0ZWQudHJpZ2dlcignbW91c2V1cCcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XHJcblxyXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIGRhdGEgPSAkaGlnaGxpZ2h0ZWQuZGF0YSgnZGF0YScpO1xyXG5cclxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5hdHRyKCdhcmlhLXNlbGVjdGVkJykgPT0gJ3RydWUnKSB7XHJcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdjbG9zZScsIHt9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcclxuICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnByZXZpb3VzJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcclxuXHJcbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnW2FyaWEtc2VsZWN0ZWRdJyk7XHJcblxyXG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcclxuXHJcbiAgICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0IHRlIHRvcCwgZG9uJ3QgbW92ZSBmdXJ0aGVyXHJcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IDApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xyXG5cclxuICAgICAgLy8gSWYgbm9uZSBhcmUgaGlnaGxpZ2h0ZWQsIGhpZ2hsaWdodCB0aGUgZmlyc3RcclxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBuZXh0SW5kZXggPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgJG5leHQgPSAkb3B0aW9ucy5lcShuZXh0SW5kZXgpO1xyXG5cclxuICAgICAgJG5leHQudHJpZ2dlcignbW91c2VlbnRlcicpO1xyXG5cclxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcDtcclxuICAgICAgdmFyIG5leHRUb3AgPSAkbmV4dC5vZmZzZXQoKS50b3A7XHJcbiAgICAgIHZhciBuZXh0T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCk7XHJcblxyXG4gICAgICBpZiAobmV4dEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XHJcbiAgICAgIH0gZWxzZSBpZiAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQgPCAwKSB7XHJcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpuZXh0JywgZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcclxuXHJcbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnW2FyaWEtc2VsZWN0ZWRdJyk7XHJcblxyXG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcclxuXHJcbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xyXG5cclxuICAgICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBsYXN0IG9wdGlvbiwgc3RheSB0aGVyZVxyXG4gICAgICBpZiAobmV4dEluZGV4ID49ICRvcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyICRuZXh0ID0gJG9wdGlvbnMuZXEobmV4dEluZGV4KTtcclxuXHJcbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcclxuXHJcbiAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5vZmZzZXQoKS50b3AgK1xyXG4gICAgICAgIHNlbGYuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xyXG4gICAgICB2YXIgbmV4dEJvdHRvbSA9ICRuZXh0Lm9mZnNldCgpLnRvcCArICRuZXh0Lm91dGVySGVpZ2h0KGZhbHNlKTtcclxuICAgICAgdmFyIG5leHRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgbmV4dEJvdHRvbSAtIGN1cnJlbnRPZmZzZXQ7XHJcblxyXG4gICAgICBpZiAobmV4dEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XHJcbiAgICAgIH0gZWxzZSBpZiAobmV4dEJvdHRvbSA+IGN1cnJlbnRPZmZzZXQpIHtcclxuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChuZXh0T2Zmc2V0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBwYXJhbXMuZWxlbWVudC5hZGRDbGFzcygnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bWVzc2FnZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi5kaXNwbGF5TWVzc2FnZShwYXJhbXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCQuZm4ubW91c2V3aGVlbCkge1xyXG4gICAgICB0aGlzLiRyZXN1bHRzLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgdG9wID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKTtcclxuXHJcbiAgICAgICAgdmFyIGJvdHRvbSA9IHNlbGYuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodCAtIHRvcCArIGUuZGVsdGFZO1xyXG5cclxuICAgICAgICB2YXIgaXNBdFRvcCA9IGUuZGVsdGFZID4gMCAmJiB0b3AgLSBlLmRlbHRhWSA8PSAwO1xyXG4gICAgICAgIHZhciBpc0F0Qm90dG9tID0gZS5kZWx0YVkgPCAwICYmIGJvdHRvbSA8PSBzZWxmLiRyZXN1bHRzLmhlaWdodCgpO1xyXG5cclxuICAgICAgICBpZiAoaXNBdFRvcCkge1xyXG4gICAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XHJcblxyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzQXRCb3R0b20pIHtcclxuICAgICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKFxyXG4gICAgICAgICAgICBzZWxmLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSBzZWxmLiRyZXN1bHRzLmhlaWdodCgpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRyZXN1bHRzLm9uKCdtb3VzZXVwJywgJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXScsXHJcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcclxuXHJcbiAgICAgIHZhciBkYXRhID0gJHRoaXMuZGF0YSgnZGF0YScpO1xyXG5cclxuICAgICAgaWYgKCR0aGlzLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ211bHRpcGxlJykpIHtcclxuICAgICAgICAgIHNlbGYudHJpZ2dlcigndW5zZWxlY3QnLCB7XHJcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcclxuICAgICAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnLCB7fSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0Jywge1xyXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kcmVzdWx0cy5vbignbW91c2VlbnRlcicsICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0nLFxyXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIHZhciBkYXRhID0gJCh0aGlzKS5kYXRhKCdkYXRhJyk7XHJcblxyXG4gICAgICBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpXHJcbiAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCcpO1xyXG5cclxuICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmZvY3VzJywge1xyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgZWxlbWVudDogJCh0aGlzKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIFJlc3VsdHMucHJvdG90eXBlLmdldEhpZ2hsaWdodGVkUmVzdWx0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLiRyZXN1bHRzXHJcbiAgICAuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCcpO1xyXG5cclxuICAgIHJldHVybiAkaGlnaGxpZ2h0ZWQ7XHJcbiAgfTtcclxuXHJcbiAgUmVzdWx0cy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuJHJlc3VsdHMucmVtb3ZlKCk7XHJcbiAgfTtcclxuXHJcbiAgUmVzdWx0cy5wcm90b3R5cGUuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xyXG5cclxuICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRyZXN1bHRzLmZpbmQoJ1thcmlhLXNlbGVjdGVkXScpO1xyXG5cclxuICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xyXG5cclxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3A7XHJcbiAgICB2YXIgbmV4dFRvcCA9ICRoaWdobGlnaHRlZC5vZmZzZXQoKS50b3A7XHJcbiAgICB2YXIgbmV4dE9mZnNldCA9IHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQpO1xyXG5cclxuICAgIHZhciBvZmZzZXREZWx0YSA9IG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0O1xyXG4gICAgbmV4dE9mZnNldCAtPSAkaGlnaGxpZ2h0ZWQub3V0ZXJIZWlnaHQoZmFsc2UpICogMjtcclxuXHJcbiAgICBpZiAoY3VycmVudEluZGV4IDw9IDIpIHtcclxuICAgICAgdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XHJcbiAgICB9IGVsc2UgaWYgKG9mZnNldERlbHRhID4gdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCgpIHx8IG9mZnNldERlbHRhIDwgMCkge1xyXG4gICAgICB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcChuZXh0T2Zmc2V0KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBSZXN1bHRzLnByb3RvdHlwZS50ZW1wbGF0ZSA9IGZ1bmN0aW9uIChyZXN1bHQsIGNvbnRhaW5lcikge1xyXG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVSZXN1bHQnKTtcclxuICAgIHZhciBlc2NhcGVNYXJrdXAgPSB0aGlzLm9wdGlvbnMuZ2V0KCdlc2NhcGVNYXJrdXAnKTtcclxuXHJcbiAgICB2YXIgY29udGVudCA9IHRlbXBsYXRlKHJlc3VsdCwgY29udGFpbmVyKTtcclxuXHJcbiAgICBpZiAoY29udGVudCA9PSBudWxsKSB7XHJcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGVzY2FwZU1hcmt1cChjb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICQoY29udGFpbmVyKS5hcHBlbmQoY29udGVudCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIFJlc3VsdHM7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9rZXlzJyxbXHJcblxyXG5dLCBmdW5jdGlvbiAoKSB7XHJcbiAgdmFyIEtFWVMgPSB7XHJcbiAgICBCQUNLU1BBQ0U6IDgsXHJcbiAgICBUQUI6IDksXHJcbiAgICBFTlRFUjogMTMsXHJcbiAgICBTSElGVDogMTYsXHJcbiAgICBDVFJMOiAxNyxcclxuICAgIEFMVDogMTgsXHJcbiAgICBFU0M6IDI3LFxyXG4gICAgU1BBQ0U6IDMyLFxyXG4gICAgUEFHRV9VUDogMzMsXHJcbiAgICBQQUdFX0RPV046IDM0LFxyXG4gICAgRU5EOiAzNSxcclxuICAgIEhPTUU6IDM2LFxyXG4gICAgTEVGVDogMzcsXHJcbiAgICBVUDogMzgsXHJcbiAgICBSSUdIVDogMzksXHJcbiAgICBET1dOOiA0MCxcclxuICAgIERFTEVURTogNDZcclxuICB9O1xyXG5cclxuICByZXR1cm4gS0VZUztcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9iYXNlJyxbXHJcbiAgJ2pxdWVyeScsXHJcbiAgJy4uL3V0aWxzJyxcclxuICAnLi4va2V5cydcclxuXSwgZnVuY3Rpb24gKCQsIFV0aWxzLCBLRVlTKSB7XHJcbiAgZnVuY3Rpb24gQmFzZVNlbGVjdGlvbiAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcblxyXG4gICAgQmFzZVNlbGVjdGlvbi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcclxuICB9XHJcblxyXG4gIFV0aWxzLkV4dGVuZChCYXNlU2VsZWN0aW9uLCBVdGlscy5PYnNlcnZhYmxlKTtcclxuXHJcbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyICRzZWxlY3Rpb24gPSAkKFxyXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvblwiIHJvbGU9XCJjb21ib2JveFwiICcgK1xyXG4gICAgICAnIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+JyArXHJcbiAgICAgICc8L3NwYW4+J1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLl90YWJpbmRleCA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQuZGF0YSgnb2xkLXRhYmluZGV4JykgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl90YWJpbmRleCA9IHRoaXMuJGVsZW1lbnQuZGF0YSgnb2xkLXRhYmluZGV4Jyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpO1xyXG4gICAgfVxyXG5cclxuICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aGlzLiRlbGVtZW50LmF0dHIoJ3RpdGxlJykpO1xyXG4gICAgJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsIHRoaXMuX3RhYmluZGV4KTtcclxuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24gPSAkc2VsZWN0aW9uO1xyXG5cclxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xyXG4gIH07XHJcblxyXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdmFyIGlkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xyXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XHJcblxyXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKCdmb2N1cycsIGV2dCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2JsdXInLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIHNlbGYuX2hhbmRsZUJsdXIoZXZ0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XHJcblxyXG4gICAgICBpZiAoZXZ0LndoaWNoID09PSBLRVlTLlNQQUNFKSB7XHJcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3NlbGVjdGlvbjp1cGRhdGUnLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIHNlbGYudXBkYXRlKHBhcmFtcy5kYXRhKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgYXJpYS1leHBhbmRlZD1cInRydWVcIlxyXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XHJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLW93bnMnLCByZXN1bHRzSWQpO1xyXG5cclxuICAgICAgc2VsZi5fYXR0YWNoQ2xvc2VIYW5kbGVyKGNvbnRhaW5lcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcclxuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtb3ducycpO1xyXG5cclxuICAgICAgc2VsZi4kc2VsZWN0aW9uLmZvY3VzKCk7XHJcblxyXG4gICAgICBzZWxmLl9kZXRhY2hDbG9zZUhhbmRsZXIoY29udGFpbmVyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignZW5hYmxlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCBzZWxmLl90YWJpbmRleCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsICctMScpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2hhbmRsZUJsdXIgPSBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgLy8gVGhpcyBuZWVkcyB0byBiZSBkZWxheWVkIGFzIHRoZSBhY3RpdmUgZWxlbWVudCBpcyB0aGUgYm9keSB3aGVuIHRoZSB0YWJcclxuICAgIC8vIGtleSBpcyBwcmVzc2VkLCBwb3NzaWJseSBhbG9uZyB3aXRoIG90aGVycy5cclxuICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBgYmx1cmAgaWYgdGhlIGZvY3VzIGlzIHN0aWxsIGluIHRoZSBzZWxlY3Rpb25cclxuICAgICAgaWYgKFxyXG4gICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHNlbGYuJHNlbGVjdGlvblswXSkgfHxcclxuICAgICAgICAoJC5jb250YWlucyhzZWxmLiRzZWxlY3Rpb25bMF0sIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNlbGYudHJpZ2dlcignYmx1cicsIGV2dCk7XHJcbiAgICB9LCAxKTtcclxuICB9O1xyXG5cclxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5fYXR0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICQoZG9jdW1lbnQuYm9keSkub24oJ21vdXNlZG93bi5zZWxlY3QyLicgKyBjb250YWluZXIuaWQsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHZhciAkdGFyZ2V0ID0gJChlLnRhcmdldCk7XHJcblxyXG4gICAgICB2YXIgJHNlbGVjdCA9ICR0YXJnZXQuY2xvc2VzdCgnLnNlbGVjdDInKTtcclxuXHJcbiAgICAgIHZhciAkYWxsID0gJCgnLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcclxuXHJcbiAgICAgICRhbGwuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMgPT0gJHNlbGVjdFswXSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyICRlbGVtZW50ID0gJHRoaXMuZGF0YSgnZWxlbWVudCcpO1xyXG5cclxuICAgICAgICAkZWxlbWVudC5zZWxlY3QyKCdjbG9zZScpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9kZXRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XHJcbiAgICAkKGRvY3VtZW50LmJvZHkpLm9mZignbW91c2Vkb3duLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZCk7XHJcbiAgfTtcclxuXHJcbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJHNlbGVjdGlvbiwgJGNvbnRhaW5lcikge1xyXG4gICAgdmFyICRzZWxlY3Rpb25Db250YWluZXIgPSAkY29udGFpbmVyLmZpbmQoJy5zZWxlY3Rpb24nKTtcclxuICAgICRzZWxlY3Rpb25Db250YWluZXIuYXBwZW5kKCRzZWxlY3Rpb24pO1xyXG4gIH07XHJcblxyXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLl9kZXRhY2hDbG9zZUhhbmRsZXIodGhpcy5jb250YWluZXIpO1xyXG4gIH07XHJcblxyXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgdXBkYXRlYCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuJyk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIEJhc2VTZWxlY3Rpb247XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2luZ2xlJyxbXHJcbiAgJ2pxdWVyeScsXHJcbiAgJy4vYmFzZScsXHJcbiAgJy4uL3V0aWxzJyxcclxuICAnLi4va2V5cydcclxuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzLCBLRVlTKSB7XHJcbiAgZnVuY3Rpb24gU2luZ2xlU2VsZWN0aW9uICgpIHtcclxuICAgIFNpbmdsZVNlbGVjdGlvbi5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICB9XHJcblxyXG4gIFV0aWxzLkV4dGVuZChTaW5nbGVTZWxlY3Rpb24sIEJhc2VTZWxlY3Rpb24pO1xyXG5cclxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkc2VsZWN0aW9uID0gU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTtcclxuXHJcbiAgICAkc2VsZWN0aW9uLmFkZENsYXNzKCdzZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlJyk7XHJcblxyXG4gICAgJHNlbGVjdGlvbi5odG1sKFxyXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3NwYW4+JyArXHJcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19hcnJvd1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nICtcclxuICAgICAgICAnPGIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvYj4nICtcclxuICAgICAgJzwvc3Bhbj4nXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xyXG4gIH07XHJcblxyXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuXHJcbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLWNvbnRhaW5lcic7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5hdHRyKCdpZCcsIGlkKTtcclxuICAgIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWxhYmVsbGVkYnknLCBpZCk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIC8vIE9ubHkgcmVzcG9uZCB0byBsZWZ0IGNsaWNrc1xyXG4gICAgICBpZiAoZXZ0LndoaWNoICE9PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzZWxmLnRyaWdnZXIoJ3RvZ2dsZScsIHtcclxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICAvLyBVc2VyIGZvY3VzZXMgb24gdGhlIGNvbnRhaW5lclxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdibHVyJywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICAvLyBVc2VyIGV4aXRzIHRoZSBjb250YWluZXJcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignZm9jdXMnLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XHJcbiAgICAgICAgc2VsZi4kc2VsZWN0aW9uLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0aW9uOnVwZGF0ZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi51cGRhdGUocGFyYW1zLmRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJykuZW1wdHkoKTtcclxuICB9O1xyXG5cclxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbiAoZGF0YSwgY29udGFpbmVyKSB7XHJcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0ZW1wbGF0ZVNlbGVjdGlvbicpO1xyXG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xyXG5cclxuICAgIHJldHVybiBlc2NhcGVNYXJrdXAodGVtcGxhdGUoZGF0YSwgY29udGFpbmVyKSk7XHJcbiAgfTtcclxuXHJcbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gJCgnPHNwYW4+PC9zcGFuPicpO1xyXG4gIH07XHJcblxyXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVswXTtcclxuXHJcbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcclxuICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmRpc3BsYXkoc2VsZWN0aW9uLCAkcmVuZGVyZWQpO1xyXG5cclxuICAgICRyZW5kZXJlZC5lbXB0eSgpLmFwcGVuZChmb3JtYXR0ZWQpO1xyXG4gICAgJHJlbmRlcmVkLnByb3AoJ3RpdGxlJywgc2VsZWN0aW9uLnRpdGxlIHx8IHNlbGVjdGlvbi50ZXh0KTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gU2luZ2xlU2VsZWN0aW9uO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlJyxbXHJcbiAgJ2pxdWVyeScsXHJcbiAgJy4vYmFzZScsXHJcbiAgJy4uL3V0aWxzJ1xyXG5dLCBmdW5jdGlvbiAoJCwgQmFzZVNlbGVjdGlvbiwgVXRpbHMpIHtcclxuICBmdW5jdGlvbiBNdWx0aXBsZVNlbGVjdGlvbiAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gIH1cclxuXHJcbiAgVXRpbHMuRXh0ZW5kKE11bHRpcGxlU2VsZWN0aW9uLCBCYXNlU2VsZWN0aW9uKTtcclxuXHJcbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkc2VsZWN0aW9uID0gTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xyXG5cclxuICAgICRzZWxlY3Rpb24uYWRkQ2xhc3MoJ3NlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZScpO1xyXG5cclxuICAgICRzZWxlY3Rpb24uaHRtbChcclxuICAgICAgJzx1bCBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiPjwvdWw+J1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gJHNlbGVjdGlvbjtcclxuICB9O1xyXG5cclxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBNdWx0aXBsZVNlbGVjdGlvbi5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG5cclxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIHNlbGYudHJpZ2dlcigndG9nZ2xlJywge1xyXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbihcclxuICAgICAgJ2NsaWNrJyxcclxuICAgICAgJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUnLFxyXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxyXG4gICAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgJHJlbW92ZSA9ICQodGhpcyk7XHJcbiAgICAgICAgdmFyICRzZWxlY3Rpb24gPSAkcmVtb3ZlLnBhcmVudCgpO1xyXG5cclxuICAgICAgICB2YXIgZGF0YSA9ICRzZWxlY3Rpb24uZGF0YSgnZGF0YScpO1xyXG5cclxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xyXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxyXG4gICAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJykuZW1wdHkoKTtcclxuICB9O1xyXG5cclxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uIChkYXRhLCBjb250YWluZXIpIHtcclxuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlU2VsZWN0aW9uJyk7XHJcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XHJcblxyXG4gICAgcmV0dXJuIGVzY2FwZU1hcmt1cCh0ZW1wbGF0ZShkYXRhLCBjb250YWluZXIpKTtcclxuICB9O1xyXG5cclxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyICRjb250YWluZXIgPSAkKFxyXG4gICAgICAnPGxpIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZVwiPicgK1xyXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nICtcclxuICAgICAgICAgICcmdGltZXM7JyArXHJcbiAgICAgICAgJzwvc3Bhbj4nICtcclxuICAgICAgJzwvbGk+J1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcclxuICB9O1xyXG5cclxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuXHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciAkc2VsZWN0aW9ucyA9IFtdO1xyXG5cclxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xyXG4gICAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVtkXTtcclxuXHJcbiAgICAgIHZhciAkc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25Db250YWluZXIoKTtcclxuICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRzZWxlY3Rpb24pO1xyXG5cclxuICAgICAgJHNlbGVjdGlvbi5hcHBlbmQoZm9ybWF0dGVkKTtcclxuICAgICAgJHNlbGVjdGlvbi5wcm9wKCd0aXRsZScsIHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dCk7XHJcblxyXG4gICAgICAkc2VsZWN0aW9uLmRhdGEoJ2RhdGEnLCBzZWxlY3Rpb24pO1xyXG5cclxuICAgICAgJHNlbGVjdGlvbnMucHVzaCgkc2VsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcclxuXHJcbiAgICBVdGlscy5hcHBlbmRNYW55KCRyZW5kZXJlZCwgJHNlbGVjdGlvbnMpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBNdWx0aXBsZVNlbGVjdGlvbjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9wbGFjZWhvbGRlcicsW1xyXG4gICcuLi91dGlscydcclxuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XHJcbiAgZnVuY3Rpb24gUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG9wdGlvbnMuZ2V0KCdwbGFjZWhvbGRlcicpKTtcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcclxuICAgIGlmICh0eXBlb2YgcGxhY2Vob2xkZXIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xyXG4gICAgICAgIGlkOiAnJyxcclxuICAgICAgICB0ZXh0OiBwbGFjZWhvbGRlclxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9O1xyXG5cclxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwbGFjZWhvbGRlcikge1xyXG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCk7XHJcblxyXG4gICAgJHBsYWNlaG9sZGVyLmh0bWwodGhpcy5kaXNwbGF5KHBsYWNlaG9sZGVyKSk7XHJcbiAgICAkcGxhY2Vob2xkZXIuYWRkQ2xhc3MoJ3NlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlcicpXHJcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKTtcclxuXHJcbiAgICByZXR1cm4gJHBsYWNlaG9sZGVyO1xyXG4gIH07XHJcblxyXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XHJcbiAgICB2YXIgc2luZ2xlUGxhY2Vob2xkZXIgPSAoXHJcbiAgICAgIGRhdGEubGVuZ3RoID09IDEgJiYgZGF0YVswXS5pZCAhPSB0aGlzLnBsYWNlaG9sZGVyLmlkXHJcbiAgICApO1xyXG4gICAgdmFyIG11bHRpcGxlU2VsZWN0aW9ucyA9IGRhdGEubGVuZ3RoID4gMTtcclxuXHJcbiAgICBpZiAobXVsdGlwbGVTZWxlY3Rpb25zIHx8IHNpbmdsZVBsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHJldHVybiBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcblxyXG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIodGhpcy5wbGFjZWhvbGRlcik7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5hcHBlbmQoJHBsYWNlaG9sZGVyKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gUGxhY2Vob2xkZXI7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vYWxsb3dDbGVhcicsW1xyXG4gICdqcXVlcnknLFxyXG4gICcuLi9rZXlzJ1xyXG5dLCBmdW5jdGlvbiAoJCwgS0VZUykge1xyXG4gIGZ1bmN0aW9uIEFsbG93Q2xlYXIgKCkgeyB9XHJcblxyXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xyXG5cclxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBhbGxvd0NsZWFyYCBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY29tYmluYXRpb24gJyArXHJcbiAgICAgICAgICAnd2l0aCB0aGUgYHBsYWNlaG9sZGVyYCBvcHRpb24uJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ21vdXNlZG93bicsICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyJyxcclxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICAgIHNlbGYuX2hhbmRsZUNsZWFyKGV2dCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICBzZWxmLl9oYW5kbGVLZXlib2FyZENsZWFyKGV2dCwgY29udGFpbmVyKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLl9oYW5kbGVDbGVhciA9IGZ1bmN0aW9uIChfLCBldnQpIHtcclxuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgJGNsZWFyID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInKTtcclxuXHJcbiAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IGlmIG5vdGhpbmcgaGFzIGJlZW4gc2VsZWN0ZWRcclxuICAgIGlmICgkY2xlYXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdmFyIGRhdGEgPSAkY2xlYXIuZGF0YSgnZGF0YScpO1xyXG5cclxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xyXG4gICAgICB2YXIgdW5zZWxlY3REYXRhID0ge1xyXG4gICAgICAgIGRhdGE6IGRhdGFbZF1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIFRyaWdnZXIgdGhlIGB1bnNlbGVjdGAgZXZlbnQsIHNvIHBlb3BsZSBjYW4gcHJldmVudCBpdCBmcm9tIGJlaW5nXHJcbiAgICAgIC8vIGNsZWFyZWQuXHJcbiAgICAgIHRoaXMudHJpZ2dlcigndW5zZWxlY3QnLCB1bnNlbGVjdERhdGEpO1xyXG5cclxuICAgICAgLy8gSWYgdGhlIGV2ZW50IHdhcyBwcmV2ZW50ZWQsIGRvbid0IGNsZWFyIGl0IG91dC5cclxuICAgICAgaWYgKHVuc2VsZWN0RGF0YS5wcmV2ZW50ZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnBsYWNlaG9sZGVyLmlkKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXIoJ3RvZ2dsZScsIHt9KTtcclxuICB9O1xyXG5cclxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS5faGFuZGxlS2V5Ym9hcmRDbGVhciA9IGZ1bmN0aW9uIChfLCBldnQsIGNvbnRhaW5lcikge1xyXG4gICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2dC53aGljaCA9PSBLRVlTLkRFTEVURSB8fCBldnQud2hpY2ggPT0gS0VZUy5CQUNLU1BBQ0UpIHtcclxuICAgICAgdGhpcy5faGFuZGxlQ2xlYXIoZXZ0KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcclxuXHJcbiAgICBpZiAodGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXInKS5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgZGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciAkcmVtb3ZlID0gJChcclxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCI+JyArXHJcbiAgICAgICAgJyZ0aW1lczsnICtcclxuICAgICAgJzwvc3Bhbj4nXHJcbiAgICApO1xyXG4gICAgJHJlbW92ZS5kYXRhKCdkYXRhJywgZGF0YSk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5wcmVwZW5kKCRyZW1vdmUpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBBbGxvd0NsZWFyO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NlYXJjaCcsW1xyXG4gICdqcXVlcnknLFxyXG4gICcuLi91dGlscycsXHJcbiAgJy4uL2tleXMnXHJcbl0sIGZ1bmN0aW9uICgkLCBVdGlscywgS0VZUykge1xyXG4gIGZ1bmN0aW9uIFNlYXJjaCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgU2VhcmNoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XHJcbiAgICB2YXIgJHNlYXJjaCA9ICQoXHJcbiAgICAgICc8bGkgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaCBzZWxlY3QyLXNlYXJjaC0taW5saW5lXCI+JyArXHJcbiAgICAgICAgJzxpbnB1dCBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCInICtcclxuICAgICAgICAnIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIicgK1xyXG4gICAgICAgICcgc3BlbGxjaGVjaz1cImZhbHNlXCIgcm9sZT1cInRleHRib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiAvPicgK1xyXG4gICAgICAnPC9saT4nXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XHJcbiAgICB0aGlzLiRzZWFyY2ggPSAkc2VhcmNoLmZpbmQoJ2lucHV0Jyk7XHJcblxyXG4gICAgdmFyICRyZW5kZXJlZCA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMuX3RyYW5zZmVyVGFiSW5kZXgoKTtcclxuXHJcbiAgICByZXR1cm4gJHJlbmRlcmVkO1xyXG4gIH07XHJcblxyXG4gIFNlYXJjaC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJHNlYXJjaC52YWwoJycpO1xyXG4gICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XHJcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJHNlYXJjaC5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcclxuXHJcbiAgICAgIHNlbGYuX3RyYW5zZmVyVGFiSW5kZXgoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgc2VsZi4kc2VhcmNoLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzaW4nLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1c291dCcsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi5faGFuZGxlQmx1cihldnQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdrZXlkb3duJywgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICBzZWxmLnRyaWdnZXIoJ2tleXByZXNzJywgZXZ0KTtcclxuXHJcbiAgICAgIHNlbGYuX2tleVVwUHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xyXG5cclxuICAgICAgdmFyIGtleSA9IGV2dC53aGljaDtcclxuXHJcbiAgICAgIGlmIChrZXkgPT09IEtFWVMuQkFDS1NQQUNFICYmIHNlbGYuJHNlYXJjaC52YWwoKSA9PT0gJycpIHtcclxuICAgICAgICB2YXIgJHByZXZpb3VzQ2hvaWNlID0gc2VsZi4kc2VhcmNoQ29udGFpbmVyXHJcbiAgICAgICAgICAucHJldignLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKTtcclxuXHJcbiAgICAgICAgaWYgKCRwcmV2aW91c0Nob2ljZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgaXRlbSA9ICRwcmV2aW91c0Nob2ljZS5kYXRhKCdkYXRhJyk7XHJcblxyXG4gICAgICAgICAgc2VsZi5zZWFyY2hSZW1vdmVDaG9pY2UoaXRlbSk7XHJcblxyXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBUcnkgdG8gZGV0ZWN0IHRoZSBJRSB2ZXJzaW9uIHNob3VsZCB0aGUgYGRvY3VtZW50TW9kZWAgcHJvcGVydHkgdGhhdFxyXG4gICAgLy8gaXMgc3RvcmVkIG9uIHRoZSBkb2N1bWVudC4gVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGluIElFIGFuZCBpc1xyXG4gICAgLy8gc2xpZ2h0bHkgY2xlYW5lciB0aGFuIGRvaW5nIGEgdXNlciBhZ2VudCBjaGVjay5cclxuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZSBpbiBFZGdlLCBidXQgRWRnZSBhbHNvIGRvZXNuJ3QgaGF2ZVxyXG4gICAgLy8gdGhpcyBidWcuXHJcbiAgICB2YXIgbXNpZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcclxuICAgIHZhciBkaXNhYmxlSW5wdXRFdmVudHMgPSBtc2llICYmIG1zaWUgPD0gMTE7XHJcblxyXG4gICAgLy8gV29ya2Fyb3VuZCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhlIGBpbnB1dGAgZXZlbnRcclxuICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IGRvdWJsZS10cmlnZ2VyaW5nIG9mIGV2ZW50cyBmb3IgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydFxyXG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXHJcbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXHJcbiAgICAgICdpbnB1dC5zZWFyY2hjaGVjaycsXHJcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXHJcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICAvLyBJRSB3aWxsIHRyaWdnZXIgdGhlIGBpbnB1dGAgZXZlbnQgd2hlbiBhIHBsYWNlaG9sZGVyIGlzIHVzZWQgb24gYVxyXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXHJcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cclxuICAgICAgICBpZiAoZGlzYWJsZUlucHV0RXZlbnRzKSB7XHJcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFVuYmluZCB0aGUgZHVwbGljYXRlZCBga2V5dXBgIGV2ZW50XHJcbiAgICAgICAgc2VsZi4kc2VsZWN0aW9uLm9mZigna2V5dXAuc2VhcmNoJyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxyXG4gICAgICAna2V5dXAuc2VhcmNoIGlucHV0LnNlYXJjaCcsXHJcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXHJcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICAvLyBJRSB3aWxsIHRyaWdnZXIgdGhlIGBpbnB1dGAgZXZlbnQgd2hlbiBhIHBsYWNlaG9sZGVyIGlzIHVzZWQgb24gYVxyXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXHJcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cclxuICAgICAgICBpZiAoZGlzYWJsZUlucHV0RXZlbnRzICYmIGV2dC50eXBlID09PSAnaW5wdXQnKSB7XHJcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XHJcblxyXG4gICAgICAgIC8vIFdlIGNhbiBmcmVlbHkgaWdub3JlIGV2ZW50cyBmcm9tIG1vZGlmaWVyIGtleXNcclxuICAgICAgICBpZiAoa2V5ID09IEtFWVMuU0hJRlQgfHwga2V5ID09IEtFWVMuQ1RSTCB8fCBrZXkgPT0gS0VZUy5BTFQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRhYmJpbmcgd2lsbCBiZSBoYW5kbGVkIGR1cmluZyB0aGUgYGtleWRvd25gIHBoYXNlXHJcbiAgICAgICAgaWYgKGtleSA9PSBLRVlTLlRBQikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZi5oYW5kbGVTZWFyY2goZXZ0KTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyYW5zZmVyIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgZnJvbSB0aGUgcmVuZGVyZWRcclxuICAgKiBzZWxlY3Rpb24gdG8gdGhlIHNlYXJjaCBib3guIFRoaXMgYWxsb3dzIGZvciB0aGUgc2VhcmNoIGJveCB0byBiZSB1c2VkIGFzXHJcbiAgICogdGhlIHByaW1hcnkgZm9jdXMgaW5zdGVhZCBvZiB0aGUgc2VsZWN0aW9uIGNvbnRhaW5lci5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgU2VhcmNoLnByb3RvdHlwZS5fdHJhbnNmZXJUYWJJbmRleCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcclxuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCd0YWJpbmRleCcsIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcpKTtcclxuICAgIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsICctMScpO1xyXG4gIH07XHJcblxyXG4gIFNlYXJjaC5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwbGFjZWhvbGRlcikge1xyXG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXIudGV4dCk7XHJcbiAgfTtcclxuXHJcbiAgU2VhcmNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XHJcbiAgICB2YXIgc2VhcmNoSGFkRm9jdXMgPSB0aGlzLiRzZWFyY2hbMF0gPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInLCAnJyk7XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XHJcblxyXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxyXG4gICAgICAgICAgICAgICAgICAgLmFwcGVuZCh0aGlzLiRzZWFyY2hDb250YWluZXIpO1xyXG5cclxuICAgIHRoaXMucmVzaXplU2VhcmNoKCk7XHJcbiAgICBpZiAoc2VhcmNoSGFkRm9jdXMpIHtcclxuICAgICAgdGhpcy4kc2VhcmNoLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZVNlYXJjaCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcclxuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xyXG5cclxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcclxuICAgICAgICB0ZXJtOiBpbnB1dFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9rZXlVcFByZXZlbnRlZCA9IGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIFNlYXJjaC5wcm90b3R5cGUuc2VhcmNoUmVtb3ZlQ2hvaWNlID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgaXRlbSkge1xyXG4gICAgdGhpcy50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcclxuICAgICAgZGF0YTogaXRlbVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kc2VhcmNoLnZhbChpdGVtLnRleHQpO1xyXG4gICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcclxuICB9O1xyXG5cclxuICBTZWFyY2gucHJvdG90eXBlLnJlc2l6ZVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgJzI1cHgnKTtcclxuXHJcbiAgICB2YXIgd2lkdGggPSAnJztcclxuXHJcbiAgICBpZiAodGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJykgIT09ICcnKSB7XHJcbiAgICAgIHdpZHRoID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5pbm5lcldpZHRoKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgbWluaW11bVdpZHRoID0gdGhpcy4kc2VhcmNoLnZhbCgpLmxlbmd0aCArIDE7XHJcblxyXG4gICAgICB3aWR0aCA9IChtaW5pbXVtV2lkdGggKiAwLjc1KSArICdlbSc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4kc2VhcmNoLmNzcygnd2lkdGgnLCB3aWR0aCk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIFNlYXJjaDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5JyxbXHJcbiAgJ2pxdWVyeSdcclxuXSwgZnVuY3Rpb24gKCQpIHtcclxuICBmdW5jdGlvbiBFdmVudFJlbGF5ICgpIHsgfVxyXG5cclxuICBFdmVudFJlbGF5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICB2YXIgcmVsYXlFdmVudHMgPSBbXHJcbiAgICAgICdvcGVuJywgJ29wZW5pbmcnLFxyXG4gICAgICAnY2xvc2UnLCAnY2xvc2luZycsXHJcbiAgICAgICdzZWxlY3QnLCAnc2VsZWN0aW5nJyxcclxuICAgICAgJ3Vuc2VsZWN0JywgJ3Vuc2VsZWN0aW5nJ1xyXG4gICAgXTtcclxuXHJcbiAgICB2YXIgcHJldmVudGFibGVFdmVudHMgPSBbJ29wZW5pbmcnLCAnY2xvc2luZycsICdzZWxlY3RpbmcnLCAndW5zZWxlY3RpbmcnXTtcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcclxuICAgICAgLy8gSWdub3JlIGV2ZW50cyB0aGF0IHNob3VsZCBub3QgYmUgcmVsYXllZFxyXG4gICAgICBpZiAoJC5pbkFycmF5KG5hbWUsIHJlbGF5RXZlbnRzKSA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIHNob3VsZCBhbHdheXMgYmUgYW4gb2JqZWN0XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcclxuXHJcbiAgICAgIC8vIEdlbmVyYXRlIHRoZSBqUXVlcnkgZXZlbnQgZm9yIHRoZSBTZWxlY3QyIGV2ZW50XHJcbiAgICAgIHZhciBldnQgPSAkLkV2ZW50KCdzZWxlY3QyOicgKyBuYW1lLCB7XHJcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBzZWxmLiRlbGVtZW50LnRyaWdnZXIoZXZ0KTtcclxuXHJcbiAgICAgIC8vIE9ubHkgaGFuZGxlIHByZXZlbnRhYmxlIGV2ZW50cyBpZiBpdCB3YXMgb25lXHJcbiAgICAgIGlmICgkLmluQXJyYXkobmFtZSwgcHJldmVudGFibGVFdmVudHMpID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGFyYW1zLnByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBFdmVudFJlbGF5O1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvdHJhbnNsYXRpb24nLFtcclxuICAnanF1ZXJ5JyxcclxuICAncmVxdWlyZSdcclxuXSwgZnVuY3Rpb24gKCQsIHJlcXVpcmUpIHtcclxuICBmdW5jdGlvbiBUcmFuc2xhdGlvbiAoZGljdCkge1xyXG4gICAgdGhpcy5kaWN0ID0gZGljdCB8fCB7fTtcclxuICB9XHJcblxyXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5hbGwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWN0O1xyXG4gIH07XHJcblxyXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWN0W2tleV07XHJcbiAgfTtcclxuXHJcbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uICh0cmFuc2xhdGlvbikge1xyXG4gICAgdGhpcy5kaWN0ID0gJC5leHRlbmQoe30sIHRyYW5zbGF0aW9uLmFsbCgpLCB0aGlzLmRpY3QpO1xyXG4gIH07XHJcblxyXG4gIC8vIFN0YXRpYyBmdW5jdGlvbnNcclxuXHJcbiAgVHJhbnNsYXRpb24uX2NhY2hlID0ge307XHJcblxyXG4gIFRyYW5zbGF0aW9uLmxvYWRQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHtcclxuICAgIGlmICghKHBhdGggaW4gVHJhbnNsYXRpb24uX2NhY2hlKSkge1xyXG4gICAgICB2YXIgdHJhbnNsYXRpb25zID0gcmVxdWlyZShwYXRoKTtcclxuXHJcbiAgICAgIFRyYW5zbGF0aW9uLl9jYWNoZVtwYXRoXSA9IHRyYW5zbGF0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uLl9jYWNoZVtwYXRoXSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIFRyYW5zbGF0aW9uO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGlhY3JpdGljcycsW1xyXG5cclxuXSwgZnVuY3Rpb24gKCkge1xyXG4gIHZhciBkaWFjcml0aWNzID0ge1xyXG4gICAgJ1xcdTI0QjYnOiAnQScsXHJcbiAgICAnXFx1RkYyMSc6ICdBJyxcclxuICAgICdcXHUwMEMwJzogJ0EnLFxyXG4gICAgJ1xcdTAwQzEnOiAnQScsXHJcbiAgICAnXFx1MDBDMic6ICdBJyxcclxuICAgICdcXHUxRUE2JzogJ0EnLFxyXG4gICAgJ1xcdTFFQTQnOiAnQScsXHJcbiAgICAnXFx1MUVBQSc6ICdBJyxcclxuICAgICdcXHUxRUE4JzogJ0EnLFxyXG4gICAgJ1xcdTAwQzMnOiAnQScsXHJcbiAgICAnXFx1MDEwMCc6ICdBJyxcclxuICAgICdcXHUwMTAyJzogJ0EnLFxyXG4gICAgJ1xcdTFFQjAnOiAnQScsXHJcbiAgICAnXFx1MUVBRSc6ICdBJyxcclxuICAgICdcXHUxRUI0JzogJ0EnLFxyXG4gICAgJ1xcdTFFQjInOiAnQScsXHJcbiAgICAnXFx1MDIyNic6ICdBJyxcclxuICAgICdcXHUwMUUwJzogJ0EnLFxyXG4gICAgJ1xcdTAwQzQnOiAnQScsXHJcbiAgICAnXFx1MDFERSc6ICdBJyxcclxuICAgICdcXHUxRUEyJzogJ0EnLFxyXG4gICAgJ1xcdTAwQzUnOiAnQScsXHJcbiAgICAnXFx1MDFGQSc6ICdBJyxcclxuICAgICdcXHUwMUNEJzogJ0EnLFxyXG4gICAgJ1xcdTAyMDAnOiAnQScsXHJcbiAgICAnXFx1MDIwMic6ICdBJyxcclxuICAgICdcXHUxRUEwJzogJ0EnLFxyXG4gICAgJ1xcdTFFQUMnOiAnQScsXHJcbiAgICAnXFx1MUVCNic6ICdBJyxcclxuICAgICdcXHUxRTAwJzogJ0EnLFxyXG4gICAgJ1xcdTAxMDQnOiAnQScsXHJcbiAgICAnXFx1MDIzQSc6ICdBJyxcclxuICAgICdcXHUyQzZGJzogJ0EnLFxyXG4gICAgJ1xcdUE3MzInOiAnQUEnLFxyXG4gICAgJ1xcdTAwQzYnOiAnQUUnLFxyXG4gICAgJ1xcdTAxRkMnOiAnQUUnLFxyXG4gICAgJ1xcdTAxRTInOiAnQUUnLFxyXG4gICAgJ1xcdUE3MzQnOiAnQU8nLFxyXG4gICAgJ1xcdUE3MzYnOiAnQVUnLFxyXG4gICAgJ1xcdUE3MzgnOiAnQVYnLFxyXG4gICAgJ1xcdUE3M0EnOiAnQVYnLFxyXG4gICAgJ1xcdUE3M0MnOiAnQVknLFxyXG4gICAgJ1xcdTI0QjcnOiAnQicsXHJcbiAgICAnXFx1RkYyMic6ICdCJyxcclxuICAgICdcXHUxRTAyJzogJ0InLFxyXG4gICAgJ1xcdTFFMDQnOiAnQicsXHJcbiAgICAnXFx1MUUwNic6ICdCJyxcclxuICAgICdcXHUwMjQzJzogJ0InLFxyXG4gICAgJ1xcdTAxODInOiAnQicsXHJcbiAgICAnXFx1MDE4MSc6ICdCJyxcclxuICAgICdcXHUyNEI4JzogJ0MnLFxyXG4gICAgJ1xcdUZGMjMnOiAnQycsXHJcbiAgICAnXFx1MDEwNic6ICdDJyxcclxuICAgICdcXHUwMTA4JzogJ0MnLFxyXG4gICAgJ1xcdTAxMEEnOiAnQycsXHJcbiAgICAnXFx1MDEwQyc6ICdDJyxcclxuICAgICdcXHUwMEM3JzogJ0MnLFxyXG4gICAgJ1xcdTFFMDgnOiAnQycsXHJcbiAgICAnXFx1MDE4Nyc6ICdDJyxcclxuICAgICdcXHUwMjNCJzogJ0MnLFxyXG4gICAgJ1xcdUE3M0UnOiAnQycsXHJcbiAgICAnXFx1MjRCOSc6ICdEJyxcclxuICAgICdcXHVGRjI0JzogJ0QnLFxyXG4gICAgJ1xcdTFFMEEnOiAnRCcsXHJcbiAgICAnXFx1MDEwRSc6ICdEJyxcclxuICAgICdcXHUxRTBDJzogJ0QnLFxyXG4gICAgJ1xcdTFFMTAnOiAnRCcsXHJcbiAgICAnXFx1MUUxMic6ICdEJyxcclxuICAgICdcXHUxRTBFJzogJ0QnLFxyXG4gICAgJ1xcdTAxMTAnOiAnRCcsXHJcbiAgICAnXFx1MDE4Qic6ICdEJyxcclxuICAgICdcXHUwMThBJzogJ0QnLFxyXG4gICAgJ1xcdTAxODknOiAnRCcsXHJcbiAgICAnXFx1QTc3OSc6ICdEJyxcclxuICAgICdcXHUwMUYxJzogJ0RaJyxcclxuICAgICdcXHUwMUM0JzogJ0RaJyxcclxuICAgICdcXHUwMUYyJzogJ0R6JyxcclxuICAgICdcXHUwMUM1JzogJ0R6JyxcclxuICAgICdcXHUyNEJBJzogJ0UnLFxyXG4gICAgJ1xcdUZGMjUnOiAnRScsXHJcbiAgICAnXFx1MDBDOCc6ICdFJyxcclxuICAgICdcXHUwMEM5JzogJ0UnLFxyXG4gICAgJ1xcdTAwQ0EnOiAnRScsXHJcbiAgICAnXFx1MUVDMCc6ICdFJyxcclxuICAgICdcXHUxRUJFJzogJ0UnLFxyXG4gICAgJ1xcdTFFQzQnOiAnRScsXHJcbiAgICAnXFx1MUVDMic6ICdFJyxcclxuICAgICdcXHUxRUJDJzogJ0UnLFxyXG4gICAgJ1xcdTAxMTInOiAnRScsXHJcbiAgICAnXFx1MUUxNCc6ICdFJyxcclxuICAgICdcXHUxRTE2JzogJ0UnLFxyXG4gICAgJ1xcdTAxMTQnOiAnRScsXHJcbiAgICAnXFx1MDExNic6ICdFJyxcclxuICAgICdcXHUwMENCJzogJ0UnLFxyXG4gICAgJ1xcdTFFQkEnOiAnRScsXHJcbiAgICAnXFx1MDExQSc6ICdFJyxcclxuICAgICdcXHUwMjA0JzogJ0UnLFxyXG4gICAgJ1xcdTAyMDYnOiAnRScsXHJcbiAgICAnXFx1MUVCOCc6ICdFJyxcclxuICAgICdcXHUxRUM2JzogJ0UnLFxyXG4gICAgJ1xcdTAyMjgnOiAnRScsXHJcbiAgICAnXFx1MUUxQyc6ICdFJyxcclxuICAgICdcXHUwMTE4JzogJ0UnLFxyXG4gICAgJ1xcdTFFMTgnOiAnRScsXHJcbiAgICAnXFx1MUUxQSc6ICdFJyxcclxuICAgICdcXHUwMTkwJzogJ0UnLFxyXG4gICAgJ1xcdTAxOEUnOiAnRScsXHJcbiAgICAnXFx1MjRCQic6ICdGJyxcclxuICAgICdcXHVGRjI2JzogJ0YnLFxyXG4gICAgJ1xcdTFFMUUnOiAnRicsXHJcbiAgICAnXFx1MDE5MSc6ICdGJyxcclxuICAgICdcXHVBNzdCJzogJ0YnLFxyXG4gICAgJ1xcdTI0QkMnOiAnRycsXHJcbiAgICAnXFx1RkYyNyc6ICdHJyxcclxuICAgICdcXHUwMUY0JzogJ0cnLFxyXG4gICAgJ1xcdTAxMUMnOiAnRycsXHJcbiAgICAnXFx1MUUyMCc6ICdHJyxcclxuICAgICdcXHUwMTFFJzogJ0cnLFxyXG4gICAgJ1xcdTAxMjAnOiAnRycsXHJcbiAgICAnXFx1MDFFNic6ICdHJyxcclxuICAgICdcXHUwMTIyJzogJ0cnLFxyXG4gICAgJ1xcdTAxRTQnOiAnRycsXHJcbiAgICAnXFx1MDE5Myc6ICdHJyxcclxuICAgICdcXHVBN0EwJzogJ0cnLFxyXG4gICAgJ1xcdUE3N0QnOiAnRycsXHJcbiAgICAnXFx1QTc3RSc6ICdHJyxcclxuICAgICdcXHUyNEJEJzogJ0gnLFxyXG4gICAgJ1xcdUZGMjgnOiAnSCcsXHJcbiAgICAnXFx1MDEyNCc6ICdIJyxcclxuICAgICdcXHUxRTIyJzogJ0gnLFxyXG4gICAgJ1xcdTFFMjYnOiAnSCcsXHJcbiAgICAnXFx1MDIxRSc6ICdIJyxcclxuICAgICdcXHUxRTI0JzogJ0gnLFxyXG4gICAgJ1xcdTFFMjgnOiAnSCcsXHJcbiAgICAnXFx1MUUyQSc6ICdIJyxcclxuICAgICdcXHUwMTI2JzogJ0gnLFxyXG4gICAgJ1xcdTJDNjcnOiAnSCcsXHJcbiAgICAnXFx1MkM3NSc6ICdIJyxcclxuICAgICdcXHVBNzhEJzogJ0gnLFxyXG4gICAgJ1xcdTI0QkUnOiAnSScsXHJcbiAgICAnXFx1RkYyOSc6ICdJJyxcclxuICAgICdcXHUwMENDJzogJ0knLFxyXG4gICAgJ1xcdTAwQ0QnOiAnSScsXHJcbiAgICAnXFx1MDBDRSc6ICdJJyxcclxuICAgICdcXHUwMTI4JzogJ0knLFxyXG4gICAgJ1xcdTAxMkEnOiAnSScsXHJcbiAgICAnXFx1MDEyQyc6ICdJJyxcclxuICAgICdcXHUwMTMwJzogJ0knLFxyXG4gICAgJ1xcdTAwQ0YnOiAnSScsXHJcbiAgICAnXFx1MUUyRSc6ICdJJyxcclxuICAgICdcXHUxRUM4JzogJ0knLFxyXG4gICAgJ1xcdTAxQ0YnOiAnSScsXHJcbiAgICAnXFx1MDIwOCc6ICdJJyxcclxuICAgICdcXHUwMjBBJzogJ0knLFxyXG4gICAgJ1xcdTFFQ0EnOiAnSScsXHJcbiAgICAnXFx1MDEyRSc6ICdJJyxcclxuICAgICdcXHUxRTJDJzogJ0knLFxyXG4gICAgJ1xcdTAxOTcnOiAnSScsXHJcbiAgICAnXFx1MjRCRic6ICdKJyxcclxuICAgICdcXHVGRjJBJzogJ0onLFxyXG4gICAgJ1xcdTAxMzQnOiAnSicsXHJcbiAgICAnXFx1MDI0OCc6ICdKJyxcclxuICAgICdcXHUyNEMwJzogJ0snLFxyXG4gICAgJ1xcdUZGMkInOiAnSycsXHJcbiAgICAnXFx1MUUzMCc6ICdLJyxcclxuICAgICdcXHUwMUU4JzogJ0snLFxyXG4gICAgJ1xcdTFFMzInOiAnSycsXHJcbiAgICAnXFx1MDEzNic6ICdLJyxcclxuICAgICdcXHUxRTM0JzogJ0snLFxyXG4gICAgJ1xcdTAxOTgnOiAnSycsXHJcbiAgICAnXFx1MkM2OSc6ICdLJyxcclxuICAgICdcXHVBNzQwJzogJ0snLFxyXG4gICAgJ1xcdUE3NDInOiAnSycsXHJcbiAgICAnXFx1QTc0NCc6ICdLJyxcclxuICAgICdcXHVBN0EyJzogJ0snLFxyXG4gICAgJ1xcdTI0QzEnOiAnTCcsXHJcbiAgICAnXFx1RkYyQyc6ICdMJyxcclxuICAgICdcXHUwMTNGJzogJ0wnLFxyXG4gICAgJ1xcdTAxMzknOiAnTCcsXHJcbiAgICAnXFx1MDEzRCc6ICdMJyxcclxuICAgICdcXHUxRTM2JzogJ0wnLFxyXG4gICAgJ1xcdTFFMzgnOiAnTCcsXHJcbiAgICAnXFx1MDEzQic6ICdMJyxcclxuICAgICdcXHUxRTNDJzogJ0wnLFxyXG4gICAgJ1xcdTFFM0EnOiAnTCcsXHJcbiAgICAnXFx1MDE0MSc6ICdMJyxcclxuICAgICdcXHUwMjNEJzogJ0wnLFxyXG4gICAgJ1xcdTJDNjInOiAnTCcsXHJcbiAgICAnXFx1MkM2MCc6ICdMJyxcclxuICAgICdcXHVBNzQ4JzogJ0wnLFxyXG4gICAgJ1xcdUE3NDYnOiAnTCcsXHJcbiAgICAnXFx1QTc4MCc6ICdMJyxcclxuICAgICdcXHUwMUM3JzogJ0xKJyxcclxuICAgICdcXHUwMUM4JzogJ0xqJyxcclxuICAgICdcXHUyNEMyJzogJ00nLFxyXG4gICAgJ1xcdUZGMkQnOiAnTScsXHJcbiAgICAnXFx1MUUzRSc6ICdNJyxcclxuICAgICdcXHUxRTQwJzogJ00nLFxyXG4gICAgJ1xcdTFFNDInOiAnTScsXHJcbiAgICAnXFx1MkM2RSc6ICdNJyxcclxuICAgICdcXHUwMTlDJzogJ00nLFxyXG4gICAgJ1xcdTI0QzMnOiAnTicsXHJcbiAgICAnXFx1RkYyRSc6ICdOJyxcclxuICAgICdcXHUwMUY4JzogJ04nLFxyXG4gICAgJ1xcdTAxNDMnOiAnTicsXHJcbiAgICAnXFx1MDBEMSc6ICdOJyxcclxuICAgICdcXHUxRTQ0JzogJ04nLFxyXG4gICAgJ1xcdTAxNDcnOiAnTicsXHJcbiAgICAnXFx1MUU0Nic6ICdOJyxcclxuICAgICdcXHUwMTQ1JzogJ04nLFxyXG4gICAgJ1xcdTFFNEEnOiAnTicsXHJcbiAgICAnXFx1MUU0OCc6ICdOJyxcclxuICAgICdcXHUwMjIwJzogJ04nLFxyXG4gICAgJ1xcdTAxOUQnOiAnTicsXHJcbiAgICAnXFx1QTc5MCc6ICdOJyxcclxuICAgICdcXHVBN0E0JzogJ04nLFxyXG4gICAgJ1xcdTAxQ0EnOiAnTkonLFxyXG4gICAgJ1xcdTAxQ0InOiAnTmonLFxyXG4gICAgJ1xcdTI0QzQnOiAnTycsXHJcbiAgICAnXFx1RkYyRic6ICdPJyxcclxuICAgICdcXHUwMEQyJzogJ08nLFxyXG4gICAgJ1xcdTAwRDMnOiAnTycsXHJcbiAgICAnXFx1MDBENCc6ICdPJyxcclxuICAgICdcXHUxRUQyJzogJ08nLFxyXG4gICAgJ1xcdTFFRDAnOiAnTycsXHJcbiAgICAnXFx1MUVENic6ICdPJyxcclxuICAgICdcXHUxRUQ0JzogJ08nLFxyXG4gICAgJ1xcdTAwRDUnOiAnTycsXHJcbiAgICAnXFx1MUU0Qyc6ICdPJyxcclxuICAgICdcXHUwMjJDJzogJ08nLFxyXG4gICAgJ1xcdTFFNEUnOiAnTycsXHJcbiAgICAnXFx1MDE0Qyc6ICdPJyxcclxuICAgICdcXHUxRTUwJzogJ08nLFxyXG4gICAgJ1xcdTFFNTInOiAnTycsXHJcbiAgICAnXFx1MDE0RSc6ICdPJyxcclxuICAgICdcXHUwMjJFJzogJ08nLFxyXG4gICAgJ1xcdTAyMzAnOiAnTycsXHJcbiAgICAnXFx1MDBENic6ICdPJyxcclxuICAgICdcXHUwMjJBJzogJ08nLFxyXG4gICAgJ1xcdTFFQ0UnOiAnTycsXHJcbiAgICAnXFx1MDE1MCc6ICdPJyxcclxuICAgICdcXHUwMUQxJzogJ08nLFxyXG4gICAgJ1xcdTAyMEMnOiAnTycsXHJcbiAgICAnXFx1MDIwRSc6ICdPJyxcclxuICAgICdcXHUwMUEwJzogJ08nLFxyXG4gICAgJ1xcdTFFREMnOiAnTycsXHJcbiAgICAnXFx1MUVEQSc6ICdPJyxcclxuICAgICdcXHUxRUUwJzogJ08nLFxyXG4gICAgJ1xcdTFFREUnOiAnTycsXHJcbiAgICAnXFx1MUVFMic6ICdPJyxcclxuICAgICdcXHUxRUNDJzogJ08nLFxyXG4gICAgJ1xcdTFFRDgnOiAnTycsXHJcbiAgICAnXFx1MDFFQSc6ICdPJyxcclxuICAgICdcXHUwMUVDJzogJ08nLFxyXG4gICAgJ1xcdTAwRDgnOiAnTycsXHJcbiAgICAnXFx1MDFGRSc6ICdPJyxcclxuICAgICdcXHUwMTg2JzogJ08nLFxyXG4gICAgJ1xcdTAxOUYnOiAnTycsXHJcbiAgICAnXFx1QTc0QSc6ICdPJyxcclxuICAgICdcXHVBNzRDJzogJ08nLFxyXG4gICAgJ1xcdTAxQTInOiAnT0knLFxyXG4gICAgJ1xcdUE3NEUnOiAnT08nLFxyXG4gICAgJ1xcdTAyMjInOiAnT1UnLFxyXG4gICAgJ1xcdTI0QzUnOiAnUCcsXHJcbiAgICAnXFx1RkYzMCc6ICdQJyxcclxuICAgICdcXHUxRTU0JzogJ1AnLFxyXG4gICAgJ1xcdTFFNTYnOiAnUCcsXHJcbiAgICAnXFx1MDFBNCc6ICdQJyxcclxuICAgICdcXHUyQzYzJzogJ1AnLFxyXG4gICAgJ1xcdUE3NTAnOiAnUCcsXHJcbiAgICAnXFx1QTc1Mic6ICdQJyxcclxuICAgICdcXHVBNzU0JzogJ1AnLFxyXG4gICAgJ1xcdTI0QzYnOiAnUScsXHJcbiAgICAnXFx1RkYzMSc6ICdRJyxcclxuICAgICdcXHVBNzU2JzogJ1EnLFxyXG4gICAgJ1xcdUE3NTgnOiAnUScsXHJcbiAgICAnXFx1MDI0QSc6ICdRJyxcclxuICAgICdcXHUyNEM3JzogJ1InLFxyXG4gICAgJ1xcdUZGMzInOiAnUicsXHJcbiAgICAnXFx1MDE1NCc6ICdSJyxcclxuICAgICdcXHUxRTU4JzogJ1InLFxyXG4gICAgJ1xcdTAxNTgnOiAnUicsXHJcbiAgICAnXFx1MDIxMCc6ICdSJyxcclxuICAgICdcXHUwMjEyJzogJ1InLFxyXG4gICAgJ1xcdTFFNUEnOiAnUicsXHJcbiAgICAnXFx1MUU1Qyc6ICdSJyxcclxuICAgICdcXHUwMTU2JzogJ1InLFxyXG4gICAgJ1xcdTFFNUUnOiAnUicsXHJcbiAgICAnXFx1MDI0Qyc6ICdSJyxcclxuICAgICdcXHUyQzY0JzogJ1InLFxyXG4gICAgJ1xcdUE3NUEnOiAnUicsXHJcbiAgICAnXFx1QTdBNic6ICdSJyxcclxuICAgICdcXHVBNzgyJzogJ1InLFxyXG4gICAgJ1xcdTI0QzgnOiAnUycsXHJcbiAgICAnXFx1RkYzMyc6ICdTJyxcclxuICAgICdcXHUxRTlFJzogJ1MnLFxyXG4gICAgJ1xcdTAxNUEnOiAnUycsXHJcbiAgICAnXFx1MUU2NCc6ICdTJyxcclxuICAgICdcXHUwMTVDJzogJ1MnLFxyXG4gICAgJ1xcdTFFNjAnOiAnUycsXHJcbiAgICAnXFx1MDE2MCc6ICdTJyxcclxuICAgICdcXHUxRTY2JzogJ1MnLFxyXG4gICAgJ1xcdTFFNjInOiAnUycsXHJcbiAgICAnXFx1MUU2OCc6ICdTJyxcclxuICAgICdcXHUwMjE4JzogJ1MnLFxyXG4gICAgJ1xcdTAxNUUnOiAnUycsXHJcbiAgICAnXFx1MkM3RSc6ICdTJyxcclxuICAgICdcXHVBN0E4JzogJ1MnLFxyXG4gICAgJ1xcdUE3ODQnOiAnUycsXHJcbiAgICAnXFx1MjRDOSc6ICdUJyxcclxuICAgICdcXHVGRjM0JzogJ1QnLFxyXG4gICAgJ1xcdTFFNkEnOiAnVCcsXHJcbiAgICAnXFx1MDE2NCc6ICdUJyxcclxuICAgICdcXHUxRTZDJzogJ1QnLFxyXG4gICAgJ1xcdTAyMUEnOiAnVCcsXHJcbiAgICAnXFx1MDE2Mic6ICdUJyxcclxuICAgICdcXHUxRTcwJzogJ1QnLFxyXG4gICAgJ1xcdTFFNkUnOiAnVCcsXHJcbiAgICAnXFx1MDE2Nic6ICdUJyxcclxuICAgICdcXHUwMUFDJzogJ1QnLFxyXG4gICAgJ1xcdTAxQUUnOiAnVCcsXHJcbiAgICAnXFx1MDIzRSc6ICdUJyxcclxuICAgICdcXHVBNzg2JzogJ1QnLFxyXG4gICAgJ1xcdUE3MjgnOiAnVFonLFxyXG4gICAgJ1xcdTI0Q0EnOiAnVScsXHJcbiAgICAnXFx1RkYzNSc6ICdVJyxcclxuICAgICdcXHUwMEQ5JzogJ1UnLFxyXG4gICAgJ1xcdTAwREEnOiAnVScsXHJcbiAgICAnXFx1MDBEQic6ICdVJyxcclxuICAgICdcXHUwMTY4JzogJ1UnLFxyXG4gICAgJ1xcdTFFNzgnOiAnVScsXHJcbiAgICAnXFx1MDE2QSc6ICdVJyxcclxuICAgICdcXHUxRTdBJzogJ1UnLFxyXG4gICAgJ1xcdTAxNkMnOiAnVScsXHJcbiAgICAnXFx1MDBEQyc6ICdVJyxcclxuICAgICdcXHUwMURCJzogJ1UnLFxyXG4gICAgJ1xcdTAxRDcnOiAnVScsXHJcbiAgICAnXFx1MDFENSc6ICdVJyxcclxuICAgICdcXHUwMUQ5JzogJ1UnLFxyXG4gICAgJ1xcdTFFRTYnOiAnVScsXHJcbiAgICAnXFx1MDE2RSc6ICdVJyxcclxuICAgICdcXHUwMTcwJzogJ1UnLFxyXG4gICAgJ1xcdTAxRDMnOiAnVScsXHJcbiAgICAnXFx1MDIxNCc6ICdVJyxcclxuICAgICdcXHUwMjE2JzogJ1UnLFxyXG4gICAgJ1xcdTAxQUYnOiAnVScsXHJcbiAgICAnXFx1MUVFQSc6ICdVJyxcclxuICAgICdcXHUxRUU4JzogJ1UnLFxyXG4gICAgJ1xcdTFFRUUnOiAnVScsXHJcbiAgICAnXFx1MUVFQyc6ICdVJyxcclxuICAgICdcXHUxRUYwJzogJ1UnLFxyXG4gICAgJ1xcdTFFRTQnOiAnVScsXHJcbiAgICAnXFx1MUU3Mic6ICdVJyxcclxuICAgICdcXHUwMTcyJzogJ1UnLFxyXG4gICAgJ1xcdTFFNzYnOiAnVScsXHJcbiAgICAnXFx1MUU3NCc6ICdVJyxcclxuICAgICdcXHUwMjQ0JzogJ1UnLFxyXG4gICAgJ1xcdTI0Q0InOiAnVicsXHJcbiAgICAnXFx1RkYzNic6ICdWJyxcclxuICAgICdcXHUxRTdDJzogJ1YnLFxyXG4gICAgJ1xcdTFFN0UnOiAnVicsXHJcbiAgICAnXFx1MDFCMic6ICdWJyxcclxuICAgICdcXHVBNzVFJzogJ1YnLFxyXG4gICAgJ1xcdTAyNDUnOiAnVicsXHJcbiAgICAnXFx1QTc2MCc6ICdWWScsXHJcbiAgICAnXFx1MjRDQyc6ICdXJyxcclxuICAgICdcXHVGRjM3JzogJ1cnLFxyXG4gICAgJ1xcdTFFODAnOiAnVycsXHJcbiAgICAnXFx1MUU4Mic6ICdXJyxcclxuICAgICdcXHUwMTc0JzogJ1cnLFxyXG4gICAgJ1xcdTFFODYnOiAnVycsXHJcbiAgICAnXFx1MUU4NCc6ICdXJyxcclxuICAgICdcXHUxRTg4JzogJ1cnLFxyXG4gICAgJ1xcdTJDNzInOiAnVycsXHJcbiAgICAnXFx1MjRDRCc6ICdYJyxcclxuICAgICdcXHVGRjM4JzogJ1gnLFxyXG4gICAgJ1xcdTFFOEEnOiAnWCcsXHJcbiAgICAnXFx1MUU4Qyc6ICdYJyxcclxuICAgICdcXHUyNENFJzogJ1knLFxyXG4gICAgJ1xcdUZGMzknOiAnWScsXHJcbiAgICAnXFx1MUVGMic6ICdZJyxcclxuICAgICdcXHUwMEREJzogJ1knLFxyXG4gICAgJ1xcdTAxNzYnOiAnWScsXHJcbiAgICAnXFx1MUVGOCc6ICdZJyxcclxuICAgICdcXHUwMjMyJzogJ1knLFxyXG4gICAgJ1xcdTFFOEUnOiAnWScsXHJcbiAgICAnXFx1MDE3OCc6ICdZJyxcclxuICAgICdcXHUxRUY2JzogJ1knLFxyXG4gICAgJ1xcdTFFRjQnOiAnWScsXHJcbiAgICAnXFx1MDFCMyc6ICdZJyxcclxuICAgICdcXHUwMjRFJzogJ1knLFxyXG4gICAgJ1xcdTFFRkUnOiAnWScsXHJcbiAgICAnXFx1MjRDRic6ICdaJyxcclxuICAgICdcXHVGRjNBJzogJ1onLFxyXG4gICAgJ1xcdTAxNzknOiAnWicsXHJcbiAgICAnXFx1MUU5MCc6ICdaJyxcclxuICAgICdcXHUwMTdCJzogJ1onLFxyXG4gICAgJ1xcdTAxN0QnOiAnWicsXHJcbiAgICAnXFx1MUU5Mic6ICdaJyxcclxuICAgICdcXHUxRTk0JzogJ1onLFxyXG4gICAgJ1xcdTAxQjUnOiAnWicsXHJcbiAgICAnXFx1MDIyNCc6ICdaJyxcclxuICAgICdcXHUyQzdGJzogJ1onLFxyXG4gICAgJ1xcdTJDNkInOiAnWicsXHJcbiAgICAnXFx1QTc2Mic6ICdaJyxcclxuICAgICdcXHUyNEQwJzogJ2EnLFxyXG4gICAgJ1xcdUZGNDEnOiAnYScsXHJcbiAgICAnXFx1MUU5QSc6ICdhJyxcclxuICAgICdcXHUwMEUwJzogJ2EnLFxyXG4gICAgJ1xcdTAwRTEnOiAnYScsXHJcbiAgICAnXFx1MDBFMic6ICdhJyxcclxuICAgICdcXHUxRUE3JzogJ2EnLFxyXG4gICAgJ1xcdTFFQTUnOiAnYScsXHJcbiAgICAnXFx1MUVBQic6ICdhJyxcclxuICAgICdcXHUxRUE5JzogJ2EnLFxyXG4gICAgJ1xcdTAwRTMnOiAnYScsXHJcbiAgICAnXFx1MDEwMSc6ICdhJyxcclxuICAgICdcXHUwMTAzJzogJ2EnLFxyXG4gICAgJ1xcdTFFQjEnOiAnYScsXHJcbiAgICAnXFx1MUVBRic6ICdhJyxcclxuICAgICdcXHUxRUI1JzogJ2EnLFxyXG4gICAgJ1xcdTFFQjMnOiAnYScsXHJcbiAgICAnXFx1MDIyNyc6ICdhJyxcclxuICAgICdcXHUwMUUxJzogJ2EnLFxyXG4gICAgJ1xcdTAwRTQnOiAnYScsXHJcbiAgICAnXFx1MDFERic6ICdhJyxcclxuICAgICdcXHUxRUEzJzogJ2EnLFxyXG4gICAgJ1xcdTAwRTUnOiAnYScsXHJcbiAgICAnXFx1MDFGQic6ICdhJyxcclxuICAgICdcXHUwMUNFJzogJ2EnLFxyXG4gICAgJ1xcdTAyMDEnOiAnYScsXHJcbiAgICAnXFx1MDIwMyc6ICdhJyxcclxuICAgICdcXHUxRUExJzogJ2EnLFxyXG4gICAgJ1xcdTFFQUQnOiAnYScsXHJcbiAgICAnXFx1MUVCNyc6ICdhJyxcclxuICAgICdcXHUxRTAxJzogJ2EnLFxyXG4gICAgJ1xcdTAxMDUnOiAnYScsXHJcbiAgICAnXFx1MkM2NSc6ICdhJyxcclxuICAgICdcXHUwMjUwJzogJ2EnLFxyXG4gICAgJ1xcdUE3MzMnOiAnYWEnLFxyXG4gICAgJ1xcdTAwRTYnOiAnYWUnLFxyXG4gICAgJ1xcdTAxRkQnOiAnYWUnLFxyXG4gICAgJ1xcdTAxRTMnOiAnYWUnLFxyXG4gICAgJ1xcdUE3MzUnOiAnYW8nLFxyXG4gICAgJ1xcdUE3MzcnOiAnYXUnLFxyXG4gICAgJ1xcdUE3MzknOiAnYXYnLFxyXG4gICAgJ1xcdUE3M0InOiAnYXYnLFxyXG4gICAgJ1xcdUE3M0QnOiAnYXknLFxyXG4gICAgJ1xcdTI0RDEnOiAnYicsXHJcbiAgICAnXFx1RkY0Mic6ICdiJyxcclxuICAgICdcXHUxRTAzJzogJ2InLFxyXG4gICAgJ1xcdTFFMDUnOiAnYicsXHJcbiAgICAnXFx1MUUwNyc6ICdiJyxcclxuICAgICdcXHUwMTgwJzogJ2InLFxyXG4gICAgJ1xcdTAxODMnOiAnYicsXHJcbiAgICAnXFx1MDI1Myc6ICdiJyxcclxuICAgICdcXHUyNEQyJzogJ2MnLFxyXG4gICAgJ1xcdUZGNDMnOiAnYycsXHJcbiAgICAnXFx1MDEwNyc6ICdjJyxcclxuICAgICdcXHUwMTA5JzogJ2MnLFxyXG4gICAgJ1xcdTAxMEInOiAnYycsXHJcbiAgICAnXFx1MDEwRCc6ICdjJyxcclxuICAgICdcXHUwMEU3JzogJ2MnLFxyXG4gICAgJ1xcdTFFMDknOiAnYycsXHJcbiAgICAnXFx1MDE4OCc6ICdjJyxcclxuICAgICdcXHUwMjNDJzogJ2MnLFxyXG4gICAgJ1xcdUE3M0YnOiAnYycsXHJcbiAgICAnXFx1MjE4NCc6ICdjJyxcclxuICAgICdcXHUyNEQzJzogJ2QnLFxyXG4gICAgJ1xcdUZGNDQnOiAnZCcsXHJcbiAgICAnXFx1MUUwQic6ICdkJyxcclxuICAgICdcXHUwMTBGJzogJ2QnLFxyXG4gICAgJ1xcdTFFMEQnOiAnZCcsXHJcbiAgICAnXFx1MUUxMSc6ICdkJyxcclxuICAgICdcXHUxRTEzJzogJ2QnLFxyXG4gICAgJ1xcdTFFMEYnOiAnZCcsXHJcbiAgICAnXFx1MDExMSc6ICdkJyxcclxuICAgICdcXHUwMThDJzogJ2QnLFxyXG4gICAgJ1xcdTAyNTYnOiAnZCcsXHJcbiAgICAnXFx1MDI1Nyc6ICdkJyxcclxuICAgICdcXHVBNzdBJzogJ2QnLFxyXG4gICAgJ1xcdTAxRjMnOiAnZHonLFxyXG4gICAgJ1xcdTAxQzYnOiAnZHonLFxyXG4gICAgJ1xcdTI0RDQnOiAnZScsXHJcbiAgICAnXFx1RkY0NSc6ICdlJyxcclxuICAgICdcXHUwMEU4JzogJ2UnLFxyXG4gICAgJ1xcdTAwRTknOiAnZScsXHJcbiAgICAnXFx1MDBFQSc6ICdlJyxcclxuICAgICdcXHUxRUMxJzogJ2UnLFxyXG4gICAgJ1xcdTFFQkYnOiAnZScsXHJcbiAgICAnXFx1MUVDNSc6ICdlJyxcclxuICAgICdcXHUxRUMzJzogJ2UnLFxyXG4gICAgJ1xcdTFFQkQnOiAnZScsXHJcbiAgICAnXFx1MDExMyc6ICdlJyxcclxuICAgICdcXHUxRTE1JzogJ2UnLFxyXG4gICAgJ1xcdTFFMTcnOiAnZScsXHJcbiAgICAnXFx1MDExNSc6ICdlJyxcclxuICAgICdcXHUwMTE3JzogJ2UnLFxyXG4gICAgJ1xcdTAwRUInOiAnZScsXHJcbiAgICAnXFx1MUVCQic6ICdlJyxcclxuICAgICdcXHUwMTFCJzogJ2UnLFxyXG4gICAgJ1xcdTAyMDUnOiAnZScsXHJcbiAgICAnXFx1MDIwNyc6ICdlJyxcclxuICAgICdcXHUxRUI5JzogJ2UnLFxyXG4gICAgJ1xcdTFFQzcnOiAnZScsXHJcbiAgICAnXFx1MDIyOSc6ICdlJyxcclxuICAgICdcXHUxRTFEJzogJ2UnLFxyXG4gICAgJ1xcdTAxMTknOiAnZScsXHJcbiAgICAnXFx1MUUxOSc6ICdlJyxcclxuICAgICdcXHUxRTFCJzogJ2UnLFxyXG4gICAgJ1xcdTAyNDcnOiAnZScsXHJcbiAgICAnXFx1MDI1Qic6ICdlJyxcclxuICAgICdcXHUwMUREJzogJ2UnLFxyXG4gICAgJ1xcdTI0RDUnOiAnZicsXHJcbiAgICAnXFx1RkY0Nic6ICdmJyxcclxuICAgICdcXHUxRTFGJzogJ2YnLFxyXG4gICAgJ1xcdTAxOTInOiAnZicsXHJcbiAgICAnXFx1QTc3Qyc6ICdmJyxcclxuICAgICdcXHUyNEQ2JzogJ2cnLFxyXG4gICAgJ1xcdUZGNDcnOiAnZycsXHJcbiAgICAnXFx1MDFGNSc6ICdnJyxcclxuICAgICdcXHUwMTFEJzogJ2cnLFxyXG4gICAgJ1xcdTFFMjEnOiAnZycsXHJcbiAgICAnXFx1MDExRic6ICdnJyxcclxuICAgICdcXHUwMTIxJzogJ2cnLFxyXG4gICAgJ1xcdTAxRTcnOiAnZycsXHJcbiAgICAnXFx1MDEyMyc6ICdnJyxcclxuICAgICdcXHUwMUU1JzogJ2cnLFxyXG4gICAgJ1xcdTAyNjAnOiAnZycsXHJcbiAgICAnXFx1QTdBMSc6ICdnJyxcclxuICAgICdcXHUxRDc5JzogJ2cnLFxyXG4gICAgJ1xcdUE3N0YnOiAnZycsXHJcbiAgICAnXFx1MjRENyc6ICdoJyxcclxuICAgICdcXHVGRjQ4JzogJ2gnLFxyXG4gICAgJ1xcdTAxMjUnOiAnaCcsXHJcbiAgICAnXFx1MUUyMyc6ICdoJyxcclxuICAgICdcXHUxRTI3JzogJ2gnLFxyXG4gICAgJ1xcdTAyMUYnOiAnaCcsXHJcbiAgICAnXFx1MUUyNSc6ICdoJyxcclxuICAgICdcXHUxRTI5JzogJ2gnLFxyXG4gICAgJ1xcdTFFMkInOiAnaCcsXHJcbiAgICAnXFx1MUU5Nic6ICdoJyxcclxuICAgICdcXHUwMTI3JzogJ2gnLFxyXG4gICAgJ1xcdTJDNjgnOiAnaCcsXHJcbiAgICAnXFx1MkM3Nic6ICdoJyxcclxuICAgICdcXHUwMjY1JzogJ2gnLFxyXG4gICAgJ1xcdTAxOTUnOiAnaHYnLFxyXG4gICAgJ1xcdTI0RDgnOiAnaScsXHJcbiAgICAnXFx1RkY0OSc6ICdpJyxcclxuICAgICdcXHUwMEVDJzogJ2knLFxyXG4gICAgJ1xcdTAwRUQnOiAnaScsXHJcbiAgICAnXFx1MDBFRSc6ICdpJyxcclxuICAgICdcXHUwMTI5JzogJ2knLFxyXG4gICAgJ1xcdTAxMkInOiAnaScsXHJcbiAgICAnXFx1MDEyRCc6ICdpJyxcclxuICAgICdcXHUwMEVGJzogJ2knLFxyXG4gICAgJ1xcdTFFMkYnOiAnaScsXHJcbiAgICAnXFx1MUVDOSc6ICdpJyxcclxuICAgICdcXHUwMUQwJzogJ2knLFxyXG4gICAgJ1xcdTAyMDknOiAnaScsXHJcbiAgICAnXFx1MDIwQic6ICdpJyxcclxuICAgICdcXHUxRUNCJzogJ2knLFxyXG4gICAgJ1xcdTAxMkYnOiAnaScsXHJcbiAgICAnXFx1MUUyRCc6ICdpJyxcclxuICAgICdcXHUwMjY4JzogJ2knLFxyXG4gICAgJ1xcdTAxMzEnOiAnaScsXHJcbiAgICAnXFx1MjREOSc6ICdqJyxcclxuICAgICdcXHVGRjRBJzogJ2onLFxyXG4gICAgJ1xcdTAxMzUnOiAnaicsXHJcbiAgICAnXFx1MDFGMCc6ICdqJyxcclxuICAgICdcXHUwMjQ5JzogJ2onLFxyXG4gICAgJ1xcdTI0REEnOiAnaycsXHJcbiAgICAnXFx1RkY0Qic6ICdrJyxcclxuICAgICdcXHUxRTMxJzogJ2snLFxyXG4gICAgJ1xcdTAxRTknOiAnaycsXHJcbiAgICAnXFx1MUUzMyc6ICdrJyxcclxuICAgICdcXHUwMTM3JzogJ2snLFxyXG4gICAgJ1xcdTFFMzUnOiAnaycsXHJcbiAgICAnXFx1MDE5OSc6ICdrJyxcclxuICAgICdcXHUyQzZBJzogJ2snLFxyXG4gICAgJ1xcdUE3NDEnOiAnaycsXHJcbiAgICAnXFx1QTc0Myc6ICdrJyxcclxuICAgICdcXHVBNzQ1JzogJ2snLFxyXG4gICAgJ1xcdUE3QTMnOiAnaycsXHJcbiAgICAnXFx1MjREQic6ICdsJyxcclxuICAgICdcXHVGRjRDJzogJ2wnLFxyXG4gICAgJ1xcdTAxNDAnOiAnbCcsXHJcbiAgICAnXFx1MDEzQSc6ICdsJyxcclxuICAgICdcXHUwMTNFJzogJ2wnLFxyXG4gICAgJ1xcdTFFMzcnOiAnbCcsXHJcbiAgICAnXFx1MUUzOSc6ICdsJyxcclxuICAgICdcXHUwMTNDJzogJ2wnLFxyXG4gICAgJ1xcdTFFM0QnOiAnbCcsXHJcbiAgICAnXFx1MUUzQic6ICdsJyxcclxuICAgICdcXHUwMTdGJzogJ2wnLFxyXG4gICAgJ1xcdTAxNDInOiAnbCcsXHJcbiAgICAnXFx1MDE5QSc6ICdsJyxcclxuICAgICdcXHUwMjZCJzogJ2wnLFxyXG4gICAgJ1xcdTJDNjEnOiAnbCcsXHJcbiAgICAnXFx1QTc0OSc6ICdsJyxcclxuICAgICdcXHVBNzgxJzogJ2wnLFxyXG4gICAgJ1xcdUE3NDcnOiAnbCcsXHJcbiAgICAnXFx1MDFDOSc6ICdsaicsXHJcbiAgICAnXFx1MjREQyc6ICdtJyxcclxuICAgICdcXHVGRjREJzogJ20nLFxyXG4gICAgJ1xcdTFFM0YnOiAnbScsXHJcbiAgICAnXFx1MUU0MSc6ICdtJyxcclxuICAgICdcXHUxRTQzJzogJ20nLFxyXG4gICAgJ1xcdTAyNzEnOiAnbScsXHJcbiAgICAnXFx1MDI2Ric6ICdtJyxcclxuICAgICdcXHUyNEREJzogJ24nLFxyXG4gICAgJ1xcdUZGNEUnOiAnbicsXHJcbiAgICAnXFx1MDFGOSc6ICduJyxcclxuICAgICdcXHUwMTQ0JzogJ24nLFxyXG4gICAgJ1xcdTAwRjEnOiAnbicsXHJcbiAgICAnXFx1MUU0NSc6ICduJyxcclxuICAgICdcXHUwMTQ4JzogJ24nLFxyXG4gICAgJ1xcdTFFNDcnOiAnbicsXHJcbiAgICAnXFx1MDE0Nic6ICduJyxcclxuICAgICdcXHUxRTRCJzogJ24nLFxyXG4gICAgJ1xcdTFFNDknOiAnbicsXHJcbiAgICAnXFx1MDE5RSc6ICduJyxcclxuICAgICdcXHUwMjcyJzogJ24nLFxyXG4gICAgJ1xcdTAxNDknOiAnbicsXHJcbiAgICAnXFx1QTc5MSc6ICduJyxcclxuICAgICdcXHVBN0E1JzogJ24nLFxyXG4gICAgJ1xcdTAxQ0MnOiAnbmonLFxyXG4gICAgJ1xcdTI0REUnOiAnbycsXHJcbiAgICAnXFx1RkY0Ric6ICdvJyxcclxuICAgICdcXHUwMEYyJzogJ28nLFxyXG4gICAgJ1xcdTAwRjMnOiAnbycsXHJcbiAgICAnXFx1MDBGNCc6ICdvJyxcclxuICAgICdcXHUxRUQzJzogJ28nLFxyXG4gICAgJ1xcdTFFRDEnOiAnbycsXHJcbiAgICAnXFx1MUVENyc6ICdvJyxcclxuICAgICdcXHUxRUQ1JzogJ28nLFxyXG4gICAgJ1xcdTAwRjUnOiAnbycsXHJcbiAgICAnXFx1MUU0RCc6ICdvJyxcclxuICAgICdcXHUwMjJEJzogJ28nLFxyXG4gICAgJ1xcdTFFNEYnOiAnbycsXHJcbiAgICAnXFx1MDE0RCc6ICdvJyxcclxuICAgICdcXHUxRTUxJzogJ28nLFxyXG4gICAgJ1xcdTFFNTMnOiAnbycsXHJcbiAgICAnXFx1MDE0Ric6ICdvJyxcclxuICAgICdcXHUwMjJGJzogJ28nLFxyXG4gICAgJ1xcdTAyMzEnOiAnbycsXHJcbiAgICAnXFx1MDBGNic6ICdvJyxcclxuICAgICdcXHUwMjJCJzogJ28nLFxyXG4gICAgJ1xcdTFFQ0YnOiAnbycsXHJcbiAgICAnXFx1MDE1MSc6ICdvJyxcclxuICAgICdcXHUwMUQyJzogJ28nLFxyXG4gICAgJ1xcdTAyMEQnOiAnbycsXHJcbiAgICAnXFx1MDIwRic6ICdvJyxcclxuICAgICdcXHUwMUExJzogJ28nLFxyXG4gICAgJ1xcdTFFREQnOiAnbycsXHJcbiAgICAnXFx1MUVEQic6ICdvJyxcclxuICAgICdcXHUxRUUxJzogJ28nLFxyXG4gICAgJ1xcdTFFREYnOiAnbycsXHJcbiAgICAnXFx1MUVFMyc6ICdvJyxcclxuICAgICdcXHUxRUNEJzogJ28nLFxyXG4gICAgJ1xcdTFFRDknOiAnbycsXHJcbiAgICAnXFx1MDFFQic6ICdvJyxcclxuICAgICdcXHUwMUVEJzogJ28nLFxyXG4gICAgJ1xcdTAwRjgnOiAnbycsXHJcbiAgICAnXFx1MDFGRic6ICdvJyxcclxuICAgICdcXHUwMjU0JzogJ28nLFxyXG4gICAgJ1xcdUE3NEInOiAnbycsXHJcbiAgICAnXFx1QTc0RCc6ICdvJyxcclxuICAgICdcXHUwMjc1JzogJ28nLFxyXG4gICAgJ1xcdTAxQTMnOiAnb2knLFxyXG4gICAgJ1xcdTAyMjMnOiAnb3UnLFxyXG4gICAgJ1xcdUE3NEYnOiAnb28nLFxyXG4gICAgJ1xcdTI0REYnOiAncCcsXHJcbiAgICAnXFx1RkY1MCc6ICdwJyxcclxuICAgICdcXHUxRTU1JzogJ3AnLFxyXG4gICAgJ1xcdTFFNTcnOiAncCcsXHJcbiAgICAnXFx1MDFBNSc6ICdwJyxcclxuICAgICdcXHUxRDdEJzogJ3AnLFxyXG4gICAgJ1xcdUE3NTEnOiAncCcsXHJcbiAgICAnXFx1QTc1Myc6ICdwJyxcclxuICAgICdcXHVBNzU1JzogJ3AnLFxyXG4gICAgJ1xcdTI0RTAnOiAncScsXHJcbiAgICAnXFx1RkY1MSc6ICdxJyxcclxuICAgICdcXHUwMjRCJzogJ3EnLFxyXG4gICAgJ1xcdUE3NTcnOiAncScsXHJcbiAgICAnXFx1QTc1OSc6ICdxJyxcclxuICAgICdcXHUyNEUxJzogJ3InLFxyXG4gICAgJ1xcdUZGNTInOiAncicsXHJcbiAgICAnXFx1MDE1NSc6ICdyJyxcclxuICAgICdcXHUxRTU5JzogJ3InLFxyXG4gICAgJ1xcdTAxNTknOiAncicsXHJcbiAgICAnXFx1MDIxMSc6ICdyJyxcclxuICAgICdcXHUwMjEzJzogJ3InLFxyXG4gICAgJ1xcdTFFNUInOiAncicsXHJcbiAgICAnXFx1MUU1RCc6ICdyJyxcclxuICAgICdcXHUwMTU3JzogJ3InLFxyXG4gICAgJ1xcdTFFNUYnOiAncicsXHJcbiAgICAnXFx1MDI0RCc6ICdyJyxcclxuICAgICdcXHUwMjdEJzogJ3InLFxyXG4gICAgJ1xcdUE3NUInOiAncicsXHJcbiAgICAnXFx1QTdBNyc6ICdyJyxcclxuICAgICdcXHVBNzgzJzogJ3InLFxyXG4gICAgJ1xcdTI0RTInOiAncycsXHJcbiAgICAnXFx1RkY1Myc6ICdzJyxcclxuICAgICdcXHUwMERGJzogJ3MnLFxyXG4gICAgJ1xcdTAxNUInOiAncycsXHJcbiAgICAnXFx1MUU2NSc6ICdzJyxcclxuICAgICdcXHUwMTVEJzogJ3MnLFxyXG4gICAgJ1xcdTFFNjEnOiAncycsXHJcbiAgICAnXFx1MDE2MSc6ICdzJyxcclxuICAgICdcXHUxRTY3JzogJ3MnLFxyXG4gICAgJ1xcdTFFNjMnOiAncycsXHJcbiAgICAnXFx1MUU2OSc6ICdzJyxcclxuICAgICdcXHUwMjE5JzogJ3MnLFxyXG4gICAgJ1xcdTAxNUYnOiAncycsXHJcbiAgICAnXFx1MDIzRic6ICdzJyxcclxuICAgICdcXHVBN0E5JzogJ3MnLFxyXG4gICAgJ1xcdUE3ODUnOiAncycsXHJcbiAgICAnXFx1MUU5Qic6ICdzJyxcclxuICAgICdcXHUyNEUzJzogJ3QnLFxyXG4gICAgJ1xcdUZGNTQnOiAndCcsXHJcbiAgICAnXFx1MUU2Qic6ICd0JyxcclxuICAgICdcXHUxRTk3JzogJ3QnLFxyXG4gICAgJ1xcdTAxNjUnOiAndCcsXHJcbiAgICAnXFx1MUU2RCc6ICd0JyxcclxuICAgICdcXHUwMjFCJzogJ3QnLFxyXG4gICAgJ1xcdTAxNjMnOiAndCcsXHJcbiAgICAnXFx1MUU3MSc6ICd0JyxcclxuICAgICdcXHUxRTZGJzogJ3QnLFxyXG4gICAgJ1xcdTAxNjcnOiAndCcsXHJcbiAgICAnXFx1MDFBRCc6ICd0JyxcclxuICAgICdcXHUwMjg4JzogJ3QnLFxyXG4gICAgJ1xcdTJDNjYnOiAndCcsXHJcbiAgICAnXFx1QTc4Nyc6ICd0JyxcclxuICAgICdcXHVBNzI5JzogJ3R6JyxcclxuICAgICdcXHUyNEU0JzogJ3UnLFxyXG4gICAgJ1xcdUZGNTUnOiAndScsXHJcbiAgICAnXFx1MDBGOSc6ICd1JyxcclxuICAgICdcXHUwMEZBJzogJ3UnLFxyXG4gICAgJ1xcdTAwRkInOiAndScsXHJcbiAgICAnXFx1MDE2OSc6ICd1JyxcclxuICAgICdcXHUxRTc5JzogJ3UnLFxyXG4gICAgJ1xcdTAxNkInOiAndScsXHJcbiAgICAnXFx1MUU3Qic6ICd1JyxcclxuICAgICdcXHUwMTZEJzogJ3UnLFxyXG4gICAgJ1xcdTAwRkMnOiAndScsXHJcbiAgICAnXFx1MDFEQyc6ICd1JyxcclxuICAgICdcXHUwMUQ4JzogJ3UnLFxyXG4gICAgJ1xcdTAxRDYnOiAndScsXHJcbiAgICAnXFx1MDFEQSc6ICd1JyxcclxuICAgICdcXHUxRUU3JzogJ3UnLFxyXG4gICAgJ1xcdTAxNkYnOiAndScsXHJcbiAgICAnXFx1MDE3MSc6ICd1JyxcclxuICAgICdcXHUwMUQ0JzogJ3UnLFxyXG4gICAgJ1xcdTAyMTUnOiAndScsXHJcbiAgICAnXFx1MDIxNyc6ICd1JyxcclxuICAgICdcXHUwMUIwJzogJ3UnLFxyXG4gICAgJ1xcdTFFRUInOiAndScsXHJcbiAgICAnXFx1MUVFOSc6ICd1JyxcclxuICAgICdcXHUxRUVGJzogJ3UnLFxyXG4gICAgJ1xcdTFFRUQnOiAndScsXHJcbiAgICAnXFx1MUVGMSc6ICd1JyxcclxuICAgICdcXHUxRUU1JzogJ3UnLFxyXG4gICAgJ1xcdTFFNzMnOiAndScsXHJcbiAgICAnXFx1MDE3Myc6ICd1JyxcclxuICAgICdcXHUxRTc3JzogJ3UnLFxyXG4gICAgJ1xcdTFFNzUnOiAndScsXHJcbiAgICAnXFx1MDI4OSc6ICd1JyxcclxuICAgICdcXHUyNEU1JzogJ3YnLFxyXG4gICAgJ1xcdUZGNTYnOiAndicsXHJcbiAgICAnXFx1MUU3RCc6ICd2JyxcclxuICAgICdcXHUxRTdGJzogJ3YnLFxyXG4gICAgJ1xcdTAyOEInOiAndicsXHJcbiAgICAnXFx1QTc1Ric6ICd2JyxcclxuICAgICdcXHUwMjhDJzogJ3YnLFxyXG4gICAgJ1xcdUE3NjEnOiAndnknLFxyXG4gICAgJ1xcdTI0RTYnOiAndycsXHJcbiAgICAnXFx1RkY1Nyc6ICd3JyxcclxuICAgICdcXHUxRTgxJzogJ3cnLFxyXG4gICAgJ1xcdTFFODMnOiAndycsXHJcbiAgICAnXFx1MDE3NSc6ICd3JyxcclxuICAgICdcXHUxRTg3JzogJ3cnLFxyXG4gICAgJ1xcdTFFODUnOiAndycsXHJcbiAgICAnXFx1MUU5OCc6ICd3JyxcclxuICAgICdcXHUxRTg5JzogJ3cnLFxyXG4gICAgJ1xcdTJDNzMnOiAndycsXHJcbiAgICAnXFx1MjRFNyc6ICd4JyxcclxuICAgICdcXHVGRjU4JzogJ3gnLFxyXG4gICAgJ1xcdTFFOEInOiAneCcsXHJcbiAgICAnXFx1MUU4RCc6ICd4JyxcclxuICAgICdcXHUyNEU4JzogJ3knLFxyXG4gICAgJ1xcdUZGNTknOiAneScsXHJcbiAgICAnXFx1MUVGMyc6ICd5JyxcclxuICAgICdcXHUwMEZEJzogJ3knLFxyXG4gICAgJ1xcdTAxNzcnOiAneScsXHJcbiAgICAnXFx1MUVGOSc6ICd5JyxcclxuICAgICdcXHUwMjMzJzogJ3knLFxyXG4gICAgJ1xcdTFFOEYnOiAneScsXHJcbiAgICAnXFx1MDBGRic6ICd5JyxcclxuICAgICdcXHUxRUY3JzogJ3knLFxyXG4gICAgJ1xcdTFFOTknOiAneScsXHJcbiAgICAnXFx1MUVGNSc6ICd5JyxcclxuICAgICdcXHUwMUI0JzogJ3knLFxyXG4gICAgJ1xcdTAyNEYnOiAneScsXHJcbiAgICAnXFx1MUVGRic6ICd5JyxcclxuICAgICdcXHUyNEU5JzogJ3onLFxyXG4gICAgJ1xcdUZGNUEnOiAneicsXHJcbiAgICAnXFx1MDE3QSc6ICd6JyxcclxuICAgICdcXHUxRTkxJzogJ3onLFxyXG4gICAgJ1xcdTAxN0MnOiAneicsXHJcbiAgICAnXFx1MDE3RSc6ICd6JyxcclxuICAgICdcXHUxRTkzJzogJ3onLFxyXG4gICAgJ1xcdTFFOTUnOiAneicsXHJcbiAgICAnXFx1MDFCNic6ICd6JyxcclxuICAgICdcXHUwMjI1JzogJ3onLFxyXG4gICAgJ1xcdTAyNDAnOiAneicsXHJcbiAgICAnXFx1MkM2Qyc6ICd6JyxcclxuICAgICdcXHVBNzYzJzogJ3onLFxyXG4gICAgJ1xcdTAzODYnOiAnXFx1MDM5MScsXHJcbiAgICAnXFx1MDM4OCc6ICdcXHUwMzk1JyxcclxuICAgICdcXHUwMzg5JzogJ1xcdTAzOTcnLFxyXG4gICAgJ1xcdTAzOEEnOiAnXFx1MDM5OScsXHJcbiAgICAnXFx1MDNBQSc6ICdcXHUwMzk5JyxcclxuICAgICdcXHUwMzhDJzogJ1xcdTAzOUYnLFxyXG4gICAgJ1xcdTAzOEUnOiAnXFx1MDNBNScsXHJcbiAgICAnXFx1MDNBQic6ICdcXHUwM0E1JyxcclxuICAgICdcXHUwMzhGJzogJ1xcdTAzQTknLFxyXG4gICAgJ1xcdTAzQUMnOiAnXFx1MDNCMScsXHJcbiAgICAnXFx1MDNBRCc6ICdcXHUwM0I1JyxcclxuICAgICdcXHUwM0FFJzogJ1xcdTAzQjcnLFxyXG4gICAgJ1xcdTAzQUYnOiAnXFx1MDNCOScsXHJcbiAgICAnXFx1MDNDQSc6ICdcXHUwM0I5JyxcclxuICAgICdcXHUwMzkwJzogJ1xcdTAzQjknLFxyXG4gICAgJ1xcdTAzQ0MnOiAnXFx1MDNCRicsXHJcbiAgICAnXFx1MDNDRCc6ICdcXHUwM0M1JyxcclxuICAgICdcXHUwM0NCJzogJ1xcdTAzQzUnLFxyXG4gICAgJ1xcdTAzQjAnOiAnXFx1MDNDNScsXHJcbiAgICAnXFx1MDNDOSc6ICdcXHUwM0M5JyxcclxuICAgICdcXHUwM0MyJzogJ1xcdTAzQzMnXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIGRpYWNyaXRpY3M7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2Jhc2UnLFtcclxuICAnLi4vdXRpbHMnXHJcbl0sIGZ1bmN0aW9uIChVdGlscykge1xyXG4gIGZ1bmN0aW9uIEJhc2VBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgQmFzZUFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XHJcbiAgfVxyXG5cclxuICBVdGlscy5FeHRlbmQoQmFzZUFkYXB0ZXIsIFV0aWxzLk9ic2VydmFibGUpO1xyXG5cclxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGN1cnJlbnRgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcclxuICB9O1xyXG5cclxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHF1ZXJ5YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuJyk7XHJcbiAgfTtcclxuXHJcbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XHJcbiAgICAvLyBDYW4gYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xyXG4gIH07XHJcblxyXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gQ2FuIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcclxuICB9O1xyXG5cclxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuZ2VuZXJhdGVSZXN1bHRJZCA9IGZ1bmN0aW9uIChjb250YWluZXIsIGRhdGEpIHtcclxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0LSc7XHJcblxyXG4gICAgaWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcclxuXHJcbiAgICBpZiAoZGF0YS5pZCAhPSBudWxsKSB7XHJcbiAgICAgIGlkICs9ICctJyArIGRhdGEuaWQudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlkICs9ICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWQ7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIEJhc2VBZGFwdGVyO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9zZWxlY3QnLFtcclxuICAnLi9iYXNlJyxcclxuICAnLi4vdXRpbHMnLFxyXG4gICdqcXVlcnknXHJcbl0sIGZ1bmN0aW9uIChCYXNlQWRhcHRlciwgVXRpbHMsICQpIHtcclxuICBmdW5jdGlvbiBTZWxlY3RBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICBTZWxlY3RBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgVXRpbHMuRXh0ZW5kKFNlbGVjdEFkYXB0ZXIsIEJhc2VBZGFwdGVyKTtcclxuXHJcbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xyXG4gICAgdmFyIGRhdGEgPSBbXTtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJzpzZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJG9wdGlvbiA9ICQodGhpcyk7XHJcblxyXG4gICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pO1xyXG5cclxuICAgICAgZGF0YS5wdXNoKG9wdGlvbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjYWxsYmFjayhkYXRhKTtcclxuICB9O1xyXG5cclxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xyXG5cclxuICAgIC8vIElmIGRhdGEuZWxlbWVudCBpcyBhIERPTSBub2RlLCB1c2UgaXQgaW5zdGVhZFxyXG4gICAgaWYgKCQoZGF0YS5lbGVtZW50KS5pcygnb3B0aW9uJykpIHtcclxuICAgICAgZGF0YS5lbGVtZW50LnNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignY2hhbmdlJyk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgnbXVsdGlwbGUnKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XHJcbiAgICAgICAgdmFyIHZhbCA9IFtdO1xyXG5cclxuICAgICAgICBkYXRhID0gW2RhdGFdO1xyXG4gICAgICAgIGRhdGEucHVzaC5hcHBseShkYXRhLCBjdXJyZW50RGF0YSk7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xyXG4gICAgICAgICAgdmFyIGlkID0gZGF0YVtkXS5pZDtcclxuXHJcbiAgICAgICAgICBpZiAoJC5pbkFycmF5KGlkLCB2YWwpID09PSAtMSkge1xyXG4gICAgICAgICAgICB2YWwucHVzaChpZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZWxmLiRlbGVtZW50LnZhbCh2YWwpO1xyXG4gICAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHZhbCA9IGRhdGEuaWQ7XHJcblxyXG4gICAgICB0aGlzLiRlbGVtZW50LnZhbCh2YWwpO1xyXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLnVuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBpZiAoIXRoaXMuJGVsZW1lbnQucHJvcCgnbXVsdGlwbGUnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGF0YS5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICgkKGRhdGEuZWxlbWVudCkuaXMoJ29wdGlvbicpKSB7XHJcbiAgICAgIGRhdGEuZWxlbWVudC5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XHJcbiAgICAgIHZhciB2YWwgPSBbXTtcclxuXHJcbiAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgY3VycmVudERhdGEubGVuZ3RoOyBkKyspIHtcclxuICAgICAgICB2YXIgaWQgPSBjdXJyZW50RGF0YVtkXS5pZDtcclxuXHJcbiAgICAgICAgaWYgKGlkICE9PSBkYXRhLmlkICYmICQuaW5BcnJheShpZCwgdmFsKSA9PT0gLTEpIHtcclxuICAgICAgICAgIHZhbC5wdXNoKGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XHJcblxyXG4gICAgICBzZWxmLiRlbGVtZW50LnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi5zZWxlY3QocGFyYW1zLmRhdGEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgc2VsZi51bnNlbGVjdChwYXJhbXMuZGF0YSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gUmVtb3ZlIGFueXRoaW5nIGFkZGVkIHRvIGNoaWxkIGVsZW1lbnRzXHJcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJyonKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgLy8gUmVtb3ZlIGFueSBjdXN0b20gZGF0YSBzZXQgYnkgU2VsZWN0MlxyXG4gICAgICAkLnJlbW92ZURhdGEodGhpcywgJ2RhdGEnKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcclxuICAgIHZhciBkYXRhID0gW107XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpO1xyXG5cclxuICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJG9wdGlvbiA9ICQodGhpcyk7XHJcblxyXG4gICAgICBpZiAoISRvcHRpb24uaXMoJ29wdGlvbicpICYmICEkb3B0aW9uLmlzKCdvcHRncm91cCcpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pO1xyXG5cclxuICAgICAgdmFyIG1hdGNoZXMgPSBzZWxmLm1hdGNoZXMocGFyYW1zLCBvcHRpb24pO1xyXG5cclxuICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwpIHtcclxuICAgICAgICBkYXRhLnB1c2gobWF0Y2hlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNhbGxiYWNrKHtcclxuICAgICAgcmVzdWx0czogZGF0YVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuYWRkT3B0aW9ucyA9IGZ1bmN0aW9uICgkb3B0aW9ucykge1xyXG4gICAgVXRpbHMuYXBwZW5kTWFueSh0aGlzLiRlbGVtZW50LCAkb3B0aW9ucyk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUub3B0aW9uID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBvcHRpb247XHJcblxyXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcclxuICAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0Z3JvdXAnKTtcclxuICAgICAgb3B0aW9uLmxhYmVsID0gZGF0YS50ZXh0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XHJcblxyXG4gICAgICBpZiAob3B0aW9uLnRleHRDb250ZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBkYXRhLnRleHQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLmlubmVyVGV4dCA9IGRhdGEudGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLmlkKSB7XHJcbiAgICAgIG9wdGlvbi52YWx1ZSA9IGRhdGEuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuZGlzYWJsZWQpIHtcclxuICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xyXG4gICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLnRpdGxlKSB7XHJcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyICRvcHRpb24gPSAkKG9wdGlvbik7XHJcblxyXG4gICAgdmFyIG5vcm1hbGl6ZWREYXRhID0gdGhpcy5fbm9ybWFsaXplSXRlbShkYXRhKTtcclxuICAgIG5vcm1hbGl6ZWREYXRhLmVsZW1lbnQgPSBvcHRpb247XHJcblxyXG4gICAgLy8gT3ZlcnJpZGUgdGhlIG9wdGlvbidzIGRhdGEgd2l0aCB0aGUgY29tYmluZWQgZGF0YVxyXG4gICAgJC5kYXRhKG9wdGlvbiwgJ2RhdGEnLCBub3JtYWxpemVkRGF0YSk7XHJcblxyXG4gICAgcmV0dXJuICRvcHRpb247XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuaXRlbSA9IGZ1bmN0aW9uICgkb3B0aW9uKSB7XHJcbiAgICB2YXIgZGF0YSA9IHt9O1xyXG5cclxuICAgIGRhdGEgPSAkLmRhdGEoJG9wdGlvblswXSwgJ2RhdGEnKTtcclxuXHJcbiAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgkb3B0aW9uLmlzKCdvcHRpb24nKSkge1xyXG4gICAgICBkYXRhID0ge1xyXG4gICAgICAgIGlkOiAkb3B0aW9uLnZhbCgpLFxyXG4gICAgICAgIHRleHQ6ICRvcHRpb24udGV4dCgpLFxyXG4gICAgICAgIGRpc2FibGVkOiAkb3B0aW9uLnByb3AoJ2Rpc2FibGVkJyksXHJcbiAgICAgICAgc2VsZWN0ZWQ6ICRvcHRpb24ucHJvcCgnc2VsZWN0ZWQnKSxcclxuICAgICAgICB0aXRsZTogJG9wdGlvbi5wcm9wKCd0aXRsZScpXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKCRvcHRpb24uaXMoJ29wdGdyb3VwJykpIHtcclxuICAgICAgZGF0YSA9IHtcclxuICAgICAgICB0ZXh0OiAkb3B0aW9uLnByb3AoJ2xhYmVsJyksXHJcbiAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgIHRpdGxlOiAkb3B0aW9uLnByb3AoJ3RpdGxlJylcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHZhciAkY2hpbGRyZW4gPSAkb3B0aW9uLmNoaWxkcmVuKCdvcHRpb24nKTtcclxuICAgICAgdmFyIGNoaWxkcmVuID0gW107XHJcblxyXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICRjaGlsZHJlbi5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIHZhciAkY2hpbGQgPSAkKCRjaGlsZHJlbltjXSk7XHJcblxyXG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuaXRlbSgkY2hpbGQpO1xyXG5cclxuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGF0YS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgfVxyXG5cclxuICAgIGRhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xyXG4gICAgZGF0YS5lbGVtZW50ID0gJG9wdGlvblswXTtcclxuXHJcbiAgICAkLmRhdGEoJG9wdGlvblswXSwgJ2RhdGEnLCBkYXRhKTtcclxuXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9O1xyXG5cclxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5fbm9ybWFsaXplSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICBpZiAoISQuaXNQbGFpbk9iamVjdChpdGVtKSkge1xyXG4gICAgICBpdGVtID0ge1xyXG4gICAgICAgIGlkOiBpdGVtLFxyXG4gICAgICAgIHRleHQ6IGl0ZW1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpdGVtID0gJC5leHRlbmQoe30sIHtcclxuICAgICAgdGV4dDogJydcclxuICAgIH0sIGl0ZW0pO1xyXG5cclxuICAgIHZhciBkZWZhdWx0cyA9IHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGl0ZW0uaWQgIT0gbnVsbCkge1xyXG4gICAgICBpdGVtLmlkID0gaXRlbS5pZC50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtLnRleHQgIT0gbnVsbCkge1xyXG4gICAgICBpdGVtLnRleHQgPSBpdGVtLnRleHQudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS5fcmVzdWx0SWQgPT0gbnVsbCAmJiBpdGVtLmlkICYmIHRoaXMuY29udGFpbmVyICE9IG51bGwpIHtcclxuICAgICAgaXRlbS5fcmVzdWx0SWQgPSB0aGlzLmdlbmVyYXRlUmVzdWx0SWQodGhpcy5jb250YWluZXIsIGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIGl0ZW0pO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm1hdGNoZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBkYXRhKSB7XHJcbiAgICB2YXIgbWF0Y2hlciA9IHRoaXMub3B0aW9ucy5nZXQoJ21hdGNoZXInKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBTZWxlY3RBZGFwdGVyO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9hcnJheScsW1xyXG4gICcuL3NlbGVjdCcsXHJcbiAgJy4uL3V0aWxzJyxcclxuICAnanF1ZXJ5J1xyXG5dLCBmdW5jdGlvbiAoU2VsZWN0QWRhcHRlciwgVXRpbHMsICQpIHtcclxuICBmdW5jdGlvbiBBcnJheUFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZ2V0KCdkYXRhJykgfHwgW107XHJcblxyXG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLmFkZE9wdGlvbnModGhpcy5jb252ZXJ0VG9PcHRpb25zKGRhdGEpKTtcclxuICB9XHJcblxyXG4gIFV0aWxzLkV4dGVuZChBcnJheUFkYXB0ZXIsIFNlbGVjdEFkYXB0ZXIpO1xyXG5cclxuICBBcnJheUFkYXB0ZXIucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICB2YXIgJG9wdGlvbiA9IHRoaXMuJGVsZW1lbnQuZmluZCgnb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uIChpLCBlbG0pIHtcclxuICAgICAgcmV0dXJuIGVsbS52YWx1ZSA9PSBkYXRhLmlkLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoJG9wdGlvbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGRhdGEpO1xyXG5cclxuICAgICAgdGhpcy5hZGRPcHRpb25zKCRvcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcywgZGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5jb252ZXJ0VG9PcHRpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICB2YXIgJGV4aXN0aW5nID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKTtcclxuICAgIHZhciBleGlzdGluZ0lkcyA9ICRleGlzdGluZy5tYXAoZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gc2VsZi5pdGVtKCQodGhpcykpLmlkO1xyXG4gICAgfSkuZ2V0KCk7XHJcblxyXG4gICAgdmFyICRvcHRpb25zID0gW107XHJcblxyXG4gICAgLy8gRmlsdGVyIG91dCBhbGwgaXRlbXMgZXhjZXB0IGZvciB0aGUgb25lIHBhc3NlZCBpbiB0aGUgYXJndW1lbnRcclxuICAgIGZ1bmN0aW9uIG9ubHlJdGVtIChpdGVtKSB7XHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT0gaXRlbS5pZDtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGFbZF0pO1xyXG5cclxuICAgICAgLy8gU2tpcCBpdGVtcyB3aGljaCB3ZXJlIHByZS1sb2FkZWQsIG9ubHkgbWVyZ2UgdGhlIGRhdGFcclxuICAgICAgaWYgKCQuaW5BcnJheShpdGVtLmlkLCBleGlzdGluZ0lkcykgPj0gMCkge1xyXG4gICAgICAgIHZhciAkZXhpc3RpbmdPcHRpb24gPSAkZXhpc3RpbmcuZmlsdGVyKG9ubHlJdGVtKGl0ZW0pKTtcclxuXHJcbiAgICAgICAgdmFyIGV4aXN0aW5nRGF0YSA9IHRoaXMuaXRlbSgkZXhpc3RpbmdPcHRpb24pO1xyXG4gICAgICAgIHZhciBuZXdEYXRhID0gJC5leHRlbmQodHJ1ZSwge30sIGl0ZW0sIGV4aXN0aW5nRGF0YSk7XHJcblxyXG4gICAgICAgIHZhciAkbmV3T3B0aW9uID0gdGhpcy5vcHRpb24obmV3RGF0YSk7XHJcblxyXG4gICAgICAgICRleGlzdGluZ09wdGlvbi5yZXBsYWNlV2l0aCgkbmV3T3B0aW9uKTtcclxuXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgIHZhciAkY2hpbGRyZW4gPSB0aGlzLmNvbnZlcnRUb09wdGlvbnMoaXRlbS5jaGlsZHJlbik7XHJcblxyXG4gICAgICAgIFV0aWxzLmFwcGVuZE1hbnkoJG9wdGlvbiwgJGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJG9wdGlvbnMucHVzaCgkb3B0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJG9wdGlvbnM7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIEFycmF5QWRhcHRlcjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYWpheCcsW1xyXG4gICcuL2FycmF5JyxcclxuICAnLi4vdXRpbHMnLFxyXG4gICdqcXVlcnknXHJcbl0sIGZ1bmN0aW9uIChBcnJheUFkYXB0ZXIsIFV0aWxzLCAkKSB7XHJcbiAgZnVuY3Rpb24gQWpheEFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmFqYXhPcHRpb25zID0gdGhpcy5fYXBwbHlEZWZhdWx0cyhvcHRpb25zLmdldCgnYWpheCcpKTtcclxuXHJcbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5wcm9jZXNzUmVzdWx0cyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIEFqYXhBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIFV0aWxzLkV4dGVuZChBamF4QWRhcHRlciwgQXJyYXlBZGFwdGVyKTtcclxuXHJcbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLl9hcHBseURlZmF1bHRzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgIHZhciBkZWZhdWx0cyA9IHtcclxuICAgICAgZGF0YTogZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiAkLmV4dGVuZCh7fSwgcGFyYW1zLCB7XHJcbiAgICAgICAgICBxOiBwYXJhbXMudGVybVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uIChwYXJhbXMsIHN1Y2Nlc3MsIGZhaWx1cmUpIHtcclxuICAgICAgICB2YXIgJHJlcXVlc3QgPSAkLmFqYXgocGFyYW1zKTtcclxuXHJcbiAgICAgICAgJHJlcXVlc3QudGhlbihzdWNjZXNzKTtcclxuICAgICAgICAkcmVxdWVzdC5mYWlsKGZhaWx1cmUpO1xyXG5cclxuICAgICAgICByZXR1cm4gJHJlcXVlc3Q7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBkZWZhdWx0cywgb3B0aW9ucywgdHJ1ZSk7XHJcbiAgfTtcclxuXHJcbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLnByb2Nlc3NSZXN1bHRzID0gZnVuY3Rpb24gKHJlc3VsdHMpIHtcclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH07XHJcblxyXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XHJcbiAgICB2YXIgbWF0Y2hlcyA9IFtdO1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGlmICh0aGlzLl9yZXF1ZXN0ICE9IG51bGwpIHtcclxuICAgICAgLy8gSlNPTlAgcmVxdWVzdHMgY2Fubm90IGFsd2F5cyBiZSBhYm9ydGVkXHJcbiAgICAgIGlmICgkLmlzRnVuY3Rpb24odGhpcy5fcmVxdWVzdC5hYm9ydCkpIHtcclxuICAgICAgICB0aGlzLl9yZXF1ZXN0LmFib3J0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3JlcXVlc3QgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBvcHRpb25zID0gJC5leHRlbmQoe1xyXG4gICAgICB0eXBlOiAnR0VUJ1xyXG4gICAgfSwgdGhpcy5hamF4T3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsLmNhbGwodGhpcy4kZWxlbWVudCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBvcHRpb25zLmRhdGEgPSBvcHRpb25zLmRhdGEuY2FsbCh0aGlzLiRlbGVtZW50LCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHJlcXVlc3QgKCkge1xyXG4gICAgICB2YXIgJHJlcXVlc3QgPSBvcHRpb25zLnRyYW5zcG9ydChvcHRpb25zLCBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHZhciByZXN1bHRzID0gc2VsZi5wcm9jZXNzUmVzdWx0cyhkYXRhLCBwYXJhbXMpO1xyXG5cclxuICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XHJcbiAgICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzcG9uc2UgaW5jbHVkZWQgYSBgcmVzdWx0c2Aga2V5LlxyXG4gICAgICAgICAgaWYgKCFyZXN1bHRzIHx8ICFyZXN1bHRzLnJlc3VsdHMgfHwgISQuaXNBcnJheShyZXN1bHRzLnJlc3VsdHMpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgJ1NlbGVjdDI6IFRoZSBBSkFYIHJlc3VsdHMgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgaW4gdGhlICcgK1xyXG4gICAgICAgICAgICAgICdgcmVzdWx0c2Aga2V5IG9mIHRoZSByZXNwb25zZS4nXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTtcclxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIEF0dGVtcHQgdG8gZGV0ZWN0IGlmIGEgcmVxdWVzdCB3YXMgYWJvcnRlZFxyXG4gICAgICAgIC8vIE9ubHkgd29ya3MgaWYgdGhlIHRyYW5zcG9ydCBleHBvc2VzIGEgc3RhdHVzIHByb3BlcnR5XHJcbiAgICAgICAgaWYgKCRyZXF1ZXN0LnN0YXR1cyAmJiAkcmVxdWVzdC5zdGF0dXMgPT09ICcwJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XHJcbiAgICAgICAgICBtZXNzYWdlOiAnZXJyb3JMb2FkaW5nJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHNlbGYuX3JlcXVlc3QgPSAkcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5kZWxheSAmJiBwYXJhbXMudGVybSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLl9xdWVyeVRpbWVvdXQpIHtcclxuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3F1ZXJ5VGltZW91dCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3F1ZXJ5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KHJlcXVlc3QsIHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVxdWVzdCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiBBamF4QWRhcHRlcjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvdGFncycsW1xyXG4gICdqcXVlcnknXHJcbl0sIGZ1bmN0aW9uICgkKSB7XHJcbiAgZnVuY3Rpb24gVGFncyAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgdmFyIHRhZ3MgPSBvcHRpb25zLmdldCgndGFncycpO1xyXG5cclxuICAgIHZhciBjcmVhdGVUYWcgPSBvcHRpb25zLmdldCgnY3JlYXRlVGFnJyk7XHJcblxyXG4gICAgaWYgKGNyZWF0ZVRhZyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVGFnID0gY3JlYXRlVGFnO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBpbnNlcnRUYWcgPSBvcHRpb25zLmdldCgnaW5zZXJ0VGFnJyk7XHJcblxyXG4gICAgaWYgKGluc2VydFRhZyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRUYWcgPSBpbnNlcnRUYWc7XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xyXG5cclxuICAgIGlmICgkLmlzQXJyYXkodGFncykpIHtcclxuICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCB0YWdzLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgdmFyIHRhZyA9IHRhZ3NbdF07XHJcbiAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKHRhZyk7XHJcblxyXG4gICAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1lbnQuYXBwZW5kKCRvcHRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBUYWdzLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICB0aGlzLl9yZW1vdmVPbGRUYWdzKCk7XHJcblxyXG4gICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwgfHwgcGFyYW1zLnBhZ2UgIT0gbnVsbCkge1xyXG4gICAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHdyYXBwZXIgKG9iaiwgY2hpbGQpIHtcclxuICAgICAgdmFyIGRhdGEgPSBvYmoucmVzdWx0cztcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBvcHRpb24gPSBkYXRhW2ldO1xyXG5cclxuICAgICAgICB2YXIgY2hlY2tDaGlsZHJlbiA9IChcclxuICAgICAgICAgIG9wdGlvbi5jaGlsZHJlbiAhPSBudWxsICYmXHJcbiAgICAgICAgICAhd3JhcHBlcih7XHJcbiAgICAgICAgICAgIHJlc3VsdHM6IG9wdGlvbi5jaGlsZHJlblxyXG4gICAgICAgICAgfSwgdHJ1ZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB2YXIgY2hlY2tUZXh0ID0gb3B0aW9uLnRleHQgPT09IHBhcmFtcy50ZXJtO1xyXG5cclxuICAgICAgICBpZiAoY2hlY2tUZXh0IHx8IGNoZWNrQ2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChjaGlsZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgb2JqLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgY2FsbGJhY2sob2JqKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY2hpbGQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHRhZyA9IHNlbGYuY3JlYXRlVGFnKHBhcmFtcyk7XHJcblxyXG4gICAgICBpZiAodGFnICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgJG9wdGlvbiA9IHNlbGYub3B0aW9uKHRhZyk7XHJcbiAgICAgICAgJG9wdGlvbi5hdHRyKCdkYXRhLXNlbGVjdDItdGFnJywgdHJ1ZSk7XHJcblxyXG4gICAgICAgIHNlbGYuYWRkT3B0aW9ucyhbJG9wdGlvbl0pO1xyXG5cclxuICAgICAgICBzZWxmLmluc2VydFRhZyhkYXRhLCB0YWcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBvYmoucmVzdWx0cyA9IGRhdGE7XHJcblxyXG4gICAgICBjYWxsYmFjayhvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgd3JhcHBlcik7XHJcbiAgfTtcclxuXHJcbiAgVGFncy5wcm90b3R5cGUuY3JlYXRlVGFnID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zKSB7XHJcbiAgICB2YXIgdGVybSA9ICQudHJpbShwYXJhbXMudGVybSk7XHJcblxyXG4gICAgaWYgKHRlcm0gPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlkOiB0ZXJtLFxyXG4gICAgICB0ZXh0OiB0ZXJtXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIFRhZ3MucHJvdG90eXBlLmluc2VydFRhZyA9IGZ1bmN0aW9uIChfLCBkYXRhLCB0YWcpIHtcclxuICAgIGRhdGEudW5zaGlmdCh0YWcpO1xyXG4gIH07XHJcblxyXG4gIFRhZ3MucHJvdG90eXBlLl9yZW1vdmVPbGRUYWdzID0gZnVuY3Rpb24gKF8pIHtcclxuICAgIHZhciB0YWcgPSB0aGlzLl9sYXN0VGFnO1xyXG5cclxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnb3B0aW9uW2RhdGEtc2VsZWN0Mi10YWddJyk7XHJcblxyXG4gICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAkKHRoaXMpLnJlbW92ZSgpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIFRhZ3M7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3Rva2VuaXplcicsW1xyXG4gICdqcXVlcnknXHJcbl0sIGZ1bmN0aW9uICgkKSB7XHJcbiAgZnVuY3Rpb24gVG9rZW5pemVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB2YXIgdG9rZW5pemVyID0gb3B0aW9ucy5nZXQoJ3Rva2VuaXplcicpO1xyXG5cclxuICAgIGlmICh0b2tlbml6ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRva2VuaXplciA9IHRva2VuaXplcjtcclxuICAgIH1cclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBUb2tlbml6ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XHJcblxyXG4gICAgdGhpcy4kc2VhcmNoID0gIGNvbnRhaW5lci5kcm9wZG93bi4kc2VhcmNoIHx8IGNvbnRhaW5lci5zZWxlY3Rpb24uJHNlYXJjaCB8fFxyXG4gICAgICAkY29udGFpbmVyLmZpbmQoJy5zZWxlY3QyLXNlYXJjaF9fZmllbGQnKTtcclxuICB9O1xyXG5cclxuICBUb2tlbml6ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFuZFNlbGVjdCAoZGF0YSkge1xyXG4gICAgICAvLyBOb3JtYWxpemUgdGhlIGRhdGEgb2JqZWN0IHNvIHdlIGNhbiB1c2UgaXQgZm9yIGNoZWNrc1xyXG4gICAgICB2YXIgaXRlbSA9IHNlbGYuX25vcm1hbGl6ZUl0ZW0oZGF0YSk7XHJcblxyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBvYmplY3QgYWxyZWFkeSBleGlzdHMgYXMgYSB0YWdcclxuICAgICAgLy8gU2VsZWN0IGl0IGlmIGl0IGRvZXNuJ3RcclxuICAgICAgdmFyICRleGlzdGluZ09wdGlvbnMgPSBzZWxmLiRlbGVtZW50LmZpbmQoJ29wdGlvbicpLmZpbHRlcihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT09IGl0ZW0uaWQ7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gSWYgYW4gZXhpc3Rpbmcgb3B0aW9uIHdhc24ndCBmb3VuZCBmb3IgaXQsIGNyZWF0ZSB0aGUgb3B0aW9uXHJcbiAgICAgIGlmICghJGV4aXN0aW5nT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICB2YXIgJG9wdGlvbiA9IHNlbGYub3B0aW9uKGl0ZW0pO1xyXG4gICAgICAgICRvcHRpb24uYXR0cignZGF0YS1zZWxlY3QyLXRhZycsIHRydWUpO1xyXG5cclxuICAgICAgICBzZWxmLl9yZW1vdmVPbGRUYWdzKCk7XHJcbiAgICAgICAgc2VsZi5hZGRPcHRpb25zKFskb3B0aW9uXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlbGVjdCB0aGUgaXRlbSwgbm93IHRoYXQgd2Uga25vdyB0aGVyZSBpcyBhbiBvcHRpb24gZm9yIGl0XHJcbiAgICAgIHNlbGVjdChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzZWxlY3QgKGRhdGEpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3QnLCB7XHJcbiAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xyXG5cclxuICAgIHZhciB0b2tlbkRhdGEgPSB0aGlzLnRva2VuaXplcihwYXJhbXMsIHRoaXMub3B0aW9ucywgY3JlYXRlQW5kU2VsZWN0KTtcclxuXHJcbiAgICBpZiAodG9rZW5EYXRhLnRlcm0gIT09IHBhcmFtcy50ZXJtKSB7XHJcbiAgICAgIC8vIFJlcGxhY2UgdGhlIHNlYXJjaCB0ZXJtIGlmIHdlIGhhdmUgdGhlIHNlYXJjaCBib3hcclxuICAgICAgaWYgKHRoaXMuJHNlYXJjaC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLiRzZWFyY2gudmFsKHRva2VuRGF0YS50ZXJtKTtcclxuICAgICAgICB0aGlzLiRzZWFyY2guZm9jdXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGFyYW1zLnRlcm0gPSB0b2tlbkRhdGEudGVybTtcclxuICAgIH1cclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcclxuICB9O1xyXG5cclxuICBUb2tlbml6ZXIucHJvdG90eXBlLnRva2VuaXplciA9IGZ1bmN0aW9uIChfLCBwYXJhbXMsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XHJcbiAgICB2YXIgc2VwYXJhdG9ycyA9IG9wdGlvbnMuZ2V0KCd0b2tlblNlcGFyYXRvcnMnKSB8fCBbXTtcclxuICAgIHZhciB0ZXJtID0gcGFyYW1zLnRlcm07XHJcbiAgICB2YXIgaSA9IDA7XHJcblxyXG4gICAgdmFyIGNyZWF0ZVRhZyA9IHRoaXMuY3JlYXRlVGFnIHx8IGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpZDogcGFyYW1zLnRlcm0sXHJcbiAgICAgICAgdGV4dDogcGFyYW1zLnRlcm1cclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgd2hpbGUgKGkgPCB0ZXJtLmxlbmd0aCkge1xyXG4gICAgICB2YXIgdGVybUNoYXIgPSB0ZXJtW2ldO1xyXG5cclxuICAgICAgaWYgKCQuaW5BcnJheSh0ZXJtQ2hhciwgc2VwYXJhdG9ycykgPT09IC0xKSB7XHJcbiAgICAgICAgaSsrO1xyXG5cclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHBhcnQgPSB0ZXJtLnN1YnN0cigwLCBpKTtcclxuICAgICAgdmFyIHBhcnRQYXJhbXMgPSAkLmV4dGVuZCh7fSwgcGFyYW1zLCB7XHJcbiAgICAgICAgdGVybTogcGFydFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHZhciBkYXRhID0gY3JlYXRlVGFnKHBhcnRQYXJhbXMpO1xyXG5cclxuICAgICAgaWYgKGRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgIGkrKztcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FsbGJhY2soZGF0YSk7XHJcblxyXG4gICAgICAvLyBSZXNldCB0aGUgdGVybSB0byBub3QgaW5jbHVkZSB0aGUgdG9rZW5pemVkIHBvcnRpb25cclxuICAgICAgdGVybSA9IHRlcm0uc3Vic3RyKGkgKyAxKSB8fCAnJztcclxuICAgICAgaSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGVybTogdGVybVxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gVG9rZW5pemVyO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgnLFtcclxuXHJcbl0sIGZ1bmN0aW9uICgpIHtcclxuICBmdW5jdGlvbiBNaW5pbXVtSW5wdXRMZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMubWluaW11bUlucHV0TGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1JbnB1dExlbmd0aCcpO1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIE1pbmltdW1JbnB1dExlbmd0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XHJcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xyXG5cclxuICAgIGlmIChwYXJhbXMudGVybS5sZW5ndGggPCB0aGlzLm1pbmltdW1JbnB1dExlbmd0aCkge1xyXG4gICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcclxuICAgICAgICBtZXNzYWdlOiAnaW5wdXRUb29TaG9ydCcsXHJcbiAgICAgICAgYXJnczoge1xyXG4gICAgICAgICAgbWluaW11bTogdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsXHJcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLnRlcm0sXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIE1pbmltdW1JbnB1dExlbmd0aDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoJyxbXHJcblxyXG5dLCBmdW5jdGlvbiAoKSB7XHJcbiAgZnVuY3Rpb24gTWF4aW11bUlucHV0TGVuZ3RoIChkZWNvcmF0ZWQsICRlLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLm1heGltdW1JbnB1dExlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtSW5wdXRMZW5ndGgnKTtcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBNYXhpbXVtSW5wdXRMZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xyXG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcclxuXHJcbiAgICBpZiAodGhpcy5tYXhpbXVtSW5wdXRMZW5ndGggPiAwICYmXHJcbiAgICAgICAgcGFyYW1zLnRlcm0ubGVuZ3RoID4gdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgpIHtcclxuICAgICAgdGhpcy50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XHJcbiAgICAgICAgbWVzc2FnZTogJ2lucHV0VG9vTG9uZycsXHJcbiAgICAgICAgYXJnczoge1xyXG4gICAgICAgICAgbWF4aW11bTogdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgsXHJcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLnRlcm0sXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIE1heGltdW1JbnB1dExlbmd0aDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsW1xyXG5cclxuXSwgZnVuY3Rpb24gKCl7XHJcbiAgZnVuY3Rpb24gTWF4aW11bVNlbGVjdGlvbkxlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xyXG4gICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21heGltdW1TZWxlY3Rpb25MZW5ndGgnKTtcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9XHJcbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XHJcbiAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcclxuICAgICAgICB2YXIgY291bnQgPSBjdXJyZW50RGF0YSAhPSBudWxsID8gY3VycmVudERhdGEubGVuZ3RoIDogMDtcclxuICAgICAgICBpZiAoc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgY291bnQgPj0gc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoKSB7XHJcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcclxuICAgICAgICAgICAgbWVzc2FnZTogJ21heGltdW1TZWxlY3RlZCcsXHJcbiAgICAgICAgICAgIGFyZ3M6IHtcclxuICAgICAgICAgICAgICBtYXhpbXVtOiBzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGhcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlY29yYXRlZC5jYWxsKHNlbGYsIHBhcmFtcywgY2FsbGJhY2spO1xyXG4gICAgICB9KTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gTWF4aW11bVNlbGVjdGlvbkxlbmd0aDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duJyxbXHJcbiAgJ2pxdWVyeScsXHJcbiAgJy4vdXRpbHMnXHJcbl0sIGZ1bmN0aW9uICgkLCBVdGlscykge1xyXG4gIGZ1bmN0aW9uIERyb3Bkb3duICgkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICBEcm9wZG93bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcclxuICB9XHJcblxyXG4gIFV0aWxzLkV4dGVuZChEcm9wZG93biwgVXRpbHMuT2JzZXJ2YWJsZSk7XHJcblxyXG4gIERyb3Bkb3duLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgJGRyb3Bkb3duID0gJChcclxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1kcm9wZG93blwiPicgK1xyXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItcmVzdWx0c1wiPjwvc3Bhbj4nICtcclxuICAgICAgJzwvc3Bhbj4nXHJcbiAgICApO1xyXG5cclxuICAgICRkcm9wZG93bi5hdHRyKCdkaXInLCB0aGlzLm9wdGlvbnMuZ2V0KCdkaXInKSk7XHJcblxyXG4gICAgdGhpcy4kZHJvcGRvd24gPSAkZHJvcGRvd247XHJcblxyXG4gICAgcmV0dXJuICRkcm9wZG93bjtcclxuICB9O1xyXG5cclxuICBEcm9wZG93bi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXHJcbiAgfTtcclxuXHJcbiAgRHJvcGRvd24ucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRkcm9wZG93biwgJGNvbnRhaW5lcikge1xyXG4gICAgLy8gU2hvdWxkIGJlIGltcGxtZW50ZWQgaW4gc3ViY2xhc3Nlc1xyXG4gIH07XHJcblxyXG4gIERyb3Bkb3duLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gUmVtb3ZlIHRoZSBkcm9wZG93biBmcm9tIHRoZSBET01cclxuICAgIHRoaXMuJGRyb3Bkb3duLnJlbW92ZSgpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBEcm9wZG93bjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3NlYXJjaCcsW1xyXG4gICdqcXVlcnknLFxyXG4gICcuLi91dGlscydcclxuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XHJcbiAgZnVuY3Rpb24gU2VhcmNoICgpIHsgfVxyXG5cclxuICBTZWFyY2gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcclxuICAgIHZhciAkcmVuZGVyZWQgPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcclxuXHJcbiAgICB2YXIgJHNlYXJjaCA9ICQoXHJcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93blwiPicgK1xyXG4gICAgICAgICc8aW5wdXQgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIiB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXHJcbiAgICAgICAgJyBhdXRvY29tcGxldGU9XCJvZmZcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCInICtcclxuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJ0ZXh0Ym94XCIgLz4nICtcclxuICAgICAgJzwvc3Bhbj4nXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XHJcbiAgICB0aGlzLiRzZWFyY2ggPSAkc2VhcmNoLmZpbmQoJ2lucHV0Jyk7XHJcblxyXG4gICAgJHJlbmRlcmVkLnByZXBlbmQoJHNlYXJjaCk7XHJcblxyXG4gICAgcmV0dXJuICRyZW5kZXJlZDtcclxuICB9O1xyXG5cclxuICBTZWFyY2gucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xyXG5cclxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XHJcblxyXG4gICAgICBzZWxmLl9rZXlVcFByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XHJcbiAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBkb3VibGUtdHJpZ2dlcmluZyBvZiBldmVudHMgZm9yIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnRcclxuICAgIC8vIGJvdGggdGhlIGBrZXl1cGAgYW5kIGBpbnB1dGAgZXZlbnRzLlxyXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdpbnB1dCcsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgLy8gVW5iaW5kIHRoZSBkdXBsaWNhdGVkIGBrZXl1cGAgZXZlbnRcclxuICAgICAgJCh0aGlzKS5vZmYoJ2tleXVwJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRzZWFyY2gub24oJ2tleXVwIGlucHV0JywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICBzZWxmLmhhbmRsZVNlYXJjaChldnQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCAwKTtcclxuXHJcbiAgICAgIHNlbGYuJHNlYXJjaC5mb2N1cygpO1xyXG5cclxuICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNlbGYuJHNlYXJjaC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCd0YWJpbmRleCcsIC0xKTtcclxuXHJcbiAgICAgIHNlbGYuJHNlYXJjaC52YWwoJycpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xyXG4gICAgICAgIHNlbGYuJHNlYXJjaC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YWxsJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBpZiAocGFyYW1zLnF1ZXJ5LnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMucXVlcnkudGVybSA9PT0gJycpIHtcclxuICAgICAgICB2YXIgc2hvd1NlYXJjaCA9IHNlbGYuc2hvd1NlYXJjaChwYXJhbXMpO1xyXG5cclxuICAgICAgICBpZiAoc2hvd1NlYXJjaCkge1xyXG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdzZWxlY3QyLXNlYXJjaC0taGlkZScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWxmLiRzZWFyY2hDb250YWluZXIuYWRkQ2xhc3MoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBTZWFyY2gucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uIChldnQpIHtcclxuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcclxuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xyXG5cclxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcclxuICAgICAgICB0ZXJtOiBpbnB1dFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9rZXlVcFByZXZlbnRlZCA9IGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIFNlYXJjaC5wcm90b3R5cGUuc2hvd1NlYXJjaCA9IGZ1bmN0aW9uIChfLCBwYXJhbXMpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBTZWFyY2g7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXInLFtcclxuXHJcbl0sIGZ1bmN0aW9uICgpIHtcclxuICBmdW5jdGlvbiBIaWRlUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihvcHRpb25zLmdldCgncGxhY2Vob2xkZXInKSk7XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKTtcclxuICB9XHJcblxyXG4gIEhpZGVQbGFjZWhvbGRlci5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xyXG4gICAgZGF0YS5yZXN1bHRzID0gdGhpcy5yZW1vdmVQbGFjZWhvbGRlcihkYXRhLnJlc3VsdHMpO1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xyXG4gIH07XHJcblxyXG4gIEhpZGVQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcclxuICAgIGlmICh0eXBlb2YgcGxhY2Vob2xkZXIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xyXG4gICAgICAgIGlkOiAnJyxcclxuICAgICAgICB0ZXh0OiBwbGFjZWhvbGRlclxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9O1xyXG5cclxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLnJlbW92ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcclxuICAgIHZhciBtb2RpZmllZERhdGEgPSBkYXRhLnNsaWNlKDApO1xyXG5cclxuICAgIGZvciAodmFyIGQgPSBkYXRhLmxlbmd0aCAtIDE7IGQgPj0gMDsgZC0tKSB7XHJcbiAgICAgIHZhciBpdGVtID0gZGF0YVtkXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgbW9kaWZpZWREYXRhLnNwbGljZShkLCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtb2RpZmllZERhdGE7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIEhpZGVQbGFjZWhvbGRlcjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2luZmluaXRlU2Nyb2xsJyxbXHJcbiAgJ2pxdWVyeSdcclxuXSwgZnVuY3Rpb24gKCQpIHtcclxuICBmdW5jdGlvbiBJbmZpbml0ZVNjcm9sbCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcclxuICAgIHRoaXMubGFzdFBhcmFtcyA9IHt9O1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XHJcblxyXG4gICAgdGhpcy4kbG9hZGluZ01vcmUgPSB0aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XHJcbiAgICB0aGlzLiRsb2FkaW5nTW9yZS5yZW1vdmUoKTtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dMb2FkaW5nTW9yZShkYXRhKSkge1xyXG4gICAgICB0aGlzLiRyZXN1bHRzLmFwcGVuZCh0aGlzLiRsb2FkaW5nTW9yZSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIHNlbGYubGFzdFBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBzZWxmLmxhc3RQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgIHNlbGYubG9hZGluZyA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRyZXN1bHRzLm9uKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBpc0xvYWRNb3JlVmlzaWJsZSA9ICQuY29udGFpbnMoXHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxyXG4gICAgICAgIHNlbGYuJGxvYWRpbmdNb3JlWzBdXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoc2VsZi5sb2FkaW5nIHx8ICFpc0xvYWRNb3JlVmlzaWJsZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArXHJcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5vdXRlckhlaWdodChmYWxzZSk7XHJcbiAgICAgIHZhciBsb2FkaW5nTW9yZU9mZnNldCA9IHNlbGYuJGxvYWRpbmdNb3JlLm9mZnNldCgpLnRvcCArXHJcbiAgICAgICAgc2VsZi4kbG9hZGluZ01vcmUub3V0ZXJIZWlnaHQoZmFsc2UpO1xyXG5cclxuICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgKyA1MCA+PSBsb2FkaW5nTW9yZU9mZnNldCkge1xyXG4gICAgICAgIHNlbGYubG9hZE1vcmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmxvYWRNb3JlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcGFyYW1zID0gJC5leHRlbmQoe30sIHtwYWdlOiAxfSwgdGhpcy5sYXN0UGFyYW1zKTtcclxuXHJcbiAgICBwYXJhbXMucGFnZSsrO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlcigncXVlcnk6YXBwZW5kJywgcGFyYW1zKTtcclxuICB9O1xyXG5cclxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuc2hvd0xvYWRpbmdNb3JlID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLnBhZ2luYXRpb24gJiYgZGF0YS5wYWdpbmF0aW9uLm1vcmU7XHJcbiAgfTtcclxuXHJcbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyICRvcHRpb24gPSAkKFxyXG4gICAgICAnPGxpICcgK1xyXG4gICAgICAnY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlXCInICtcclxuICAgICAgJ3JvbGU9XCJ0cmVlaXRlbVwiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI+PC9saT4nXHJcbiAgICApO1xyXG5cclxuICAgIHZhciBtZXNzYWdlID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdsb2FkaW5nTW9yZScpO1xyXG5cclxuICAgICRvcHRpb24uaHRtbChtZXNzYWdlKHRoaXMubGFzdFBhcmFtcykpO1xyXG5cclxuICAgIHJldHVybiAkb3B0aW9uO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBJbmZpbml0ZVNjcm9sbDtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFtcclxuICAnanF1ZXJ5JyxcclxuICAnLi4vdXRpbHMnXHJcbl0sIGZ1bmN0aW9uICgkLCBVdGlscykge1xyXG4gIGZ1bmN0aW9uIEF0dGFjaEJvZHkgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuJGRyb3Bkb3duUGFyZW50ID0gb3B0aW9ucy5nZXQoJ2Ryb3Bkb3duUGFyZW50JykgfHwgJChkb2N1bWVudC5ib2R5KTtcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdmFyIHNldHVwUmVzdWx0c0V2ZW50cyA9IGZhbHNlO1xyXG5cclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLl9zaG93RHJvcGRvd24oKTtcclxuICAgICAgc2VsZi5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XHJcblxyXG4gICAgICBpZiAoIXNldHVwUmVzdWx0c0V2ZW50cykge1xyXG4gICAgICAgIHNldHVwUmVzdWx0c0V2ZW50cyA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphbGwnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XHJcbiAgICAgICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xyXG4gICAgICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgc2VsZi5faGlkZURyb3Bkb3duKCk7XHJcbiAgICAgIHNlbGYuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlcihjb250YWluZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIub24oJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcclxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpO1xyXG4gIH07XHJcblxyXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgJGRyb3Bkb3duLCAkY29udGFpbmVyKSB7XHJcbiAgICAvLyBDbG9uZSBhbGwgb2YgdGhlIGNvbnRhaW5lciBjbGFzc2VzXHJcbiAgICAkZHJvcGRvd24uYXR0cignY2xhc3MnLCAkY29udGFpbmVyLmF0dHIoJ2NsYXNzJykpO1xyXG5cclxuICAgICRkcm9wZG93bi5yZW1vdmVDbGFzcygnc2VsZWN0MicpO1xyXG4gICAgJGRyb3Bkb3duLmFkZENsYXNzKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xyXG5cclxuICAgICRkcm9wZG93bi5jc3Moe1xyXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgdG9wOiAtOTk5OTk5XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xyXG4gIH07XHJcblxyXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcclxuICAgIHZhciAkY29udGFpbmVyID0gJCgnPHNwYW4+PC9zcGFuPicpO1xyXG5cclxuICAgIHZhciAkZHJvcGRvd24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcclxuICAgICRjb250YWluZXIuYXBwZW5kKCRkcm9wZG93bik7XHJcblxyXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIgPSAkY29udGFpbmVyO1xyXG5cclxuICAgIHJldHVybiAkY29udGFpbmVyO1xyXG4gIH07XHJcblxyXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9oaWRlRHJvcGRvd24gPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XHJcbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5kZXRhY2goKTtcclxuICB9O1xyXG5cclxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyID1cclxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XHJcbiAgICB2YXIgcmVzaXplRXZlbnQgPSAncmVzaXplLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcclxuICAgIHZhciBvcmllbnRhdGlvbkV2ZW50ID0gJ29yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcclxuXHJcbiAgICB2YXIgJHdhdGNoZXJzID0gdGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoVXRpbHMuaGFzU2Nyb2xsKTtcclxuICAgICR3YXRjaGVycy5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgJCh0aGlzKS5kYXRhKCdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicsIHtcclxuICAgICAgICB4OiAkKHRoaXMpLnNjcm9sbExlZnQoKSxcclxuICAgICAgICB5OiAkKHRoaXMpLnNjcm9sbFRvcCgpXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgJHdhdGNoZXJzLm9uKHNjcm9sbEV2ZW50LCBmdW5jdGlvbiAoZXYpIHtcclxuICAgICAgdmFyIHBvc2l0aW9uID0gJCh0aGlzKS5kYXRhKCdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicpO1xyXG4gICAgICAkKHRoaXMpLnNjcm9sbFRvcChwb3NpdGlvbi55KTtcclxuICAgIH0pO1xyXG5cclxuICAgICQod2luZG93KS5vbihzY3JvbGxFdmVudCArICcgJyArIHJlc2l6ZUV2ZW50ICsgJyAnICsgb3JpZW50YXRpb25FdmVudCxcclxuICAgICAgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xyXG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9XHJcbiAgICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lcikge1xyXG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XHJcbiAgICB2YXIgcmVzaXplRXZlbnQgPSAncmVzaXplLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcclxuICAgIHZhciBvcmllbnRhdGlvbkV2ZW50ID0gJ29yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcclxuXHJcbiAgICB2YXIgJHdhdGNoZXJzID0gdGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoVXRpbHMuaGFzU2Nyb2xsKTtcclxuICAgICR3YXRjaGVycy5vZmYoc2Nyb2xsRXZlbnQpO1xyXG5cclxuICAgICQod2luZG93KS5vZmYoc2Nyb2xsRXZlbnQgKyAnICcgKyByZXNpemVFdmVudCArICcgJyArIG9yaWVudGF0aW9uRXZlbnQpO1xyXG4gIH07XHJcblxyXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9wb3NpdGlvbkRyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyICR3aW5kb3cgPSAkKHdpbmRvdyk7XHJcblxyXG4gICAgdmFyIGlzQ3VycmVudGx5QWJvdmUgPSB0aGlzLiRkcm9wZG93bi5oYXNDbGFzcygnc2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUnKTtcclxuICAgIHZhciBpc0N1cnJlbnRseUJlbG93ID0gdGhpcy4kZHJvcGRvd24uaGFzQ2xhc3MoJ3NlbGVjdDItZHJvcGRvd24tLWJlbG93Jyk7XHJcblxyXG4gICAgdmFyIG5ld0RpcmVjdGlvbiA9IG51bGw7XHJcblxyXG4gICAgdmFyIG9mZnNldCA9IHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtcclxuXHJcbiAgICBvZmZzZXQuYm90dG9tID0gb2Zmc2V0LnRvcCArIHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSk7XHJcblxyXG4gICAgdmFyIGNvbnRhaW5lciA9IHtcclxuICAgICAgaGVpZ2h0OiB0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoZmFsc2UpXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnRhaW5lci50b3AgPSBvZmZzZXQudG9wO1xyXG4gICAgY29udGFpbmVyLmJvdHRvbSA9IG9mZnNldC50b3AgKyBjb250YWluZXIuaGVpZ2h0O1xyXG5cclxuICAgIHZhciBkcm9wZG93biA9IHtcclxuICAgICAgaGVpZ2h0OiB0aGlzLiRkcm9wZG93bi5vdXRlckhlaWdodChmYWxzZSlcclxuICAgIH07XHJcblxyXG4gICAgdmFyIHZpZXdwb3J0ID0ge1xyXG4gICAgICB0b3A6ICR3aW5kb3cuc2Nyb2xsVG9wKCksXHJcbiAgICAgIGJvdHRvbTogJHdpbmRvdy5zY3JvbGxUb3AoKSArICR3aW5kb3cuaGVpZ2h0KClcclxuICAgIH07XHJcblxyXG4gICAgdmFyIGVub3VnaFJvb21BYm92ZSA9IHZpZXdwb3J0LnRvcCA8IChvZmZzZXQudG9wIC0gZHJvcGRvd24uaGVpZ2h0KTtcclxuICAgIHZhciBlbm91Z2hSb29tQmVsb3cgPSB2aWV3cG9ydC5ib3R0b20gPiAob2Zmc2V0LmJvdHRvbSArIGRyb3Bkb3duLmhlaWdodCk7XHJcblxyXG4gICAgdmFyIGNzcyA9IHtcclxuICAgICAgbGVmdDogb2Zmc2V0LmxlZnQsXHJcbiAgICAgIHRvcDogY29udGFpbmVyLmJvdHRvbVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgcGFyZW50IGVsZW1lbnQgaXMgdG8gdXNlIGZvciBjYWxjaXVsYXRpbmcgdGhlIG9mZnNldFxyXG4gICAgdmFyICRvZmZzZXRQYXJlbnQgPSB0aGlzLiRkcm9wZG93blBhcmVudDtcclxuXHJcbiAgICAvLyBGb3Igc3RhdGljYWxseSBwb3NpdG9uZWQgZWxlbWVudHMsIHdlIG5lZWQgdG8gZ2V0IHRoZSBlbGVtZW50XHJcbiAgICAvLyB0aGF0IGlzIGRldGVybWluaW5nIHRoZSBvZmZzZXRcclxuICAgIGlmICgkb2Zmc2V0UGFyZW50LmNzcygncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcclxuICAgICAgJG9mZnNldFBhcmVudCA9ICRvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHBhcmVudE9mZnNldCA9ICRvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XHJcblxyXG4gICAgY3NzLnRvcCAtPSBwYXJlbnRPZmZzZXQudG9wO1xyXG4gICAgY3NzLmxlZnQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XHJcblxyXG4gICAgaWYgKCFpc0N1cnJlbnRseUFib3ZlICYmICFpc0N1cnJlbnRseUJlbG93KSB7XHJcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdiZWxvdyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYgZW5vdWdoUm9vbUFib3ZlICYmICFpc0N1cnJlbnRseUFib3ZlKSB7XHJcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdhYm92ZSc7XHJcbiAgICB9IGVsc2UgaWYgKCFlbm91Z2hSb29tQWJvdmUgJiYgZW5vdWdoUm9vbUJlbG93ICYmIGlzQ3VycmVudGx5QWJvdmUpIHtcclxuICAgICAgbmV3RGlyZWN0aW9uID0gJ2JlbG93JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobmV3RGlyZWN0aW9uID09ICdhYm92ZScgfHxcclxuICAgICAgKGlzQ3VycmVudGx5QWJvdmUgJiYgbmV3RGlyZWN0aW9uICE9PSAnYmVsb3cnKSkge1xyXG4gICAgICBjc3MudG9wID0gY29udGFpbmVyLnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBkcm9wZG93bi5oZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5ld0RpcmVjdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuJGRyb3Bkb3duXHJcbiAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyBzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZScpXHJcbiAgICAgICAgLmFkZENsYXNzKCdzZWxlY3QyLWRyb3Bkb3duLS0nICsgbmV3RGlyZWN0aW9uKTtcclxuICAgICAgdGhpcy4kY29udGFpbmVyXHJcbiAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cgc2VsZWN0Mi1jb250YWluZXItLWFib3ZlJylcclxuICAgICAgICAuYWRkQ2xhc3MoJ3NlbGVjdDItY29udGFpbmVyLS0nICsgbmV3RGlyZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5jc3MoY3NzKTtcclxuICB9O1xyXG5cclxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fcmVzaXplRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgY3NzID0ge1xyXG4gICAgICB3aWR0aDogdGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoZmFsc2UpICsgJ3B4J1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BdXRvV2lkdGgnKSkge1xyXG4gICAgICBjc3MubWluV2lkdGggPSBjc3Mud2lkdGg7XHJcbiAgICAgIGNzcy5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XHJcbiAgICAgIGNzcy53aWR0aCA9ICdhdXRvJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRkcm9wZG93bi5jc3MoY3NzKTtcclxuICB9O1xyXG5cclxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fc2hvd0Ryb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xyXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuYXBwZW5kVG8odGhpcy4kZHJvcGRvd25QYXJlbnQpO1xyXG5cclxuICAgIHRoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKTtcclxuICAgIHRoaXMuX3Jlc2l6ZURyb3Bkb3duKCk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIEF0dGFjaEJvZHk7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsW1xyXG5cclxuXSwgZnVuY3Rpb24gKCkge1xyXG4gIGZ1bmN0aW9uIGNvdW50UmVzdWx0cyAoZGF0YSkge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuXHJcbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcclxuICAgICAgdmFyIGl0ZW0gPSBkYXRhW2RdO1xyXG5cclxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICBjb3VudCArPSBjb3VudFJlc3VsdHMoaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xyXG4gICAgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA9IG9wdGlvbnMuZ2V0KCdtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcpO1xyXG5cclxuICAgIGlmICh0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIDwgMCkge1xyXG4gICAgICB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoID0gSW5maW5pdHk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKTtcclxuICB9XHJcblxyXG4gIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLnByb3RvdHlwZS5zaG93U2VhcmNoID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zKSB7XHJcbiAgICBpZiAoY291bnRSZXN1bHRzKHBhcmFtcy5kYXRhLnJlc3VsdHMpIDwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcyk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZScsW1xyXG5cclxuXSwgZnVuY3Rpb24gKCkge1xyXG4gIGZ1bmN0aW9uIFNlbGVjdE9uQ2xvc2UgKCkgeyB9XHJcblxyXG4gIFNlbGVjdE9uQ2xvc2UucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xyXG5cclxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIHNlbGYuX2hhbmRsZVNlbGVjdE9uQ2xvc2UocGFyYW1zKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdE9uQ2xvc2UucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RPbkNsb3NlID0gZnVuY3Rpb24gKF8sIHBhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZXZlbnQgPSBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQ7XHJcblxyXG4gICAgICAvLyBEb24ndCBzZWxlY3QgYW4gaXRlbSBpZiB0aGUgY2xvc2UgZXZlbnQgd2FzIHRyaWdnZXJlZCBmcm9tIGEgc2VsZWN0IG9yXHJcbiAgICAgIC8vIHVuc2VsZWN0IGV2ZW50XHJcbiAgICAgIGlmIChldmVudC5fdHlwZSA9PT0gJ3NlbGVjdCcgfHwgZXZlbnQuX3R5cGUgPT09ICd1bnNlbGVjdCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgJGhpZ2hsaWdodGVkUmVzdWx0cyA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XHJcblxyXG4gICAgLy8gT25seSBzZWxlY3QgaGlnaGxpZ2h0ZWQgcmVzdWx0c1xyXG4gICAgaWYgKCRoaWdobGlnaHRlZFJlc3VsdHMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRhdGEgPSAkaGlnaGxpZ2h0ZWRSZXN1bHRzLmRhdGEoJ2RhdGEnKTtcclxuXHJcbiAgICAvLyBEb24ndCByZS1zZWxlY3QgYWxyZWFkeSBzZWxlY3RlZCByZXN1bHRlXHJcbiAgICBpZiAoXHJcbiAgICAgIChkYXRhLmVsZW1lbnQgIT0gbnVsbCAmJiBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XHJcbiAgICAgIChkYXRhLmVsZW1lbnQgPT0gbnVsbCAmJiBkYXRhLnNlbGVjdGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyaWdnZXIoJ3NlbGVjdCcsIHtcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gU2VsZWN0T25DbG9zZTtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3QnLFtcclxuXHJcbl0sIGZ1bmN0aW9uICgpIHtcclxuICBmdW5jdGlvbiBDbG9zZU9uU2VsZWN0ICgpIHsgfVxyXG5cclxuICBDbG9zZU9uU2VsZWN0LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi5fc2VsZWN0VHJpZ2dlcmVkKGV2dCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICBzZWxmLl9zZWxlY3RUcmlnZ2VyZWQoZXZ0KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIENsb3NlT25TZWxlY3QucHJvdG90eXBlLl9zZWxlY3RUcmlnZ2VyZWQgPSBmdW5jdGlvbiAoXywgZXZ0KSB7XHJcbiAgICB2YXIgb3JpZ2luYWxFdmVudCA9IGV2dC5vcmlnaW5hbEV2ZW50O1xyXG5cclxuICAgIC8vIERvbid0IGNsb3NlIGlmIHRoZSBjb250cm9sIGtleSBpcyBiZWluZyBoZWxkXHJcbiAgICBpZiAob3JpZ2luYWxFdmVudCAmJiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7XHJcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnQsXHJcbiAgICAgIG9yaWdpbmFsU2VsZWN0MkV2ZW50OiBldnRcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBDbG9zZU9uU2VsZWN0O1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvaTE4bi9lbicsW10sZnVuY3Rpb24gKCkge1xyXG4gIC8vIEVuZ2xpc2hcclxuICByZXR1cm4ge1xyXG4gICAgZXJyb3JMb2FkaW5nOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAnVGhlIHJlc3VsdHMgY291bGQgbm90IGJlIGxvYWRlZC4nO1xyXG4gICAgfSxcclxuICAgIGlucHV0VG9vTG9uZzogZnVuY3Rpb24gKGFyZ3MpIHtcclxuICAgICAgdmFyIG92ZXJDaGFycyA9IGFyZ3MuaW5wdXQubGVuZ3RoIC0gYXJncy5tYXhpbXVtO1xyXG5cclxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGRlbGV0ZSAnICsgb3ZlckNoYXJzICsgJyBjaGFyYWN0ZXInO1xyXG5cclxuICAgICAgaWYgKG92ZXJDaGFycyAhPSAxKSB7XHJcbiAgICAgICAgbWVzc2FnZSArPSAncyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfSxcclxuICAgIGlucHV0VG9vU2hvcnQ6IGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgIHZhciByZW1haW5pbmdDaGFycyA9IGFyZ3MubWluaW11bSAtIGFyZ3MuaW5wdXQubGVuZ3RoO1xyXG5cclxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGVudGVyICcgKyByZW1haW5pbmdDaGFycyArICcgb3IgbW9yZSBjaGFyYWN0ZXJzJztcclxuXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfSxcclxuICAgIGxvYWRpbmdNb3JlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAnTG9hZGluZyBtb3JlIHJlc3VsdHPigKYnO1xyXG4gICAgfSxcclxuICAgIG1heGltdW1TZWxlY3RlZDogZnVuY3Rpb24gKGFyZ3MpIHtcclxuICAgICAgdmFyIG1lc3NhZ2UgPSAnWW91IGNhbiBvbmx5IHNlbGVjdCAnICsgYXJncy5tYXhpbXVtICsgJyBpdGVtJztcclxuXHJcbiAgICAgIGlmIChhcmdzLm1heGltdW0gIT0gMSkge1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gJ3MnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH0sXHJcbiAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICdObyByZXN1bHRzIGZvdW5kJztcclxuICAgIH0sXHJcbiAgICBzZWFyY2hpbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICdTZWFyY2hpbmfigKYnO1xyXG4gICAgfVxyXG4gIH07XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kZWZhdWx0cycsW1xyXG4gICdqcXVlcnknLFxyXG4gICdyZXF1aXJlJyxcclxuXHJcbiAgJy4vcmVzdWx0cycsXHJcblxyXG4gICcuL3NlbGVjdGlvbi9zaW5nbGUnLFxyXG4gICcuL3NlbGVjdGlvbi9tdWx0aXBsZScsXHJcbiAgJy4vc2VsZWN0aW9uL3BsYWNlaG9sZGVyJyxcclxuICAnLi9zZWxlY3Rpb24vYWxsb3dDbGVhcicsXHJcbiAgJy4vc2VsZWN0aW9uL3NlYXJjaCcsXHJcbiAgJy4vc2VsZWN0aW9uL2V2ZW50UmVsYXknLFxyXG5cclxuICAnLi91dGlscycsXHJcbiAgJy4vdHJhbnNsYXRpb24nLFxyXG4gICcuL2RpYWNyaXRpY3MnLFxyXG5cclxuICAnLi9kYXRhL3NlbGVjdCcsXHJcbiAgJy4vZGF0YS9hcnJheScsXHJcbiAgJy4vZGF0YS9hamF4JyxcclxuICAnLi9kYXRhL3RhZ3MnLFxyXG4gICcuL2RhdGEvdG9rZW5pemVyJyxcclxuICAnLi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcsXHJcbiAgJy4vZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgnLFxyXG4gICcuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsXHJcblxyXG4gICcuL2Ryb3Bkb3duJyxcclxuICAnLi9kcm9wZG93bi9zZWFyY2gnLFxyXG4gICcuL2Ryb3Bkb3duL2hpZGVQbGFjZWhvbGRlcicsXHJcbiAgJy4vZHJvcGRvd24vaW5maW5pdGVTY3JvbGwnLFxyXG4gICcuL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFxyXG4gICcuL2Ryb3Bkb3duL21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyxcclxuICAnLi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlJyxcclxuICAnLi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0JyxcclxuXHJcbiAgJy4vaTE4bi9lbidcclxuXSwgZnVuY3Rpb24gKCQsIHJlcXVpcmUsXHJcblxyXG4gICAgICAgICAgICAgUmVzdWx0c0xpc3QsXHJcblxyXG4gICAgICAgICAgICAgU2luZ2xlU2VsZWN0aW9uLCBNdWx0aXBsZVNlbGVjdGlvbiwgUGxhY2Vob2xkZXIsIEFsbG93Q2xlYXIsXHJcbiAgICAgICAgICAgICBTZWxlY3Rpb25TZWFyY2gsIEV2ZW50UmVsYXksXHJcblxyXG4gICAgICAgICAgICAgVXRpbHMsIFRyYW5zbGF0aW9uLCBESUFDUklUSUNTLFxyXG5cclxuICAgICAgICAgICAgIFNlbGVjdERhdGEsIEFycmF5RGF0YSwgQWpheERhdGEsIFRhZ3MsIFRva2VuaXplcixcclxuICAgICAgICAgICAgIE1pbmltdW1JbnB1dExlbmd0aCwgTWF4aW11bUlucHV0TGVuZ3RoLCBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLFxyXG5cclxuICAgICAgICAgICAgIERyb3Bkb3duLCBEcm9wZG93blNlYXJjaCwgSGlkZVBsYWNlaG9sZGVyLCBJbmZpbml0ZVNjcm9sbCxcclxuICAgICAgICAgICAgIEF0dGFjaEJvZHksIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLCBTZWxlY3RPbkNsb3NlLCBDbG9zZU9uU2VsZWN0LFxyXG5cclxuICAgICAgICAgICAgIEVuZ2xpc2hUcmFuc2xhdGlvbikge1xyXG4gIGZ1bmN0aW9uIERlZmF1bHRzICgpIHtcclxuICAgIHRoaXMucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIERlZmF1bHRzLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMuZGVmYXVsdHMsIG9wdGlvbnMpO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmRhdGFBZGFwdGVyID09IG51bGwpIHtcclxuICAgICAgaWYgKG9wdGlvbnMuYWpheCAhPSBudWxsKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFqYXhEYXRhO1xyXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFycmF5RGF0YTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gU2VsZWN0RGF0YTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMubWluaW11bUlucHV0TGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXHJcbiAgICAgICAgICBNaW5pbXVtSW5wdXRMZW5ndGhcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy5tYXhpbXVtSW5wdXRMZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcclxuICAgICAgICAgIE1heGltdW1JbnB1dExlbmd0aFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcclxuICAgICAgICAgIE1heGltdW1TZWxlY3Rpb25MZW5ndGhcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy50YWdzKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKG9wdGlvbnMuZGF0YUFkYXB0ZXIsIFRhZ3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy50b2tlblNlcGFyYXRvcnMgIT0gbnVsbCB8fCBvcHRpb25zLnRva2VuaXplciAhPSBudWxsKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcclxuICAgICAgICAgIFRva2VuaXplclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLnF1ZXJ5ICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgUXVlcnkgPSByZXF1aXJlKG9wdGlvbnMuYW1kQmFzZSArICdjb21wYXQvcXVlcnknKTtcclxuXHJcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcclxuICAgICAgICAgIFF1ZXJ5XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMuaW5pdFNlbGVjdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIEluaXRTZWxlY3Rpb24gPSByZXF1aXJlKG9wdGlvbnMuYW1kQmFzZSArICdjb21wYXQvaW5pdFNlbGVjdGlvbicpO1xyXG5cclxuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXHJcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxyXG4gICAgICAgICAgSW5pdFNlbGVjdGlvblxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9PSBudWxsKSB7XHJcbiAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBSZXN1bHRzTGlzdDtcclxuXHJcbiAgICAgIGlmIChvcHRpb25zLmFqYXggIT0gbnVsbCkge1xyXG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXHJcbiAgICAgICAgICBJbmZpbml0ZVNjcm9sbFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcclxuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXHJcbiAgICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyLFxyXG4gICAgICAgICAgSGlkZVBsYWNlaG9sZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0T25DbG9zZSkge1xyXG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXHJcbiAgICAgICAgICBTZWxlY3RPbkNsb3NlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9PSBudWxsKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBEcm9wZG93bjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgU2VhcmNoYWJsZURyb3Bkb3duID0gVXRpbHMuRGVjb3JhdGUoRHJvcGRvd24sIERyb3Bkb3duU2VhcmNoKTtcclxuXHJcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBTZWFyY2hhYmxlRHJvcGRvd247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoICE9PSAwKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxyXG4gICAgICAgICAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2hcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy5jbG9zZU9uU2VsZWN0KSB7XHJcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxyXG4gICAgICAgICAgQ2xvc2VPblNlbGVjdFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQ3NzQ2xhc3MgIT0gbnVsbCB8fFxyXG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25Dc3MgIT0gbnVsbCB8fFxyXG4gICAgICAgIG9wdGlvbnMuYWRhcHREcm9wZG93bkNzc0NsYXNzICE9IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmFyIERyb3Bkb3duQ1NTID0gcmVxdWlyZShvcHRpb25zLmFtZEJhc2UgKyAnY29tcGF0L2Ryb3Bkb3duQ3NzJyk7XHJcblxyXG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXHJcbiAgICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcclxuICAgICAgICAgIERyb3Bkb3duQ1NTXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcclxuICAgICAgICBBdHRhY2hCb2R5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9PSBudWxsKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlKSB7XHJcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gTXVsdGlwbGVTZWxlY3Rpb247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gU2luZ2xlU2VsZWN0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZGQgdGhlIHBsYWNlaG9sZGVyIG1peGluIGlmIGEgcGxhY2Vob2xkZXIgd2FzIHNwZWNpZmllZFxyXG4gICAgICBpZiAob3B0aW9ucy5wbGFjZWhvbGRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXHJcbiAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXHJcbiAgICAgICAgICBQbGFjZWhvbGRlclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLmFsbG93Q2xlYXIpIHtcclxuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcclxuICAgICAgICAgIEFsbG93Q2xlYXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xyXG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxyXG4gICAgICAgICAgU2VsZWN0aW9uU2VhcmNoXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIG9wdGlvbnMuY29udGFpbmVyQ3NzQ2xhc3MgIT0gbnVsbCB8fFxyXG4gICAgICAgIG9wdGlvbnMuY29udGFpbmVyQ3NzICE9IG51bGwgfHxcclxuICAgICAgICBvcHRpb25zLmFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MgIT0gbnVsbFxyXG4gICAgICApIHtcclxuICAgICAgICB2YXIgQ29udGFpbmVyQ1NTID0gcmVxdWlyZShvcHRpb25zLmFtZEJhc2UgKyAnY29tcGF0L2NvbnRhaW5lckNzcycpO1xyXG5cclxuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcclxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcclxuICAgICAgICAgIENvbnRhaW5lckNTU1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxyXG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcclxuICAgICAgICBFdmVudFJlbGF5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmxhbmd1YWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgbGFuZ3VhZ2UgaXMgc3BlY2lmaWVkIHdpdGggYSByZWdpb25cclxuICAgICAgaWYgKG9wdGlvbnMubGFuZ3VhZ2UuaW5kZXhPZignLScpID4gMCkge1xyXG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHJlZ2lvbiBpbmZvcm1hdGlvbiBpZiBpdCBpcyBpbmNsdWRlZFxyXG4gICAgICAgIHZhciBsYW5ndWFnZVBhcnRzID0gb3B0aW9ucy5sYW5ndWFnZS5zcGxpdCgnLScpO1xyXG4gICAgICAgIHZhciBiYXNlTGFuZ3VhZ2UgPSBsYW5ndWFnZVBhcnRzWzBdO1xyXG5cclxuICAgICAgICBvcHRpb25zLmxhbmd1YWdlID0gW29wdGlvbnMubGFuZ3VhZ2UsIGJhc2VMYW5ndWFnZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5sYW5ndWFnZSA9IFtvcHRpb25zLmxhbmd1YWdlXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICgkLmlzQXJyYXkob3B0aW9ucy5sYW5ndWFnZSkpIHtcclxuICAgICAgdmFyIGxhbmd1YWdlcyA9IG5ldyBUcmFuc2xhdGlvbigpO1xyXG4gICAgICBvcHRpb25zLmxhbmd1YWdlLnB1c2goJ2VuJyk7XHJcblxyXG4gICAgICB2YXIgbGFuZ3VhZ2VOYW1lcyA9IG9wdGlvbnMubGFuZ3VhZ2U7XHJcblxyXG4gICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlTmFtZXMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICB2YXIgbmFtZSA9IGxhbmd1YWdlTmFtZXNbbF07XHJcbiAgICAgICAgdmFyIGxhbmd1YWdlID0ge307XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyBUcnkgdG8gbG9hZCBpdCB3aXRoIHRoZSBvcmlnaW5hbCBuYW1lXHJcbiAgICAgICAgICBsYW5ndWFnZSA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKG5hbWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIElmIHdlIGNvdWxkbid0IGxvYWQgaXQsIGNoZWNrIGlmIGl0IHdhc24ndCB0aGUgZnVsbCBwYXRoXHJcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIG5hbWU7XHJcbiAgICAgICAgICAgIGxhbmd1YWdlID0gVHJhbnNsYXRpb24ubG9hZFBhdGgobmFtZSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICAgICAgICAvLyBUaGUgdHJhbnNsYXRpb24gY291bGQgbm90IGJlIGxvYWRlZCBhdCBhbGwuIFNvbWV0aW1lcyB0aGlzIGlzXHJcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugb2YgYSBjb25maWd1cmF0aW9uIHByb2JsZW0sIG90aGVyIHRpbWVzIHRoaXMgY2FuIGJlXHJcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugb2YgaG93IFNlbGVjdDIgaGVscHMgbG9hZCBhbGwgcG9zc2libGUgdHJhbnNsYXRpb24gZmlsZXMuXHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgICAgICdTZWxlY3QyOiBUaGUgbGFuZ3VhZ2UgZmlsZSBmb3IgXCInICsgbmFtZSArICdcIiBjb3VsZCBub3QgYmUgJyArXHJcbiAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseSBsb2FkZWQuIEEgZmFsbGJhY2sgd2lsbCBiZSB1c2VkIGluc3RlYWQuJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGFuZ3VhZ2VzLmV4dGVuZChsYW5ndWFnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG9wdGlvbnMudHJhbnNsYXRpb25zID0gbGFuZ3VhZ2VzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGJhc2VUcmFuc2xhdGlvbiA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdHMuYW1kTGFuZ3VhZ2VCYXNlICsgJ2VuJ1xyXG4gICAgICApO1xyXG4gICAgICB2YXIgY3VzdG9tVHJhbnNsYXRpb24gPSBuZXcgVHJhbnNsYXRpb24ob3B0aW9ucy5sYW5ndWFnZSk7XHJcblxyXG4gICAgICBjdXN0b21UcmFuc2xhdGlvbi5leHRlbmQoYmFzZVRyYW5zbGF0aW9uKTtcclxuXHJcbiAgICAgIG9wdGlvbnMudHJhbnNsYXRpb25zID0gY3VzdG9tVHJhbnNsYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfTtcclxuXHJcbiAgRGVmYXVsdHMucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzICh0ZXh0KSB7XHJcbiAgICAgIC8vIFVzZWQgJ3VuaSByYW5nZSArIG5hbWVkIGZ1bmN0aW9uJyBmcm9tIGh0dHA6Ly9qc3BlcmYuY29tL2RpYWNyaXRpY3MvMThcclxuICAgICAgZnVuY3Rpb24gbWF0Y2goYSkge1xyXG4gICAgICAgIHJldHVybiBESUFDUklUSUNTW2FdIHx8IGE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLCBtYXRjaCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbWF0Y2hlciAocGFyYW1zLCBkYXRhKSB7XHJcbiAgICAgIC8vIEFsd2F5cyByZXR1cm4gdGhlIG9iamVjdCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBhcmVcclxuICAgICAgaWYgKCQudHJpbShwYXJhbXMudGVybSkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERvIGEgcmVjdXJzaXZlIGNoZWNrIGZvciBvcHRpb25zIHdpdGggY2hpbGRyZW5cclxuICAgICAgaWYgKGRhdGEuY2hpbGRyZW4gJiYgZGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gQ2xvbmUgdGhlIGRhdGEgb2JqZWN0IGlmIHRoZXJlIGFyZSBjaGlsZHJlblxyXG4gICAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgYXMgd2UgbW9kaWZ5IHRoZSBvYmplY3QgdG8gcmVtb3ZlIGFueSBub24tbWF0Y2hlc1xyXG4gICAgICAgIHZhciBtYXRjaCA9ICQuZXh0ZW5kKHRydWUsIHt9LCBkYXRhKTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgZWFjaCBjaGlsZCBvZiB0aGUgb3B0aW9uXHJcbiAgICAgICAgZm9yICh2YXIgYyA9IGRhdGEuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgYyA+PSAwOyBjLS0pIHtcclxuICAgICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XHJcblxyXG4gICAgICAgICAgdmFyIG1hdGNoZXMgPSBtYXRjaGVyKHBhcmFtcywgY2hpbGQpO1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZXJlIHdhc24ndCBhIG1hdGNoLCByZW1vdmUgdGhlIG9iamVjdCBpbiB0aGUgYXJyYXlcclxuICAgICAgICAgIGlmIChtYXRjaGVzID09IG51bGwpIHtcclxuICAgICAgICAgICAgbWF0Y2guY2hpbGRyZW4uc3BsaWNlKGMsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgYW55IGNoaWxkcmVuIG1hdGNoZWQsIHJldHVybiB0aGUgbmV3IG9iamVjdFxyXG4gICAgICAgIGlmIChtYXRjaC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGNoaWxkcmVuLCBjaGVjayBqdXN0IHRoZSBwbGFpbiBvYmplY3RcclxuICAgICAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIG1hdGNoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIG9yaWdpbmFsID0gc3RyaXBEaWFjcml0aWNzKGRhdGEudGV4dCkudG9VcHBlckNhc2UoKTtcclxuICAgICAgdmFyIHRlcm0gPSBzdHJpcERpYWNyaXRpY3MocGFyYW1zLnRlcm0pLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgdGV4dCBjb250YWlucyB0aGUgdGVybVxyXG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZih0ZXJtKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIElmIGl0IGRvZXNuJ3QgY29udGFpbiB0aGUgdGVybSwgZG9uJ3QgcmV0dXJuIGFueXRoaW5nXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVmYXVsdHMgPSB7XHJcbiAgICAgIGFtZEJhc2U6ICcuLycsXHJcbiAgICAgIGFtZExhbmd1YWdlQmFzZTogJy4vaTE4bi8nLFxyXG4gICAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxyXG4gICAgICBkZWJ1ZzogZmFsc2UsXHJcbiAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiBmYWxzZSxcclxuICAgICAgZXNjYXBlTWFya3VwOiBVdGlscy5lc2NhcGVNYXJrdXAsXHJcbiAgICAgIGxhbmd1YWdlOiBFbmdsaXNoVHJhbnNsYXRpb24sXHJcbiAgICAgIG1hdGNoZXI6IG1hdGNoZXIsXHJcbiAgICAgIG1pbmltdW1JbnB1dExlbmd0aDogMCxcclxuICAgICAgbWF4aW11bUlucHV0TGVuZ3RoOiAwLFxyXG4gICAgICBtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAwLFxyXG4gICAgICBtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDogMCxcclxuICAgICAgc2VsZWN0T25DbG9zZTogZmFsc2UsXHJcbiAgICAgIHNvcnRlcjogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSxcclxuICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0LnRleHQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIHRlbXBsYXRlU2VsZWN0aW9uOiBmdW5jdGlvbiAoc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi50ZXh0O1xyXG4gICAgICB9LFxyXG4gICAgICB0aGVtZTogJ2RlZmF1bHQnLFxyXG4gICAgICB3aWR0aDogJ3Jlc29sdmUnXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIERlZmF1bHRzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgdmFyIGNhbWVsS2V5ID0gJC5jYW1lbENhc2Uoa2V5KTtcclxuXHJcbiAgICB2YXIgZGF0YSA9IHt9O1xyXG4gICAgZGF0YVtjYW1lbEtleV0gPSB2YWx1ZTtcclxuXHJcbiAgICB2YXIgY29udmVydGVkRGF0YSA9IFV0aWxzLl9jb252ZXJ0RGF0YShkYXRhKTtcclxuXHJcbiAgICAkLmV4dGVuZCh0aGlzLmRlZmF1bHRzLCBjb252ZXJ0ZWREYXRhKTtcclxuICB9O1xyXG5cclxuICB2YXIgZGVmYXVsdHMgPSBuZXcgRGVmYXVsdHMoKTtcclxuXHJcbiAgcmV0dXJuIGRlZmF1bHRzO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvb3B0aW9ucycsW1xyXG4gICdyZXF1aXJlJyxcclxuICAnanF1ZXJ5JyxcclxuICAnLi9kZWZhdWx0cycsXHJcbiAgJy4vdXRpbHMnXHJcbl0sIGZ1bmN0aW9uIChyZXF1aXJlLCAkLCBEZWZhdWx0cywgVXRpbHMpIHtcclxuICBmdW5jdGlvbiBPcHRpb25zIChvcHRpb25zLCAkZWxlbWVudCkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICBpZiAoJGVsZW1lbnQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZyb21FbGVtZW50KCRlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBEZWZhdWx0cy5hcHBseSh0aGlzLm9wdGlvbnMpO1xyXG5cclxuICAgIGlmICgkZWxlbWVudCAmJiAkZWxlbWVudC5pcygnaW5wdXQnKSkge1xyXG4gICAgICB2YXIgSW5wdXRDb21wYXQgPSByZXF1aXJlKHRoaXMuZ2V0KCdhbWRCYXNlJykgKyAnY29tcGF0L2lucHV0RGF0YScpO1xyXG5cclxuICAgICAgdGhpcy5vcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmRhdGFBZGFwdGVyLFxyXG4gICAgICAgIElucHV0Q29tcGF0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBPcHRpb25zLnByb3RvdHlwZS5mcm9tRWxlbWVudCA9IGZ1bmN0aW9uICgkZSkge1xyXG4gICAgdmFyIGV4Y2x1ZGVkRGF0YSA9IFsnc2VsZWN0MiddO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMubXVsdGlwbGUgPSAkZS5wcm9wKCdtdWx0aXBsZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSAkZS5wcm9wKCdkaXNhYmxlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGFuZ3VhZ2UgPT0gbnVsbCkge1xyXG4gICAgICBpZiAoJGUucHJvcCgnbGFuZycpKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhbmd1YWdlID0gJGUucHJvcCgnbGFuZycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoJGUuY2xvc2VzdCgnW2xhbmddJykucHJvcCgnbGFuZycpKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhbmd1YWdlID0gJGUuY2xvc2VzdCgnW2xhbmddJykucHJvcCgnbGFuZycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXIgPT0gbnVsbCkge1xyXG4gICAgICBpZiAoJGUucHJvcCgnZGlyJykpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJGUucHJvcCgnZGlyJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoJGUuY2xvc2VzdCgnW2Rpcl0nKS5wcm9wKCdkaXInKSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXIgPSAkZS5jbG9zZXN0KCdbZGlyXScpLnByb3AoJ2RpcicpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXIgPSAnbHRyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICRlLnByb3AoJ2Rpc2FibGVkJywgdGhpcy5vcHRpb25zLmRpc2FibGVkKTtcclxuICAgICRlLnByb3AoJ211bHRpcGxlJywgdGhpcy5vcHRpb25zLm11bHRpcGxlKTtcclxuXHJcbiAgICBpZiAoJGUuZGF0YSgnc2VsZWN0MlRhZ3MnKSkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcclxuICAgICAgICAgICd1c2UgdGhlIGBkYXRhLWRhdGFgIGFuZCBgZGF0YS10YWdzPVwidHJ1ZVwiYCBhdHRyaWJ1dGVzIGFuZCB3aWxsIGJlICcgK1xyXG4gICAgICAgICAgJ3JlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRlLmRhdGEoJ2RhdGEnLCAkZS5kYXRhKCdzZWxlY3QyVGFncycpKTtcclxuICAgICAgJGUuZGF0YSgndGFncycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgkZS5kYXRhKCdhamF4VXJsJykpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcclxuICAgICAgICAgICdgZGF0YS1hamF4LS11cmxgIGFuZCBzdXBwb3J0IGZvciB0aGUgb2xkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQnICtcclxuICAgICAgICAgICcgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRlLmF0dHIoJ2FqYXgtLXVybCcsICRlLmRhdGEoJ2FqYXhVcmwnKSk7XHJcbiAgICAgICRlLmRhdGEoJ2FqYXgtLXVybCcsICRlLmRhdGEoJ2FqYXhVcmwnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRhdGFzZXQgPSB7fTtcclxuXHJcbiAgICAvLyBQcmVmZXIgdGhlIGVsZW1lbnQncyBgZGF0YXNldGAgYXR0cmlidXRlIGlmIGl0IGV4aXN0c1xyXG4gICAgLy8galF1ZXJ5IDEueCBkb2VzIG5vdCBjb3JyZWN0bHkgaGFuZGxlIGRhdGEgYXR0cmlidXRlcyB3aXRoIG11bHRpcGxlIGRhc2hlc1xyXG4gICAgaWYgKCQuZm4uanF1ZXJ5ICYmICQuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSA9PSAnMS4nICYmICRlWzBdLmRhdGFzZXQpIHtcclxuICAgICAgZGF0YXNldCA9ICQuZXh0ZW5kKHRydWUsIHt9LCAkZVswXS5kYXRhc2V0LCAkZS5kYXRhKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0YXNldCA9ICRlLmRhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZGF0YSA9ICQuZXh0ZW5kKHRydWUsIHt9LCBkYXRhc2V0KTtcclxuXHJcbiAgICBkYXRhID0gVXRpbHMuX2NvbnZlcnREYXRhKGRhdGEpO1xyXG5cclxuICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XHJcbiAgICAgIGlmICgkLmluQXJyYXkoa2V5LCBleGNsdWRlZERhdGEpID4gLTEpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNba2V5XSkpIHtcclxuICAgICAgICAkLmV4dGVuZCh0aGlzLm9wdGlvbnNba2V5XSwgZGF0YVtrZXldKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnNba2V5XSA9IGRhdGFba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH07XHJcblxyXG4gIE9wdGlvbnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnNba2V5XTtcclxuICB9O1xyXG5cclxuICBPcHRpb25zLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcclxuICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBPcHRpb25zO1xyXG59KTtcclxuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvY29yZScsW1xyXG4gICdqcXVlcnknLFxyXG4gICcuL29wdGlvbnMnLFxyXG4gICcuL3V0aWxzJyxcclxuICAnLi9rZXlzJ1xyXG5dLCBmdW5jdGlvbiAoJCwgT3B0aW9ucywgVXRpbHMsIEtFWVMpIHtcclxuICB2YXIgU2VsZWN0MiA9IGZ1bmN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgaWYgKCRlbGVtZW50LmRhdGEoJ3NlbGVjdDInKSAhPSBudWxsKSB7XHJcbiAgICAgICRlbGVtZW50LmRhdGEoJ3NlbGVjdDInKS5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xyXG5cclxuICAgIHRoaXMuaWQgPSB0aGlzLl9nZW5lcmF0ZUlkKCRlbGVtZW50KTtcclxuXHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgT3B0aW9ucyhvcHRpb25zLCAkZWxlbWVudCk7XHJcblxyXG4gICAgU2VsZWN0Mi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcclxuXHJcbiAgICAvLyBTZXQgdXAgdGhlIHRhYmluZGV4XHJcblxyXG4gICAgdmFyIHRhYmluZGV4ID0gJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSB8fCAwO1xyXG4gICAgJGVsZW1lbnQuZGF0YSgnb2xkLXRhYmluZGV4JywgdGFiaW5kZXgpO1xyXG4gICAgJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcclxuXHJcbiAgICAvLyBTZXQgdXAgY29udGFpbmVycyBhbmQgYWRhcHRlcnNcclxuXHJcbiAgICB2YXIgRGF0YUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkYXRhQWRhcHRlcicpO1xyXG4gICAgdGhpcy5kYXRhQWRhcHRlciA9IG5ldyBEYXRhQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zKTtcclxuXHJcbiAgICB2YXIgJGNvbnRhaW5lciA9IHRoaXMucmVuZGVyKCk7XHJcblxyXG4gICAgdGhpcy5fcGxhY2VDb250YWluZXIoJGNvbnRhaW5lcik7XHJcblxyXG4gICAgdmFyIFNlbGVjdGlvbkFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdzZWxlY3Rpb25BZGFwdGVyJyk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25BZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgdGhpcy4kc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24ucmVuZGVyKCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24ucG9zaXRpb24odGhpcy4kc2VsZWN0aW9uLCAkY29udGFpbmVyKTtcclxuXHJcbiAgICB2YXIgRHJvcGRvd25BZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BZGFwdGVyJyk7XHJcbiAgICB0aGlzLmRyb3Bkb3duID0gbmV3IERyb3Bkb3duQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zKTtcclxuICAgIHRoaXMuJGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5yZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duLnBvc2l0aW9uKHRoaXMuJGRyb3Bkb3duLCAkY29udGFpbmVyKTtcclxuXHJcbiAgICB2YXIgUmVzdWx0c0FkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdyZXN1bHRzQWRhcHRlcicpO1xyXG4gICAgdGhpcy5yZXN1bHRzID0gbmV3IFJlc3VsdHNBZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YUFkYXB0ZXIpO1xyXG4gICAgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLnJlc3VsdHMucG9zaXRpb24odGhpcy4kcmVzdWx0cywgdGhpcy4kZHJvcGRvd24pO1xyXG5cclxuICAgIC8vIEJpbmQgZXZlbnRzXHJcblxyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIC8vIEJpbmQgdGhlIGNvbnRhaW5lciB0byBhbGwgb2YgdGhlIGFkYXB0ZXJzXHJcbiAgICB0aGlzLl9iaW5kQWRhcHRlcnMoKTtcclxuXHJcbiAgICAvLyBSZWdpc3RlciBhbnkgRE9NIGV2ZW50IGhhbmRsZXJzXHJcbiAgICB0aGlzLl9yZWdpc3RlckRvbUV2ZW50cygpO1xyXG5cclxuICAgIC8vIFJlZ2lzdGVyIGFueSBpbnRlcm5hbCBldmVudCBoYW5kbGVyc1xyXG4gICAgdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCk7XHJcbiAgICB0aGlzLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cygpO1xyXG4gICAgdGhpcy5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cygpO1xyXG4gICAgdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCk7XHJcbiAgICB0aGlzLl9yZWdpc3RlckV2ZW50cygpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZVxyXG4gICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChpbml0aWFsRGF0YSkge1xyXG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XHJcbiAgICAgICAgZGF0YTogaW5pdGlhbERhdGFcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBvcmlnaW5hbCBzZWxlY3RcclxuICAgICRlbGVtZW50LmFkZENsYXNzKCdzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlJyk7XHJcbiAgICAkZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XHJcblxyXG4gICAgLy8gU3luY2hyb25pemUgYW55IG1vbml0b3JlZCBhdHRyaWJ1dGVzXHJcbiAgICB0aGlzLl9zeW5jQXR0cmlidXRlcygpO1xyXG5cclxuICAgICRlbGVtZW50LmRhdGEoJ3NlbGVjdDInLCB0aGlzKTtcclxuICB9O1xyXG5cclxuICBVdGlscy5FeHRlbmQoU2VsZWN0MiwgVXRpbHMuT2JzZXJ2YWJsZSk7XHJcblxyXG4gIFNlbGVjdDIucHJvdG90eXBlLl9nZW5lcmF0ZUlkID0gZnVuY3Rpb24gKCRlbGVtZW50KSB7XHJcbiAgICB2YXIgaWQgPSAnJztcclxuXHJcbiAgICBpZiAoJGVsZW1lbnQuYXR0cignaWQnKSAhPSBudWxsKSB7XHJcbiAgICAgIGlkID0gJGVsZW1lbnQuYXR0cignaWQnKTtcclxuICAgIH0gZWxzZSBpZiAoJGVsZW1lbnQuYXR0cignbmFtZScpICE9IG51bGwpIHtcclxuICAgICAgaWQgPSAkZWxlbWVudC5hdHRyKCduYW1lJykgKyAnLScgKyBVdGlscy5nZW5lcmF0ZUNoYXJzKDIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWQgPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlkID0gaWQucmVwbGFjZSgvKDp8XFwufFxcW3xcXF18LCkvZywgJycpO1xyXG4gICAgaWQgPSAnc2VsZWN0Mi0nICsgaWQ7XHJcblxyXG4gICAgcmV0dXJuIGlkO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdDIucHJvdG90eXBlLl9wbGFjZUNvbnRhaW5lciA9IGZ1bmN0aW9uICgkY29udGFpbmVyKSB7XHJcbiAgICAkY29udGFpbmVyLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpO1xyXG5cclxuICAgIHZhciB3aWR0aCA9IHRoaXMuX3Jlc29sdmVXaWR0aCh0aGlzLiRlbGVtZW50LCB0aGlzLm9wdGlvbnMuZ2V0KCd3aWR0aCcpKTtcclxuXHJcbiAgICBpZiAod2lkdGggIT0gbnVsbCkge1xyXG4gICAgICAkY29udGFpbmVyLmNzcygnd2lkdGgnLCB3aWR0aCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3Jlc29sdmVXaWR0aCA9IGZ1bmN0aW9uICgkZWxlbWVudCwgbWV0aG9kKSB7XHJcbiAgICB2YXIgV0lEVEggPSAvXndpZHRoOigoWy0rXT8oWzAtOV0qXFwuKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pO1xyXG5cclxuICAgIGlmIChtZXRob2QgPT0gJ3Jlc29sdmUnKSB7XHJcbiAgICAgIHZhciBzdHlsZVdpZHRoID0gdGhpcy5fcmVzb2x2ZVdpZHRoKCRlbGVtZW50LCAnc3R5bGUnKTtcclxuXHJcbiAgICAgIGlmIChzdHlsZVdpZHRoICE9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gc3R5bGVXaWR0aDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVXaWR0aCgkZWxlbWVudCwgJ2VsZW1lbnQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWV0aG9kID09ICdlbGVtZW50Jykge1xyXG4gICAgICB2YXIgZWxlbWVudFdpZHRoID0gJGVsZW1lbnQub3V0ZXJXaWR0aChmYWxzZSk7XHJcblxyXG4gICAgICBpZiAoZWxlbWVudFdpZHRoIDw9IDApIHtcclxuICAgICAgICByZXR1cm4gJ2F1dG8nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZWxlbWVudFdpZHRoICsgJ3B4JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWV0aG9kID09ICdzdHlsZScpIHtcclxuICAgICAgdmFyIHN0eWxlID0gJGVsZW1lbnQuYXR0cignc3R5bGUnKTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Yoc3R5bGUpICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgYXR0cnMgPSBzdHlsZS5zcGxpdCgnOycpO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpID0gaSArIDEpIHtcclxuICAgICAgICB2YXIgYXR0ciA9IGF0dHJzW2ldLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICAgICAgdmFyIG1hdGNoZXMgPSBhdHRyLm1hdGNoKFdJRFRIKTtcclxuXHJcbiAgICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwgJiYgbWF0Y2hlcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIG1hdGNoZXNbMV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWV0aG9kO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdDIucHJvdG90eXBlLl9iaW5kQWRhcHRlcnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcclxuICAgIHRoaXMucmVzdWx0cy5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRG9tRXZlbnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHRoaXMuJGVsZW1lbnQub24oJ2NoYW5nZS5zZWxlY3QyJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XHJcbiAgICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kZWxlbWVudC5vbignZm9jdXMuc2VsZWN0MicsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKCdmb2N1cycsIGV2dCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zeW5jQSA9IFV0aWxzLmJpbmQodGhpcy5fc3luY0F0dHJpYnV0ZXMsIHRoaXMpO1xyXG4gICAgdGhpcy5fc3luY1MgPSBVdGlscy5iaW5kKHRoaXMuX3N5bmNTdWJ0cmVlLCB0aGlzKTtcclxuXHJcbiAgICBpZiAodGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCkge1xyXG4gICAgICB0aGlzLiRlbGVtZW50WzBdLmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgdGhpcy5fc3luY0EpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBvYnNlcnZlciA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8XHJcbiAgICAgIHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8XHJcbiAgICAgIHdpbmRvdy5Nb3pNdXRhdGlvbk9ic2VydmVyXHJcbiAgICA7XHJcblxyXG4gICAgaWYgKG9ic2VydmVyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgb2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykge1xyXG4gICAgICAgICQuZWFjaChtdXRhdGlvbnMsIHNlbGYuX3N5bmNBKTtcclxuICAgICAgICAkLmVhY2gobXV0YXRpb25zLCBzZWxmLl9zeW5jUyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0sIHtcclxuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxyXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnRE9NQXR0ck1vZGlmaWVkJyxcclxuICAgICAgICBzZWxmLl9zeW5jQSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ0RPTU5vZGVJbnNlcnRlZCcsXHJcbiAgICAgICAgc2VsZi5fc3luY1MsXHJcbiAgICAgICAgZmFsc2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdET01Ob2RlUmVtb3ZlZCcsXHJcbiAgICAgICAgc2VsZi5fc3luY1MsXHJcbiAgICAgICAgZmFsc2VcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHRoaXMuZGF0YUFkYXB0ZXIub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XHJcbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgdmFyIG5vblJlbGF5RXZlbnRzID0gWyd0b2dnbGUnLCAnZm9jdXMnXTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbi5vbigndG9nZ2xlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLnRvZ2dsZURyb3Bkb3duKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbi5vbignZm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIHNlbGYuZm9jdXMocGFyYW1zKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xyXG4gICAgICBpZiAoJC5pbkFycmF5KG5hbWUsIG5vblJlbGF5RXZlbnRzKSAhPT0gLTEpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bi5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHRoaXMucmVzdWx0cy5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcclxuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJFdmVudHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgc2VsZi4kY29udGFpbmVyLmFkZENsYXNzKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgc2VsZi4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCdzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHNlbGYuJGNvbnRhaW5lci5hZGRDbGFzcygnc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uKCdibHVyJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBzZWxmLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIGlmICghc2VsZi5pc09wZW4oKSkge1xyXG4gICAgICAgIHNlbGYudHJpZ2dlcignb3BlbicsIHt9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kYXRhQWRhcHRlci5xdWVyeShwYXJhbXMsIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmFsbCcsIHtcclxuICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICBxdWVyeTogcGFyYW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHBhcmFtcywgZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6YXBwZW5kJywge1xyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXNcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uKCdrZXlwcmVzcycsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgdmFyIGtleSA9IGV2dC53aGljaDtcclxuXHJcbiAgICAgIGlmIChzZWxmLmlzT3BlbigpKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gS0VZUy5FU0MgfHwga2V5ID09PSBLRVlTLlRBQiB8fFxyXG4gICAgICAgICAgICAoa2V5ID09PSBLRVlTLlVQICYmIGV2dC5hbHRLZXkpKSB7XHJcbiAgICAgICAgICBzZWxmLmNsb3NlKCk7XHJcblxyXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWVMuRU5URVIpIHtcclxuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpzZWxlY3QnLCB7fSk7XHJcblxyXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoa2V5ID09PSBLRVlTLlNQQUNFICYmIGV2dC5jdHJsS2V5KSkge1xyXG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnRvZ2dsZScsIHt9KTtcclxuXHJcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS0VZUy5VUCkge1xyXG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnByZXZpb3VzJywge30pO1xyXG5cclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkRPV04pIHtcclxuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpuZXh0Jywge30pO1xyXG5cclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5TUEFDRSB8fFxyXG4gICAgICAgICAgICAoa2V5ID09PSBLRVlTLkRPV04gJiYgZXZ0LmFsdEtleSkpIHtcclxuICAgICAgICAgIHNlbGYub3BlbigpO1xyXG5cclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3N5bmNBdHRyaWJ1dGVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5vcHRpb25zLnNldCgnZGlzYWJsZWQnLCB0aGlzLiRlbGVtZW50LnByb3AoJ2Rpc2FibGVkJykpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRyaWdnZXIoJ2Rpc2FibGUnLCB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyaWdnZXIoJ2VuYWJsZScsIHt9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5fc3luY1N1YnRyZWUgPSBmdW5jdGlvbiAoZXZ0LCBtdXRhdGlvbnMpIHtcclxuICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgLy8gSWdub3JlIGFueSBtdXRhdGlvbiBldmVudHMgcmFpc2VkIGZvciBlbGVtZW50cyB0aGF0IGFyZW4ndCBvcHRpb25zIG9yXHJcbiAgICAvLyBvcHRncm91cHMuIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIHRoZSBzZWxlY3QgZWxlbWVudCBpcyBkZXN0cm95ZWRcclxuICAgIGlmIChcclxuICAgICAgZXZ0ICYmIGV2dC50YXJnZXQgJiYgKFxyXG4gICAgICAgIGV2dC50YXJnZXQubm9kZU5hbWUgIT09ICdPUFRJT04nICYmIGV2dC50YXJnZXQubm9kZU5hbWUgIT09ICdPUFRHUk9VUCdcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW11dGF0aW9ucykge1xyXG4gICAgICAvLyBJZiBtdXRhdGlvbiBldmVudHMgYXJlbid0IHN1cHBvcnRlZCwgdGhlbiB3ZSBjYW4gb25seSBhc3N1bWUgdGhhdCB0aGVcclxuICAgICAgLy8gY2hhbmdlIGFmZmVjdGVkIHRoZSBzZWxlY3Rpb25zXHJcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtdXRhdGlvbnMuYWRkZWROb2RlcyAmJiBtdXRhdGlvbnMuYWRkZWROb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbXV0YXRpb25zLmFkZGVkTm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICB2YXIgbm9kZSA9IG11dGF0aW9ucy5hZGRlZE5vZGVzW25dO1xyXG5cclxuICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgY2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG11dGF0aW9ucy5yZW1vdmVkTm9kZXMgJiYgbXV0YXRpb25zLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9ubHkgcmUtcHVsbCB0aGUgZGF0YSBpZiB3ZSB0aGluayB0aGVyZSBpcyBhIGNoYW5nZVxyXG4gICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xyXG4gICAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcclxuICAgICAgICAgIGRhdGE6IGN1cnJlbnREYXRhXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIE92ZXJyaWRlIHRoZSB0cmlnZ2VyIG1ldGhvZCB0byBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgcHJlLWV2ZW50cyB3aGVuXHJcbiAgICogdGhlcmUgYXJlIGV2ZW50cyB0aGF0IGNhbiBiZSBwcmV2ZW50ZWQuXHJcbiAgICovXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChuYW1lLCBhcmdzKSB7XHJcbiAgICB2YXIgYWN0dWFsVHJpZ2dlciA9IFNlbGVjdDIuX19zdXBlcl9fLnRyaWdnZXI7XHJcbiAgICB2YXIgcHJlVHJpZ2dlck1hcCA9IHtcclxuICAgICAgJ29wZW4nOiAnb3BlbmluZycsXHJcbiAgICAgICdjbG9zZSc6ICdjbG9zaW5nJyxcclxuICAgICAgJ3NlbGVjdCc6ICdzZWxlY3RpbmcnLFxyXG4gICAgICAndW5zZWxlY3QnOiAndW5zZWxlY3RpbmcnXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChhcmdzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgYXJncyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuYW1lIGluIHByZVRyaWdnZXJNYXApIHtcclxuICAgICAgdmFyIHByZVRyaWdnZXJOYW1lID0gcHJlVHJpZ2dlck1hcFtuYW1lXTtcclxuICAgICAgdmFyIHByZVRyaWdnZXJBcmdzID0ge1xyXG4gICAgICAgIHByZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBhcmdzOiBhcmdzXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBhY3R1YWxUcmlnZ2VyLmNhbGwodGhpcywgcHJlVHJpZ2dlck5hbWUsIHByZVRyaWdnZXJBcmdzKTtcclxuXHJcbiAgICAgIGlmIChwcmVUcmlnZ2VyQXJncy5wcmV2ZW50ZWQpIHtcclxuICAgICAgICBhcmdzLnByZXZlbnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFjdHVhbFRyaWdnZXIuY2FsbCh0aGlzLCBuYW1lLCBhcmdzKTtcclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudHJpZ2dlcigncXVlcnknLCB7fSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7fSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuaXNPcGVuID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5oYXNDbGFzcygnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS5oYXNGb2N1cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuaGFzQ2xhc3MoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdDIucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIC8vIE5vIG5lZWQgdG8gcmUtdHJpZ2dlciBmb2N1cyBldmVudHMgaWYgd2UgYXJlIGFscmVhZHkgZm9jdXNlZFxyXG4gICAgaWYgKHRoaXMuaGFzRm9jdXMoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4kY29udGFpbmVyLmFkZENsYXNzKCdzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMnKTtcclxuICAgIHRoaXMudHJpZ2dlcignZm9jdXMnLCB7fSk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGFyZ3MpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcImVuYWJsZVwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwnICtcclxuICAgICAgICAnIGJlIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnByb3AoXCJkaXNhYmxlZFwiKScgK1xyXG4gICAgICAgICcgaW5zdGVhZC4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFyZ3MgPT0gbnVsbCB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBhcmdzID0gW3RydWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkaXNhYmxlZCA9ICFhcmdzWzBdO1xyXG5cclxuICAgIHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnLCBkaXNhYmxlZCk7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmXHJcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MihcImRhdGFcIilgLiBZb3UgJyArXHJcbiAgICAgICAgJ3Nob3VsZCBjb25zaWRlciBzZXR0aW5nIHRoZSB2YWx1ZSBpbnN0ZWFkIHVzaW5nIGAkZWxlbWVudC52YWwoKWAuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkYXRhID0gW107XHJcblxyXG4gICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xyXG4gICAgICBkYXRhID0gY3VycmVudERhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9O1xyXG5cclxuICBTZWxlY3QyLnByb3RvdHlwZS52YWwgPSBmdW5jdGlvbiAoYXJncykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwidmFsXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZScgK1xyXG4gICAgICAgICcgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFyZ3MgPT0gbnVsbCB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC52YWwoKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgbmV3VmFsID0gYXJnc1swXTtcclxuXHJcbiAgICBpZiAoJC5pc0FycmF5KG5ld1ZhbCkpIHtcclxuICAgICAgbmV3VmFsID0gJC5tYXAobmV3VmFsLCBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iai50b1N0cmluZygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRlbGVtZW50LnZhbChuZXdWYWwpLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gIH07XHJcblxyXG4gIFNlbGVjdDIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuJGVsZW1lbnRbMF0uZGV0YWNoRXZlbnQpIHtcclxuICAgICAgdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIHRoaXMuX3N5bmNBKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fb2JzZXJ2ZXIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuJGVsZW1lbnRbMF1cclxuICAgICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NQXR0ck1vZGlmaWVkJywgdGhpcy5fc3luY0EsIGZhbHNlKTtcclxuICAgICAgdGhpcy4kZWxlbWVudFswXVxyXG4gICAgICAgIC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Ob2RlSW5zZXJ0ZWQnLCB0aGlzLl9zeW5jUywgZmFsc2UpO1xyXG4gICAgICB0aGlzLiRlbGVtZW50WzBdXHJcbiAgICAgICAgLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgdGhpcy5fc3luY1MsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zeW5jQSA9IG51bGw7XHJcbiAgICB0aGlzLl9zeW5jUyA9IG51bGw7XHJcblxyXG4gICAgdGhpcy4kZWxlbWVudC5vZmYoJy5zZWxlY3QyJyk7XHJcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JywgdGhpcy4kZWxlbWVudC5kYXRhKCdvbGQtdGFiaW5kZXgnKSk7XHJcblxyXG4gICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xyXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xyXG4gICAgdGhpcy4kZWxlbWVudC5yZW1vdmVEYXRhKCdzZWxlY3QyJyk7XHJcblxyXG4gICAgdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbi5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmRyb3Bkb3duLmRlc3Ryb3koKTtcclxuICAgIHRoaXMucmVzdWx0cy5kZXN0cm95KCk7XHJcblxyXG4gICAgdGhpcy5kYXRhQWRhcHRlciA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XHJcbiAgICB0aGlzLmRyb3Bkb3duID0gbnVsbDtcclxuICAgIHRoaXMucmVzdWx0cyA9IG51bGw7XHJcbiAgfTtcclxuXHJcbiAgU2VsZWN0Mi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyICRjb250YWluZXIgPSAkKFxyXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyIHNlbGVjdDItY29udGFpbmVyXCI+JyArXHJcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0aW9uXCI+PC9zcGFuPicgK1xyXG4gICAgICAgICc8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+JyArXHJcbiAgICAgICc8L3NwYW4+J1xyXG4gICAgKTtcclxuXHJcbiAgICAkY29udGFpbmVyLmF0dHIoJ2RpcicsIHRoaXMub3B0aW9ucy5nZXQoJ2RpcicpKTtcclxuXHJcbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xyXG5cclxuICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcygnc2VsZWN0Mi1jb250YWluZXItLScgKyB0aGlzLm9wdGlvbnMuZ2V0KCd0aGVtZScpKTtcclxuXHJcbiAgICAkY29udGFpbmVyLmRhdGEoJ2VsZW1lbnQnLCB0aGlzLiRlbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcclxuICB9O1xyXG5cclxuICByZXR1cm4gU2VsZWN0MjtcclxufSk7XHJcblxuUzIuZGVmaW5lKCdqcXVlcnktbW91c2V3aGVlbCcsW1xyXG4gICdqcXVlcnknXHJcbl0sIGZ1bmN0aW9uICgkKSB7XHJcbiAgLy8gVXNlZCB0byBzaGltIGpRdWVyeS5tb3VzZXdoZWVsIGZvciBub24tZnVsbCBidWlsZHMuXHJcbiAgcmV0dXJuICQ7XHJcbn0pO1xyXG5cblMyLmRlZmluZSgnanF1ZXJ5LnNlbGVjdDInLFtcclxuICAnanF1ZXJ5JyxcclxuICAnanF1ZXJ5LW1vdXNld2hlZWwnLFxyXG5cclxuICAnLi9zZWxlY3QyL2NvcmUnLFxyXG4gICcuL3NlbGVjdDIvZGVmYXVsdHMnXHJcbl0sIGZ1bmN0aW9uICgkLCBfLCBTZWxlY3QyLCBEZWZhdWx0cykge1xyXG4gIGlmICgkLmZuLnNlbGVjdDIgPT0gbnVsbCkge1xyXG4gICAgLy8gQWxsIG1ldGhvZHMgdGhhdCBzaG91bGQgcmV0dXJuIHRoZSBlbGVtZW50XHJcbiAgICB2YXIgdGhpc01ldGhvZHMgPSBbJ29wZW4nLCAnY2xvc2UnLCAnZGVzdHJveSddO1xyXG5cclxuICAgICQuZm4uc2VsZWN0MiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB2YXIgaW5zdGFuY2VPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBTZWxlY3QyKCQodGhpcyksIGluc3RhbmNlT3B0aW9ucyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHZhciByZXQ7XHJcbiAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xyXG5cclxuICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gJCh0aGlzKS5kYXRhKCdzZWxlY3QyJyk7XHJcblxyXG4gICAgICAgICAgaWYgKGluc3RhbmNlID09IG51bGwgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICdUaGUgc2VsZWN0MihcXCcnICsgb3B0aW9ucyArICdcXCcpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuICcgK1xyXG4gICAgICAgICAgICAgICdlbGVtZW50IHRoYXQgaXMgbm90IHVzaW5nIFNlbGVjdDIuJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldCA9IGluc3RhbmNlW29wdGlvbnNdLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGJlIHJldHVybmluZyBgdGhpc2BcclxuICAgICAgICBpZiAoJC5pbkFycmF5KG9wdGlvbnMsIHRoaXNNZXRob2RzKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50cyBmb3IgU2VsZWN0MjogJyArIG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaWYgKCQuZm4uc2VsZWN0Mi5kZWZhdWx0cyA9PSBudWxsKSB7XHJcbiAgICAkLmZuLnNlbGVjdDIuZGVmYXVsdHMgPSBEZWZhdWx0cztcclxuICB9XHJcblxyXG4gIHJldHVybiBTZWxlY3QyO1xyXG59KTtcclxuXG4gIC8vIFJldHVybiB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgdGhpcyBmaWxlXHJcbiAgcmV0dXJuIHtcclxuICAgIGRlZmluZTogUzIuZGVmaW5lLFxyXG4gICAgcmVxdWlyZTogUzIucmVxdWlyZVxyXG4gIH07XHJcbn0oKSk7XHJcblxyXG4gIC8vIEF1dG9sb2FkIHRoZSBqUXVlcnkgYmluZGluZ3NcclxuICAvLyBXZSBrbm93IHRoYXQgYWxsIG9mIHRoZSBtb2R1bGVzIGV4aXN0IGFib3ZlIHRoaXMsIHNvIHdlJ3JlIHNhZmVcclxuICB2YXIgc2VsZWN0MiA9IFMyLnJlcXVpcmUoJ2pxdWVyeS5zZWxlY3QyJyk7XHJcblxyXG4gIC8vIEhvbGQgdGhlIEFNRCBtb2R1bGUgcmVmZXJlbmNlcyBvbiB0aGUgalF1ZXJ5IGZ1bmN0aW9uIHRoYXQgd2FzIGp1c3QgbG9hZGVkXHJcbiAgLy8gVGhpcyBhbGxvd3MgU2VsZWN0MiB0byB1c2UgdGhlIGludGVybmFsIGxvYWRlciBvdXRzaWRlIG9mIHRoaXMgZmlsZSwgc3VjaFxyXG4gIC8vIGFzIGluIHRoZSBsYW5ndWFnZSBmaWxlcy5cclxuICBqUXVlcnkuZm4uc2VsZWN0Mi5hbWQgPSBTMjtcclxuXHJcbiAgLy8gUmV0dXJuIHRoZSBTZWxlY3QyIGluc3RhbmNlIGZvciBhbnlvbmUgd2hvIGlzIGltcG9ydGluZyBpdC5cclxuICByZXR1cm4gc2VsZWN0MjtcclxufSkpO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vc2VsZWN0Mi9kaXN0L2pzL3NlbGVjdDIuanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(48)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(10),\n /* template */\n __webpack_require__(39),\n /* scopeId */\n \"data-v-3edef3ba\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/alert.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] alert.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3edef3ba\", Component.options)\n } else {\n hotAPI.reload(\"data-v-3edef3ba\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYWxlcnQudnVlPzhhMmMiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBzdHlsZXMgKi9cbnJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtM2VkZWYzYmFcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9hbGVydC52dWVcIilcblxudmFyIENvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpKFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOnRydWUsXFxcInByZXNldHNcXFwiOltbXFxcImVudlxcXCIse1xcXCJtb2R1bGVzXFxcIjpmYWxzZSxcXFwidGFyZ2V0c1xcXCI6e1xcXCJicm93c2Vyc1xcXCI6W1xcXCI+IDIlXFxcIl0sXFxcInVnbGlmeVxcXCI6dHJ1ZX19XV19IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vYWxlcnQudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0zZWRlZjNiYVxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9hbGVydC52dWVcIiksXG4gIC8qIHNjb3BlSWQgKi9cbiAgXCJkYXRhLXYtM2VkZWYzYmFcIixcbiAgLyogY3NzTW9kdWxlcyAqL1xuICBudWxsXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIi9Vc2Vycy9hZ2lhbm90dG8vU2l0ZXMvc25pcGUtaXQvc25pcGUtaXQvcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2FsZXJ0LnZ1ZVwiXG5pZiAoQ29tcG9uZW50LmVzTW9kdWxlICYmIE9iamVjdC5rZXlzKENvbXBvbmVudC5lc01vZHVsZSkuc29tZShmdW5jdGlvbiAoa2V5KSB7cmV0dXJuIGtleSAhPT0gXCJkZWZhdWx0XCIgJiYga2V5ICE9PSBcIl9fZXNNb2R1bGVcIn0pKSB7Y29uc29sZS5lcnJvcihcIm5hbWVkIGV4cG9ydHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gKi52dWUgZmlsZXMuXCIpfVxuaWYgKENvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtjb25zb2xlLmVycm9yKFwiW3Z1ZS1sb2FkZXJdIGFsZXJ0LnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi0zZWRlZjNiYVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTNlZGVmM2JhXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9hbGVydC52dWVcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(50)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(11),\n /* template */\n __webpack_require__(41),\n /* scopeId */\n \"data-v-5667c312\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/importer/importer-errors.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] importer-errors.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5667c312\", Component.options)\n } else {\n hotAPI.reload(\"data-v-5667c312\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXItZXJyb3JzLnZ1ZT8xODY1Il0sInNvdXJjZXNDb250ZW50IjpbIlxuLyogc3R5bGVzICovXG5yZXF1aXJlKFwiISF2dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/c291cmNlTWFwIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTU2NjdjMzEyXFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vaW1wb3J0ZXItZXJyb3JzLnZ1ZVwiKVxuXG52YXIgQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIikoXG4gIC8qIHNjcmlwdCAqL1xuICByZXF1aXJlKFwiISFiYWJlbC1sb2FkZXI/e1xcXCJjYWNoZURpcmVjdG9yeVxcXCI6dHJ1ZSxcXFwicHJlc2V0c1xcXCI6W1tcXFwiZW52XFxcIix7XFxcIm1vZHVsZXNcXFwiOmZhbHNlLFxcXCJ0YXJnZXRzXFxcIjp7XFxcImJyb3dzZXJzXFxcIjpbXFxcIj4gMiVcXFwiXSxcXFwidWdsaWZ5XFxcIjp0cnVlfX1dXX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9pbXBvcnRlci1lcnJvcnMudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi01NjY3YzMxMlxcXCJ9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9pbXBvcnRlci1lcnJvcnMudnVlXCIpLFxuICAvKiBzY29wZUlkICovXG4gIFwiZGF0YS12LTU2NjdjMzEyXCIsXG4gIC8qIGNzc01vZHVsZXMgKi9cbiAgbnVsbFxuKVxuQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCIvVXNlcnMvYWdpYW5vdHRvL1NpdGVzL3NuaXBlLWl0L3NuaXBlLWl0L3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9pbXBvcnRlci9pbXBvcnRlci1lcnJvcnMudnVlXCJcbmlmIChDb21wb25lbnQuZXNNb2R1bGUgJiYgT2JqZWN0LmtleXMoQ29tcG9uZW50LmVzTW9kdWxlKS5zb21lKGZ1bmN0aW9uIChrZXkpIHtyZXR1cm4ga2V5ICE9PSBcImRlZmF1bHRcIiAmJiBrZXkgIT09IFwiX19lc01vZHVsZVwifSkpIHtjb25zb2xlLmVycm9yKFwibmFtZWQgZXhwb3J0cyBhcmUgbm90IHN1cHBvcnRlZCBpbiAqLnZ1ZSBmaWxlcy5cIil9XG5pZiAoQ29tcG9uZW50Lm9wdGlvbnMuZnVuY3Rpb25hbCkge2NvbnNvbGUuZXJyb3IoXCJbdnVlLWxvYWRlcl0gaW1wb3J0ZXItZXJyb3JzLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi01NjY3YzMxMlwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTU2NjdjMzEyXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9pbXBvcnRlci9pbXBvcnRlci1lcnJvcnMudnVlXG4vLyBtb2R1bGUgaWQgPSAzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(49)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(12),\n /* template */\n __webpack_require__(40),\n /* scopeId */\n \"data-v-5301a236\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/importer/importer.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] importer.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5301a236\", Component.options)\n } else {\n hotAPI.reload(\"data-v-5301a236\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlPzJkMDQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBzdHlsZXMgKi9cbnJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtNTMwMWEyMzZcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9pbXBvcnRlci52dWVcIilcblxudmFyIENvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpKFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOnRydWUsXFxcInByZXNldHNcXFwiOltbXFxcImVudlxcXCIse1xcXCJtb2R1bGVzXFxcIjpmYWxzZSxcXFwidGFyZ2V0c1xcXCI6e1xcXCJicm93c2Vyc1xcXCI6W1xcXCI+IDIlXFxcIl0sXFxcInVnbGlmeVxcXCI6dHJ1ZX19XV19IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vaW1wb3J0ZXIudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi01MzAxYTIzNlxcXCJ9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9pbXBvcnRlci52dWVcIiksXG4gIC8qIHNjb3BlSWQgKi9cbiAgXCJkYXRhLXYtNTMwMWEyMzZcIixcbiAgLyogY3NzTW9kdWxlcyAqL1xuICBudWxsXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIi9Vc2Vycy9hZ2lhbm90dG8vU2l0ZXMvc25pcGUtaXQvc25pcGUtaXQvcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2ltcG9ydGVyL2ltcG9ydGVyLnZ1ZVwiXG5pZiAoQ29tcG9uZW50LmVzTW9kdWxlICYmIE9iamVjdC5rZXlzKENvbXBvbmVudC5lc01vZHVsZSkuc29tZShmdW5jdGlvbiAoa2V5KSB7cmV0dXJuIGtleSAhPT0gXCJkZWZhdWx0XCIgJiYga2V5ICE9PSBcIl9fZXNNb2R1bGVcIn0pKSB7Y29uc29sZS5lcnJvcihcIm5hbWVkIGV4cG9ydHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gKi52dWUgZmlsZXMuXCIpfVxuaWYgKENvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtjb25zb2xlLmVycm9yKFwiW3Z1ZS1sb2FkZXJdIGltcG9ydGVyLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi01MzAxYTIzNlwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTUzMDFhMjM2XCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9pbXBvcnRlci9pbXBvcnRlci52dWVcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(51)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(13),\n /* template */\n __webpack_require__(42),\n /* scopeId */\n \"data-v-de0d0e4e\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/passport/AuthorizedClients.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] AuthorizedClients.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-de0d0e4e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-de0d0e4e\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlPzFiODIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBzdHlsZXMgKi9cbnJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtZGUwZDBlNGVcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9BdXRob3JpemVkQ2xpZW50cy52dWVcIilcblxudmFyIENvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpKFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOnRydWUsXFxcInByZXNldHNcXFwiOltbXFxcImVudlxcXCIse1xcXCJtb2R1bGVzXFxcIjpmYWxzZSxcXFwidGFyZ2V0c1xcXCI6e1xcXCJicm93c2Vyc1xcXCI6W1xcXCI+IDIlXFxcIl0sXFxcInVnbGlmeVxcXCI6dHJ1ZX19XV19IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vQXV0aG9yaXplZENsaWVudHMudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1kZTBkMGU0ZVxcXCJ9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9BdXRob3JpemVkQ2xpZW50cy52dWVcIiksXG4gIC8qIHNjb3BlSWQgKi9cbiAgXCJkYXRhLXYtZGUwZDBlNGVcIixcbiAgLyogY3NzTW9kdWxlcyAqL1xuICBudWxsXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIi9Vc2Vycy9hZ2lhbm90dG8vU2l0ZXMvc25pcGUtaXQvc25pcGUtaXQvcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3Bhc3Nwb3J0L0F1dGhvcml6ZWRDbGllbnRzLnZ1ZVwiXG5pZiAoQ29tcG9uZW50LmVzTW9kdWxlICYmIE9iamVjdC5rZXlzKENvbXBvbmVudC5lc01vZHVsZSkuc29tZShmdW5jdGlvbiAoa2V5KSB7cmV0dXJuIGtleSAhPT0gXCJkZWZhdWx0XCIgJiYga2V5ICE9PSBcIl9fZXNNb2R1bGVcIn0pKSB7Y29uc29sZS5lcnJvcihcIm5hbWVkIGV4cG9ydHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gKi52dWUgZmlsZXMuXCIpfVxuaWYgKENvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtjb25zb2xlLmVycm9yKFwiW3Z1ZS1sb2FkZXJdIEF1dGhvcml6ZWRDbGllbnRzLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1kZTBkMGU0ZVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWRlMGQwZTRlXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9BdXRob3JpemVkQ2xpZW50cy52dWVcbi8vIG1vZHVsZSBpZCA9IDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(52)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(14),\n /* template */\n __webpack_require__(43),\n /* scopeId */\n \"data-v-e9c80318\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/passport/Clients.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] Clients.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-e9c80318\", Component.options)\n } else {\n hotAPI.reload(\"data-v-e9c80318\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQ2xpZW50cy52dWU/MGU3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qIHN0eWxlcyAqL1xucmVxdWlyZShcIiEhdnVlLXN0eWxlLWxvYWRlciFjc3MtbG9hZGVyP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1lOWM4MDMxOFxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL0NsaWVudHMudnVlXCIpXG5cbnZhciBDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKShcbiAgLyogc2NyaXB0ICovXG4gIHJlcXVpcmUoXCIhIWJhYmVsLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjp0cnVlLFxcXCJwcmVzZXRzXFxcIjpbW1xcXCJlbnZcXFwiLHtcXFwibW9kdWxlc1xcXCI6ZmFsc2UsXFxcInRhcmdldHNcXFwiOntcXFwiYnJvd3NlcnNcXFwiOltcXFwiPiAyJVxcXCJdLFxcXCJ1Z2xpZnlcXFwiOnRydWV9fV1dfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0NsaWVudHMudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1lOWM4MDMxOFxcXCJ9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9DbGllbnRzLnZ1ZVwiKSxcbiAgLyogc2NvcGVJZCAqL1xuICBcImRhdGEtdi1lOWM4MDMxOFwiLFxuICAvKiBjc3NNb2R1bGVzICovXG4gIG51bGxcbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwiL1VzZXJzL2FnaWFub3R0by9TaXRlcy9zbmlwZS1pdC9zbmlwZS1pdC9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQ2xpZW50cy52dWVcIlxuaWYgKENvbXBvbmVudC5lc01vZHVsZSAmJiBPYmplY3Qua2V5cyhDb21wb25lbnQuZXNNb2R1bGUpLnNvbWUoZnVuY3Rpb24gKGtleSkge3JldHVybiBrZXkgIT09IFwiZGVmYXVsdFwiICYmIGtleSAhPT0gXCJfX2VzTW9kdWxlXCJ9KSkge2NvbnNvbGUuZXJyb3IoXCJuYW1lZCBleHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluICoudnVlIGZpbGVzLlwiKX1cbmlmIChDb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7Y29uc29sZS5lcnJvcihcIlt2dWUtbG9hZGVyXSBDbGllbnRzLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1lOWM4MDMxOFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWU5YzgwMzE4XCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9DbGllbnRzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(47)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(15),\n /* template */\n __webpack_require__(38),\n /* scopeId */\n \"data-v-225778c2\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/passport/PersonalAccessTokens.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] PersonalAccessTokens.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-225778c2\", Component.options)\n } else {\n hotAPI.reload(\"data-v-225778c2\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlPzlkZmIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBzdHlsZXMgKi9cbnJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtMjI1Nzc4YzJcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9QZXJzb25hbEFjY2Vzc1Rva2Vucy52dWVcIilcblxudmFyIENvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpKFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyP3tcXFwiY2FjaGVEaXJlY3RvcnlcXFwiOnRydWUsXFxcInByZXNldHNcXFwiOltbXFxcImVudlxcXCIse1xcXCJtb2R1bGVzXFxcIjpmYWxzZSxcXFwidGFyZ2V0c1xcXCI6e1xcXCJicm93c2Vyc1xcXCI6W1xcXCI+IDIlXFxcIl0sXFxcInVnbGlmeVxcXCI6dHJ1ZX19XV19IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0yMjU3NzhjMlxcXCJ9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9QZXJzb25hbEFjY2Vzc1Rva2Vucy52dWVcIiksXG4gIC8qIHNjb3BlSWQgKi9cbiAgXCJkYXRhLXYtMjI1Nzc4YzJcIixcbiAgLyogY3NzTW9kdWxlcyAqL1xuICBudWxsXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIi9Vc2Vycy9hZ2lhbm90dG8vU2l0ZXMvc25pcGUtaXQvc25pcGUtaXQvcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3Bhc3Nwb3J0L1BlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZVwiXG5pZiAoQ29tcG9uZW50LmVzTW9kdWxlICYmIE9iamVjdC5rZXlzKENvbXBvbmVudC5lc01vZHVsZSkuc29tZShmdW5jdGlvbiAoa2V5KSB7cmV0dXJuIGtleSAhPT0gXCJkZWZhdWx0XCIgJiYga2V5ICE9PSBcIl9fZXNNb2R1bGVcIn0pKSB7Y29uc29sZS5lcnJvcihcIm5hbWVkIGV4cG9ydHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gKi52dWUgZmlsZXMuXCIpfVxuaWYgKENvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWwpIHtjb25zb2xlLmVycm9yKFwiW3Z1ZS1sb2FkZXJdIFBlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi0yMjU3NzhjMlwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTIyNTc3OGMyXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9QZXJzb25hbEFjY2Vzc1Rva2Vucy52dWVcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/* styles */\n__webpack_require__(53)\n\nvar Component = __webpack_require__(1)(\n /* script */\n __webpack_require__(16),\n /* template */\n __webpack_require__(44),\n /* scopeId */\n \"data-v-ff564a86\",\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/agianotto/Sites/snipe-it/snipe-it/resources/assets/js/components/select2.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] select2.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-ff564a86\", Component.options)\n } else {\n hotAPI.reload(\"data-v-ff564a86\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWU/ZjdhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qIHN0eWxlcyAqL1xucmVxdWlyZShcIiEhdnVlLXN0eWxlLWxvYWRlciFjc3MtbG9hZGVyP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1mZjU2NGE4NlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NlbGVjdDIudnVlXCIpXG5cbnZhciBDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKShcbiAgLyogc2NyaXB0ICovXG4gIHJlcXVpcmUoXCIhIWJhYmVsLWxvYWRlcj97XFxcImNhY2hlRGlyZWN0b3J5XFxcIjp0cnVlLFxcXCJwcmVzZXRzXFxcIjpbW1xcXCJlbnZcXFwiLHtcXFwibW9kdWxlc1xcXCI6ZmFsc2UsXFxcInRhcmdldHNcXFwiOntcXFwiYnJvd3NlcnNcXFwiOltcXFwiPiAyJVxcXCJdLFxcXCJ1Z2xpZnlcXFwiOnRydWV9fV1dfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL3NlbGVjdDIudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1mZjU2NGE4NlxcXCJ9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zZWxlY3QyLnZ1ZVwiKSxcbiAgLyogc2NvcGVJZCAqL1xuICBcImRhdGEtdi1mZjU2NGE4NlwiLFxuICAvKiBjc3NNb2R1bGVzICovXG4gIG51bGxcbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwiL1VzZXJzL2FnaWFub3R0by9TaXRlcy9zbmlwZS1pdC9zbmlwZS1pdC9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWVcIlxuaWYgKENvbXBvbmVudC5lc01vZHVsZSAmJiBPYmplY3Qua2V5cyhDb21wb25lbnQuZXNNb2R1bGUpLnNvbWUoZnVuY3Rpb24gKGtleSkge3JldHVybiBrZXkgIT09IFwiZGVmYXVsdFwiICYmIGtleSAhPT0gXCJfX2VzTW9kdWxlXCJ9KSkge2NvbnNvbGUuZXJyb3IoXCJuYW1lZCBleHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluICoudnVlIGZpbGVzLlwiKX1cbmlmIChDb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7Y29uc29sZS5lcnJvcihcIlt2dWUtbG9hZGVyXSBzZWxlY3QyLnZ1ZTogZnVuY3Rpb25hbCBjb21wb25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGVtcGxhdGVzLCB0aGV5IHNob3VsZCB1c2UgcmVuZGVyIGZ1bmN0aW9ucy5cIil9XG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1mZjU2NGE4NlwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWZmNTY0YTg2XCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG59KSgpfVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWxlY3QyLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('div', [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticStyle: {\n \"display\": \"flex\",\n \"justify-content\": \"space-between\",\n \"align-items\": \"center\"\n }\n }, [_c('span', [_vm._v(\"\\n Personal Access Tokens\\n \")]), _vm._v(\" \"), _c('a', {\n staticClass: \"action-link\",\n on: {\n \"click\": _vm.showCreateTokenForm\n }\n }, [_vm._v(\"\\n Create New Token\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body\"\n }, [(_vm.tokens.length === 0) ? _c('p', {\n staticClass: \"m-b-none\"\n }, [_vm._v(\"\\n You have not created any personal access tokens.\\n \")]) : _vm._e(), _vm._v(\" \"), (_vm.tokens.length > 0) ? _c('table', {\n staticClass: \"table table-borderless m-b-none\"\n }, [_vm._m(0), _vm._v(\" \"), _c('tbody', _vm._l((_vm.tokens), function(token) {\n return _c('tr', [_c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(token.name) + \"\\n \")]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_c('a', {\n staticClass: \"action-link text-danger\",\n on: {\n \"click\": function($event) {\n _vm.revoke(token)\n }\n }\n }, [_vm._v(\"\\n Delete\\n \")])])])\n }))]) : _vm._e()])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal fade\",\n attrs: {\n \"id\": \"modal-create-token\",\n \"tabindex\": \"-1\",\n \"role\": \"dialog\"\n }\n }, [_c('div', {\n staticClass: \"modal-dialog\"\n }, [_c('div', {\n staticClass: \"modal-content\"\n }, [_vm._m(1), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-body\"\n }, [(_vm.form.errors.length > 0) ? _c('div', {\n staticClass: \"alert alert-danger\"\n }, [_vm._m(2), _vm._v(\" \"), _c('br'), _vm._v(\" \"), _c('ul', _vm._l((_vm.form.errors), function(error) {\n return _c('li', [_vm._v(\"\\n \" + _vm._s(error) + \"\\n \")])\n }))]) : _vm._e(), _vm._v(\" \"), _c('form', {\n staticClass: \"form-horizontal\",\n attrs: {\n \"role\": \"form\"\n },\n on: {\n \"submit\": function($event) {\n $event.preventDefault();\n _vm.store($event)\n }\n }\n }, [_c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-4 control-label\"\n }, [_vm._v(\"Name\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-6\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.form.name),\n expression: \"form.name\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"id\": \"create-token-name\",\n \"type\": \"text\",\n \"name\": \"name\"\n },\n domProps: {\n \"value\": (_vm.form.name)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.form.name = $event.target.value\n }\n }\n })])]), _vm._v(\" \"), (_vm.scopes.length > 0) ? _c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-4 control-label\"\n }, [_vm._v(\"Scopes\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-6\"\n }, _vm._l((_vm.scopes), function(scope) {\n return _c('div', [_c('div', {\n staticClass: \"checkbox\"\n }, [_c('label', [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.scopeIsAssigned(scope.id)\n },\n on: {\n \"click\": function($event) {\n _vm.toggleScope(scope.id)\n }\n }\n }), _vm._v(\"\\n\\n \" + _vm._s(scope.id) + \"\\n \")])])])\n }))]) : _vm._e()])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-footer\"\n }, [_c('button', {\n staticClass: \"btn btn-default\",\n attrs: {\n \"type\": \"button\",\n \"data-dismiss\": \"modal\"\n }\n }, [_vm._v(\"Close\")]), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.store\n }\n }, [_vm._v(\"\\n Create\\n \")])])])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal fade\",\n attrs: {\n \"id\": \"modal-access-token\",\n \"tabindex\": \"-1\",\n \"role\": \"dialog\"\n }\n }, [_c('div', {\n staticClass: \"modal-dialog\"\n }, [_c('div', {\n staticClass: \"modal-content\"\n }, [_vm._m(3), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-body\"\n }, [_c('p', [_vm._v(\"\\n Here is your new personal access token. This is the only time it will be shown so don't lose it!\\n You may now use this token to make API requests.\\n \")]), _vm._v(\" \"), _c('pre', [_c('code', [_vm._v(_vm._s(_vm.accessToken))])])]), _vm._v(\" \"), _vm._m(4)])])])])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('thead', [_c('tr', [_c('th', [_vm._v(\"Name\")]), _vm._v(\" \"), _c('th')])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"modal-header\"\n }, [_c('button', {\n staticClass: \"close\",\n attrs: {\n \"type\": \"button \",\n \"data-dismiss\": \"modal\",\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"×\")]), _vm._v(\" \"), _c('h4', {\n staticClass: \"modal-title\"\n }, [_vm._v(\"\\n Create Token\\n \")])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('p', [_c('strong', [_vm._v(\"Whoops!\")]), _vm._v(\" Something went wrong!\")])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"modal-header\"\n }, [_c('button', {\n staticClass: \"close\",\n attrs: {\n \"type\": \"button \",\n \"data-dismiss\": \"modal\",\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"×\")]), _vm._v(\" \"), _c('h4', {\n staticClass: \"modal-title\"\n }, [_vm._v(\"\\n Personal Access Token\\n \")])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"modal-footer\"\n }, [_c('button', {\n staticClass: \"btn btn-default\",\n attrs: {\n \"type\": \"button\",\n \"data-dismiss\": \"modal\"\n }\n }, [_vm._v(\"Close\")])])\n}]}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-225778c2\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlP2M2MGIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCBbX2MoJ2RpdicsIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcInBhbmVsIHBhbmVsLWRlZmF1bHRcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJwYW5lbC1oZWFkaW5nXCJcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljU3R5bGU6IHtcbiAgICAgIFwiZGlzcGxheVwiOiBcImZsZXhcIixcbiAgICAgIFwianVzdGlmeS1jb250ZW50XCI6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgXCJhbGlnbi1pdGVtc1wiOiBcImNlbnRlclwiXG4gICAgfVxuICB9LCBbX2MoJ3NwYW4nLCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29uYWwgQWNjZXNzIFRva2Vuc1xcbiAgICAgICAgICAgICAgICAgICAgXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdhJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1saW5rXCIsXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogX3ZtLnNob3dDcmVhdGVUb2tlbkZvcm1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgTmV3IFRva2VuXFxuICAgICAgICAgICAgICAgICAgICBcIildKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwicGFuZWwtYm9keVwiXG4gIH0sIFsoX3ZtLnRva2Vucy5sZW5ndGggPT09IDApID8gX2MoJ3AnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibS1iLW5vbmVcIlxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgcGVyc29uYWwgYWNjZXNzIHRva2Vucy5cXG4gICAgICAgICAgICAgICAgXCIpXSkgOiBfdm0uX2UoKSwgX3ZtLl92KFwiIFwiKSwgKF92bS50b2tlbnMubGVuZ3RoID4gMCkgPyBfYygndGFibGUnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidGFibGUgdGFibGUtYm9yZGVybGVzcyBtLWItbm9uZVwiXG4gIH0sIFtfdm0uX20oMCksIF92bS5fdihcIiBcIiksIF9jKCd0Ym9keScsIF92bS5fbCgoX3ZtLnRva2VucyksIGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgcmV0dXJuIF9jKCd0cicsIFtfYygndGQnLCB7XG4gICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICBcInZlcnRpY2FsLWFsaWduXCI6IFwibWlkZGxlXCJcbiAgICAgIH1cbiAgICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiArIF92bS5fcyh0b2tlbi5uYW1lKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGQnLCB7XG4gICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICBcInZlcnRpY2FsLWFsaWduXCI6IFwibWlkZGxlXCJcbiAgICAgIH1cbiAgICB9LCBbX2MoJ2EnLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJhY3Rpb24tbGluayB0ZXh0LWRhbmdlclwiLFxuICAgICAgb246IHtcbiAgICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0ucmV2b2tlKHRva2VuKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSldKV0pXG4gIH0pKV0pIDogX3ZtLl9lKCldKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwgZmFkZVwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcImlkXCI6IFwibW9kYWwtY3JlYXRlLXRva2VuXCIsXG4gICAgICBcInRhYmluZGV4XCI6IFwiLTFcIixcbiAgICAgIFwicm9sZVwiOiBcImRpYWxvZ1wiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1kaWFsb2dcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1jb250ZW50XCJcbiAgfSwgW192bS5fbSgxKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCJcbiAgfSwgWyhfdm0uZm9ybS5lcnJvcnMubGVuZ3RoID4gMCkgPyBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImFsZXJ0IGFsZXJ0LWRhbmdlclwiXG4gIH0sIFtfdm0uX20oMiksIF92bS5fdihcIiBcIiksIF9jKCdicicpLCBfdm0uX3YoXCIgXCIpLCBfYygndWwnLCBfdm0uX2woKF92bS5mb3JtLmVycm9ycyksIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgcmV0dXJuIF9jKCdsaScsIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKGVycm9yKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pXG4gIH0pKV0pIDogX3ZtLl9lKCksIF92bS5fdihcIiBcIiksIF9jKCdmb3JtJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0taG9yaXpvbnRhbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInJvbGVcIjogXCJmb3JtXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcInN1Ym1pdFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF92bS5zdG9yZSgkZXZlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJmb3JtLWdyb3VwXCJcbiAgfSwgW19jKCdsYWJlbCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtNCBjb250cm9sLWxhYmVsXCJcbiAgfSwgW192bS5fdihcIk5hbWVcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtNlwiXG4gIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgdmFsdWU6IChfdm0uZm9ybS5uYW1lKSxcbiAgICAgIGV4cHJlc3Npb246IFwiZm9ybS5uYW1lXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJmb3JtLWNvbnRyb2xcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImNyZWF0ZS10b2tlbi1uYW1lXCIsXG4gICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICBcIm5hbWVcIjogXCJuYW1lXCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZhbHVlXCI6IChfdm0uZm9ybS5uYW1lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgX3ZtLmZvcm0ubmFtZSA9ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH0pXSldKSwgX3ZtLl92KFwiIFwiKSwgKF92bS5zY29wZXMubGVuZ3RoID4gMCkgPyBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tZ3JvdXBcIlxuICB9LCBbX2MoJ2xhYmVsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC00IGNvbnRyb2wtbGFiZWxcIlxuICB9LCBbX3ZtLl92KFwiU2NvcGVzXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTZcIlxuICB9LCBfdm0uX2woKF92bS5zY29wZXMpLCBmdW5jdGlvbihzY29wZSkge1xuICAgIHJldHVybiBfYygnZGl2JywgW19jKCdkaXYnLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJjaGVja2JveFwiXG4gICAgfSwgW19jKCdsYWJlbCcsIFtfYygnaW5wdXQnLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBcInR5cGVcIjogXCJjaGVja2JveFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgXCJjaGVja2VkXCI6IF92bS5zY29wZUlzQXNzaWduZWQoc2NvcGUuaWQpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0udG9nZ2xlU2NvcGUoc2NvcGUuaWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSwgX3ZtLl92KFwiXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKyBfdm0uX3Moc2NvcGUuaWQpICsgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSldKV0pXG4gIH0pKV0pIDogX3ZtLl9lKCldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWZvb3RlclwiXG4gIH0sIFtfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tZGVmYXVsdFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJidXR0b25cIixcbiAgICAgIFwiZGF0YS1kaXNtaXNzXCI6IFwibW9kYWxcIlxuICAgIH1cbiAgfSwgW192bS5fdihcIkNsb3NlXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdidXR0b24nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvblwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBfdm0uc3RvcmVcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVcXG4gICAgICAgICAgICAgICAgICAgIFwiKV0pXSldKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwgZmFkZVwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcImlkXCI6IFwibW9kYWwtYWNjZXNzLXRva2VuXCIsXG4gICAgICBcInRhYmluZGV4XCI6IFwiLTFcIixcbiAgICAgIFwicm9sZVwiOiBcImRpYWxvZ1wiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1kaWFsb2dcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1jb250ZW50XCJcbiAgfSwgW192bS5fbSgzKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCJcbiAgfSwgW19jKCdwJywgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgeW91ciBuZXcgcGVyc29uYWwgYWNjZXNzIHRva2VuLiBUaGlzIGlzIHRoZSBvbmx5IHRpbWUgaXQgd2lsbCBiZSBzaG93biBzbyBkb24ndCBsb3NlIGl0IVxcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgbm93IHVzZSB0aGlzIHRva2VuIHRvIG1ha2UgQVBJIHJlcXVlc3RzLlxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdwcmUnLCBbX2MoJ2NvZGUnLCBbX3ZtLl92KF92bS5fcyhfdm0uYWNjZXNzVG9rZW4pKV0pXSldKSwgX3ZtLl92KFwiIFwiKSwgX3ZtLl9tKDQpXSldKV0pXSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygndGhlYWQnLCBbX2MoJ3RyJywgW19jKCd0aCcsIFtfdm0uX3YoXCJOYW1lXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcpXSldKVxufSxmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtaGVhZGVyXCJcbiAgfSwgW19jKCdidXR0b24nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY2xvc2VcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwiYnV0dG9uIFwiLFxuICAgICAgXCJkYXRhLWRpc21pc3NcIjogXCJtb2RhbFwiLFxuICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgIH1cbiAgfSwgW192bS5fdihcIsOXXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdoNCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC10aXRsZVwiXG4gIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgVG9rZW5cXG4gICAgICAgICAgICAgICAgICAgIFwiKV0pXSlcbn0sZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygncCcsIFtfYygnc3Ryb25nJywgW192bS5fdihcIldob29wcyFcIildKSwgX3ZtLl92KFwiIFNvbWV0aGluZyB3ZW50IHdyb25nIVwiKV0pXG59LGZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1oZWFkZXJcIlxuICB9LCBbX2MoJ2J1dHRvbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjbG9zZVwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJidXR0b24gXCIsXG4gICAgICBcImRhdGEtZGlzbWlzc1wiOiBcIm1vZGFsXCIsXG4gICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG4gICAgfVxuICB9LCBbX3ZtLl92KFwiw5dcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2g0Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLXRpdGxlXCJcbiAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbmFsIEFjY2VzcyBUb2tlblxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSldKVxufSxmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtZm9vdGVyXCJcbiAgfSwgW19jKCdidXR0b24nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiYnRuIGJ0bi1kZWZhdWx0XCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvblwiLFxuICAgICAgXCJkYXRhLWRpc21pc3NcIjogXCJtb2RhbFwiXG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQ2xvc2VcIildKV0pXG59XX1cbm1vZHVsZS5leHBvcnRzLnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikucmVyZW5kZXIoXCJkYXRhLXYtMjI1Nzc4YzJcIiwgbW9kdWxlLmV4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi0yMjU3NzhjMlwifSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3Bhc3Nwb3J0L1BlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"col-md-12\",\n class: _vm.alertType\n }, [_c('div', {\n staticClass: \"alert\",\n class: _vm.alertClassName\n }, [_c('button', {\n staticClass: \"close\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.hideEvent\n }\n }, [_vm._v(\"×\")]), _vm._v(\" \"), _c('i', {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: (_vm.alertType == 'success'),\n expression: \"alertType == 'success'\"\n }],\n staticClass: \"fa fa-check faa-pulse animated\"\n }), _vm._v(\" \"), _c('strong', [_vm._v(_vm._s(_vm.title) + \" \")]), _vm._v(\" \"), _vm._t(\"default\")], 2)])\n},staticRenderFns: []}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-3edef3ba\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYWxlcnQudnVlPzkxMjkiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTEyXCIsXG4gICAgY2xhc3M6IF92bS5hbGVydFR5cGVcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiYWxlcnRcIixcbiAgICBjbGFzczogX3ZtLmFsZXJ0Q2xhc3NOYW1lXG4gIH0sIFtfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNsb3NlXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvblwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBfdm0uaGlkZUV2ZW50XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiw5dcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2knLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmFsZXJ0VHlwZSA9PSAnc3VjY2VzcycpLFxuICAgICAgZXhwcmVzc2lvbjogXCJhbGVydFR5cGUgPT0gJ3N1Y2Nlc3MnXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJmYSBmYS1jaGVjayBmYWEtcHVsc2UgYW5pbWF0ZWRcIlxuICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3N0cm9uZycsIFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkgKyBcIiBcIildKSwgX3ZtLl92KFwiIFwiKSwgX3ZtLl90KFwiZGVmYXVsdFwiKV0sIDIpXSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cbm1vZHVsZS5leHBvcnRzLnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikucmVyZW5kZXIoXCJkYXRhLXYtM2VkZWYzYmFcIiwgbW9kdWxlLmV4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi0zZWRlZjNiYVwifSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2FsZXJ0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"row\"\n }, [_c('alert', {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: (_vm.alert.visible),\n expression: \"alert.visible\"\n }],\n attrs: {\n \"alertType\": _vm.alert.type\n },\n on: {\n \"hide\": function($event) {\n _vm.alert.visible = false\n }\n }\n }, [_vm._v(_vm._s(_vm.alert.message))]), _vm._v(\" \"), _c('errors', {\n attrs: {\n \"errors\": _vm.importErrors\n }\n }), _vm._v(\" \"), _c('modal', {\n attrs: {\n \"effect\": \"fade\"\n },\n model: {\n value: (_vm.displayImportModal),\n callback: function($$v) {\n _vm.displayImportModal = $$v\n },\n expression: \"displayImportModal\"\n }\n }, [_c('div', {\n staticClass: \"modal-header\",\n slot: \"modal-header\"\n }, [_c('h4', {\n staticClass: \"modal-title\"\n }, [_vm._v(\"Import File:\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-body\",\n slot: \"modal-body\"\n }, [_c('div', {\n staticClass: \"dynamic-form-row\"\n }, [_c('div', {\n staticClass: \"col-md-4 col-xs-12\"\n }, [_c('label', {\n attrs: {\n \"for\": \"import-type\"\n }\n }, [_vm._v(\"Import Type:\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-8 col-xs-12\"\n }, [_c('select2', {\n attrs: {\n \"options\": _vm.modal.importTypes\n },\n model: {\n value: (_vm.modal.importType),\n callback: function($$v) {\n _vm.modal.importType = $$v\n },\n expression: \"modal.importType\"\n }\n }, [_c('option', {\n attrs: {\n \"disabled\": \"\",\n \"value\": \"0\"\n }\n })])], 1)]), _vm._v(\" \"), _c('div', {\n staticClass: \"dynamic-form-row\"\n }, [_c('div', {\n staticClass: \"col-md-4 col-xs-12\"\n }, [_c('label', {\n attrs: {\n \"for\": \"import-update\"\n }\n }, [_vm._v(\"Update Existing Values?:\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-8 col-xs-12\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.modal.update),\n expression: \"modal.update\"\n }],\n attrs: {\n \"type\": \"checkbox\",\n \"name\": \"import-update\"\n },\n domProps: {\n \"checked\": Array.isArray(_vm.modal.update) ? _vm._i(_vm.modal.update, null) > -1 : (_vm.modal.update)\n },\n on: {\n \"__c\": function($event) {\n var $$a = _vm.modal.update,\n $$el = $event.target,\n $$c = $$el.checked ? (true) : (false);\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v);\n if ($$c) {\n $$i < 0 && (_vm.modal.update = $$a.concat($$v))\n } else {\n $$i > -1 && (_vm.modal.update = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.modal.update = $$c\n }\n }\n }\n })])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-footer\",\n slot: \"modal-footer\"\n }, [(_vm.modal.statusText) ? _c('div', {\n staticClass: \"alert alert-success col-md-5 col-md-offset-1\",\n staticStyle: {\n \"text-align\": \"left\"\n }\n }, [_vm._v(_vm._s(this.modal.statusText))]) : _vm._e(), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-default\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n _vm.displayImportModal = false\n }\n }\n }, [_vm._v(\"Cancel\")]), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"submit\"\n },\n on: {\n \"click\": _vm.postSave\n }\n }, [_vm._v(\"Process\")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-12\"\n }, [_c('div', {\n staticClass: \"box\"\n }, [_c('div', {\n staticClass: \"box-body\"\n }, [_c('div', {\n staticClass: \"row\"\n }, [_vm._m(0), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: (_vm.progress.visible),\n expression: \"progress.visible\"\n }],\n staticClass: \"col-md-9\",\n staticStyle: {\n \"padding-bottom\": \"20px\"\n }\n }, [_c('div', {\n staticClass: \"col-md-11\"\n }, [_c('div', {\n staticClass: \"progress progress-striped-active\",\n staticStyle: {\n \"margin-top\": \"8px\"\n }\n }, [_c('div', {\n staticClass: \"progress-bar\",\n class: _vm.progress.currentClass,\n style: (_vm.progressWidth),\n attrs: {\n \"role\": \"progressbar\"\n }\n }, [_c('span', [_vm._v(_vm._s(_vm.progress.statusText))])])])])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"row\"\n }, [_c('div', {\n staticClass: \"col-md-12\",\n staticStyle: {\n \"padding-top\": \"30px\"\n }\n }, [_c('table', {\n staticClass: \"table table-striped\",\n attrs: {\n \"id\": \"upload-table\"\n }\n }, [_vm._m(1), _vm._v(\" \"), _c('tbody', _vm._l((_vm.files), function(file) {\n return _c('tr', [_c('td', [_vm._v(_vm._s(file.file_path))]), _vm._v(\" \"), _c('td', [_vm._v(_vm._s(file.created_at) + \" \")]), _vm._v(\" \"), _c('td', [_vm._v(_vm._s(file.filesize))]), _vm._v(\" \"), _c('td', [_c('button', {\n staticClass: \"btn btn-sm btn-info\",\n on: {\n \"click\": function($event) {\n _vm.showModal(file)\n }\n }\n }, [_vm._v(\"Process\")]), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-danger\",\n on: {\n \"click\": function($event) {\n _vm.deleteFile(file)\n }\n }\n }, [_c('i', {\n staticClass: \"fa fa-trash icon-white\"\n })])])])\n }))])])])])])])], 1)\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"col-md-3\"\n }, [_c('span', {\n staticClass: \"btn btn-info fileinput-button\"\n }, [_c('span', [_vm._v(\"Select Import File...\")]), _vm._v(\" \"), _c('input', {\n attrs: {\n \"id\": \"fileupload\",\n \"type\": \"file\",\n \"name\": \"files[]\",\n \"data-url\": \"/api/v1/imports\",\n \"accept\": \"text/csv\"\n }\n })])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('thead', [_c('th', [_vm._v(\"File\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Created\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Size\")]), _vm._v(\" \"), _c('th')])\n}]}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-5301a236\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlPzVlYjciXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwicm93XCJcbiAgfSwgW19jKCdhbGVydCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgdmFsdWU6IChfdm0uYWxlcnQudmlzaWJsZSksXG4gICAgICBleHByZXNzaW9uOiBcImFsZXJ0LnZpc2libGVcIlxuICAgIH1dLFxuICAgIGF0dHJzOiB7XG4gICAgICBcImFsZXJ0VHlwZVwiOiBfdm0uYWxlcnQudHlwZVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiaGlkZVwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgX3ZtLmFsZXJ0LnZpc2libGUgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihfdm0uX3MoX3ZtLmFsZXJ0Lm1lc3NhZ2UpKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZXJyb3JzJywge1xuICAgIGF0dHJzOiB7XG4gICAgICBcImVycm9yc1wiOiBfdm0uaW1wb3J0RXJyb3JzXG4gICAgfVxuICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ21vZGFsJywge1xuICAgIGF0dHJzOiB7XG4gICAgICBcImVmZmVjdFwiOiBcImZhZGVcIlxuICAgIH0sXG4gICAgbW9kZWw6IHtcbiAgICAgIHZhbHVlOiAoX3ZtLmRpc3BsYXlJbXBvcnRNb2RhbCksXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgIF92bS5kaXNwbGF5SW1wb3J0TW9kYWwgPSAkJHZcbiAgICAgIH0sXG4gICAgICBleHByZXNzaW9uOiBcImRpc3BsYXlJbXBvcnRNb2RhbFwiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1oZWFkZXJcIixcbiAgICBzbG90OiBcIm1vZGFsLWhlYWRlclwiXG4gIH0sIFtfYygnaDQnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtdGl0bGVcIlxuICB9LCBbX3ZtLl92KFwiSW1wb3J0IEZpbGU6XCIpXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCIsXG4gICAgc2xvdDogXCJtb2RhbC1ib2R5XCJcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZHluYW1pYy1mb3JtLXJvd1wiXG4gIH0sIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC00IGNvbC14cy0xMlwiXG4gIH0sIFtfYygnbGFiZWwnLCB7XG4gICAgYXR0cnM6IHtcbiAgICAgIFwiZm9yXCI6IFwiaW1wb3J0LXR5cGVcIlxuICAgIH1cbiAgfSwgW192bS5fdihcIkltcG9ydCBUeXBlOlwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTggY29sLXhzLTEyXCJcbiAgfSwgW19jKCdzZWxlY3QyJywge1xuICAgIGF0dHJzOiB7XG4gICAgICBcIm9wdGlvbnNcIjogX3ZtLm1vZGFsLmltcG9ydFR5cGVzXG4gICAgfSxcbiAgICBtb2RlbDoge1xuICAgICAgdmFsdWU6IChfdm0ubW9kYWwuaW1wb3J0VHlwZSksXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgIF92bS5tb2RhbC5pbXBvcnRUeXBlID0gJCR2XG4gICAgICB9LFxuICAgICAgZXhwcmVzc2lvbjogXCJtb2RhbC5pbXBvcnRUeXBlXCJcbiAgICB9XG4gIH0sIFtfYygnb3B0aW9uJywge1xuICAgIGF0dHJzOiB7XG4gICAgICBcImRpc2FibGVkXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiMFwiXG4gICAgfVxuICB9KV0pXSwgMSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJkeW5hbWljLWZvcm0tcm93XCJcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTQgY29sLXhzLTEyXCJcbiAgfSwgW19jKCdsYWJlbCcsIHtcbiAgICBhdHRyczoge1xuICAgICAgXCJmb3JcIjogXCJpbXBvcnQtdXBkYXRlXCJcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJVcGRhdGUgRXhpc3RpbmcgVmFsdWVzPzpcIildKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC04IGNvbC14cy0xMlwiXG4gIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgdmFsdWU6IChfdm0ubW9kYWwudXBkYXRlKSxcbiAgICAgIGV4cHJlc3Npb246IFwibW9kYWwudXBkYXRlXCJcbiAgICB9XSxcbiAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIixcbiAgICAgIFwibmFtZVwiOiBcImltcG9ydC11cGRhdGVcIlxuICAgIH0sXG4gICAgZG9tUHJvcHM6IHtcbiAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KF92bS5tb2RhbC51cGRhdGUpID8gX3ZtLl9pKF92bS5tb2RhbC51cGRhdGUsIG51bGwpID4gLTEgOiAoX3ZtLm1vZGFsLnVwZGF0ZSlcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcIl9fY1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgdmFyICQkYSA9IF92bS5tb2RhbC51cGRhdGUsXG4gICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gKHRydWUpIDogKGZhbHNlKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTtcbiAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAgICAgICAkJGkgPCAwICYmIChfdm0ubW9kYWwudXBkYXRlID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkJGkgPiAtMSAmJiAoX3ZtLm1vZGFsLnVwZGF0ZSA9ICQkYS5zbGljZSgwLCAkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdm0ubW9kYWwudXBkYXRlID0gJCRjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWZvb3RlclwiLFxuICAgIHNsb3Q6IFwibW9kYWwtZm9vdGVyXCJcbiAgfSwgWyhfdm0ubW9kYWwuc3RhdHVzVGV4dCkgPyBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MgY29sLW1kLTUgY29sLW1kLW9mZnNldC0xXCIsXG4gICAgc3RhdGljU3R5bGU6IHtcbiAgICAgIFwidGV4dC1hbGlnblwiOiBcImxlZnRcIlxuICAgIH1cbiAgfSwgW192bS5fdihfdm0uX3ModGhpcy5tb2RhbC5zdGF0dXNUZXh0KSldKSA6IF92bS5fZSgpLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tZGVmYXVsdFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJidXR0b25cIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIF92bS5kaXNwbGF5SW1wb3J0TW9kYWwgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkNhbmNlbFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tcHJpbWFyeVwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJzdWJtaXRcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogX3ZtLnBvc3RTYXZlXG4gICAgfVxuICB9LCBbX3ZtLl92KFwiUHJvY2Vzc1wiKV0pXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtMTJcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJib3hcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJib3gtYm9keVwiXG4gIH0sIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcInJvd1wiXG4gIH0sIFtfdm0uX20oMCksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3ZtLnByb2dyZXNzLnZpc2libGUpLFxuICAgICAgZXhwcmVzc2lvbjogXCJwcm9ncmVzcy52aXNpYmxlXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtOVwiLFxuICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICBcInBhZGRpbmctYm90dG9tXCI6IFwiMjBweFwiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtMTFcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkLWFjdGl2ZVwiLFxuICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICBcIm1hcmdpbi10b3BcIjogXCI4cHhcIlxuICAgIH1cbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwicHJvZ3Jlc3MtYmFyXCIsXG4gICAgY2xhc3M6IF92bS5wcm9ncmVzcy5jdXJyZW50Q2xhc3MsXG4gICAgc3R5bGU6IChfdm0ucHJvZ3Jlc3NXaWR0aCksXG4gICAgYXR0cnM6IHtcbiAgICAgIFwicm9sZVwiOiBcInByb2dyZXNzYmFyXCJcbiAgICB9XG4gIH0sIFtfYygnc3BhbicsIFtfdm0uX3YoX3ZtLl9zKF92bS5wcm9ncmVzcy5zdGF0dXNUZXh0KSldKV0pXSldKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwicm93XCJcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTEyXCIsXG4gICAgc3RhdGljU3R5bGU6IHtcbiAgICAgIFwicGFkZGluZy10b3BcIjogXCIzMHB4XCJcbiAgICB9XG4gIH0sIFtfYygndGFibGUnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidGFibGUgdGFibGUtc3RyaXBlZFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcImlkXCI6IFwidXBsb2FkLXRhYmxlXCJcbiAgICB9XG4gIH0sIFtfdm0uX20oMSksIF92bS5fdihcIiBcIiksIF9jKCd0Ym9keScsIF92bS5fbCgoX3ZtLmZpbGVzKSwgZnVuY3Rpb24oZmlsZSkge1xuICAgIHJldHVybiBfYygndHInLCBbX2MoJ3RkJywgW192bS5fdihfdm0uX3MoZmlsZS5maWxlX3BhdGgpKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGQnLCBbX3ZtLl92KF92bS5fcyhmaWxlLmNyZWF0ZWRfYXQpICsgXCIgXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0ZCcsIFtfdm0uX3YoX3ZtLl9zKGZpbGUuZmlsZXNpemUpKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGQnLCBbX2MoJ2J1dHRvbicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tc20gYnRuLWluZm9cIixcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLnNob3dNb2RhbChmaWxlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW192bS5fdihcIlByb2Nlc3NcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tZGFuZ2VyXCIsXG4gICAgICBvbjoge1xuICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5kZWxldGVGaWxlKGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbX2MoJ2knLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJmYSBmYS10cmFzaCBpY29uLXdoaXRlXCJcbiAgICB9KV0pXSldKVxuICB9KSldKV0pXSldKV0pXSldLCAxKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTNcIlxuICB9LCBbX2MoJ3NwYW4nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiYnRuIGJ0bi1pbmZvIGZpbGVpbnB1dC1idXR0b25cIlxuICB9LCBbX2MoJ3NwYW4nLCBbX3ZtLl92KFwiU2VsZWN0IEltcG9ydCBGaWxlLi4uXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1dCcsIHtcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImZpbGV1cGxvYWRcIixcbiAgICAgIFwidHlwZVwiOiBcImZpbGVcIixcbiAgICAgIFwibmFtZVwiOiBcImZpbGVzW11cIixcbiAgICAgIFwiZGF0YS11cmxcIjogXCIvYXBpL3YxL2ltcG9ydHNcIixcbiAgICAgIFwiYWNjZXB0XCI6IFwidGV4dC9jc3ZcIlxuICAgIH1cbiAgfSldKV0pXG59LGZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3RoZWFkJywgW19jKCd0aCcsIFtfdm0uX3YoXCJGaWxlXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcsIFtfdm0uX3YoXCJDcmVhdGVkXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcsIFtfdm0uX3YoXCJTaXplXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcpXSlcbn1dfVxubW9kdWxlLmV4cG9ydHMucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKS5yZXJlbmRlcihcImRhdGEtdi01MzAxYTIzNlwiLCBtb2R1bGUuZXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTUzMDFhMjM2XCJ9IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlXG4vLyBtb2R1bGUgaWQgPSA0MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return (_vm.errors) ? _c('div', {\n staticClass: \"box\"\n }, [_c('div', {\n staticClass: \"box-body\"\n }, [_vm._m(0), _vm._v(\" \"), _c('div', {\n staticClass: \"errors-table\"\n }, [_c('table', {\n staticClass: \"table table-striped table-bordered\",\n attrs: {\n \"id\": \"errors-table\"\n }\n }, [_vm._m(1), _vm._v(\" \"), _c('tbody', _vm._l((_vm.errors), function(error, item) {\n return _c('tr', [_c('td', [_vm._v(_vm._s(item))]), _vm._v(\" \"), _vm._l((error), function(value, field) {\n return _c('td', [_c('b', [_vm._v(_vm._s(field) + \":\")]), _vm._v(\" \"), _vm._l((value), function(errorString) {\n return _c('span', [_vm._v(_vm._s(errorString[0]))])\n }), _vm._v(\" \"), _c('br')], 2)\n })], 2)\n }))])])])]) : _vm._e()\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"alert alert-warning\"\n }, [_c('strong', [_vm._v(\"Warning\")]), _vm._v(\" Some Errors occured while importing\\n \")])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('thead', [_c('th', [_vm._v(\"Item\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Errors\")])])\n}]}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-5667c312\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXItZXJyb3JzLnZ1ZT9lYTk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiAoX3ZtLmVycm9ycykgPyBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJveFwiXG4gIH0sIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJveC1ib2R5XCJcbiAgfSwgW192bS5fbSgwKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJlcnJvcnMtdGFibGVcIlxuICB9LCBbX2MoJ3RhYmxlJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImVycm9ycy10YWJsZVwiXG4gICAgfVxuICB9LCBbX3ZtLl9tKDEpLCBfdm0uX3YoXCIgXCIpLCBfYygndGJvZHknLCBfdm0uX2woKF92bS5lcnJvcnMpLCBmdW5jdGlvbihlcnJvciwgaXRlbSkge1xuICAgIHJldHVybiBfYygndHInLCBbX2MoJ3RkJywgW192bS5fdihfdm0uX3MoaXRlbSkpXSksIF92bS5fdihcIiBcIiksIF92bS5fbCgoZXJyb3IpLCBmdW5jdGlvbih2YWx1ZSwgZmllbGQpIHtcbiAgICAgIHJldHVybiBfYygndGQnLCBbX2MoJ2InLCBbX3ZtLl92KF92bS5fcyhmaWVsZCkgKyBcIjpcIildKSwgX3ZtLl92KFwiIFwiKSwgX3ZtLl9sKCh2YWx1ZSksIGZ1bmN0aW9uKGVycm9yU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBfYygnc3BhbicsIFtfdm0uX3YoX3ZtLl9zKGVycm9yU3RyaW5nWzBdKSldKVxuICAgICAgfSksIF92bS5fdihcIiBcIiksIF9jKCdicicpXSwgMilcbiAgICB9KV0sIDIpXG4gIH0pKV0pXSldKV0pIDogX3ZtLl9lKClcbn0sc3RhdGljUmVuZGVyRm5zOiBbZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIlxuICB9LCBbX2MoJ3N0cm9uZycsIFtfdm0uX3YoXCJXYXJuaW5nXCIpXSksIF92bS5fdihcIiBTb21lIEVycm9ycyBvY2N1cmVkIHdoaWxlIGltcG9ydGluZ1xcbiAgICBcIildKVxufSxmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCd0aGVhZCcsIFtfYygndGgnLCBbX3ZtLl92KFwiSXRlbVwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGgnLCBbX3ZtLl92KFwiRXJyb3JzXCIpXSldKVxufV19XG5tb2R1bGUuZXhwb3J0cy5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpLnJlcmVuZGVyKFwiZGF0YS12LTU2NjdjMzEyXCIsIG1vZHVsZS5leHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtNTY2N2MzMTJcIn0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9pbXBvcnRlci9pbXBvcnRlci1lcnJvcnMudnVlXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [(_vm.tokens.length > 0) ? _c('div', [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_vm._v(\"Authorized Applications\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body\"\n }, [_c('table', {\n staticClass: \"table table-borderless m-b-none\"\n }, [_vm._m(0), _vm._v(\" \"), _c('tbody', _vm._l((_vm.tokens), function(token) {\n return _c('tr', [_c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(token.client.name) + \"\\n \")]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [(token.scopes.length > 0) ? _c('span', [_vm._v(\"\\n \" + _vm._s(token.scopes.join(', ')) + \"\\n \")]) : _vm._e()]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_c('a', {\n staticClass: \"action-link text-danger\",\n on: {\n \"click\": function($event) {\n _vm.revoke(token)\n }\n }\n }, [_vm._v(\"\\n Revoke\\n \")])])])\n }))])])])]) : _vm._e()])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('thead', [_c('tr', [_c('th', [_vm._v(\"Name\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Scopes\")]), _vm._v(\" \"), _c('th')])])\n}]}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-de0d0e4e\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlP2NhMGUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCBbKF92bS50b2tlbnMubGVuZ3RoID4gMCkgPyBfYygnZGl2JywgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwicGFuZWwgcGFuZWwtZGVmYXVsdFwiXG4gIH0sIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcInBhbmVsLWhlYWRpbmdcIlxuICB9LCBbX3ZtLl92KFwiQXV0aG9yaXplZCBBcHBsaWNhdGlvbnNcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJwYW5lbC1ib2R5XCJcbiAgfSwgW19jKCd0YWJsZScsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIG0tYi1ub25lXCJcbiAgfSwgW192bS5fbSgwKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3Rib2R5JywgX3ZtLl9sKChfdm0udG9rZW5zKSwgZnVuY3Rpb24odG9rZW4pIHtcbiAgICByZXR1cm4gX2MoJ3RyJywgW19jKCd0ZCcsIHtcbiAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgIFwidmVydGljYWwtYWxpZ25cIjogXCJtaWRkbGVcIlxuICAgICAgfVxuICAgIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKHRva2VuLmNsaWVudC5uYW1lKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGQnLCB7XG4gICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICBcInZlcnRpY2FsLWFsaWduXCI6IFwibWlkZGxlXCJcbiAgICAgIH1cbiAgICB9LCBbKHRva2VuLnNjb3Blcy5sZW5ndGggPiAwKSA/IF9jKCdzcGFuJywgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKHRva2VuLnNjb3Blcy5qb2luKCcsICcpKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIildKSA6IF92bS5fZSgpXSksIF92bS5fdihcIiBcIiksIF9jKCd0ZCcsIHtcbiAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgIFwidmVydGljYWwtYWxpZ25cIjogXCJtaWRkbGVcIlxuICAgICAgfVxuICAgIH0sIFtfYygnYScsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1saW5rIHRleHQtZGFuZ2VyXCIsXG4gICAgICBvbjoge1xuICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5yZXZva2UodG9rZW4pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV2b2tlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIildKV0pXSlcbiAgfSkpXSldKV0pXSkgOiBfdm0uX2UoKV0pXG59LHN0YXRpY1JlbmRlckZuczogW2Z1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3RoZWFkJywgW19jKCd0cicsIFtfYygndGgnLCBbX3ZtLl92KFwiTmFtZVwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGgnLCBbX3ZtLl92KFwiU2NvcGVzXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcpXSldKVxufV19XG5tb2R1bGUuZXhwb3J0cy5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpLnJlcmVuZGVyKFwiZGF0YS12LWRlMGQwZTRlXCIsIG1vZHVsZS5leHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtZGUwZDBlNGVcIn0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9BdXRob3JpemVkQ2xpZW50cy52dWVcbi8vIG1vZHVsZSBpZCA9IDQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticStyle: {\n \"display\": \"flex\",\n \"justify-content\": \"space-between\",\n \"align-items\": \"center\"\n }\n }, [_c('span', [_vm._v(\"\\n OAuth Clients\\n \")]), _vm._v(\" \"), _c('a', {\n staticClass: \"action-link\",\n on: {\n \"click\": _vm.showCreateClientForm\n }\n }, [_vm._v(\"\\n Create New Client\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body\"\n }, [(_vm.clients.length === 0) ? _c('p', {\n staticClass: \"m-b-none\"\n }, [_vm._v(\"\\n You have not created any OAuth clients.\\n \")]) : _vm._e(), _vm._v(\" \"), (_vm.clients.length > 0) ? _c('table', {\n staticClass: \"table table-borderless m-b-none\"\n }, [_vm._m(0), _vm._v(\" \"), _c('tbody', _vm._l((_vm.clients), function(client) {\n return _c('tr', [_c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(client.id) + \"\\n \")]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(client.name) + \"\\n \")]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_c('code', [_vm._v(_vm._s(client.secret))])]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_c('a', {\n staticClass: \"action-link\",\n on: {\n \"click\": function($event) {\n _vm.edit(client)\n }\n }\n }, [_vm._v(\"\\n Edit\\n \")])]), _vm._v(\" \"), _c('td', {\n staticStyle: {\n \"vertical-align\": \"middle\"\n }\n }, [_c('a', {\n staticClass: \"action-link text-danger\",\n on: {\n \"click\": function($event) {\n _vm.destroy(client)\n }\n }\n }, [_vm._v(\"\\n Delete\\n \")])])])\n }))]) : _vm._e()])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal fade\",\n attrs: {\n \"id\": \"modal-create-client\",\n \"tabindex\": \"-1\",\n \"role\": \"dialog\"\n }\n }, [_c('div', {\n staticClass: \"modal-dialog\"\n }, [_c('div', {\n staticClass: \"modal-content\"\n }, [_vm._m(1), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-body\"\n }, [(_vm.createForm.errors.length > 0) ? _c('div', {\n staticClass: \"alert alert-danger\"\n }, [_vm._m(2), _vm._v(\" \"), _c('br'), _vm._v(\" \"), _c('ul', _vm._l((_vm.createForm.errors), function(error) {\n return _c('li', [_vm._v(\"\\n \" + _vm._s(error) + \"\\n \")])\n }))]) : _vm._e(), _vm._v(\" \"), _c('form', {\n staticClass: \"form-horizontal\",\n attrs: {\n \"role\": \"form\"\n }\n }, [_c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-3 control-label\"\n }, [_vm._v(\"Name\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-7\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.createForm.name),\n expression: \"createForm.name\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"id\": \"create-client-name\",\n \"type\": \"text\"\n },\n domProps: {\n \"value\": (_vm.createForm.name)\n },\n on: {\n \"keyup\": function($event) {\n if (!('button' in $event) && _vm._k($event.keyCode, \"enter\", 13)) { return null; }\n _vm.store($event)\n },\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.createForm.name = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('span', {\n staticClass: \"help-block\"\n }, [_vm._v(\"\\n Something your users will recognize and trust.\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-3 control-label\"\n }, [_vm._v(\"Redirect URL\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-7\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.createForm.redirect),\n expression: \"createForm.redirect\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"name\": \"redirect\"\n },\n domProps: {\n \"value\": (_vm.createForm.redirect)\n },\n on: {\n \"keyup\": function($event) {\n if (!('button' in $event) && _vm._k($event.keyCode, \"enter\", 13)) { return null; }\n _vm.store($event)\n },\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.createForm.redirect = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('span', {\n staticClass: \"help-block\"\n }, [_vm._v(\"\\n Your application's authorization callback URL.\\n \")])])])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-footer\"\n }, [_c('button', {\n staticClass: \"btn btn-default\",\n attrs: {\n \"type\": \"button\",\n \"data-dismiss\": \"modal\"\n }\n }, [_vm._v(\"Close\")]), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.store\n }\n }, [_vm._v(\"\\n Create\\n \")])])])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal fade\",\n attrs: {\n \"id\": \"modal-edit-client\",\n \"tabindex\": \"-1\",\n \"role\": \"dialog\"\n }\n }, [_c('div', {\n staticClass: \"modal-dialog\"\n }, [_c('div', {\n staticClass: \"modal-content\"\n }, [_vm._m(3), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-body\"\n }, [(_vm.editForm.errors.length > 0) ? _c('div', {\n staticClass: \"alert alert-danger\"\n }, [_vm._m(4), _vm._v(\" \"), _c('br'), _vm._v(\" \"), _c('ul', _vm._l((_vm.editForm.errors), function(error) {\n return _c('li', [_vm._v(\"\\n \" + _vm._s(error) + \"\\n \")])\n }))]) : _vm._e(), _vm._v(\" \"), _c('form', {\n staticClass: \"form-horizontal\",\n attrs: {\n \"role\": \"form\"\n }\n }, [_c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-3 control-label\"\n }, [_vm._v(\"Name\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-7\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.editForm.name),\n expression: \"editForm.name\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"id\": \"edit-client-name\",\n \"type\": \"text\"\n },\n domProps: {\n \"value\": (_vm.editForm.name)\n },\n on: {\n \"keyup\": function($event) {\n if (!('button' in $event) && _vm._k($event.keyCode, \"enter\", 13)) { return null; }\n _vm.update($event)\n },\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.editForm.name = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('span', {\n staticClass: \"help-block\"\n }, [_vm._v(\"\\n Something your users will recognize and trust.\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group\"\n }, [_c('label', {\n staticClass: \"col-md-3 control-label\"\n }, [_vm._v(\"Redirect URL\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"col-md-7\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.editForm.redirect),\n expression: \"editForm.redirect\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"name\": \"redirect\"\n },\n domProps: {\n \"value\": (_vm.editForm.redirect)\n },\n on: {\n \"keyup\": function($event) {\n if (!('button' in $event) && _vm._k($event.keyCode, \"enter\", 13)) { return null; }\n _vm.update($event)\n },\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.editForm.redirect = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('span', {\n staticClass: \"help-block\"\n }, [_vm._v(\"\\n Your application's authorization callback URL.\\n \")])])])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"modal-footer\"\n }, [_c('button', {\n staticClass: \"btn btn-default\",\n attrs: {\n \"type\": \"button\",\n \"data-dismiss\": \"modal\"\n }\n }, [_vm._v(\"Close\")]), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.update\n }\n }, [_vm._v(\"\\n Save Changes\\n \")])])])])])])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('thead', [_c('tr', [_c('th', [_vm._v(\"Client ID\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Name\")]), _vm._v(\" \"), _c('th', [_vm._v(\"Secret\")]), _vm._v(\" \"), _c('th'), _vm._v(\" \"), _c('th')])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"modal-header\"\n }, [_c('button', {\n staticClass: \"close\",\n attrs: {\n \"type\": \"button \",\n \"data-dismiss\": \"modal\",\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"×\")]), _vm._v(\" \"), _c('h4', {\n staticClass: \"modal-title\"\n }, [_vm._v(\"\\n Create Client\\n \")])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('p', [_c('strong', [_vm._v(\"Whoops!\")]), _vm._v(\" Something went wrong!\")])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"modal-header\"\n }, [_c('button', {\n staticClass: \"close\",\n attrs: {\n \"type\": \"button \",\n \"data-dismiss\": \"modal\",\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"×\")]), _vm._v(\" \"), _c('h4', {\n staticClass: \"modal-title\"\n }, [_vm._v(\"\\n Edit Client\\n \")])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('p', [_c('strong', [_vm._v(\"Whoops!\")]), _vm._v(\" Something went wrong!\")])\n}]}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-e9c80318\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQ2xpZW50cy52dWU/MTdlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ2RpdicsIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcInBhbmVsIHBhbmVsLWRlZmF1bHRcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJwYW5lbC1oZWFkaW5nXCJcbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljU3R5bGU6IHtcbiAgICAgIFwiZGlzcGxheVwiOiBcImZsZXhcIixcbiAgICAgIFwianVzdGlmeS1jb250ZW50XCI6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgXCJhbGlnbi1pdGVtc1wiOiBcImNlbnRlclwiXG4gICAgfVxuICB9LCBbX2MoJ3NwYW4nLCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICBPQXV0aCBDbGllbnRzXFxuICAgICAgICAgICAgICAgIFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYScsIHtcbiAgICBzdGF0aWNDbGFzczogXCJhY3Rpb24tbGlua1wiLFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IF92bS5zaG93Q3JlYXRlQ2xpZW50Rm9ybVxuICAgIH1cbiAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIE5ldyBDbGllbnRcXG4gICAgICAgICAgICAgICAgXCIpXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcInBhbmVsLWJvZHlcIlxuICB9LCBbKF92bS5jbGllbnRzLmxlbmd0aCA9PT0gMCkgPyBfYygncCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtLWItbm9uZVwiXG4gIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IE9BdXRoIGNsaWVudHMuXFxuICAgICAgICAgICAgXCIpXSkgOiBfdm0uX2UoKSwgX3ZtLl92KFwiIFwiKSwgKF92bS5jbGllbnRzLmxlbmd0aCA+IDApID8gX2MoJ3RhYmxlJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRhYmxlIHRhYmxlLWJvcmRlcmxlc3MgbS1iLW5vbmVcIlxuICB9LCBbX3ZtLl9tKDApLCBfdm0uX3YoXCIgXCIpLCBfYygndGJvZHknLCBfdm0uX2woKF92bS5jbGllbnRzKSwgZnVuY3Rpb24oY2xpZW50KSB7XG4gICAgcmV0dXJuIF9jKCd0cicsIFtfYygndGQnLCB7XG4gICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICBcInZlcnRpY2FsLWFsaWduXCI6IFwibWlkZGxlXCJcbiAgICAgIH1cbiAgICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKGNsaWVudC5pZCkgKyBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGQnLCB7XG4gICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICBcInZlcnRpY2FsLWFsaWduXCI6IFwibWlkZGxlXCJcbiAgICAgIH1cbiAgICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKGNsaWVudC5uYW1lKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0ZCcsIHtcbiAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgIFwidmVydGljYWwtYWxpZ25cIjogXCJtaWRkbGVcIlxuICAgICAgfVxuICAgIH0sIFtfYygnY29kZScsIFtfdm0uX3YoX3ZtLl9zKGNsaWVudC5zZWNyZXQpKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCd0ZCcsIHtcbiAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgIFwidmVydGljYWwtYWxpZ25cIjogXCJtaWRkbGVcIlxuICAgICAgfVxuICAgIH0sIFtfYygnYScsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1saW5rXCIsXG4gICAgICBvbjoge1xuICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5lZGl0KGNsaWVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3RkJywge1xuICAgICAgc3RhdGljU3R5bGU6IHtcbiAgICAgICAgXCJ2ZXJ0aWNhbC1hbGlnblwiOiBcIm1pZGRsZVwiXG4gICAgICB9XG4gICAgfSwgW19jKCdhJywge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aW9uLWxpbmsgdGV4dC1kYW5nZXJcIixcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmRlc3Ryb3koY2xpZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pXSldKVxuICB9KSldKSA6IF92bS5fZSgpXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbCBmYWRlXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwiaWRcIjogXCJtb2RhbC1jcmVhdGUtY2xpZW50XCIsXG4gICAgICBcInRhYmluZGV4XCI6IFwiLTFcIixcbiAgICAgIFwicm9sZVwiOiBcImRpYWxvZ1wiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1kaWFsb2dcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1jb250ZW50XCJcbiAgfSwgW192bS5fbSgxKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCJcbiAgfSwgWyhfdm0uY3JlYXRlRm9ybS5lcnJvcnMubGVuZ3RoID4gMCkgPyBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImFsZXJ0IGFsZXJ0LWRhbmdlclwiXG4gIH0sIFtfdm0uX20oMiksIF92bS5fdihcIiBcIiksIF9jKCdicicpLCBfdm0uX3YoXCIgXCIpLCBfYygndWwnLCBfdm0uX2woKF92bS5jcmVhdGVGb3JtLmVycm9ycyksIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgcmV0dXJuIF9jKCdsaScsIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICsgX3ZtLl9zKGVycm9yKSArIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pXG4gIH0pKV0pIDogX3ZtLl9lKCksIF92bS5fdihcIiBcIiksIF9jKCdmb3JtJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0taG9yaXpvbnRhbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInJvbGVcIjogXCJmb3JtXCJcbiAgICB9XG4gIH0sIFtfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tZ3JvdXBcIlxuICB9LCBbX2MoJ2xhYmVsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIlxuICB9LCBbX3ZtLl92KFwiTmFtZVwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC03XCJcbiAgfSwgW19jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92bS5jcmVhdGVGb3JtLm5hbWUpLFxuICAgICAgZXhwcmVzc2lvbjogXCJjcmVhdGVGb3JtLm5hbWVcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tY29udHJvbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcImlkXCI6IFwiY3JlYXRlLWNsaWVudC1uYW1lXCIsXG4gICAgICBcInR5cGVcIjogXCJ0ZXh0XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZhbHVlXCI6IChfdm0uY3JlYXRlRm9ybS5uYW1lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICghKCdidXR0b24nIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICBfdm0uc3RvcmUoJGV2ZW50KVxuICAgICAgfSxcbiAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgX3ZtLmNyZWF0ZUZvcm0ubmFtZSA9ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBfdm0uX3YoXCIgXCIpLCBfYygnc3BhbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJoZWxwLWJsb2NrXCJcbiAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWV0aGluZyB5b3VyIHVzZXJzIHdpbGwgcmVjb2duaXplIGFuZCB0cnVzdC5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJmb3JtLWdyb3VwXCJcbiAgfSwgW19jKCdsYWJlbCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCJcbiAgfSwgW192bS5fdihcIlJlZGlyZWN0IFVSTFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC03XCJcbiAgfSwgW19jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92bS5jcmVhdGVGb3JtLnJlZGlyZWN0KSxcbiAgICAgIGV4cHJlc3Npb246IFwiY3JlYXRlRm9ybS5yZWRpcmVjdFwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwiZm9ybS1jb250cm9sXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgIFwibmFtZVwiOiBcInJlZGlyZWN0XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZhbHVlXCI6IChfdm0uY3JlYXRlRm9ybS5yZWRpcmVjdClcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgX3ZtLnN0b3JlKCRldmVudClcbiAgICAgIH0sXG4gICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5jcmVhdGVGb3JtLnJlZGlyZWN0ID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSksIF92bS5fdihcIiBcIiksIF9jKCdzcGFuJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImhlbHAtYmxvY2tcIlxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBhcHBsaWNhdGlvbidzIGF1dGhvcml6YXRpb24gY2FsbGJhY2sgVVJMLlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSldKV0pXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1mb290ZXJcIlxuICB9LCBbX2MoJ2J1dHRvbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJidG4gYnRuLWRlZmF1bHRcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwiYnV0dG9uXCIsXG4gICAgICBcImRhdGEtZGlzbWlzc1wiOiBcIm1vZGFsXCJcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJDbG9zZVwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tcHJpbWFyeVwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJidXR0b25cIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogX3ZtLnN0b3JlXG4gICAgfVxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlXFxuICAgICAgICAgICAgICAgICAgICBcIildKV0pXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsIGZhZGVcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcIm1vZGFsLWVkaXQtY2xpZW50XCIsXG4gICAgICBcInRhYmluZGV4XCI6IFwiLTFcIixcbiAgICAgIFwicm9sZVwiOiBcImRpYWxvZ1wiXG4gICAgfVxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1kaWFsb2dcIlxuICB9LCBbX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1jb250ZW50XCJcbiAgfSwgW192bS5fbSgzKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCJcbiAgfSwgWyhfdm0uZWRpdEZvcm0uZXJyb3JzLmxlbmd0aCA+IDApID8gX2MoJ2RpdicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJhbGVydCBhbGVydC1kYW5nZXJcIlxuICB9LCBbX3ZtLl9tKDQpLCBfdm0uX3YoXCIgXCIpLCBfYygnYnInKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywgX3ZtLl9sKChfdm0uZWRpdEZvcm0uZXJyb3JzKSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICByZXR1cm4gX2MoJ2xpJywgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKyBfdm0uX3MoZXJyb3IpICsgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSlcbiAgfSkpXSkgOiBfdm0uX2UoKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2Zvcm0nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZm9ybS1ob3Jpem9udGFsXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwicm9sZVwiOiBcImZvcm1cIlxuICAgIH1cbiAgfSwgW19jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZm9ybS1ncm91cFwiXG4gIH0sIFtfYygnbGFiZWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiXG4gIH0sIFtfdm0uX3YoXCJOYW1lXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTdcIlxuICB9LCBbX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmVkaXRGb3JtLm5hbWUpLFxuICAgICAgZXhwcmVzc2lvbjogXCJlZGl0Rm9ybS5uYW1lXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJmb3JtLWNvbnRyb2xcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImVkaXQtY2xpZW50LW5hbWVcIixcbiAgICAgIFwidHlwZVwiOiBcInRleHRcIlxuICAgIH0sXG4gICAgZG9tUHJvcHM6IHtcbiAgICAgIFwidmFsdWVcIjogKF92bS5lZGl0Rm9ybS5uYW1lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICghKCdidXR0b24nIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICBfdm0udXBkYXRlKCRldmVudClcbiAgICAgIH0sXG4gICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5lZGl0Rm9ybS5uYW1lID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSksIF92bS5fdihcIiBcIiksIF9jKCdzcGFuJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImhlbHAtYmxvY2tcIlxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRoaW5nIHlvdXIgdXNlcnMgd2lsbCByZWNvZ25pemUgYW5kIHRydXN0LlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tZ3JvdXBcIlxuICB9LCBbX2MoJ2xhYmVsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIlxuICB9LCBbX3ZtLl92KFwiUmVkaXJlY3QgVVJMXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTdcIlxuICB9LCBbX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmVkaXRGb3JtLnJlZGlyZWN0KSxcbiAgICAgIGV4cHJlc3Npb246IFwiZWRpdEZvcm0ucmVkaXJlY3RcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvcm0tY29udHJvbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICBcIm5hbWVcIjogXCJyZWRpcmVjdFwiXG4gICAgfSxcbiAgICBkb21Qcm9wczoge1xuICAgICAgXCJ2YWx1ZVwiOiAoX3ZtLmVkaXRGb3JtLnJlZGlyZWN0KVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICghKCdidXR0b24nIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICBfdm0udXBkYXRlKCRldmVudClcbiAgICAgIH0sXG4gICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5lZGl0Rm9ybS5yZWRpcmVjdCA9ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBfdm0uX3YoXCIgXCIpLCBfYygnc3BhbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJoZWxwLWJsb2NrXCJcbiAgfSwgW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYXBwbGljYXRpb24ncyBhdXRob3JpemF0aW9uIGNhbGxiYWNrIFVSTC5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKV0pXSldKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdkaXYnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtZm9vdGVyXCJcbiAgfSwgW19jKCdidXR0b24nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiYnRuIGJ0bi1kZWZhdWx0XCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvblwiLFxuICAgICAgXCJkYXRhLWRpc21pc3NcIjogXCJtb2RhbFwiXG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQ2xvc2VcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJidG4gYnRuLXByaW1hcnlcIixcbiAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwiYnV0dG9uXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IF92bS51cGRhdGVcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBTYXZlIENoYW5nZXNcXG4gICAgICAgICAgICAgICAgICAgIFwiKV0pXSldKV0pXSldKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCd0aGVhZCcsIFtfYygndHInLCBbX2MoJ3RoJywgW192bS5fdihcIkNsaWVudCBJRFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGgnLCBbX3ZtLl92KFwiTmFtZVwiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygndGgnLCBbX3ZtLl92KFwiU2VjcmV0XCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd0aCcpLCBfdm0uX3YoXCIgXCIpLCBfYygndGgnKV0pXSlcbn0sZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWhlYWRlclwiXG4gIH0sIFtfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNsb3NlXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvbiBcIixcbiAgICAgIFwiZGF0YS1kaXNtaXNzXCI6IFwibW9kYWxcIixcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCLDl1wiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnaDQnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtdGl0bGVcIlxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIENsaWVudFxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSldKVxufSxmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdwJywgW19jKCdzdHJvbmcnLCBbX3ZtLl92KFwiV2hvb3BzIVwiKV0pLCBfdm0uX3YoXCIgU29tZXRoaW5nIHdlbnQgd3JvbmchXCIpXSlcbn0sZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWhlYWRlclwiXG4gIH0sIFtfYygnYnV0dG9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImNsb3NlXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImJ1dHRvbiBcIixcbiAgICAgIFwiZGF0YS1kaXNtaXNzXCI6IFwibW9kYWxcIixcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICB9XG4gIH0sIFtfdm0uX3YoXCLDl1wiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnaDQnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtdGl0bGVcIlxuICB9LCBbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBDbGllbnRcXG4gICAgICAgICAgICAgICAgICAgIFwiKV0pXSlcbn0sZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygncCcsIFtfYygnc3Ryb25nJywgW192bS5fdihcIldob29wcyFcIildKSwgX3ZtLl92KFwiIFNvbWV0aGluZyB3ZW50IHdyb25nIVwiKV0pXG59XX1cbm1vZHVsZS5leHBvcnRzLnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikucmVyZW5kZXIoXCJkYXRhLXYtZTljODAzMThcIiwgbW9kdWxlLmV4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1lOWM4MDMxOFwifSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3Bhc3Nwb3J0L0NsaWVudHMudnVlXG4vLyBtb2R1bGUgaWQgPSA0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('select', {\n staticStyle: {\n \"width\": \"100%\"\n }\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-ff564a86\", module.exports)\n }\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWU/OWZiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3NlbGVjdCcsIHtcbiAgICBzdGF0aWNTdHlsZToge1xuICAgICAgXCJ3aWR0aFwiOiBcIjEwMCVcIlxuICAgIH1cbiAgfSwgW192bS5fdChcImRlZmF1bHRcIildLCAyKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtdfVxubW9kdWxlLmV4cG9ydHMucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKS5yZXJlbmRlcihcImRhdGEtdi1mZjU2NGE4NlwiLCBtb2R1bGUuZXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LWZmNTY0YTg2XCJ9IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWVcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 45 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Url\", function() { return Url; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Http\", function() { return Http; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Resource\", function() { return Resource; });\n/*!\n * vue-resource v1.3.3\n * https://github.com/pagekit/vue-resource\n * Released under the MIT License.\n */\n\n/**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\nvar RESOLVED = 0;\nvar REJECTED = 1;\nvar PENDING = 2;\n\nfunction Promise$1(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(function (x) {\n promise.resolve(x);\n }, function (r) {\n promise.reject(r);\n });\n } catch (e) {\n promise.reject(e);\n }\n}\n\nPromise$1.reject = function (r) {\n return new Promise$1(function (resolve, reject) {\n reject(r);\n });\n};\n\nPromise$1.resolve = function (x) {\n return new Promise$1(function (resolve, reject) {\n resolve(x);\n });\n};\n\nPromise$1.all = function all(iterable) {\n return new Promise$1(function (resolve, reject) {\n var count = 0, result = [];\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$1.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n};\n\nPromise$1.race = function race(iterable) {\n return new Promise$1(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$1.resolve(iterable[i]).then(resolve, reject);\n }\n });\n};\n\nvar p$1 = Promise$1.prototype;\n\np$1.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x['then'];\n\n if (x !== null && typeof x === 'object' && typeof then === 'function') {\n then.call(x, function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n\n }, function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n });\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n};\n\np$1.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n};\n\np$1.notify = function notify() {\n var promise = this;\n\n nextTick(function () {\n if (promise.state !== PENDING) {\n while (promise.deferred.length) {\n var deferred = promise.deferred.shift(),\n onResolved = deferred[0],\n onRejected = deferred[1],\n resolve = deferred[2],\n reject = deferred[3];\n\n try {\n if (promise.state === RESOLVED) {\n if (typeof onResolved === 'function') {\n resolve(onResolved.call(undefined, promise.value));\n } else {\n resolve(promise.value);\n }\n } else if (promise.state === REJECTED) {\n if (typeof onRejected === 'function') {\n resolve(onRejected.call(undefined, promise.value));\n } else {\n reject(promise.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n};\n\np$1.then = function then(onResolved, onRejected) {\n var promise = this;\n\n return new Promise$1(function (resolve, reject) {\n promise.deferred.push([onResolved, onRejected, resolve, reject]);\n promise.notify();\n });\n};\n\np$1.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n};\n\n/**\n * Promise adapter.\n */\n\nif (typeof Promise === 'undefined') {\n window.Promise = Promise$1;\n}\n\nfunction PromiseObj(executor, context) {\n\n if (executor instanceof Promise) {\n this.promise = executor;\n } else {\n this.promise = new Promise(executor.bind(context));\n }\n\n this.context = context;\n}\n\nPromiseObj.all = function (iterable, context) {\n return new PromiseObj(Promise.all(iterable), context);\n};\n\nPromiseObj.resolve = function (value, context) {\n return new PromiseObj(Promise.resolve(value), context);\n};\n\nPromiseObj.reject = function (reason, context) {\n return new PromiseObj(Promise.reject(reason), context);\n};\n\nPromiseObj.race = function (iterable, context) {\n return new PromiseObj(Promise.race(iterable), context);\n};\n\nvar p = PromiseObj.prototype;\n\np.bind = function (context) {\n this.context = context;\n return this;\n};\n\np.then = function (fulfilled, rejected) {\n\n if (fulfilled && fulfilled.bind && this.context) {\n fulfilled = fulfilled.bind(this.context);\n }\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new PromiseObj(this.promise.then(fulfilled, rejected), this.context);\n};\n\np.catch = function (rejected) {\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new PromiseObj(this.promise.catch(rejected), this.context);\n};\n\np.finally = function (callback) {\n\n return this.then(function (value) {\n callback.call(this);\n return value;\n }, function (reason) {\n callback.call(this);\n return Promise.reject(reason);\n }\n );\n};\n\n/**\n * Utility functions.\n */\n\nvar ref = {};\nvar hasOwnProperty = ref.hasOwnProperty;\n\nvar ref$1 = [];\nvar slice = ref$1.slice;\nvar debug = false;\nvar ntick;\n\nvar inBrowser = typeof window !== 'undefined';\n\nvar Util = function (ref) {\n var config = ref.config;\n var nextTick = ref.nextTick;\n\n ntick = nextTick;\n debug = config.debug || !config.silent;\n};\n\nfunction warn(msg) {\n if (typeof console !== 'undefined' && debug) {\n console.warn('[VueResource warn]: ' + msg);\n }\n}\n\nfunction error(msg) {\n if (typeof console !== 'undefined') {\n console.error(msg);\n }\n}\n\nfunction nextTick(cb, ctx) {\n return ntick(cb, ctx);\n}\n\nfunction trim(str) {\n return str ? str.replace(/^\\s*|\\s*$/g, '') : '';\n}\n\nfunction trimEnd(str, chars) {\n\n if (str && chars === undefined) {\n return str.replace(/\\s+$/, '');\n }\n\n if (!str || !chars) {\n return str;\n }\n\n return str.replace(new RegExp((\"[\" + chars + \"]+$\")), '');\n}\n\nfunction toLower(str) {\n return str ? str.toLowerCase() : '';\n}\n\nfunction toUpper(str) {\n return str ? str.toUpperCase() : '';\n}\n\nvar isArray = Array.isArray;\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nfunction isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n}\n\nfunction isBlob(obj) {\n return typeof Blob !== 'undefined' && obj instanceof Blob;\n}\n\nfunction isFormData(obj) {\n return typeof FormData !== 'undefined' && obj instanceof FormData;\n}\n\nfunction when(value, fulfilled, rejected) {\n\n var promise = PromiseObj.resolve(value);\n\n if (arguments.length < 2) {\n return promise;\n }\n\n return promise.then(fulfilled, rejected);\n}\n\nfunction options(fn, obj, opts) {\n\n opts = opts || {};\n\n if (isFunction(opts)) {\n opts = opts.call(obj);\n }\n\n return merge(fn.bind({$vm: obj, $options: opts}), fn, {$options: opts});\n}\n\nfunction each(obj, iterator) {\n\n var i, key;\n\n if (isArray(obj)) {\n for (i = 0; i < obj.length; i++) {\n iterator.call(obj[i], obj[i], i);\n }\n } else if (isObject(obj)) {\n for (key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n iterator.call(obj[key], obj[key], key);\n }\n }\n }\n\n return obj;\n}\n\nvar assign = Object.assign || _assign;\n\nfunction merge(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source, true);\n });\n\n return target;\n}\n\nfunction defaults(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n\n for (var key in source) {\n if (target[key] === undefined) {\n target[key] = source[key];\n }\n }\n\n });\n\n return target;\n}\n\nfunction _assign(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source);\n });\n\n return target;\n}\n\nfunction _merge(target, source, deep) {\n for (var key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n _merge(target[key], source[key], deep);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n}\n\n/**\n * Root Prefix Transform.\n */\n\nvar root = function (options$$1, next) {\n\n var url = next(options$$1);\n\n if (isString(options$$1.root) && !/^(https?:)?\\//.test(url)) {\n url = trimEnd(options$$1.root, '/') + '/' + url;\n }\n\n return url;\n};\n\n/**\n * Query Parameter Transform.\n */\n\nvar query = function (options$$1, next) {\n\n var urlParams = Object.keys(Url.options.params), query = {}, url = next(options$$1);\n\n each(options$$1.params, function (value, key) {\n if (urlParams.indexOf(key) === -1) {\n query[key] = value;\n }\n });\n\n query = Url.params(query);\n\n if (query) {\n url += (url.indexOf('?') == -1 ? '?' : '&') + query;\n }\n\n return url;\n};\n\n/**\n * URL Template v2.0.6 (https://github.com/bramstein/url-template)\n */\n\nfunction expand(url, params, variables) {\n\n var tmpl = parse(url), expanded = tmpl.expand(params);\n\n if (variables) {\n variables.push.apply(variables, tmpl.vars);\n }\n\n return expanded;\n}\n\nfunction parse(template) {\n\n var operators = ['+', '#', '.', '/', ';', '?', '&'], variables = [];\n\n return {\n vars: variables,\n expand: function expand(context) {\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n\n var operator = null, values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n variables.push(tmp[1]);\n });\n\n if (operator && operator !== '+') {\n\n var separator = ',';\n\n if (operator === '?') {\n separator = '&';\n } else if (operator !== '#') {\n separator = operator;\n }\n\n return (values.length !== 0 ? operator : '') + values.join(separator);\n } else {\n return values.join(',');\n }\n\n } else {\n return encodeReserved(literal);\n }\n });\n }\n };\n}\n\nfunction getValues(context, operator, key, modifier) {\n\n var value = context[key], result = [];\n\n if (isDefined(value) && value !== '') {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n value = value.toString();\n\n if (modifier && modifier !== '*') {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n } else {\n if (modifier === '*') {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n var tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeURIComponent(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeURIComponent(key) + '=' + tmp.join(','));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(','));\n }\n }\n }\n } else {\n if (operator === ';') {\n result.push(encodeURIComponent(key));\n } else if (value === '' && (operator === '&' || operator === '?')) {\n result.push(encodeURIComponent(key) + '=');\n } else if (value === '') {\n result.push('');\n }\n }\n\n return result;\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction encodeValue(operator, value, key) {\n\n value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeURIComponent(value);\n\n if (key) {\n return encodeURIComponent(key) + '=' + value;\n } else {\n return value;\n }\n}\n\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part);\n }\n return part;\n }).join('');\n}\n\n/**\n * URL Template (RFC 6570) Transform.\n */\n\nvar template = function (options) {\n\n var variables = [], url = expand(options.url, options.params, variables);\n\n variables.forEach(function (key) {\n delete options.params[key];\n });\n\n return url;\n};\n\n/**\n * Service for URL templating.\n */\n\nfunction Url(url, params) {\n\n var self = this || {}, options$$1 = url, transform;\n\n if (isString(url)) {\n options$$1 = {url: url, params: params};\n }\n\n options$$1 = merge({}, Url.options, self.$options, options$$1);\n\n Url.transforms.forEach(function (handler) {\n\n if (isString(handler)) {\n handler = Url.transform[handler];\n }\n\n if (isFunction(handler)) {\n transform = factory(handler, transform, self.$vm);\n }\n\n });\n\n return transform(options$$1);\n}\n\n/**\n * Url options.\n */\n\nUrl.options = {\n url: '',\n root: null,\n params: {}\n};\n\n/**\n * Url transforms.\n */\n\nUrl.transform = {template: template, query: query, root: root};\nUrl.transforms = ['template', 'query', 'root'];\n\n/**\n * Encodes a Url parameter string.\n *\n * @param {Object} obj\n */\n\nUrl.params = function (obj) {\n\n var params = [], escape = encodeURIComponent;\n\n params.add = function (key, value) {\n\n if (isFunction(value)) {\n value = value();\n }\n\n if (value === null) {\n value = '';\n }\n\n this.push(escape(key) + '=' + escape(value));\n };\n\n serialize(params, obj);\n\n return params.join('&').replace(/%20/g, '+');\n};\n\n/**\n * Parse a URL and return its components.\n *\n * @param {String} url\n */\n\nUrl.parse = function (url) {\n\n var el = document.createElement('a');\n\n if (document.documentMode) {\n el.href = url;\n url = el.href;\n }\n\n el.href = url;\n\n return {\n href: el.href,\n protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',\n port: el.port,\n host: el.host,\n hostname: el.hostname,\n pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,\n search: el.search ? el.search.replace(/^\\?/, '') : '',\n hash: el.hash ? el.hash.replace(/^#/, '') : ''\n };\n};\n\nfunction factory(handler, next, vm) {\n return function (options$$1) {\n return handler.call(vm, options$$1, next);\n };\n}\n\nfunction serialize(params, obj, scope) {\n\n var array = isArray(obj), plain = isPlainObject(obj), hash;\n\n each(obj, function (value, key) {\n\n hash = isObject(value) || isArray(value);\n\n if (scope) {\n key = scope + '[' + (plain || hash ? key : '') + ']';\n }\n\n if (!scope && array) {\n params.add(value.name, value.value);\n } else if (hash) {\n serialize(params, value, key);\n } else {\n params.add(key, value);\n }\n });\n}\n\n/**\n * XDomain client (Internet Explorer).\n */\n\nvar xdrClient = function (request) {\n return new PromiseObj(function (resolve) {\n\n var xdr = new XDomainRequest(), handler = function (ref) {\n var type = ref.type;\n\n\n var status = 0;\n\n if (type === 'load') {\n status = 200;\n } else if (type === 'error') {\n status = 500;\n }\n\n resolve(request.respondWith(xdr.responseText, {status: status}));\n };\n\n request.abort = function () { return xdr.abort(); };\n\n xdr.open(request.method, request.getUrl());\n\n if (request.timeout) {\n xdr.timeout = request.timeout;\n }\n\n xdr.onload = handler;\n xdr.onabort = handler;\n xdr.onerror = handler;\n xdr.ontimeout = handler;\n xdr.onprogress = function () {};\n xdr.send(request.getBody());\n });\n};\n\n/**\n * CORS Interceptor.\n */\n\nvar SUPPORTS_CORS = inBrowser && 'withCredentials' in new XMLHttpRequest();\n\nvar cors = function (request, next) {\n\n if (inBrowser) {\n\n var orgUrl = Url.parse(location.href);\n var reqUrl = Url.parse(request.getUrl());\n\n if (reqUrl.protocol !== orgUrl.protocol || reqUrl.host !== orgUrl.host) {\n\n request.crossOrigin = true;\n request.emulateHTTP = false;\n\n if (!SUPPORTS_CORS) {\n request.client = xdrClient;\n }\n }\n }\n\n next();\n};\n\n/**\n * Form data Interceptor.\n */\n\nvar form = function (request, next) {\n\n if (isFormData(request.body)) {\n\n request.headers.delete('Content-Type');\n\n } else if (isObject(request.body) && request.emulateJSON) {\n\n request.body = Url.params(request.body);\n request.headers.set('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n next();\n};\n\n/**\n * JSON Interceptor.\n */\n\nvar json = function (request, next) {\n\n var type = request.headers.get('Content-Type') || '';\n\n if (isObject(request.body) && type.indexOf('application/json') === 0) {\n request.body = JSON.stringify(request.body);\n }\n\n next(function (response) {\n\n return response.bodyText ? when(response.text(), function (text) {\n\n type = response.headers.get('Content-Type') || '';\n\n if (type.indexOf('application/json') === 0 || isJson(text)) {\n\n try {\n response.body = JSON.parse(text);\n } catch (e) {\n response.body = null;\n }\n\n } else {\n response.body = text;\n }\n\n return response;\n\n }) : response;\n\n });\n};\n\nfunction isJson(str) {\n\n var start = str.match(/^\\[|^\\{(?!\\{)/), end = {'[': /]$/, '{': /}$/};\n\n return start && end[start[0]].test(str);\n}\n\n/**\n * JSONP client (Browser).\n */\n\nvar jsonpClient = function (request) {\n return new PromiseObj(function (resolve) {\n\n var name = request.jsonp || 'callback', callback = request.jsonpCallback || '_jsonp' + Math.random().toString(36).substr(2), body = null, handler, script;\n\n handler = function (ref) {\n var type = ref.type;\n\n\n var status = 0;\n\n if (type === 'load' && body !== null) {\n status = 200;\n } else if (type === 'error') {\n status = 500;\n }\n\n if (status && window[callback]) {\n delete window[callback];\n document.body.removeChild(script);\n }\n\n resolve(request.respondWith(body, {status: status}));\n };\n\n window[callback] = function (result) {\n body = JSON.stringify(result);\n };\n\n request.abort = function () {\n handler({type: 'abort'});\n };\n\n request.params[name] = callback;\n\n if (request.timeout) {\n setTimeout(request.abort, request.timeout);\n }\n\n script = document.createElement('script');\n script.src = request.getUrl();\n script.type = 'text/javascript';\n script.async = true;\n script.onload = handler;\n script.onerror = handler;\n\n document.body.appendChild(script);\n });\n};\n\n/**\n * JSONP Interceptor.\n */\n\nvar jsonp = function (request, next) {\n\n if (request.method == 'JSONP') {\n request.client = jsonpClient;\n }\n\n next();\n};\n\n/**\n * Before Interceptor.\n */\n\nvar before = function (request, next) {\n\n if (isFunction(request.before)) {\n request.before.call(this, request);\n }\n\n next();\n};\n\n/**\n * HTTP method override Interceptor.\n */\n\nvar method = function (request, next) {\n\n if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {\n request.headers.set('X-HTTP-Method-Override', request.method);\n request.method = 'POST';\n }\n\n next();\n};\n\n/**\n * Header Interceptor.\n */\n\nvar header = function (request, next) {\n\n var headers = assign({}, Http.headers.common,\n !request.crossOrigin ? Http.headers.custom : {},\n Http.headers[toLower(request.method)]\n );\n\n each(headers, function (value, name) {\n if (!request.headers.has(name)) {\n request.headers.set(name, value);\n }\n });\n\n next();\n};\n\n/**\n * XMLHttp client (Browser).\n */\n\nvar xhrClient = function (request) {\n return new PromiseObj(function (resolve) {\n\n var xhr = new XMLHttpRequest(), handler = function (event) {\n\n var response = request.respondWith(\n 'response' in xhr ? xhr.response : xhr.responseText, {\n status: xhr.status === 1223 ? 204 : xhr.status, // IE9 status bug\n statusText: xhr.status === 1223 ? 'No Content' : trim(xhr.statusText)\n }\n );\n\n each(trim(xhr.getAllResponseHeaders()).split('\\n'), function (row) {\n response.headers.append(row.slice(0, row.indexOf(':')), row.slice(row.indexOf(':') + 1));\n });\n\n resolve(response);\n };\n\n request.abort = function () { return xhr.abort(); };\n\n if (request.progress) {\n if (request.method === 'GET') {\n xhr.addEventListener('progress', request.progress);\n } else if (/^(POST|PUT)$/i.test(request.method)) {\n xhr.upload.addEventListener('progress', request.progress);\n }\n }\n\n xhr.open(request.method, request.getUrl(), true);\n\n if (request.timeout) {\n xhr.timeout = request.timeout;\n }\n\n if (request.responseType && 'responseType' in xhr) {\n xhr.responseType = request.responseType;\n }\n\n if (request.withCredentials || request.credentials) {\n xhr.withCredentials = true;\n }\n\n if (!request.crossOrigin) {\n request.headers.set('X-Requested-With', 'XMLHttpRequest');\n }\n\n request.headers.forEach(function (value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.onload = handler;\n xhr.onabort = handler;\n xhr.onerror = handler;\n xhr.ontimeout = handler;\n xhr.send(request.getBody());\n });\n};\n\n/**\n * Http client (Node).\n */\n\nvar nodeClient = function (request) {\n\n var client = __webpack_require__(57);\n\n return new PromiseObj(function (resolve) {\n\n var url = request.getUrl();\n var body = request.getBody();\n var method = request.method;\n var headers = {}, handler;\n\n request.headers.forEach(function (value, name) {\n headers[name] = value;\n });\n\n client(url, {body: body, method: method, headers: headers}).then(handler = function (resp) {\n\n var response = request.respondWith(resp.body, {\n status: resp.statusCode,\n statusText: trim(resp.statusMessage)\n }\n );\n\n each(resp.headers, function (value, name) {\n response.headers.set(name, value);\n });\n\n resolve(response);\n\n }, function (error$$1) { return handler(error$$1.response); });\n });\n};\n\n/**\n * Base client.\n */\n\nvar Client = function (context) {\n\n var reqHandlers = [sendRequest], resHandlers = [], handler;\n\n if (!isObject(context)) {\n context = null;\n }\n\n function Client(request) {\n return new PromiseObj(function (resolve) {\n\n function exec() {\n\n handler = reqHandlers.pop();\n\n if (isFunction(handler)) {\n handler.call(context, request, next);\n } else {\n warn((\"Invalid interceptor of type \" + (typeof handler) + \", must be a function\"));\n next();\n }\n }\n\n function next(response) {\n\n if (isFunction(response)) {\n\n resHandlers.unshift(response);\n\n } else if (isObject(response)) {\n\n resHandlers.forEach(function (handler) {\n response = when(response, function (response) {\n return handler.call(context, response) || response;\n });\n });\n\n when(response, resolve);\n\n return;\n }\n\n exec();\n }\n\n exec();\n\n }, context);\n }\n\n Client.use = function (handler) {\n reqHandlers.push(handler);\n };\n\n return Client;\n};\n\nfunction sendRequest(request, resolve) {\n\n var client = request.client || (inBrowser ? xhrClient : nodeClient);\n\n resolve(client(request));\n}\n\n/**\n * HTTP Headers.\n */\n\nvar Headers = function Headers(headers) {\n var this$1 = this;\n\n\n this.map = {};\n\n each(headers, function (value, name) { return this$1.append(name, value); });\n};\n\nHeaders.prototype.has = function has (name) {\n return getName(this.map, name) !== null;\n};\n\nHeaders.prototype.get = function get (name) {\n\n var list = this.map[getName(this.map, name)];\n\n return list ? list.join() : null;\n};\n\nHeaders.prototype.getAll = function getAll (name) {\n return this.map[getName(this.map, name)] || [];\n};\n\nHeaders.prototype.set = function set (name, value) {\n this.map[normalizeName(getName(this.map, name) || name)] = [trim(value)];\n};\n\nHeaders.prototype.append = function append (name, value){\n\n var list = this.map[getName(this.map, name)];\n\n if (list) {\n list.push(trim(value));\n } else {\n this.set(name, value);\n }\n};\n\nHeaders.prototype.delete = function delete$1 (name){\n delete this.map[getName(this.map, name)];\n};\n\nHeaders.prototype.deleteAll = function deleteAll (){\n this.map = {};\n};\n\nHeaders.prototype.forEach = function forEach (callback, thisArg) {\n var this$1 = this;\n\n each(this.map, function (list, name) {\n each(list, function (value) { return callback.call(thisArg, value, name, this$1); });\n });\n};\n\nfunction getName(map, name) {\n return Object.keys(map).reduce(function (prev, curr) {\n return toLower(name) === toLower(curr) ? curr : prev;\n }, null);\n}\n\nfunction normalizeName(name) {\n\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name');\n }\n\n return trim(name);\n}\n\n/**\n * HTTP Response.\n */\n\nvar Response = function Response(body, ref) {\n var url = ref.url;\n var headers = ref.headers;\n var status = ref.status;\n var statusText = ref.statusText;\n\n\n this.url = url;\n this.ok = status >= 200 && status < 300;\n this.status = status || 0;\n this.statusText = statusText || '';\n this.headers = new Headers(headers);\n this.body = body;\n\n if (isString(body)) {\n\n this.bodyText = body;\n\n } else if (isBlob(body)) {\n\n this.bodyBlob = body;\n\n if (isBlobText(body)) {\n this.bodyText = blobText(body);\n }\n }\n};\n\nResponse.prototype.blob = function blob () {\n return when(this.bodyBlob);\n};\n\nResponse.prototype.text = function text () {\n return when(this.bodyText);\n};\n\nResponse.prototype.json = function json () {\n return when(this.text(), function (text) { return JSON.parse(text); });\n};\n\nObject.defineProperty(Response.prototype, 'data', {\n\n get: function get() {\n return this.body;\n },\n\n set: function set(body) {\n this.body = body;\n }\n\n});\n\nfunction blobText(body) {\n return new PromiseObj(function (resolve) {\n\n var reader = new FileReader();\n\n reader.readAsText(body);\n reader.onload = function () {\n resolve(reader.result);\n };\n\n });\n}\n\nfunction isBlobText(body) {\n return body.type.indexOf('text') === 0 || body.type.indexOf('json') !== -1;\n}\n\n/**\n * HTTP Request.\n */\n\nvar Request = function Request(options$$1) {\n\n this.body = null;\n this.params = {};\n\n assign(this, options$$1, {\n method: toUpper(options$$1.method || 'GET')\n });\n\n if (!(this.headers instanceof Headers)) {\n this.headers = new Headers(this.headers);\n }\n};\n\nRequest.prototype.getUrl = function getUrl (){\n return Url(this);\n};\n\nRequest.prototype.getBody = function getBody (){\n return this.body;\n};\n\nRequest.prototype.respondWith = function respondWith (body, options$$1) {\n return new Response(body, assign(options$$1 || {}, {url: this.getUrl()}));\n};\n\n/**\n * Service for sending network requests.\n */\n\nvar COMMON_HEADERS = {'Accept': 'application/json, text/plain, */*'};\nvar JSON_CONTENT_TYPE = {'Content-Type': 'application/json;charset=utf-8'};\n\nfunction Http(options$$1) {\n\n var self = this || {}, client = Client(self.$vm);\n\n defaults(options$$1 || {}, self.$options, Http.options);\n\n Http.interceptors.forEach(function (handler) {\n\n if (isString(handler)) {\n handler = Http.interceptor[handler];\n }\n\n if (isFunction(handler)) {\n client.use(handler);\n }\n\n });\n\n return client(new Request(options$$1)).then(function (response) {\n\n return response.ok ? response : PromiseObj.reject(response);\n\n }, function (response) {\n\n if (response instanceof Error) {\n error(response);\n }\n\n return PromiseObj.reject(response);\n });\n}\n\nHttp.options = {};\n\nHttp.headers = {\n put: JSON_CONTENT_TYPE,\n post: JSON_CONTENT_TYPE,\n patch: JSON_CONTENT_TYPE,\n delete: JSON_CONTENT_TYPE,\n common: COMMON_HEADERS,\n custom: {}\n};\n\nHttp.interceptor = {before: before, method: method, jsonp: jsonp, json: json, form: form, header: header, cors: cors};\nHttp.interceptors = ['before', 'method', 'jsonp', 'json', 'form', 'header', 'cors'];\n\n['get', 'delete', 'head', 'jsonp'].forEach(function (method$$1) {\n\n Http[method$$1] = function (url, options$$1) {\n return this(assign(options$$1 || {}, {url: url, method: method$$1}));\n };\n\n});\n\n['post', 'put', 'patch'].forEach(function (method$$1) {\n\n Http[method$$1] = function (url, body, options$$1) {\n return this(assign(options$$1 || {}, {url: url, method: method$$1, body: body}));\n };\n\n});\n\n/**\n * Service for interacting with RESTful services.\n */\n\nfunction Resource(url, params, actions, options$$1) {\n\n var self = this || {}, resource = {};\n\n actions = assign({},\n Resource.actions,\n actions\n );\n\n each(actions, function (action, name) {\n\n action = merge({url: url, params: assign({}, params)}, options$$1, action);\n\n resource[name] = function () {\n return (self.$http || Http)(opts(action, arguments));\n };\n });\n\n return resource;\n}\n\nfunction opts(action, args) {\n\n var options$$1 = assign({}, action), params = {}, body;\n\n switch (args.length) {\n\n case 2:\n\n params = args[0];\n body = args[1];\n\n break;\n\n case 1:\n\n if (/^(POST|PUT|PATCH)$/i.test(options$$1.method)) {\n body = args[0];\n } else {\n params = args[0];\n }\n\n break;\n\n case 0:\n\n break;\n\n default:\n\n throw 'Expected up to 2 arguments [params, body], got ' + args.length + ' arguments';\n }\n\n options$$1.body = body;\n options$$1.params = assign({}, options$$1.params, params);\n\n return options$$1;\n}\n\nResource.actions = {\n\n get: {method: 'GET'},\n save: {method: 'POST'},\n query: {method: 'GET'},\n update: {method: 'PUT'},\n remove: {method: 'DELETE'},\n delete: {method: 'DELETE'}\n\n};\n\n/**\n * Install plugin.\n */\n\nfunction plugin(Vue) {\n\n if (plugin.installed) {\n return;\n }\n\n Util(Vue);\n\n Vue.url = Url;\n Vue.http = Http;\n Vue.resource = Resource;\n Vue.Promise = PromiseObj;\n\n Object.defineProperties(Vue.prototype, {\n\n $url: {\n get: function get() {\n return options(Vue.url, this, this.$options.url);\n }\n },\n\n $http: {\n get: function get() {\n return options(Vue.http, this, this.$options.http);\n }\n },\n\n $resource: {\n get: function get() {\n return Vue.resource.bind(this);\n }\n },\n\n $promise: {\n get: function get() {\n var this$1 = this;\n\n return function (executor) { return new Vue.Promise(executor, this$1); };\n }\n }\n\n });\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(plugin);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Z1ZS1yZXNvdXJjZS9kaXN0L3Z1ZS1yZXNvdXJjZS5lczIwMTUuanM/ZmM5MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIHZ1ZS1yZXNvdXJjZSB2MS4zLjNcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWdla2l0L3Z1ZS1yZXNvdXJjZVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcylcbiAqL1xuXG52YXIgUkVTT0xWRUQgPSAwO1xudmFyIFJFSkVDVEVEID0gMTtcbnZhciBQRU5ESU5HICA9IDI7XG5cbmZ1bmN0aW9uIFByb21pc2UkMShleGVjdXRvcikge1xuXG4gICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRlZmVycmVkID0gW107XG5cbiAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgICBleGVjdXRvcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgfVxufVxuXG5Qcm9taXNlJDEucmVqZWN0ID0gZnVuY3Rpb24gKHIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChyKTtcbiAgICB9KTtcbn07XG5cblByb21pc2UkMS5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlc29sdmUoeCk7XG4gICAgfSk7XG59O1xuXG5Qcm9taXNlJDEuYWxsID0gZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgY291bnQgPSAwLCByZXN1bHQgPSBbXTtcblxuICAgICAgICBpZiAoaXRlcmFibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZXNvbHZlcihpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIFByb21pc2UkMS5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmVyKGkpLCByZWplY3QpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5Qcm9taXNlJDEucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIFByb21pc2UkMS5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbnZhciBwJDEgPSBQcm9taXNlJDEucHJvdG90eXBlO1xuXG5wJDEucmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHZhciBwcm9taXNlID0gdGhpcztcblxuICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgIGlmICh4ID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlIHNldHRsZWQgd2l0aCBpdHNlbGYuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4Wyd0aGVuJ107XG5cbiAgICAgICAgICAgIGlmICh4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoZW4uY2FsbCh4LCBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVTT0xWRUQ7XG4gICAgICAgIHByb21pc2UudmFsdWUgPSB4O1xuICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgIH1cbn07XG5cbnAkMS5yZWplY3QgPSBmdW5jdGlvbiByZWplY3QocmVhc29uKSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICAgICAgaWYgKHJlYXNvbiA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvbWlzZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgIH1cbn07XG5cbnAkMS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAocHJvbWlzZS5zdGF0ZSAhPT0gUEVORElORykge1xuICAgICAgICAgICAgd2hpbGUgKHByb21pc2UuZGVmZXJyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gcHJvbWlzZS5kZWZlcnJlZC5zaGlmdCgpLFxuICAgICAgICAgICAgICAgICAgICBvblJlc29sdmVkID0gZGVmZXJyZWRbMF0sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQgPSBkZWZlcnJlZFsxXSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSA9IGRlZmVycmVkWzJdLFxuICAgICAgICAgICAgICAgICAgICByZWplY3QgPSBkZWZlcnJlZFszXTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBSRVNPTFZFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvblJlc29sdmVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvblJlc29sdmVkLmNhbGwodW5kZWZpbmVkLCBwcm9taXNlLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocHJvbWlzZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvbWlzZS5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25SZWplY3RlZC5jYWxsKHVuZGVmaW5lZCwgcHJvbWlzZS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocHJvbWlzZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbnAkMS50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBwcm9taXNlLmRlZmVycmVkLnB1c2goW29uUmVzb2x2ZWQsIG9uUmVqZWN0ZWQsIHJlc29sdmUsIHJlamVjdF0pO1xuICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgIH0pO1xufTtcblxucCQxLmNhdGNoID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG59O1xuXG4vKipcbiAqIFByb21pc2UgYWRhcHRlci5cbiAqL1xuXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgd2luZG93LlByb21pc2UgPSBQcm9taXNlJDE7XG59XG5cbmZ1bmN0aW9uIFByb21pc2VPYmooZXhlY3V0b3IsIGNvbnRleHQpIHtcblxuICAgIGlmIChleGVjdXRvciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gZXhlY3V0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZXhlY3V0b3IuYmluZChjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUHJvbWlzZU9iai5hbGwgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmooUHJvbWlzZS5hbGwoaXRlcmFibGUpLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJlc29sdmUodmFsdWUpLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmVqZWN0ID0gZnVuY3Rpb24gKHJlYXNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJlamVjdChyZWFzb24pLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmFjZSA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJhY2UoaXRlcmFibGUpLCBjb250ZXh0KTtcbn07XG5cbnZhciBwID0gUHJvbWlzZU9iai5wcm90b3R5cGU7XG5cbnAuYmluZCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbnAudGhlbiA9IGZ1bmN0aW9uIChmdWxmaWxsZWQsIHJlamVjdGVkKSB7XG5cbiAgICBpZiAoZnVsZmlsbGVkICYmIGZ1bGZpbGxlZC5iaW5kICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICBmdWxmaWxsZWQgPSBmdWxmaWxsZWQuYmluZCh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChyZWplY3RlZCAmJiByZWplY3RlZC5iaW5kICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICByZWplY3RlZCA9IHJlamVjdGVkLmJpbmQodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmoodGhpcy5wcm9taXNlLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCksIHRoaXMuY29udGV4dCk7XG59O1xuXG5wLmNhdGNoID0gZnVuY3Rpb24gKHJlamVjdGVkKSB7XG5cbiAgICBpZiAocmVqZWN0ZWQgJiYgcmVqZWN0ZWQuYmluZCAmJiB0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgcmVqZWN0ZWQgPSByZWplY3RlZC5iaW5kKHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKHRoaXMucHJvbWlzZS5jYXRjaChyZWplY3RlZCksIHRoaXMuY29udGV4dCk7XG59O1xuXG5wLmZpbmFsbHkgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcblxuICAgIHJldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICApO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucy5cbiAqL1xuXG52YXIgcmVmID0ge307XG52YXIgaGFzT3duUHJvcGVydHkgPSByZWYuaGFzT3duUHJvcGVydHk7XG5cbnZhciByZWYkMSA9IFtdO1xudmFyIHNsaWNlID0gcmVmJDEuc2xpY2U7XG52YXIgZGVidWcgPSBmYWxzZTtcbnZhciBudGljaztcblxudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgVXRpbCA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIgY29uZmlnID0gcmVmLmNvbmZpZztcbiAgICB2YXIgbmV4dFRpY2sgPSByZWYubmV4dFRpY2s7XG5cbiAgICBudGljayA9IG5leHRUaWNrO1xuICAgIGRlYnVnID0gY29uZmlnLmRlYnVnIHx8ICFjb25maWcuc2lsZW50O1xufTtcblxuZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1Z1ZVJlc291cmNlIHdhcm5dOiAnICsgbXNnKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yKG1zZykge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soY2IsIGN0eCkge1xuICAgIHJldHVybiBudGljayhjYiwgY3R4KTtcbn1cblxuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgICByZXR1cm4gc3RyID8gc3RyLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKSA6ICcnO1xufVxuXG5mdW5jdGlvbiB0cmltRW5kKHN0ciwgY2hhcnMpIHtcblxuICAgIGlmIChzdHIgJiYgY2hhcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyskLywgJycpO1xuICAgIH1cblxuICAgIGlmICghc3RyIHx8ICFjaGFycykge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKChcIltcIiArIGNoYXJzICsgXCJdKyRcIikpLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHRvTG93ZXIoc3RyKSB7XG4gICAgcmV0dXJuIHN0ciA/IHN0ci50b0xvd2VyQ2FzZSgpIDogJyc7XG59XG5cbmZ1bmN0aW9uIHRvVXBwZXIoc3RyKSB7XG4gICAgcmV0dXJuIHN0ciA/IHN0ci50b1VwcGVyQ2FzZSgpIDogJyc7XG59XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG5cblxuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jztcbn1cblxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG5mdW5jdGlvbiBpc0Jsb2Iob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyAmJiBvYmogaW5zdGFuY2VvZiBCbG9iO1xufVxuXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKG9iaikge1xuICAgIHJldHVybiB0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnICYmIG9iaiBpbnN0YW5jZW9mIEZvcm1EYXRhO1xufVxuXG5mdW5jdGlvbiB3aGVuKHZhbHVlLCBmdWxmaWxsZWQsIHJlamVjdGVkKSB7XG5cbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2VPYmoucmVzb2x2ZSh2YWx1ZSk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2UudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbn1cblxuZnVuY3Rpb24gb3B0aW9ucyhmbiwgb2JqLCBvcHRzKSB7XG5cbiAgICBvcHRzID0gb3B0cyB8fCB7fTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICAgIG9wdHMgPSBvcHRzLmNhbGwob2JqKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoZm4uYmluZCh7JHZtOiBvYmosICRvcHRpb25zOiBvcHRzfSksIGZuLCB7JG9wdGlvbnM6IG9wdHN9KTtcbn1cblxuZnVuY3Rpb24gZWFjaChvYmosIGl0ZXJhdG9yKSB7XG5cbiAgICB2YXIgaSwga2V5O1xuXG4gICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpdGVyYXRvci5jYWxsKG9ialtpXSwgb2JqW2ldLCBpKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xuICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgICAgIGl0ZXJhdG9yLmNhbGwob2JqW2tleV0sIG9ialtrZXldLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn1cblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgX2Fzc2lnbjtcblxuZnVuY3Rpb24gbWVyZ2UodGFyZ2V0KSB7XG5cbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIF9tZXJnZSh0YXJnZXQsIHNvdXJjZSwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0cyh0YXJnZXQpIHtcblxuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0W2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX2Fzc2lnbih0YXJnZXQpIHtcblxuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgICAgX21lcmdlKHRhcmdldCwgc291cmNlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9tZXJnZSh0YXJnZXQsIHNvdXJjZSwgZGVlcCkge1xuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGRlZXAgJiYgKGlzUGxhaW5PYmplY3Qoc291cmNlW2tleV0pIHx8IGlzQXJyYXkoc291cmNlW2tleV0pKSkge1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc291cmNlW2tleV0pICYmICFpc1BsYWluT2JqZWN0KHRhcmdldFtrZXldKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBcnJheShzb3VyY2Vba2V5XSkgJiYgIWlzQXJyYXkodGFyZ2V0W2tleV0pKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9tZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0sIGRlZXApO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogUm9vdCBQcmVmaXggVHJhbnNmb3JtLlxuICovXG5cbnZhciByb290ID0gZnVuY3Rpb24gKG9wdGlvbnMkJDEsIG5leHQpIHtcblxuICAgIHZhciB1cmwgPSBuZXh0KG9wdGlvbnMkJDEpO1xuXG4gICAgaWYgKGlzU3RyaW5nKG9wdGlvbnMkJDEucm9vdCkgJiYgIS9eKGh0dHBzPzopP1xcLy8udGVzdCh1cmwpKSB7XG4gICAgICAgIHVybCA9IHRyaW1FbmQob3B0aW9ucyQkMS5yb290LCAnLycpICsgJy8nICsgdXJsO1xuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG59O1xuXG4vKipcbiAqIFF1ZXJ5IFBhcmFtZXRlciBUcmFuc2Zvcm0uXG4gKi9cblxudmFyIHF1ZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMkJDEsIG5leHQpIHtcblxuICAgIHZhciB1cmxQYXJhbXMgPSBPYmplY3Qua2V5cyhVcmwub3B0aW9ucy5wYXJhbXMpLCBxdWVyeSA9IHt9LCB1cmwgPSBuZXh0KG9wdGlvbnMkJDEpO1xuXG4gICAgZWFjaChvcHRpb25zJCQxLnBhcmFtcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHVybFBhcmFtcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgICBxdWVyeVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHF1ZXJ5ID0gVXJsLnBhcmFtcyhxdWVyeSk7XG5cbiAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09IC0xID8gJz8nIDogJyYnKSArIHF1ZXJ5O1xuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG59O1xuXG4vKipcbiAqIFVSTCBUZW1wbGF0ZSB2Mi4wLjYgKGh0dHBzOi8vZ2l0aHViLmNvbS9icmFtc3RlaW4vdXJsLXRlbXBsYXRlKVxuICovXG5cbmZ1bmN0aW9uIGV4cGFuZCh1cmwsIHBhcmFtcywgdmFyaWFibGVzKSB7XG5cbiAgICB2YXIgdG1wbCA9IHBhcnNlKHVybCksIGV4cGFuZGVkID0gdG1wbC5leHBhbmQocGFyYW1zKTtcblxuICAgIGlmICh2YXJpYWJsZXMpIHtcbiAgICAgICAgdmFyaWFibGVzLnB1c2guYXBwbHkodmFyaWFibGVzLCB0bXBsLnZhcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBleHBhbmRlZDtcbn1cblxuZnVuY3Rpb24gcGFyc2UodGVtcGxhdGUpIHtcblxuICAgIHZhciBvcGVyYXRvcnMgPSBbJysnLCAnIycsICcuJywgJy8nLCAnOycsICc/JywgJyYnXSwgdmFyaWFibGVzID0gW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YXJzOiB2YXJpYWJsZXMsXG4gICAgICAgIGV4cGFuZDogZnVuY3Rpb24gZXhwYW5kKGNvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHsoW15cXHtcXH1dKylcXH18KFteXFx7XFx9XSspL2csIGZ1bmN0aW9uIChfLCBleHByZXNzaW9uLCBsaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24pIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSBudWxsLCB2YWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3JzLmluZGV4T2YoZXhwcmVzc2lvbi5jaGFyQXQoMCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBleHByZXNzaW9uLmNoYXJBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uc3BsaXQoLywvZykuZm9yRWFjaChmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSAvKFteOlxcKl0qKSg/OjooXFxkKyl8KFxcKikpPy8uZXhlYyh2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaC5hcHBseSh2YWx1ZXMsIGdldFZhbHVlcyhjb250ZXh0LCBvcGVyYXRvciwgdG1wWzFdLCB0bXBbMl0gfHwgdG1wWzNdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMucHVzaCh0bXBbMV0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgJiYgb3BlcmF0b3IgIT09ICcrJykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwYXJhdG9yID0gJywnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICc/Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICcmJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgIT09ICcjJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlcy5sZW5ndGggIT09IDAgPyBvcGVyYXRvciA6ICcnKSArIHZhbHVlcy5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc2VydmVkKGxpdGVyYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVzKGNvbnRleHQsIG9wZXJhdG9yLCBrZXksIG1vZGlmaWVyKSB7XG5cbiAgICB2YXIgdmFsdWUgPSBjb250ZXh0W2tleV0sIHJlc3VsdCA9IFtdO1xuXG4gICAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgaWYgKG1vZGlmaWVyICYmIG1vZGlmaWVyICE9PSAnKicpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBwYXJzZUludChtb2RpZmllciwgMTApKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlLCBpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSA/IGtleSA6IG51bGwpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChtb2RpZmllciA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmZpbHRlcihpc0RlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUsIGlzS2V5T3BlcmF0b3Iob3BlcmF0b3IpID8ga2V5IDogbnVsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZVtrXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWVba10sIGspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgdG1wID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuZmlsdGVyKGlzRGVmaW5lZCkuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZVtrXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucHVzaChlbmNvZGVVUklDb21wb25lbnQoaykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZVtrXS50b1N0cmluZygpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIHRtcC5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG1wLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0bXAuam9pbignLCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3BlcmF0b3IgPT09ICc7Jykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGtleSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnJyAmJiAob3BlcmF0b3IgPT09ICcmJyB8fCBvcGVyYXRvciA9PT0gJz8nKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzS2V5T3BlcmF0b3Iob3BlcmF0b3IpIHtcbiAgICByZXR1cm4gb3BlcmF0b3IgPT09ICc7JyB8fCBvcGVyYXRvciA9PT0gJyYnIHx8IG9wZXJhdG9yID09PSAnPyc7XG59XG5cbmZ1bmN0aW9uIGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZSwga2V5KSB7XG5cbiAgICB2YWx1ZSA9IChvcGVyYXRvciA9PT0gJysnIHx8IG9wZXJhdG9yID09PSAnIycpID8gZW5jb2RlUmVzZXJ2ZWQodmFsdWUpIDogZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5jb2RlUmVzZXJ2ZWQoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgvKCVbMC05QS1GYS1mXXsyfSkvZykubWFwKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICAgIGlmICghLyVbMC05QS1GYS1mXS8udGVzdChwYXJ0KSkge1xuICAgICAgICAgICAgcGFydCA9IGVuY29kZVVSSShwYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFydDtcbiAgICB9KS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBVUkwgVGVtcGxhdGUgKFJGQyA2NTcwKSBUcmFuc2Zvcm0uXG4gKi9cblxudmFyIHRlbXBsYXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgIHZhciB2YXJpYWJsZXMgPSBbXSwgdXJsID0gZXhwYW5kKG9wdGlvbnMudXJsLCBvcHRpb25zLnBhcmFtcywgdmFyaWFibGVzKTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgZGVsZXRlIG9wdGlvbnMucGFyYW1zW2tleV07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXJsO1xufTtcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBVUkwgdGVtcGxhdGluZy5cbiAqL1xuXG5mdW5jdGlvbiBVcmwodXJsLCBwYXJhbXMpIHtcblxuICAgIHZhciBzZWxmID0gdGhpcyB8fCB7fSwgb3B0aW9ucyQkMSA9IHVybCwgdHJhbnNmb3JtO1xuXG4gICAgaWYgKGlzU3RyaW5nKHVybCkpIHtcbiAgICAgICAgb3B0aW9ucyQkMSA9IHt1cmw6IHVybCwgcGFyYW1zOiBwYXJhbXN9O1xuICAgIH1cblxuICAgIG9wdGlvbnMkJDEgPSBtZXJnZSh7fSwgVXJsLm9wdGlvbnMsIHNlbGYuJG9wdGlvbnMsIG9wdGlvbnMkJDEpO1xuXG4gICAgVXJsLnRyYW5zZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikge1xuXG4gICAgICAgIGlmIChpc1N0cmluZyhoYW5kbGVyKSkge1xuICAgICAgICAgICAgaGFuZGxlciA9IFVybC50cmFuc2Zvcm1baGFuZGxlcl07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtID0gZmFjdG9yeShoYW5kbGVyLCB0cmFuc2Zvcm0sIHNlbGYuJHZtKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtKG9wdGlvbnMkJDEpO1xufVxuXG4vKipcbiAqIFVybCBvcHRpb25zLlxuICovXG5cblVybC5vcHRpb25zID0ge1xuICAgIHVybDogJycsXG4gICAgcm9vdDogbnVsbCxcbiAgICBwYXJhbXM6IHt9XG59O1xuXG4vKipcbiAqIFVybCB0cmFuc2Zvcm1zLlxuICovXG5cblVybC50cmFuc2Zvcm0gPSB7dGVtcGxhdGU6IHRlbXBsYXRlLCBxdWVyeTogcXVlcnksIHJvb3Q6IHJvb3R9O1xuVXJsLnRyYW5zZm9ybXMgPSBbJ3RlbXBsYXRlJywgJ3F1ZXJ5JywgJ3Jvb3QnXTtcblxuLyoqXG4gKiBFbmNvZGVzIGEgVXJsIHBhcmFtZXRlciBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICovXG5cblVybC5wYXJhbXMgPSBmdW5jdGlvbiAob2JqKSB7XG5cbiAgICB2YXIgcGFyYW1zID0gW10sIGVzY2FwZSA9IGVuY29kZVVSSUNvbXBvbmVudDtcblxuICAgIHBhcmFtcy5hZGQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wdXNoKGVzY2FwZShrZXkpICsgJz0nICsgZXNjYXBlKHZhbHVlKSk7XG4gICAgfTtcblxuICAgIHNlcmlhbGl6ZShwYXJhbXMsIG9iaik7XG5cbiAgICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKS5yZXBsYWNlKC8lMjAvZywgJysnKTtcbn07XG5cbi8qKlxuICogUGFyc2UgYSBVUkwgYW5kIHJldHVybiBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKi9cblxuVXJsLnBhcnNlID0gZnVuY3Rpb24gKHVybCkge1xuXG4gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgaWYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSkge1xuICAgICAgICBlbC5ocmVmID0gdXJsO1xuICAgICAgICB1cmwgPSBlbC5ocmVmO1xuICAgIH1cblxuICAgIGVsLmhyZWYgPSB1cmw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBocmVmOiBlbC5ocmVmLFxuICAgICAgICBwcm90b2NvbDogZWwucHJvdG9jb2wgPyBlbC5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICBwb3J0OiBlbC5wb3J0LFxuICAgICAgICBob3N0OiBlbC5ob3N0LFxuICAgICAgICBob3N0bmFtZTogZWwuaG9zdG5hbWUsXG4gICAgICAgIHBhdGhuYW1lOiBlbC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyA/IGVsLnBhdGhuYW1lIDogJy8nICsgZWwucGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaDogZWwuc2VhcmNoID8gZWwuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgaGFzaDogZWwuaGFzaCA/IGVsLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJ1xuICAgIH07XG59O1xuXG5mdW5jdGlvbiBmYWN0b3J5KGhhbmRsZXIsIG5leHQsIHZtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zJCQxKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwodm0sIG9wdGlvbnMkJDEsIG5leHQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShwYXJhbXMsIG9iaiwgc2NvcGUpIHtcblxuICAgIHZhciBhcnJheSA9IGlzQXJyYXkob2JqKSwgcGxhaW4gPSBpc1BsYWluT2JqZWN0KG9iaiksIGhhc2g7XG5cbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcblxuICAgICAgICBoYXNoID0gaXNPYmplY3QodmFsdWUpIHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIGlmIChzY29wZSkge1xuICAgICAgICAgICAga2V5ID0gc2NvcGUgKyAnWycgKyAocGxhaW4gfHwgaGFzaCA/IGtleSA6ICcnKSArICddJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2NvcGUgJiYgYXJyYXkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5hZGQodmFsdWUubmFtZSwgdmFsdWUudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc2gpIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZShwYXJhbXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFkZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFhEb21haW4gY2xpZW50IChJbnRlcm5ldCBFeHBsb3JlcikuXG4gKi9cblxudmFyIHhkckNsaWVudCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgdmFyIHhkciA9IG5ldyBYRG9tYWluUmVxdWVzdCgpLCBoYW5kbGVyID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICB2YXIgc3RhdHVzID0gMDtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdsb2FkJykge1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9IDIwMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9IDUwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3BvbmRXaXRoKHhkci5yZXNwb25zZVRleHQsIHtzdGF0dXM6IHN0YXR1c30pKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0LmFib3J0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geGRyLmFib3J0KCk7IH07XG5cbiAgICAgICAgeGRyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuZ2V0VXJsKCkpO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0LnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHhkci50aW1lb3V0ID0gcmVxdWVzdC50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgeGRyLm9ubG9hZCA9IGhhbmRsZXI7XG4gICAgICAgIHhkci5vbmFib3J0ID0gaGFuZGxlcjtcbiAgICAgICAgeGRyLm9uZXJyb3IgPSBoYW5kbGVyO1xuICAgICAgICB4ZHIub250aW1lb3V0ID0gaGFuZGxlcjtcbiAgICAgICAgeGRyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgeGRyLnNlbmQocmVxdWVzdC5nZXRCb2R5KCkpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBDT1JTIEludGVyY2VwdG9yLlxuICovXG5cbnZhciBTVVBQT1JUU19DT1JTID0gaW5Ccm93c2VyICYmICd3aXRoQ3JlZGVudGlhbHMnIGluIG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG52YXIgY29ycyA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBuZXh0KSB7XG5cbiAgICBpZiAoaW5Ccm93c2VyKSB7XG5cbiAgICAgICAgdmFyIG9yZ1VybCA9IFVybC5wYXJzZShsb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgdmFyIHJlcVVybCA9IFVybC5wYXJzZShyZXF1ZXN0LmdldFVybCgpKTtcblxuICAgICAgICBpZiAocmVxVXJsLnByb3RvY29sICE9PSBvcmdVcmwucHJvdG9jb2wgfHwgcmVxVXJsLmhvc3QgIT09IG9yZ1VybC5ob3N0KSB7XG5cbiAgICAgICAgICAgIHJlcXVlc3QuY3Jvc3NPcmlnaW4gPSB0cnVlO1xuICAgICAgICAgICAgcmVxdWVzdC5lbXVsYXRlSFRUUCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoIVNVUFBPUlRTX0NPUlMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0LmNsaWVudCA9IHhkckNsaWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHQoKTtcbn07XG5cbi8qKlxuICogRm9ybSBkYXRhIEludGVyY2VwdG9yLlxuICovXG5cbnZhciBmb3JtID0gZnVuY3Rpb24gKHJlcXVlc3QsIG5leHQpIHtcblxuICAgIGlmIChpc0Zvcm1EYXRhKHJlcXVlc3QuYm9keSkpIHtcblxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZGVsZXRlKCdDb250ZW50LVR5cGUnKTtcblxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QocmVxdWVzdC5ib2R5KSAmJiByZXF1ZXN0LmVtdWxhdGVKU09OKSB7XG5cbiAgICAgICAgcmVxdWVzdC5ib2R5ID0gVXJsLnBhcmFtcyhyZXF1ZXN0LmJvZHkpO1xuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xufTtcblxuLyoqXG4gKiBKU09OIEludGVyY2VwdG9yLlxuICovXG5cbnZhciBqc29uID0gZnVuY3Rpb24gKHJlcXVlc3QsIG5leHQpIHtcblxuICAgIHZhciB0eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgfHwgJyc7XG5cbiAgICBpZiAoaXNPYmplY3QocmVxdWVzdC5ib2R5KSAmJiB0eXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA9PT0gMCkge1xuICAgICAgICByZXF1ZXN0LmJvZHkgPSBKU09OLnN0cmluZ2lmeShyZXF1ZXN0LmJvZHkpO1xuICAgIH1cblxuICAgIG5leHQoZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHlUZXh0ID8gd2hlbihyZXNwb25zZS50ZXh0KCksIGZ1bmN0aW9uICh0ZXh0KSB7XG5cbiAgICAgICAgICAgIHR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgfHwgJyc7XG5cbiAgICAgICAgICAgIGlmICh0eXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA9PT0gMCB8fCBpc0pzb24odGV4dCkpIHtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJvZHkgPSBKU09OLnBhcnNlKHRleHQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYm9keSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJvZHkgPSB0ZXh0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG5cbiAgICAgICAgfSkgOiByZXNwb25zZTtcblxuICAgIH0pO1xufTtcblxuZnVuY3Rpb24gaXNKc29uKHN0cikge1xuXG4gICAgdmFyIHN0YXJ0ID0gc3RyLm1hdGNoKC9eXFxbfF5cXHsoPyFcXHspLyksIGVuZCA9IHsnWyc6IC9dJC8sICd7JzogL30kL307XG5cbiAgICByZXR1cm4gc3RhcnQgJiYgZW5kW3N0YXJ0WzBdXS50ZXN0KHN0cik7XG59XG5cbi8qKlxuICogSlNPTlAgY2xpZW50IChCcm93c2VyKS5cbiAqL1xuXG52YXIganNvbnBDbGllbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgIHZhciBuYW1lID0gcmVxdWVzdC5qc29ucCB8fCAnY2FsbGJhY2snLCBjYWxsYmFjayA9IHJlcXVlc3QuanNvbnBDYWxsYmFjayB8fCAnX2pzb25wJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKSwgYm9keSA9IG51bGwsIGhhbmRsZXIsIHNjcmlwdDtcblxuICAgICAgICBoYW5kbGVyID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICB2YXIgc3RhdHVzID0gMDtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdsb2FkJyAmJiBib2R5ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gMjAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gNTAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdHVzICYmIHdpbmRvd1tjYWxsYmFja10pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgd2luZG93W2NhbGxiYWNrXTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUocmVxdWVzdC5yZXNwb25kV2l0aChib2R5LCB7c3RhdHVzOiBzdGF0dXN9KSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93W2NhbGxiYWNrXSA9IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShyZXN1bHQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3QuYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBoYW5kbGVyKHt0eXBlOiAnYWJvcnQnfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVxdWVzdC5wYXJhbXNbbmFtZV0gPSBjYWxsYmFjaztcblxuICAgICAgICBpZiAocmVxdWVzdC50aW1lb3V0KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlcXVlc3QuYWJvcnQsIHJlcXVlc3QudGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LnNyYyA9IHJlcXVlc3QuZ2V0VXJsKCk7XG4gICAgICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBoYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9IGhhbmRsZXI7XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBKU09OUCBJbnRlcmNlcHRvci5cbiAqL1xuXG52YXIganNvbnAgPSBmdW5jdGlvbiAocmVxdWVzdCwgbmV4dCkge1xuXG4gICAgaWYgKHJlcXVlc3QubWV0aG9kID09ICdKU09OUCcpIHtcbiAgICAgICAgcmVxdWVzdC5jbGllbnQgPSBqc29ucENsaWVudDtcbiAgICB9XG5cbiAgICBuZXh0KCk7XG59O1xuXG4vKipcbiAqIEJlZm9yZSBJbnRlcmNlcHRvci5cbiAqL1xuXG52YXIgYmVmb3JlID0gZnVuY3Rpb24gKHJlcXVlc3QsIG5leHQpIHtcblxuICAgIGlmIChpc0Z1bmN0aW9uKHJlcXVlc3QuYmVmb3JlKSkge1xuICAgICAgICByZXF1ZXN0LmJlZm9yZS5jYWxsKHRoaXMsIHJlcXVlc3QpO1xuICAgIH1cblxuICAgIG5leHQoKTtcbn07XG5cbi8qKlxuICogSFRUUCBtZXRob2Qgb3ZlcnJpZGUgSW50ZXJjZXB0b3IuXG4gKi9cblxudmFyIG1ldGhvZCA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBuZXh0KSB7XG5cbiAgICBpZiAocmVxdWVzdC5lbXVsYXRlSFRUUCAmJiAvXihQVVR8UEFUQ0h8REVMRVRFKSQvaS50ZXN0KHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdYLUhUVFAtTWV0aG9kLU92ZXJyaWRlJywgcmVxdWVzdC5tZXRob2QpO1xuICAgICAgICByZXF1ZXN0Lm1ldGhvZCA9ICdQT1NUJztcbiAgICB9XG5cbiAgICBuZXh0KCk7XG59O1xuXG4vKipcbiAqIEhlYWRlciBJbnRlcmNlcHRvci5cbiAqL1xuXG52YXIgaGVhZGVyID0gZnVuY3Rpb24gKHJlcXVlc3QsIG5leHQpIHtcblxuICAgIHZhciBoZWFkZXJzID0gYXNzaWduKHt9LCBIdHRwLmhlYWRlcnMuY29tbW9uLFxuICAgICAgICAhcmVxdWVzdC5jcm9zc09yaWdpbiA/IEh0dHAuaGVhZGVycy5jdXN0b20gOiB7fSxcbiAgICAgICAgSHR0cC5oZWFkZXJzW3RvTG93ZXIocmVxdWVzdC5tZXRob2QpXVxuICAgICk7XG5cbiAgICBlYWNoKGhlYWRlcnMsIGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAoIXJlcXVlc3QuaGVhZGVycy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVycy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBuZXh0KCk7XG59O1xuXG4vKipcbiAqIFhNTEh0dHAgY2xpZW50IChCcm93c2VyKS5cbiAqL1xuXG52YXIgeGhyQ2xpZW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmooZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCksIGhhbmRsZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcblxuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVxdWVzdC5yZXNwb25kV2l0aChcbiAgICAgICAgICAgICAgICAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzID09PSAxMjIzID8gMjA0IDogeGhyLnN0YXR1cywgLy8gSUU5IHN0YXR1cyBidWdcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1cyA9PT0gMTIyMyA/ICdObyBDb250ZW50JyA6IHRyaW0oeGhyLnN0YXR1c1RleHQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZWFjaCh0cmltKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiAocm93KSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5hcHBlbmQocm93LnNsaWNlKDAsIHJvdy5pbmRleE9mKCc6JykpLCByb3cuc2xpY2Uocm93LmluZGV4T2YoJzonKSArIDEpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0LmFib3J0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geGhyLmFib3J0KCk7IH07XG5cbiAgICAgICAgaWYgKHJlcXVlc3QucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCByZXF1ZXN0LnByb2dyZXNzKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL14oUE9TVHxQVVQpJC9pLnRlc3QocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgICAgICAgICAgICAgeGhyLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHJlcXVlc3QucHJvZ3Jlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuZ2V0VXJsKCksIHRydWUpO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0LnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHhoci50aW1lb3V0ID0gcmVxdWVzdC50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3QucmVzcG9uc2VUeXBlICYmICdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9IHJlcXVlc3QucmVzcG9uc2VUeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzIHx8IHJlcXVlc3QuY3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXF1ZXN0LmNyb3NzT3JpZ2luKSB7XG4gICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgeGhyLm9ubG9hZCA9IGhhbmRsZXI7XG4gICAgICAgIHhoci5vbmFib3J0ID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLm9uZXJyb3IgPSBoYW5kbGVyO1xuICAgICAgICB4aHIub250aW1lb3V0ID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLnNlbmQocmVxdWVzdC5nZXRCb2R5KCkpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBIdHRwIGNsaWVudCAoTm9kZSkuXG4gKi9cblxudmFyIG5vZGVDbGllbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuXG4gICAgdmFyIGNsaWVudCA9IHJlcXVpcmUoJ2dvdCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QuZ2V0VXJsKCk7XG4gICAgICAgIHZhciBib2R5ID0gcmVxdWVzdC5nZXRCb2R5KCk7XG4gICAgICAgIHZhciBtZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICAgICAgdmFyIGhlYWRlcnMgPSB7fSwgaGFuZGxlcjtcblxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50KHVybCwge2JvZHk6IGJvZHksIG1ldGhvZDogbWV0aG9kLCBoZWFkZXJzOiBoZWFkZXJzfSkudGhlbihoYW5kbGVyID0gZnVuY3Rpb24gKHJlc3ApIHtcblxuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVxdWVzdC5yZXNwb25kV2l0aChyZXNwLmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHRyaW0ocmVzcC5zdGF0dXNNZXNzYWdlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGVhY2gocmVzcC5oZWFkZXJzLCBmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG5cbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yJCQxKSB7IHJldHVybiBoYW5kbGVyKGVycm9yJCQxLnJlc3BvbnNlKTsgfSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIEJhc2UgY2xpZW50LlxuICovXG5cbnZhciBDbGllbnQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuXG4gICAgdmFyIHJlcUhhbmRsZXJzID0gW3NlbmRSZXF1ZXN0XSwgcmVzSGFuZGxlcnMgPSBbXSwgaGFuZGxlcjtcblxuICAgIGlmICghaXNPYmplY3QoY29udGV4dCkpIHtcbiAgICAgICAgY29udGV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gQ2xpZW50KHJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGV4ZWMoKSB7XG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gcmVxSGFuZGxlcnMucG9wKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmNhbGwoY29udGV4dCwgcmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybigoXCJJbnZhbGlkIGludGVyY2VwdG9yIG9mIHR5cGUgXCIgKyAodHlwZW9mIGhhbmRsZXIpICsgXCIsIG11c3QgYmUgYSBmdW5jdGlvblwiKSk7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG5leHQocmVzcG9uc2UpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHJlc3BvbnNlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc0hhbmRsZXJzLnVuc2hpZnQocmVzcG9uc2UpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChyZXNwb25zZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICByZXNIYW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHdoZW4ocmVzcG9uc2UsIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwoY29udGV4dCwgcmVzcG9uc2UpIHx8IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHdoZW4ocmVzcG9uc2UsIHJlc29sdmUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4ZWMoKTtcblxuICAgICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBDbGllbnQudXNlID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgcmVxSGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIENsaWVudDtcbn07XG5cbmZ1bmN0aW9uIHNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlc29sdmUpIHtcblxuICAgIHZhciBjbGllbnQgPSByZXF1ZXN0LmNsaWVudCB8fCAoaW5Ccm93c2VyID8geGhyQ2xpZW50IDogbm9kZUNsaWVudCk7XG5cbiAgICByZXNvbHZlKGNsaWVudChyZXF1ZXN0KSk7XG59XG5cbi8qKlxuICogSFRUUCBIZWFkZXJzLlxuICovXG5cbnZhciBIZWFkZXJzID0gZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgIHRoaXMubWFwID0ge307XG5cbiAgICBlYWNoKGhlYWRlcnMsIGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSkgeyByZXR1cm4gdGhpcyQxLmFwcGVuZChuYW1lLCB2YWx1ZSk7IH0pO1xufTtcblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChuYW1lKSB7XG4gICAgcmV0dXJuIGdldE5hbWUodGhpcy5tYXAsIG5hbWUpICE9PSBudWxsO1xufTtcblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChuYW1lKSB7XG5cbiAgICB2YXIgbGlzdCA9IHRoaXMubWFwW2dldE5hbWUodGhpcy5tYXAsIG5hbWUpXTtcblxuICAgIHJldHVybiBsaXN0ID8gbGlzdC5qb2luKCkgOiBudWxsO1xufTtcblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24gZ2V0QWxsIChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwW2dldE5hbWUodGhpcy5tYXAsIG5hbWUpXSB8fCBbXTtcbn07XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIHNldCAobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKGdldE5hbWUodGhpcy5tYXAsIG5hbWUpIHx8IG5hbWUpXSA9IFt0cmltKHZhbHVlKV07XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQgKG5hbWUsIHZhbHVlKXtcblxuICAgIHZhciBsaXN0ID0gdGhpcy5tYXBbZ2V0TmFtZSh0aGlzLm1hcCwgbmFtZSldO1xuXG4gICAgaWYgKGxpc3QpIHtcbiAgICAgICAgbGlzdC5wdXNoKHRyaW0odmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfVxufTtcblxuSGVhZGVycy5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gZGVsZXRlJDEgKG5hbWUpe1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtnZXROYW1lKHRoaXMubWFwLCBuYW1lKV07XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbiBkZWxldGVBbGwgKCl7XG4gICAgdGhpcy5tYXAgPSB7fTtcbn07XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoIChjYWxsYmFjaywgdGhpc0FyZykge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGVhY2godGhpcy5tYXAsIGZ1bmN0aW9uIChsaXN0LCBuYW1lKSB7XG4gICAgICAgIGVhY2gobGlzdCwgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzJDEpOyB9KTtcbiAgICB9KTtcbn07XG5cbmZ1bmN0aW9uIGdldE5hbWUobWFwLCBuYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICAgIHJldHVybiB0b0xvd2VyKG5hbWUpID09PSB0b0xvd2VyKGN1cnIpID8gY3VyciA6IHByZXY7XG4gICAgfSwgbnVsbCk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuXG4gICAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyaW0obmFtZSk7XG59XG5cbi8qKlxuICogSFRUUCBSZXNwb25zZS5cbiAqL1xuXG52YXIgUmVzcG9uc2UgPSBmdW5jdGlvbiBSZXNwb25zZShib2R5LCByZWYpIHtcbiAgICB2YXIgdXJsID0gcmVmLnVybDtcbiAgICB2YXIgaGVhZGVycyA9IHJlZi5oZWFkZXJzO1xuICAgIHZhciBzdGF0dXMgPSByZWYuc3RhdHVzO1xuICAgIHZhciBzdGF0dXNUZXh0ID0gcmVmLnN0YXR1c1RleHQ7XG5cblxuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMub2sgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cyB8fCAwO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwgJyc7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVycyk7XG4gICAgdGhpcy5ib2R5ID0gYm9keTtcblxuICAgIGlmIChpc1N0cmluZyhib2R5KSkge1xuXG4gICAgICAgIHRoaXMuYm9keVRleHQgPSBib2R5O1xuXG4gICAgfSBlbHNlIGlmIChpc0Jsb2IoYm9keSkpIHtcblxuICAgICAgICB0aGlzLmJvZHlCbG9iID0gYm9keTtcblxuICAgICAgICBpZiAoaXNCbG9iVGV4dChib2R5KSkge1xuICAgICAgICAgICAgdGhpcy5ib2R5VGV4dCA9IGJsb2JUZXh0KGJvZHkpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuUmVzcG9uc2UucHJvdG90eXBlLmJsb2IgPSBmdW5jdGlvbiBibG9iICgpIHtcbiAgICByZXR1cm4gd2hlbih0aGlzLmJvZHlCbG9iKTtcbn07XG5cblJlc3BvbnNlLnByb3RvdHlwZS50ZXh0ID0gZnVuY3Rpb24gdGV4dCAoKSB7XG4gICAgcmV0dXJuIHdoZW4odGhpcy5ib2R5VGV4dCk7XG59O1xuXG5SZXNwb25zZS5wcm90b3R5cGUuanNvbiA9IGZ1bmN0aW9uIGpzb24gKCkge1xuICAgIHJldHVybiB3aGVuKHRoaXMudGV4dCgpLCBmdW5jdGlvbiAodGV4dCkgeyByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTsgfSk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzcG9uc2UucHJvdG90eXBlLCAnZGF0YScsIHtcblxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib2R5O1xuICAgIH0sXG5cbiAgICBzZXQ6IGZ1bmN0aW9uIHNldChib2R5KSB7XG4gICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG4gICAgfVxuXG59KTtcblxuZnVuY3Rpb24gYmxvYlRleHQoYm9keSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGJvZHkpO1xuICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICAgICAgfTtcblxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBpc0Jsb2JUZXh0KGJvZHkpIHtcbiAgICByZXR1cm4gYm9keS50eXBlLmluZGV4T2YoJ3RleHQnKSA9PT0gMCB8fCBib2R5LnR5cGUuaW5kZXhPZignanNvbicpICE9PSAtMTtcbn1cblxuLyoqXG4gKiBIVFRQIFJlcXVlc3QuXG4gKi9cblxudmFyIFJlcXVlc3QgPSBmdW5jdGlvbiBSZXF1ZXN0KG9wdGlvbnMkJDEpIHtcblxuICAgIHRoaXMuYm9keSA9IG51bGw7XG4gICAgdGhpcy5wYXJhbXMgPSB7fTtcblxuICAgIGFzc2lnbih0aGlzLCBvcHRpb25zJCQxLCB7XG4gICAgICAgIG1ldGhvZDogdG9VcHBlcihvcHRpb25zJCQxLm1ldGhvZCB8fCAnR0VUJylcbiAgICB9KTtcblxuICAgIGlmICghKHRoaXMuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG4gICAgfVxufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuZ2V0VXJsID0gZnVuY3Rpb24gZ2V0VXJsICgpe1xuICAgIHJldHVybiBVcmwodGhpcyk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5nZXRCb2R5ID0gZnVuY3Rpb24gZ2V0Qm9keSAoKXtcbiAgICByZXR1cm4gdGhpcy5ib2R5O1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUucmVzcG9uZFdpdGggPSBmdW5jdGlvbiByZXNwb25kV2l0aCAoYm9keSwgb3B0aW9ucyQkMSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keSwgYXNzaWduKG9wdGlvbnMkJDEgfHwge30sIHt1cmw6IHRoaXMuZ2V0VXJsKCl9KSk7XG59O1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHNlbmRpbmcgbmV0d29yayByZXF1ZXN0cy5cbiAqL1xuXG52YXIgQ09NTU9OX0hFQURFUlMgPSB7J0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonfTtcbnZhciBKU09OX0NPTlRFTlRfVFlQRSA9IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9O1xuXG5mdW5jdGlvbiBIdHRwKG9wdGlvbnMkJDEpIHtcblxuICAgIHZhciBzZWxmID0gdGhpcyB8fCB7fSwgY2xpZW50ID0gQ2xpZW50KHNlbGYuJHZtKTtcblxuICAgIGRlZmF1bHRzKG9wdGlvbnMkJDEgfHwge30sIHNlbGYuJG9wdGlvbnMsIEh0dHAub3B0aW9ucyk7XG5cbiAgICBIdHRwLmludGVyY2VwdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGhhbmRsZXIpKSB7XG4gICAgICAgICAgICBoYW5kbGVyID0gSHR0cC5pbnRlcmNlcHRvcltoYW5kbGVyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICAgICAgICBjbGllbnQudXNlKGhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIHJldHVybiBjbGllbnQobmV3IFJlcXVlc3Qob3B0aW9ucyQkMSkpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm9rID8gcmVzcG9uc2UgOiBQcm9taXNlT2JqLnJlamVjdChyZXNwb25zZSk7XG5cbiAgICB9LCBmdW5jdGlvbiAocmVzcG9uc2UpIHtcblxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgZXJyb3IocmVzcG9uc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2VPYmoucmVqZWN0KHJlc3BvbnNlKTtcbiAgICB9KTtcbn1cblxuSHR0cC5vcHRpb25zID0ge307XG5cbkh0dHAuaGVhZGVycyA9IHtcbiAgICBwdXQ6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgIHBvc3Q6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgIHBhdGNoOiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICBkZWxldGU6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgIGNvbW1vbjogQ09NTU9OX0hFQURFUlMsXG4gICAgY3VzdG9tOiB7fVxufTtcblxuSHR0cC5pbnRlcmNlcHRvciA9IHtiZWZvcmU6IGJlZm9yZSwgbWV0aG9kOiBtZXRob2QsIGpzb25wOiBqc29ucCwganNvbjoganNvbiwgZm9ybTogZm9ybSwgaGVhZGVyOiBoZWFkZXIsIGNvcnM6IGNvcnN9O1xuSHR0cC5pbnRlcmNlcHRvcnMgPSBbJ2JlZm9yZScsICdtZXRob2QnLCAnanNvbnAnLCAnanNvbicsICdmb3JtJywgJ2hlYWRlcicsICdjb3JzJ107XG5cblsnZ2V0JywgJ2RlbGV0ZScsICdoZWFkJywgJ2pzb25wJ10uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kJCQxKSB7XG5cbiAgICBIdHRwW21ldGhvZCQkMV0gPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zJCQxKSB7XG4gICAgICAgIHJldHVybiB0aGlzKGFzc2lnbihvcHRpb25zJCQxIHx8IHt9LCB7dXJsOiB1cmwsIG1ldGhvZDogbWV0aG9kJCQxfSkpO1xuICAgIH07XG5cbn0pO1xuXG5bJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kJCQxKSB7XG5cbiAgICBIdHRwW21ldGhvZCQkMV0gPSBmdW5jdGlvbiAodXJsLCBib2R5LCBvcHRpb25zJCQxKSB7XG4gICAgICAgIHJldHVybiB0aGlzKGFzc2lnbihvcHRpb25zJCQxIHx8IHt9LCB7dXJsOiB1cmwsIG1ldGhvZDogbWV0aG9kJCQxLCBib2R5OiBib2R5fSkpO1xuICAgIH07XG5cbn0pO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVGZ1bCBzZXJ2aWNlcy5cbiAqL1xuXG5mdW5jdGlvbiBSZXNvdXJjZSh1cmwsIHBhcmFtcywgYWN0aW9ucywgb3B0aW9ucyQkMSkge1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzIHx8IHt9LCByZXNvdXJjZSA9IHt9O1xuXG4gICAgYWN0aW9ucyA9IGFzc2lnbih7fSxcbiAgICAgICAgUmVzb3VyY2UuYWN0aW9ucyxcbiAgICAgICAgYWN0aW9uc1xuICAgICk7XG5cbiAgICBlYWNoKGFjdGlvbnMsIGZ1bmN0aW9uIChhY3Rpb24sIG5hbWUpIHtcblxuICAgICAgICBhY3Rpb24gPSBtZXJnZSh7dXJsOiB1cmwsIHBhcmFtczogYXNzaWduKHt9LCBwYXJhbXMpfSwgb3B0aW9ucyQkMSwgYWN0aW9uKTtcblxuICAgICAgICByZXNvdXJjZVtuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoc2VsZi4kaHR0cCB8fCBIdHRwKShvcHRzKGFjdGlvbiwgYXJndW1lbnRzKSk7XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzb3VyY2U7XG59XG5cbmZ1bmN0aW9uIG9wdHMoYWN0aW9uLCBhcmdzKSB7XG5cbiAgICB2YXIgb3B0aW9ucyQkMSA9IGFzc2lnbih7fSwgYWN0aW9uKSwgcGFyYW1zID0ge30sIGJvZHk7XG5cbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG5cbiAgICAgICAgY2FzZSAyOlxuXG4gICAgICAgICAgICBwYXJhbXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgYm9keSA9IGFyZ3NbMV07XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTpcblxuICAgICAgICAgICAgaWYgKC9eKFBPU1R8UFVUfFBBVENIKSQvaS50ZXN0KG9wdGlvbnMkJDEubWV0aG9kKSkge1xuICAgICAgICAgICAgICAgIGJvZHkgPSBhcmdzWzBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDA6XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG5cbiAgICAgICAgICAgIHRocm93ICdFeHBlY3RlZCB1cCB0byAyIGFyZ3VtZW50cyBbcGFyYW1zLCBib2R5XSwgZ290ICcgKyBhcmdzLmxlbmd0aCArICcgYXJndW1lbnRzJztcbiAgICB9XG5cbiAgICBvcHRpb25zJCQxLmJvZHkgPSBib2R5O1xuICAgIG9wdGlvbnMkJDEucGFyYW1zID0gYXNzaWduKHt9LCBvcHRpb25zJCQxLnBhcmFtcywgcGFyYW1zKTtcblxuICAgIHJldHVybiBvcHRpb25zJCQxO1xufVxuXG5SZXNvdXJjZS5hY3Rpb25zID0ge1xuXG4gICAgZ2V0OiB7bWV0aG9kOiAnR0VUJ30sXG4gICAgc2F2ZToge21ldGhvZDogJ1BPU1QnfSxcbiAgICBxdWVyeToge21ldGhvZDogJ0dFVCd9LFxuICAgIHVwZGF0ZToge21ldGhvZDogJ1BVVCd9LFxuICAgIHJlbW92ZToge21ldGhvZDogJ0RFTEVURSd9LFxuICAgIGRlbGV0ZToge21ldGhvZDogJ0RFTEVURSd9XG5cbn07XG5cbi8qKlxuICogSW5zdGFsbCBwbHVnaW4uXG4gKi9cblxuZnVuY3Rpb24gcGx1Z2luKFZ1ZSkge1xuXG4gICAgaWYgKHBsdWdpbi5pbnN0YWxsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIFV0aWwoVnVlKTtcblxuICAgIFZ1ZS51cmwgPSBVcmw7XG4gICAgVnVlLmh0dHAgPSBIdHRwO1xuICAgIFZ1ZS5yZXNvdXJjZSA9IFJlc291cmNlO1xuICAgIFZ1ZS5Qcm9taXNlID0gUHJvbWlzZU9iajtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFZ1ZS5wcm90b3R5cGUsIHtcblxuICAgICAgICAkdXJsOiB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucyhWdWUudXJsLCB0aGlzLCB0aGlzLiRvcHRpb25zLnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgJGh0dHA6IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zKFZ1ZS5odHRwLCB0aGlzLCB0aGlzLiRvcHRpb25zLmh0dHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICRyZXNvdXJjZToge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFZ1ZS5yZXNvdXJjZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICRwcm9taXNlOiB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXhlY3V0b3IpIHsgcmV0dXJuIG5ldyBWdWUuUHJvbWlzZShleGVjdXRvciwgdGhpcyQxKTsgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfSk7XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVnVlKSB7XG4gICAgd2luZG93LlZ1ZS51c2UocGx1Z2luKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGx1Z2luO1xuZXhwb3J0IHsgVXJsLCBIdHRwLCBSZXNvdXJjZSB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1yZXNvdXJjZS9kaXN0L3Z1ZS1yZXNvdXJjZS5lczIwMTUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueStrap\"] = factory();\n\telse\n\t\troot[\"VueStrap\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tvar _Accordion = __webpack_require__(90);\n\t\n\tvar _Accordion2 = _interopRequireDefault(_Accordion);\n\t\n\tvar _Affix = __webpack_require__(94);\n\t\n\tvar _Affix2 = _interopRequireDefault(_Affix);\n\t\n\tvar _Alert = __webpack_require__(97);\n\t\n\tvar _Alert2 = _interopRequireDefault(_Alert);\n\t\n\tvar _Aside = __webpack_require__(104);\n\t\n\tvar _Aside2 = _interopRequireDefault(_Aside);\n\t\n\tvar _buttonGroup = __webpack_require__(109);\n\t\n\tvar _buttonGroup2 = _interopRequireDefault(_buttonGroup);\n\t\n\tvar _Carousel = __webpack_require__(112);\n\t\n\tvar _Carousel2 = _interopRequireDefault(_Carousel);\n\t\n\tvar _Checkbox = __webpack_require__(117);\n\t\n\tvar _Checkbox2 = _interopRequireDefault(_Checkbox);\n\t\n\tvar _Datepicker = __webpack_require__(122);\n\t\n\tvar _Datepicker2 = _interopRequireDefault(_Datepicker);\n\t\n\tvar _Dropdown = __webpack_require__(127);\n\t\n\tvar _Dropdown2 = _interopRequireDefault(_Dropdown);\n\t\n\tvar _FormGroup = __webpack_require__(132);\n\t\n\tvar _FormGroup2 = _interopRequireDefault(_FormGroup);\n\t\n\tvar _Input = __webpack_require__(135);\n\t\n\tvar _Input2 = _interopRequireDefault(_Input);\n\t\n\tvar _Modal = __webpack_require__(140);\n\t\n\tvar _Modal2 = _interopRequireDefault(_Modal);\n\t\n\tvar _Navbar = __webpack_require__(149);\n\t\n\tvar _Navbar2 = _interopRequireDefault(_Navbar);\n\t\n\tvar _Option = __webpack_require__(152);\n\t\n\tvar _Option2 = _interopRequireDefault(_Option);\n\t\n\tvar _Panel = __webpack_require__(155);\n\t\n\tvar _Panel2 = _interopRequireDefault(_Panel);\n\t\n\tvar _Popover = __webpack_require__(160);\n\t\n\tvar _Popover2 = _interopRequireDefault(_Popover);\n\t\n\tvar _Progressbar = __webpack_require__(166);\n\t\n\tvar _Progressbar2 = _interopRequireDefault(_Progressbar);\n\t\n\tvar _Radio = __webpack_require__(169);\n\t\n\tvar _Radio2 = _interopRequireDefault(_Radio);\n\t\n\tvar _Select = __webpack_require__(174);\n\t\n\tvar _Select2 = _interopRequireDefault(_Select);\n\t\n\tvar _Slider = __webpack_require__(194);\n\t\n\tvar _Slider2 = _interopRequireDefault(_Slider);\n\t\n\tvar _Spinner = __webpack_require__(197);\n\t\n\tvar _Spinner2 = _interopRequireDefault(_Spinner);\n\t\n\tvar _Tab = __webpack_require__(202);\n\t\n\tvar _Tab2 = _interopRequireDefault(_Tab);\n\t\n\tvar _TabGroup = __webpack_require__(205);\n\t\n\tvar _TabGroup2 = _interopRequireDefault(_TabGroup);\n\t\n\tvar _Tabset = __webpack_require__(210);\n\t\n\tvar _Tabset2 = _interopRequireDefault(_Tabset);\n\t\n\tvar _Tooltip = __webpack_require__(215);\n\t\n\tvar _Tooltip2 = _interopRequireDefault(_Tooltip);\n\t\n\tvar _Typeahead = __webpack_require__(220);\n\t\n\tvar _Typeahead2 = _interopRequireDefault(_Typeahead);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar VueStrap = {\n\t $: _NodeList2.default,\n\t accordion: _Accordion2.default,\n\t affix: _Affix2.default,\n\t alert: _Alert2.default,\n\t aside: _Aside2.default,\n\t buttonGroup: _buttonGroup2.default,\n\t carousel: _Carousel2.default,\n\t checkbox: _Checkbox2.default,\n\t datepicker: _Datepicker2.default,\n\t dropdown: _Dropdown2.default,\n\t formGroup: _FormGroup2.default,\n\t input: _Input2.default,\n\t modal: _Modal2.default,\n\t navbar: _Navbar2.default,\n\t option: _Option2.default,\n\t panel: _Panel2.default,\n\t popover: _Popover2.default,\n\t progressbar: _Progressbar2.default,\n\t radio: _Radio2.default,\n\t select: _Select2.default,\n\t slider: _Slider2.default,\n\t spinner: _Spinner2.default,\n\t tab: _Tab2.default,\n\t tabGroup: _TabGroup2.default,\n\t tabset: _Tabset2.default,\n\t tooltip: _Tooltip2.default,\n\t typeahead: _Typeahead2.default\n\t};\n\t\n\tmodule.exports = VueStrap;\n\n/***/ },\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _defineProperty = __webpack_require__(28);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tvar _iterator = __webpack_require__(46);\n\t\n\tvar _iterator2 = _interopRequireDefault(_iterator);\n\t\n\tvar _getOwnPropertyNames = __webpack_require__(82);\n\t\n\tvar _getOwnPropertyNames2 = _interopRequireDefault(_getOwnPropertyNames);\n\t\n\tvar _classCallCheck2 = __webpack_require__(88);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(89);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ArrayProto = Array.prototype;\n\tvar nodeError = new Error('Passed arguments must be of Node');\n\tvar blurEvent = void 0;\n\tvar blurList = [];\n\tvar Events = [];\n\t\n\tfunction isNode(val) {\n\t return val instanceof window.Node;\n\t}\n\tfunction isNodeList(val) {\n\t return val instanceof window.NodeList || val instanceof NodeList || val instanceof window.HTMLCollection || val instanceof Array;\n\t}\n\t\n\tfunction splitWords(val) {\n\t val = val.trim();return val.length ? val.replace(/\\s+/, ' ').split(' ') : [];\n\t}\n\tfunction joinWords(val) {\n\t return val.length ? val.join(' ') : '';\n\t}\n\t\n\tvar NodeList = function () {\n\t function NodeList(args) {\n\t (0, _classCallCheck3.default)(this, NodeList);\n\t\n\t var nodes = args;\n\t if (args[0] === window) {\n\t nodes = [window];\n\t } else if (typeof args[0] === 'string') {\n\t nodes = (args[1] || document).querySelectorAll(args[0]);\n\t if (args[1]) {\n\t this.owner = args[1];\n\t }\n\t } else if (0 in args && !isNode(args[0]) && args[0] && 'length' in args[0]) {\n\t nodes = args[0];\n\t if (args[1]) {\n\t this.owner = args[1];\n\t }\n\t }\n\t if (nodes) {\n\t for (var i in nodes) {\n\t this[i] = nodes[i];\n\t }\n\t this.length = nodes.length;\n\t } else {\n\t this.length = 0;\n\t }\n\t }\n\t\n\t (0, _createClass3.default)(NodeList, [{\n\t key: 'concat',\n\t value: function concat() {\n\t var nodes = ArrayProto.slice.call(this);\n\t function flatten(arr) {\n\t ArrayProto.forEach.call(arr, function (el) {\n\t if (isNode(el)) {\n\t if (!~nodes.indexOf(el)) nodes.push(el);\n\t } else if (isNodeList(el)) {\n\t flatten(el);\n\t }\n\t });\n\t }\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t ArrayProto.forEach.call(args, function (arg) {\n\t if (isNode(arg)) {\n\t if (!~nodes.indexOf(arg)) nodes.push(arg);\n\t } else if (isNodeList(arg)) {\n\t flatten(arg);\n\t } else {\n\t throw Error('Concat arguments must be of a Node, NodeList, HTMLCollection, or Array of (Node, NodeList, HTMLCollection, Array)');\n\t }\n\t });\n\t return NodeListJS(nodes, this);\n\t }\n\t }, {\n\t key: 'delete',\n\t value: function _delete() {\n\t var notRemoved = flatten(this).filter(function (el) {\n\t if (el.remove) {\n\t el.remove();\n\t } else if (el.parentNode) {\n\t el.parentNode.removeChild(el);\n\t }\n\t return document.body.contains(el);\n\t });\n\t if (notRemoved.length) console.warn('NodeList: Some nodes could not be deleted.');\n\t return notRemoved;\n\t }\n\t }, {\n\t key: 'each',\n\t value: function each() {\n\t for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t args[_key2] = arguments[_key2];\n\t }\n\t\n\t ArrayProto.forEach.apply(this, args);\n\t return this;\n\t }\n\t }, {\n\t key: 'filter',\n\t value: function filter() {\n\t for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n\t args[_key3] = arguments[_key3];\n\t }\n\t\n\t return NodeListJS(ArrayProto.filter.apply(this, args), this);\n\t }\n\t }, {\n\t key: 'find',\n\t value: function find(element) {\n\t var nodes = [];\n\t flatten(this).forEach(function (node) {\n\t ArrayProto.push.apply(nodes, node.querySelectorAll(element));\n\t });\n\t return flatten(nodes, this.owner);\n\t }\n\t }, {\n\t key: 'findChildren',\n\t value: function findChildren(element) {\n\t var _this = this;\n\t\n\t if (element) return this.find(element).filter(function (el) {\n\t return _this.includes(el.parentElement);\n\t });\n\t return flatten(this.map(function (el) {\n\t return el.children;\n\t }));\n\t }\n\t }, {\n\t key: 'forEach',\n\t value: function forEach() {\n\t for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n\t args[_key4] = arguments[_key4];\n\t }\n\t\n\t ArrayProto.forEach.apply(this, args);\n\t return this;\n\t }\n\t }, {\n\t key: 'includes',\n\t value: function includes(element, index) {\n\t return ~this.indexOf(element, index);\n\t }\n\t }, {\n\t key: 'map',\n\t value: function map() {\n\t for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n\t args[_key5] = arguments[_key5];\n\t }\n\t\n\t var mapped = ArrayProto.map.apply(this, args);\n\t return mapped.some(function (el) {\n\t return isNode(el) || isNodeList(el);\n\t }) ? flatten(mapped, this) : mapped;\n\t }\n\t }, {\n\t key: 'parent',\n\t value: function parent() {\n\t return flatten(this.map(function (el) {\n\t return el.parentNode;\n\t }), this);\n\t }\n\t }, {\n\t key: 'pop',\n\t value: function pop(amount) {\n\t if (typeof amount !== 'number') {\n\t amount = 1;\n\t }\n\t var nodes = [];\n\t var pop = ArrayProto.pop.bind(this);\n\t while (amount--) {\n\t nodes.push(pop());\n\t }return NodeListJS(nodes, this);\n\t }\n\t }, {\n\t key: 'push',\n\t value: function push() {\n\t var _this2 = this;\n\t\n\t for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n\t args[_key6] = arguments[_key6];\n\t }\n\t\n\t ArrayProto.forEach.call(args, function (arg) {\n\t if (!isNode(arg)) throw nodeError;\n\t if (!~_this2.indexOf(arg)) ArrayProto.push.call(_this2, arg);\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'shift',\n\t value: function shift(amount) {\n\t if (typeof amount !== 'number') {\n\t amount = 1;\n\t }\n\t var nodes = [];\n\t while (amount--) {\n\t nodes.push(ArrayProto.shift.call(this));\n\t }return nodes.length == 1 ? nodes[0] : NodeListJS(nodes, this);\n\t }\n\t }, {\n\t key: 'slice',\n\t value: function slice() {\n\t for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n\t args[_key7] = arguments[_key7];\n\t }\n\t\n\t return NodeListJS(ArrayProto.slice.apply(this, args), this);\n\t }\n\t }, {\n\t key: 'splice',\n\t value: function splice() {\n\t for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n\t args[_key8] = arguments[_key8];\n\t }\n\t\n\t for (var i = 2, l = args.length; i < l; i++) {\n\t if (!isNode(args[i])) throw nodeError;\n\t }\n\t ArrayProto.splice.apply(this, args);\n\t return this;\n\t }\n\t }, {\n\t key: 'unshift',\n\t value: function unshift() {\n\t var _this3 = this;\n\t\n\t var unshift = ArrayProto.unshift.bind(this);\n\t\n\t for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n\t args[_key9] = arguments[_key9];\n\t }\n\t\n\t ArrayProto.forEach.call(args, function (arg) {\n\t if (!isNode(arg)) throw nodeError;\n\t if (!~_this3.indexOf(arg)) unshift(arg);\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'addClass',\n\t value: function addClass(classes) {\n\t return this.toggleClass(classes, true);\n\t }\n\t }, {\n\t key: 'removeClass',\n\t value: function removeClass(classes) {\n\t return this.toggleClass(classes, false);\n\t }\n\t }, {\n\t key: 'toggleClass',\n\t value: function toggleClass(classes, value) {\n\t var method = value === undefined || value === null ? 'toggle' : value ? 'add' : 'remove';\n\t if (typeof classes === 'string') {\n\t classes = splitWords(classes);\n\t }\n\t this.each(function (el) {\n\t var list = splitWords(el.className);\n\t classes.forEach(function (c) {\n\t var hasClass = ~list.indexOf(c);\n\t if (!hasClass && method !== 'remove') list.push(c);\n\t if (hasClass && method !== 'add') {\n\t list = list.filter(function (el) {\n\t return el !== c;\n\t });\n\t }\n\t });\n\t list = joinWords(list);\n\t if (!list) el.removeAttribute('class');else el.className = list;\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'get',\n\t value: function get(prop) {\n\t var arr = [];\n\t this.each(function (el) {\n\t if (el !== null) {\n\t el = el[prop];\n\t }\n\t arr.push(el);\n\t });\n\t return flatten(arr, this);\n\t }\n\t }, {\n\t key: 'set',\n\t value: function set(prop, value) {\n\t if (prop.constructor === Object) {\n\t this.each(function (el) {\n\t if (el) {\n\t for (var key in prop) {\n\t if (key in el) {\n\t el[key] = prop[key];\n\t }\n\t }\n\t }\n\t });\n\t } else {\n\t this.each(function (el) {\n\t if (prop in el) {\n\t el[prop] = value;\n\t }\n\t });\n\t }\n\t return this;\n\t }\n\t }, {\n\t key: 'call',\n\t value: function call() {\n\t for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n\t args[_key10] = arguments[_key10];\n\t }\n\t\n\t var method = ArrayProto.shift.call(args);\n\t var arr = [];\n\t var returnThis = true;\n\t this.each(function (el) {\n\t if (el && el[method] instanceof Function) {\n\t el = el[method].apply(el, args);\n\t arr.push(el);\n\t if (returnThis && el !== undefined) {\n\t returnThis = false;\n\t }\n\t } else {\n\t arr.push(undefined);\n\t }\n\t });\n\t return returnThis ? this : flatten(arr, this);\n\t }\n\t }, {\n\t key: 'item',\n\t value: function item(index) {\n\t return NodeListJS([this[index]], this);\n\t }\n\t }, {\n\t key: 'on',\n\t\n\t\n\t // event handlers\n\t value: function on(events, selector, callback) {\n\t if (typeof events === 'string') {\n\t events = splitWords(events);\n\t }\n\t if (!this || !this.length) return this;\n\t if (callback === undefined) {\n\t callback = selector;\n\t selector = null;\n\t }\n\t if (!callback) return this;\n\t var fn = callback;\n\t callback = selector ? function (e) {\n\t var els = NodeListJS(selector, this);\n\t if (!els.length) {\n\t return;\n\t }\n\t els.some(function (el) {\n\t var target = el.contains(e.target);\n\t if (target) fn.call(el, e, el);\n\t return target;\n\t });\n\t } : function (e) {\n\t fn.apply(this, [e, this]);\n\t };\n\t this.each(function (el) {\n\t events.forEach(function (event) {\n\t if (el === window || isNode(el)) {\n\t el.addEventListener(event, callback, false);\n\t Events.push({\n\t el: el,\n\t event: event,\n\t callback: callback\n\t });\n\t }\n\t });\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'off',\n\t value: function off(events, callback) {\n\t if (events instanceof Function) {\n\t callback = events;\n\t events = null;\n\t }\n\t events = events instanceof Array ? events : typeof events === 'string' ? splitWords(events) : null;\n\t this.each(function (el) {\n\t Events = Events.filter(function (e) {\n\t if (e && e.el === el && (!callback || callback === e.callback) && (!events || ~events.indexOf(e.event))) {\n\t e.el.removeEventListener(e.event, e.callback);\n\t return false;\n\t }\n\t return true;\n\t });\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'onBlur',\n\t value: function onBlur(callback) {\n\t if (!this || !this.length) return this;\n\t if (!callback) return this;\n\t this.each(function (el) {\n\t blurList.push({ el: el, callback: callback });\n\t });\n\t if (!blurEvent) {\n\t blurEvent = function blurEvent(e) {\n\t blurList.forEach(function (item) {\n\t var target = item.el.contains(e.target) || item.el === e.target;\n\t if (!target) item.callback.call(item.el, e, item.el);\n\t });\n\t };\n\t document.addEventListener('click', blurEvent, false);\n\t document.addEventListener('touchstart', blurEvent, false);\n\t }\n\t return this;\n\t }\n\t }, {\n\t key: 'offBlur',\n\t value: function offBlur(callback) {\n\t this.each(function (el) {\n\t blurList = blurList.filter(function (blur) {\n\t if (blur && blur.el === el && (!callback || blur.callback === callback)) {\n\t return false;\n\t }\n\t return el;\n\t });\n\t });\n\t return this;\n\t }\n\t }, {\n\t key: 'asArray',\n\t get: function get() {\n\t return ArrayProto.slice.call(this);\n\t }\n\t }]);\n\t return NodeList;\n\t}();\n\t\n\tvar NL = NodeList.prototype;\n\t\n\tfunction flatten(arr, owner) {\n\t var list = [];\n\t ArrayProto.forEach.call(arr, function (el) {\n\t if (isNode(el)) {\n\t if (!~list.indexOf(el)) list.push(el);\n\t } else if (isNodeList(el)) {\n\t for (var id in el) {\n\t list.push(el[id]);\n\t }\n\t } else if (el !== null) {\n\t arr.get = NL.get;\n\t arr.set = NL.set;\n\t arr.call = NL.call;\n\t arr.owner = owner;\n\t return arr;\n\t }\n\t });\n\t return NodeListJS(list, owner);\n\t}\n\t\n\t(0, _getOwnPropertyNames2.default)(ArrayProto).forEach(function (key) {\n\t if (key !== 'join' && key !== 'copyWithin' && key !== 'fill' && NL[key] === undefined) {\n\t NL[key] = ArrayProto[key];\n\t }\n\t});\n\tif (window.Symbol && _iterator2.default) {\n\t NL[_iterator2.default] = NL.values = ArrayProto[_iterator2.default];\n\t}\n\tvar div = document.createElement('div');\n\tfunction setterGetter(prop) {\n\t var _this4 = this;\n\t\n\t if (NL[prop]) return;\n\t if (div[prop] instanceof Function) {\n\t NL[prop] = function () {\n\t for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n\t args[_key11] = arguments[_key11];\n\t }\n\t\n\t var arr = [];\n\t var returnThis = true;\n\t for (var i in NL) {\n\t var el = NL[i];\n\t if (el && el[prop] instanceof Function) {\n\t el = el[prop].apply(el, args);\n\t arr.push(el);\n\t if (returnThis && el !== undefined) {\n\t returnThis = false;\n\t }\n\t } else {\n\t arr.push(undefined);\n\t }\n\t }\n\t return returnThis ? _this4 : flatten(arr, _this4);\n\t };\n\t } else {\n\t (0, _defineProperty2.default)(NL, prop, {\n\t get: function get() {\n\t var arr = [];\n\t this.each(function (el) {\n\t if (el !== null) {\n\t el = el[prop];\n\t }\n\t arr.push(el);\n\t });\n\t return flatten(arr, this);\n\t },\n\t set: function set(value) {\n\t this.each(function (el) {\n\t if (el && prop in el) {\n\t el[prop] = value;\n\t }\n\t });\n\t }\n\t });\n\t }\n\t}\n\tfor (var prop in div) {\n\t setterGetter(prop);\n\t}function NodeListJS() {\n\t for (var _len12 = arguments.length, args = Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n\t args[_key12] = arguments[_key12];\n\t }\n\t\n\t return new NodeList(args);\n\t}\n\twindow.NL = NodeListJS;\n\t\n\texports.default = NodeListJS;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(29), __esModule: true };\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(30);\n\tvar $Object = __webpack_require__(33).Object;\n\tmodule.exports = function defineProperty(it, key, desc){\n\t return $Object.defineProperty(it, key, desc);\n\t};\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(31);\n\t// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n\t$export($export.S + $export.F * !__webpack_require__(41), 'Object', {defineProperty: __webpack_require__(37).f});\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(32)\n\t , core = __webpack_require__(33)\n\t , ctx = __webpack_require__(34)\n\t , hide = __webpack_require__(36)\n\t , PROTOTYPE = 'prototype';\n\t\n\tvar $export = function(type, name, source){\n\t var IS_FORCED = type & $export.F\n\t , IS_GLOBAL = type & $export.G\n\t , IS_STATIC = type & $export.S\n\t , IS_PROTO = type & $export.P\n\t , IS_BIND = type & $export.B\n\t , IS_WRAP = type & $export.W\n\t , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n\t , expProto = exports[PROTOTYPE]\n\t , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n\t , key, own, out;\n\t if(IS_GLOBAL)source = name;\n\t for(key in source){\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t if(own && key in exports)continue;\n\t // export native or passed\n\t out = own ? target[key] : source[key];\n\t // prevent global pollution for namespaces\n\t exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n\t // bind timers to global for call from export context\n\t : IS_BIND && own ? ctx(out, global)\n\t // wrap global constructors for prevent change them in library\n\t : IS_WRAP && target[key] == out ? (function(C){\n\t var F = function(a, b, c){\n\t if(this instanceof C){\n\t switch(arguments.length){\n\t case 0: return new C;\n\t case 1: return new C(a);\n\t case 2: return new C(a, b);\n\t } return new C(a, b, c);\n\t } return C.apply(this, arguments);\n\t };\n\t F[PROTOTYPE] = C[PROTOTYPE];\n\t return F;\n\t // make static versions for prototype methods\n\t })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n\t // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n\t if(IS_PROTO){\n\t (exports.virtual || (exports.virtual = {}))[key] = out;\n\t // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n\t if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n\t }\n\t }\n\t};\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library` \n\tmodule.exports = $export;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\tif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n/***/ },\n/* 33 */\n/***/ function(module, exports) {\n\n\tvar core = module.exports = {version: '2.4.0'};\n\tif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// optional / simple context binding\n\tvar aFunction = __webpack_require__(35);\n\tmodule.exports = function(fn, that, length){\n\t aFunction(fn);\n\t if(that === undefined)return fn;\n\t switch(length){\n\t case 1: return function(a){\n\t return fn.call(that, a);\n\t };\n\t case 2: return function(a, b){\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function(a, b, c){\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function(/* ...args */){\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n/***/ },\n/* 35 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n\t return it;\n\t};\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(37)\n\t , createDesc = __webpack_require__(45);\n\tmodule.exports = __webpack_require__(41) ? function(object, key, value){\n\t return dP.f(object, key, createDesc(1, value));\n\t} : function(object, key, value){\n\t object[key] = value;\n\t return object;\n\t};\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar anObject = __webpack_require__(38)\n\t , IE8_DOM_DEFINE = __webpack_require__(40)\n\t , toPrimitive = __webpack_require__(44)\n\t , dP = Object.defineProperty;\n\t\n\texports.f = __webpack_require__(41) ? Object.defineProperty : function defineProperty(O, P, Attributes){\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if(IE8_DOM_DEFINE)try {\n\t return dP(O, P, Attributes);\n\t } catch(e){ /* empty */ }\n\t if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n\t if('value' in Attributes)O[P] = Attributes.value;\n\t return O;\n\t};\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(39);\n\tmodule.exports = function(it){\n\t if(!isObject(it))throw TypeError(it + ' is not an object!');\n\t return it;\n\t};\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = !__webpack_require__(41) && !__webpack_require__(42)(function(){\n\t return Object.defineProperty(__webpack_require__(43)('div'), 'a', {get: function(){ return 7; }}).a != 7;\n\t});\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Thank's IE8 for his funny defineProperty\n\tmodule.exports = !__webpack_require__(42)(function(){\n\t return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n\t});\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(exec){\n\t try {\n\t return !!exec();\n\t } catch(e){\n\t return true;\n\t }\n\t};\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(39)\n\t , document = __webpack_require__(32).document\n\t // in old IE typeof document.createElement is 'object'\n\t , is = isObject(document) && isObject(document.createElement);\n\tmodule.exports = function(it){\n\t return is ? document.createElement(it) : {};\n\t};\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\tvar isObject = __webpack_require__(39);\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tmodule.exports = function(it, S){\n\t if(!isObject(it))return it;\n\t var fn, val;\n\t if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n\t if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n/***/ },\n/* 45 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(bitmap, value){\n\t return {\n\t enumerable : !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable : !(bitmap & 4),\n\t value : value\n\t };\n\t};\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(47), __esModule: true };\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(48);\n\t__webpack_require__(77);\n\tmodule.exports = __webpack_require__(81).f('iterator');\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $at = __webpack_require__(49)(true);\n\t\n\t// 21.1.3.27 String.prototype[@@iterator]()\n\t__webpack_require__(52)(String, 'String', function(iterated){\n\t this._t = String(iterated); // target\n\t this._i = 0; // next index\n\t// 21.1.5.2.1 %StringIteratorPrototype%.next()\n\t}, function(){\n\t var O = this._t\n\t , index = this._i\n\t , point;\n\t if(index >= O.length)return {value: undefined, done: true};\n\t point = $at(O, index);\n\t this._i += point.length;\n\t return {value: point, done: false};\n\t});\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(50)\n\t , defined = __webpack_require__(51);\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tmodule.exports = function(TO_STRING){\n\t return function(that, pos){\n\t var s = String(defined(that))\n\t , i = toInteger(pos)\n\t , l = s.length\n\t , a, b;\n\t if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil\n\t , floor = Math.floor;\n\tmodule.exports = function(it){\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n/***/ },\n/* 51 */\n/***/ function(module, exports) {\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tmodule.exports = function(it){\n\t if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar LIBRARY = __webpack_require__(53)\n\t , $export = __webpack_require__(31)\n\t , redefine = __webpack_require__(54)\n\t , hide = __webpack_require__(36)\n\t , has = __webpack_require__(55)\n\t , Iterators = __webpack_require__(56)\n\t , $iterCreate = __webpack_require__(57)\n\t , setToStringTag = __webpack_require__(73)\n\t , getPrototypeOf = __webpack_require__(75)\n\t , ITERATOR = __webpack_require__(74)('iterator')\n\t , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n\t , FF_ITERATOR = '@@iterator'\n\t , KEYS = 'keys'\n\t , VALUES = 'values';\n\t\n\tvar returnThis = function(){ return this; };\n\t\n\tmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n\t $iterCreate(Constructor, NAME, next);\n\t var getMethod = function(kind){\n\t if(!BUGGY && kind in proto)return proto[kind];\n\t switch(kind){\n\t case KEYS: return function keys(){ return new Constructor(this, kind); };\n\t case VALUES: return function values(){ return new Constructor(this, kind); };\n\t } return function entries(){ return new Constructor(this, kind); };\n\t };\n\t var TAG = NAME + ' Iterator'\n\t , DEF_VALUES = DEFAULT == VALUES\n\t , VALUES_BUG = false\n\t , proto = Base.prototype\n\t , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n\t , $default = $native || getMethod(DEFAULT)\n\t , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n\t , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n\t , methods, key, IteratorPrototype;\n\t // Fix native\n\t if($anyNative){\n\t IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n\t if(IteratorPrototype !== Object.prototype){\n\t // Set @@toStringTag to native iterators\n\t setToStringTag(IteratorPrototype, TAG, true);\n\t // fix for some old engines\n\t if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n\t }\n\t }\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if(DEF_VALUES && $native && $native.name !== VALUES){\n\t VALUES_BUG = true;\n\t $default = function values(){ return $native.call(this); };\n\t }\n\t // Define iterator\n\t if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n\t hide(proto, ITERATOR, $default);\n\t }\n\t // Plug for library\n\t Iterators[NAME] = $default;\n\t Iterators[TAG] = returnThis;\n\t if(DEFAULT){\n\t methods = {\n\t values: DEF_VALUES ? $default : getMethod(VALUES),\n\t keys: IS_SET ? $default : getMethod(KEYS),\n\t entries: $entries\n\t };\n\t if(FORCED)for(key in methods){\n\t if(!(key in proto))redefine(proto, key, methods[key]);\n\t } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n\t }\n\t return methods;\n\t};\n\n/***/ },\n/* 53 */\n/***/ function(module, exports) {\n\n\tmodule.exports = true;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(36);\n\n/***/ },\n/* 55 */\n/***/ function(module, exports) {\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tmodule.exports = function(it, key){\n\t return hasOwnProperty.call(it, key);\n\t};\n\n/***/ },\n/* 56 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {};\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar create = __webpack_require__(58)\n\t , descriptor = __webpack_require__(45)\n\t , setToStringTag = __webpack_require__(73)\n\t , IteratorPrototype = {};\n\t\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\t__webpack_require__(36)(IteratorPrototype, __webpack_require__(74)('iterator'), function(){ return this; });\n\t\n\tmodule.exports = function(Constructor, NAME, next){\n\t Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n\t setToStringTag(Constructor, NAME + ' Iterator');\n\t};\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n\tvar anObject = __webpack_require__(38)\n\t , dPs = __webpack_require__(59)\n\t , enumBugKeys = __webpack_require__(71)\n\t , IE_PROTO = __webpack_require__(68)('IE_PROTO')\n\t , Empty = function(){ /* empty */ }\n\t , PROTOTYPE = 'prototype';\n\t\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar createDict = function(){\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = __webpack_require__(43)('iframe')\n\t , i = enumBugKeys.length\n\t , lt = '<'\n\t , gt = '>'\n\t , iframeDocument;\n\t iframe.style.display = 'none';\n\t __webpack_require__(72).appendChild(iframe);\n\t iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n\t // createDict = iframe.contentWindow.Object;\n\t // html.removeChild(iframe);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n\t iframeDocument.close();\n\t createDict = iframeDocument.F;\n\t while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n\t return createDict();\n\t};\n\t\n\tmodule.exports = Object.create || function create(O, Properties){\n\t var result;\n\t if(O !== null){\n\t Empty[PROTOTYPE] = anObject(O);\n\t result = new Empty;\n\t Empty[PROTOTYPE] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO] = O;\n\t } else result = createDict();\n\t return Properties === undefined ? result : dPs(result, Properties);\n\t};\n\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(37)\n\t , anObject = __webpack_require__(38)\n\t , getKeys = __webpack_require__(60);\n\t\n\tmodule.exports = __webpack_require__(41) ? Object.defineProperties : function defineProperties(O, Properties){\n\t anObject(O);\n\t var keys = getKeys(Properties)\n\t , length = keys.length\n\t , i = 0\n\t , P;\n\t while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n\t return O;\n\t};\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\tvar $keys = __webpack_require__(61)\n\t , enumBugKeys = __webpack_require__(71);\n\t\n\tmodule.exports = Object.keys || function keys(O){\n\t return $keys(O, enumBugKeys);\n\t};\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar has = __webpack_require__(55)\n\t , toIObject = __webpack_require__(62)\n\t , arrayIndexOf = __webpack_require__(65)(false)\n\t , IE_PROTO = __webpack_require__(68)('IE_PROTO');\n\t\n\tmodule.exports = function(object, names){\n\t var O = toIObject(object)\n\t , i = 0\n\t , result = []\n\t , key;\n\t for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while(names.length > i)if(has(O, key = names[i++])){\n\t ~arrayIndexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// to indexed object, toObject with fallback for non-array-like ES3 strings\n\tvar IObject = __webpack_require__(63)\n\t , defined = __webpack_require__(51);\n\tmodule.exports = function(it){\n\t return IObject(defined(it));\n\t};\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar cof = __webpack_require__(64);\n\tmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n\t return cof(it) == 'String' ? it.split('') : Object(it);\n\t};\n\n/***/ },\n/* 64 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = function(it){\n\t return toString.call(it).slice(8, -1);\n\t};\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// false -> Array#indexOf\n\t// true -> Array#includes\n\tvar toIObject = __webpack_require__(62)\n\t , toLength = __webpack_require__(66)\n\t , toIndex = __webpack_require__(67);\n\tmodule.exports = function(IS_INCLUDES){\n\t return function($this, el, fromIndex){\n\t var O = toIObject($this)\n\t , length = toLength(O.length)\n\t , index = toIndex(fromIndex, length)\n\t , value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t if(IS_INCLUDES && el != el)while(length > index){\n\t value = O[index++];\n\t if(value != value)return true;\n\t // Array#toIndex ignores holes, Array#includes - not\n\t } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n\t if(O[index] === el)return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.15 ToLength\n\tvar toInteger = __webpack_require__(50)\n\t , min = Math.min;\n\tmodule.exports = function(it){\n\t return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n\t};\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(50)\n\t , max = Math.max\n\t , min = Math.min;\n\tmodule.exports = function(index, length){\n\t index = toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar shared = __webpack_require__(69)('keys')\n\t , uid = __webpack_require__(70);\n\tmodule.exports = function(key){\n\t return shared[key] || (shared[key] = uid(key));\n\t};\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(32)\n\t , SHARED = '__core-js_shared__'\n\t , store = global[SHARED] || (global[SHARED] = {});\n\tmodule.exports = function(key){\n\t return store[key] || (store[key] = {});\n\t};\n\n/***/ },\n/* 70 */\n/***/ function(module, exports) {\n\n\tvar id = 0\n\t , px = Math.random();\n\tmodule.exports = function(key){\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\t// IE 8- don't enum bug keys\n\tmodule.exports = (\n\t 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n\t).split(',');\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(32).document && document.documentElement;\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar def = __webpack_require__(37).f\n\t , has = __webpack_require__(55)\n\t , TAG = __webpack_require__(74)('toStringTag');\n\t\n\tmodule.exports = function(it, tag, stat){\n\t if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n\t};\n\n/***/ },\n/* 74 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar store = __webpack_require__(69)('wks')\n\t , uid = __webpack_require__(70)\n\t , Symbol = __webpack_require__(32).Symbol\n\t , USE_SYMBOL = typeof Symbol == 'function';\n\t\n\tvar $exports = module.exports = function(name){\n\t return store[name] || (store[name] =\n\t USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n\t};\n\t\n\t$exports.store = store;\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\n\tvar has = __webpack_require__(55)\n\t , toObject = __webpack_require__(76)\n\t , IE_PROTO = __webpack_require__(68)('IE_PROTO')\n\t , ObjectProto = Object.prototype;\n\t\n\tmodule.exports = Object.getPrototypeOf || function(O){\n\t O = toObject(O);\n\t if(has(O, IE_PROTO))return O[IE_PROTO];\n\t if(typeof O.constructor == 'function' && O instanceof O.constructor){\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectProto : null;\n\t};\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(51);\n\tmodule.exports = function(it){\n\t return Object(defined(it));\n\t};\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(78);\n\tvar global = __webpack_require__(32)\n\t , hide = __webpack_require__(36)\n\t , Iterators = __webpack_require__(56)\n\t , TO_STRING_TAG = __webpack_require__(74)('toStringTag');\n\t\n\tfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n\t var NAME = collections[i]\n\t , Collection = global[NAME]\n\t , proto = Collection && Collection.prototype;\n\t if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n\t Iterators[NAME] = Iterators.Array;\n\t}\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar addToUnscopables = __webpack_require__(79)\n\t , step = __webpack_require__(80)\n\t , Iterators = __webpack_require__(56)\n\t , toIObject = __webpack_require__(62);\n\t\n\t// 22.1.3.4 Array.prototype.entries()\n\t// 22.1.3.13 Array.prototype.keys()\n\t// 22.1.3.29 Array.prototype.values()\n\t// 22.1.3.30 Array.prototype[@@iterator]()\n\tmodule.exports = __webpack_require__(52)(Array, 'Array', function(iterated, kind){\n\t this._t = toIObject(iterated); // target\n\t this._i = 0; // next index\n\t this._k = kind; // kind\n\t// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n\t}, function(){\n\t var O = this._t\n\t , kind = this._k\n\t , index = this._i++;\n\t if(!O || index >= O.length){\n\t this._t = undefined;\n\t return step(1);\n\t }\n\t if(kind == 'keys' )return step(0, index);\n\t if(kind == 'values')return step(0, O[index]);\n\t return step(0, [index, O[index]]);\n\t}, 'values');\n\t\n\t// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\n\tIterators.Arguments = Iterators.Array;\n\t\n\taddToUnscopables('keys');\n\taddToUnscopables('values');\n\taddToUnscopables('entries');\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(){ /* empty */ };\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(done, value){\n\t return {value: value, done: !!done};\n\t};\n\n/***/ },\n/* 81 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports.f = __webpack_require__(74);\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(83), __esModule: true };\n\n/***/ },\n/* 83 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(84);\n\tvar $Object = __webpack_require__(33).Object;\n\tmodule.exports = function getOwnPropertyNames(it){\n\t return $Object.getOwnPropertyNames(it);\n\t};\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.7 Object.getOwnPropertyNames(O)\n\t__webpack_require__(85)('getOwnPropertyNames', function(){\n\t return __webpack_require__(86).f;\n\t});\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// most Object methods by ES6 should accept primitives\n\tvar $export = __webpack_require__(31)\n\t , core = __webpack_require__(33)\n\t , fails = __webpack_require__(42);\n\tmodule.exports = function(KEY, exec){\n\t var fn = (core.Object || {})[KEY] || Object[KEY]\n\t , exp = {};\n\t exp[KEY] = exec(fn);\n\t $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n\t};\n\n/***/ },\n/* 86 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar toIObject = __webpack_require__(62)\n\t , gOPN = __webpack_require__(87).f\n\t , toString = {}.toString;\n\t\n\tvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t ? Object.getOwnPropertyNames(window) : [];\n\t\n\tvar getWindowNames = function(it){\n\t try {\n\t return gOPN(it);\n\t } catch(e){\n\t return windowNames.slice();\n\t }\n\t};\n\t\n\tmodule.exports.f = function getOwnPropertyNames(it){\n\t return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n\t};\n\n\n/***/ },\n/* 87 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\n\tvar $keys = __webpack_require__(61)\n\t , hiddenKeys = __webpack_require__(71).concat('length', 'prototype');\n\t\n\texports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n\t return $keys(O, hiddenKeys);\n\t};\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\texports.default = function (instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t};\n\n/***/ },\n/* 89 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _defineProperty = __webpack_require__(28);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t function defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n\t }\n\t }\n\t\n\t return function (Constructor, protoProps, staticProps) {\n\t if (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t };\n\t}();\n\n/***/ },\n/* 90 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(91)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(93)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Accordion.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Accordion.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Accordion.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Accordion.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Accordion.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 91 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t type: {\n\t type: String,\n\t default: null\n\t },\n\t oneAtAtime: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t },\n\t created: function created() {\n\t var _this = this;\n\t\n\t this._isAccordion = true;\n\t this.$on('isOpenEvent', function (child) {\n\t if (_this.oneAtAtime) {\n\t _this.$children.forEach(function (item) {\n\t if (child !== item) {\n\t item.isOpen = false;\n\t }\n\t });\n\t }\n\t });\n\t }\n\t};\n\t// </script>\n\t// <template>\n\t\n\t// <div class=\"panel-group\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getJSON = getJSON;\n\texports.getScrollBarWidth = getScrollBarWidth;\n\texports.translations = translations;\n\texports.delayer = delayer;\n\texports.VueFixer = VueFixer;\n\t// coerce convert som types of data into another type\n\tvar coerce = exports.coerce = {\n\t // Convert a string to booleam. Otherwise, return the value without modification, so if is not boolean, Vue throw a warning.\n\t boolean: function boolean(val) {\n\t return typeof val === 'string' ? val === '' || val === 'true' ? true : val === 'false' || val === 'null' || val === 'undefined' ? false : val : val;\n\t },\n\t // Attempt to convert a string value to a Number. Otherwise, return 0.\n\t number: function number(val) {\n\t var alt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t return typeof val === 'number' ? val : val === undefined || val === null || isNaN(Number(val)) ? alt : Number(val);\n\t },\n\t // Attempt to convert to string any value, except for null or undefined.\n\t string: function string(val) {\n\t return val === undefined || val === null ? '' : val + '';\n\t },\n\t // Pattern accept RegExp, function, or string (converted to RegExp). Otherwise return null.\n\t pattern: function pattern(val) {\n\t return val instanceof Function || val instanceof RegExp ? val : typeof val === 'string' ? new RegExp(val) : null;\n\t }\n\t};\n\t\n\tfunction getJSON(url) {\n\t var request = new window.XMLHttpRequest();\n\t var data = {};\n\t // p (-simulated- promise)\n\t var p = {\n\t then: function then(fn1, fn2) {\n\t return p.done(fn1).fail(fn2);\n\t },\n\t catch: function _catch(fn) {\n\t return p.fail(fn);\n\t },\n\t always: function always(fn) {\n\t return p.done(fn).fail(fn);\n\t }\n\t };\n\t ['done', 'fail'].forEach(function (name) {\n\t data[name] = [];\n\t p[name] = function (fn) {\n\t if (fn instanceof Function) data[name].push(fn);\n\t return p;\n\t };\n\t });\n\t p.done(JSON.parse);\n\t request.onreadystatechange = function () {\n\t if (request.readyState === 4) {\n\t var response;\n\t var i;\n\t var value;\n\t\n\t (function () {\n\t var e = { status: request.status };\n\t if (request.status === 200) {\n\t try {\n\t response = request.responseText;\n\t\n\t for (i in data.done) {\n\t value = data.done[i](response);\n\t\n\t if (value !== undefined) {\n\t response = value;\n\t }\n\t }\n\t } catch (err) {\n\t data.fail.forEach(function (fail) {\n\t return fail(err);\n\t });\n\t }\n\t } else {\n\t data.fail.forEach(function (fail) {\n\t return fail(e);\n\t });\n\t }\n\t })();\n\t }\n\t };\n\t request.open('GET', url);\n\t request.setRequestHeader('Accept', 'application/json');\n\t request.send();\n\t return p;\n\t}\n\t\n\tfunction getScrollBarWidth() {\n\t if (document.documentElement.scrollHeight <= document.documentElement.clientHeight) {\n\t return 0;\n\t }\n\t var inner = document.createElement('p');\n\t inner.style.width = '100%';\n\t inner.style.height = '200px';\n\t\n\t var outer = document.createElement('div');\n\t outer.style.position = 'absolute';\n\t outer.style.top = '0px';\n\t outer.style.left = '0px';\n\t outer.style.visibility = 'hidden';\n\t outer.style.width = '200px';\n\t outer.style.height = '150px';\n\t outer.style.overflow = 'hidden';\n\t outer.appendChild(inner);\n\t\n\t document.body.appendChild(outer);\n\t var w1 = inner.offsetWidth;\n\t outer.style.overflow = 'scroll';\n\t var w2 = inner.offsetWidth;\n\t if (w1 === w2) w2 = outer.clientWidth;\n\t\n\t document.body.removeChild(outer);\n\t\n\t return w1 - w2;\n\t}\n\t\n\t// return all the translations or the default language (english)\n\tfunction translations() {\n\t var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';\n\t\n\t var text = {\n\t daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n\t limit: 'Limit reached ({{limit}} items max).',\n\t loading: 'Loading...',\n\t minLength: 'Min. Length',\n\t months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n\t notSelected: 'Nothing Selected',\n\t required: 'Required',\n\t search: 'Search'\n\t };\n\t return window.VueStrapLang ? window.VueStrapLang(lang) : text;\n\t}\n\t\n\t// delayer: set a function that execute after a delay\n\t// @params (function, delay_prop or value, default_value)\n\tfunction delayer(fn, varTimer) {\n\t var ifNaN = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n\t\n\t function toInt(el) {\n\t return (/^[0-9]+$/.test(el) ? Number(el) || 1 : null\n\t );\n\t }\n\t var timerId;\n\t return function () {\n\t var _this = this;\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t if (timerId) clearTimeout(timerId);\n\t timerId = setTimeout(function () {\n\t fn.apply(_this, args);\n\t }, toInt(varTimer) || toInt(this[varTimer]) || ifNaN);\n\t };\n\t}\n\t\n\t// Fix a vue instance Lifecycle to vue 1/2 (just the basic elements, is not a real parser, so this work only if your code is compatible with both)\n\tfunction VueFixer(vue) {\n\t var vue2 = !window.Vue || !window.Vue.partial;\n\t var mixin = {\n\t computed: {\n\t vue2: function vue2() {\n\t return !this.$dispatch;\n\t }\n\t }\n\t };\n\t if (!vue2) {\n\t if (vue.beforeCreate) {\n\t mixin.create = vue.beforeCreate;\n\t delete vue.beforeCreate;\n\t }\n\t if (vue.beforeMount) {\n\t vue.beforeCompile = vue.beforeMount;\n\t delete vue.beforeMount;\n\t }\n\t if (vue.mounted) {\n\t vue.ready = vue.mounted;\n\t delete vue.mounted;\n\t }\n\t } else {\n\t if (vue.beforeCompile) {\n\t vue.beforeMount = vue.beforeCompile;\n\t delete vue.beforeCompile;\n\t }\n\t if (vue.compiled) {\n\t mixin.compiled = vue.compiled;\n\t delete vue.compiled;\n\t }\n\t if (vue.ready) {\n\t vue.mounted = vue.ready;\n\t delete vue.ready;\n\t }\n\t }\n\t if (!vue.mixins) {\n\t vue.mixins = [];\n\t }\n\t vue.mixins.unshift(mixin);\n\t return vue;\n\t}\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"panel-group\\\">\\r\\n <slot></slot>\\r\\n </div>\";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(95)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(96)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Affix.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Affix.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Affix.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Affix.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Affix.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div class=\"hidden-print hidden-xs hidden-sm\">\n\t\n\t// <nav class=\"bs-docs-sidebar\" :class=\"{affix:affixed}\" :style=\"{marginTop:top}\">\n\t\n\t// <slot></slot>\n\t\n\t// </nav>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t offset: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 0\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t affixed: false\n\t };\n\t },\n\t\n\t computed: {\n\t top: function top() {\n\t return this.offset > 0 ? this.offset + 'px' : null;\n\t }\n\t },\n\t methods: {\n\t // from https://github.com/ant-design/ant-design/blob/master/components/affix/index.jsx#L20\n\t checkScroll: function checkScroll() {\n\t var _this = this;\n\t\n\t // if is hidden don't calculate anything\n\t if (!(this.$el.offsetWidth || this.$el.offsetHeight || this.$el.getClientRects().length)) {\n\t return;\n\t }\n\t // get window scroll and element position to detect if have to be normal or affixed\n\t var scroll = {};\n\t var element = {};\n\t var rect = this.$el.getBoundingClientRect();\n\t var body = document.body;\n\t ['Top', 'Left'].forEach(function (type) {\n\t var t = type.toLowerCase();\n\t var ret = window['page' + (type === 'Top' ? 'Y' : 'X') + 'Offset'];\n\t var method = 'scroll' + type;\n\t if (typeof ret !== 'number') {\n\t // ie6,7,8 standard mode\n\t ret = document.documentElement[method];\n\t if (typeof ret !== 'number') {\n\t // quirks mode\n\t ret = document.body[method];\n\t }\n\t }\n\t scroll[t] = ret;\n\t element[t] = scroll[t] + rect[t] - (_this.$el['client' + type] || body['client' + type] || 0);\n\t });\n\t var fix = scroll.top > element.top - this.offset;\n\t if (this.affixed !== fix) {\n\t this.affixed = fix;\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t var _this2 = this;\n\t\n\t (0, _NodeList2.default)(window).on('scroll resize', function () {\n\t return _this2.checkScroll();\n\t });\n\t setTimeout(function () {\n\t return _this2.checkScroll();\n\t }, 0);\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t var _this3 = this;\n\t\n\t (0, _NodeList2.default)(window).off('scroll resize', function () {\n\t return _this3.checkScroll();\n\t });\n\t }\n\t};\n\t// </script>\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"hidden-print hidden-xs hidden-sm\\\">\\r\\n <nav class=\\\"bs-docs-sidebar\\\" :class=\\\"{affix:affixed}\\\" :style=\\\"{marginTop:top}\\\">\\r\\n <slot></slot>\\r\\n </nav>\\r\\n </div>\";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(98)\n\tmodule.exports = __webpack_require__(102)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(103)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Alert.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Alert.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Alert.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Alert.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Alert.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 98 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(99);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-200e8621&file=Alert.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Alert.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-200e8621&file=Alert.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Alert.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".fade-transition {\\r\\n -webkit-transition: opacity .3s ease;\\r\\n transition: opacity .3s ease;\\r\\n}\\r\\n.fade-enter,\\r\\n.fade-leave {\\r\\n height: 0;\\r\\n opacity: 0;\\r\\n}\\r\\n.alert.top {\\r\\n position: fixed;\\r\\n top: 30px;\\r\\n margin: 0 auto;\\r\\n left: 0;\\r\\n right: 0;\\r\\n z-index: 1050;\\r\\n}\\r\\n.alert.top-right {\\r\\n position: fixed;\\r\\n top: 30px;\\r\\n right: 50px;\\r\\n z-index: 1050;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 100 */\n/***/ function(module, exports) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\t// css base code, injected by the css-loader\r\n\tmodule.exports = function() {\r\n\t\tvar list = [];\r\n\t\r\n\t\t// return the list of modules as css string\r\n\t\tlist.toString = function toString() {\r\n\t\t\tvar result = [];\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar item = this[i];\r\n\t\t\t\tif(item[2]) {\r\n\t\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.push(item[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result.join(\"\");\r\n\t\t};\r\n\t\r\n\t\t// import a list of modules into the list\r\n\t\tlist.i = function(modules, mediaQuery) {\r\n\t\t\tif(typeof modules === \"string\")\r\n\t\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\t\tvar alreadyImportedModules = {};\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar id = this[i][0];\r\n\t\t\t\tif(typeof id === \"number\")\r\n\t\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t\t}\r\n\t\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\t\tvar item = modules[i];\r\n\t\t\t\t// skip already imported module\r\n\t\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.push(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn list;\r\n\t};\r\n\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\tvar stylesInDom = {},\r\n\t\tmemoize = function(fn) {\r\n\t\t\tvar memo;\r\n\t\t\treturn function () {\r\n\t\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\r\n\t\t\t\treturn memo;\r\n\t\t\t};\r\n\t\t},\r\n\t\tisOldIE = memoize(function() {\r\n\t\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\r\n\t\t}),\r\n\t\tgetHeadElement = memoize(function () {\r\n\t\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\r\n\t\t}),\r\n\t\tsingletonElement = null,\r\n\t\tsingletonCounter = 0,\r\n\t\tstyleElementsInsertedAtTop = [];\r\n\t\r\n\tmodule.exports = function(list, options) {\r\n\t\tif(false) {\r\n\t\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\r\n\t\t}\r\n\t\r\n\t\toptions = options || {};\r\n\t\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\r\n\t\t// tags it will allow on a page\r\n\t\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\r\n\t\r\n\t\t// By default, add <style> tags to the bottom of <head>.\r\n\t\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\r\n\t\r\n\t\tvar styles = listToStyles(list);\r\n\t\taddStylesToDom(styles, options);\r\n\t\r\n\t\treturn function update(newList) {\r\n\t\t\tvar mayRemove = [];\r\n\t\t\tfor(var i = 0; i < styles.length; i++) {\r\n\t\t\t\tvar item = styles[i];\r\n\t\t\t\tvar domStyle = stylesInDom[item.id];\r\n\t\t\t\tdomStyle.refs--;\r\n\t\t\t\tmayRemove.push(domStyle);\r\n\t\t\t}\r\n\t\t\tif(newList) {\r\n\t\t\t\tvar newStyles = listToStyles(newList);\r\n\t\t\t\taddStylesToDom(newStyles, options);\r\n\t\t\t}\r\n\t\t\tfor(var i = 0; i < mayRemove.length; i++) {\r\n\t\t\t\tvar domStyle = mayRemove[i];\r\n\t\t\t\tif(domStyle.refs === 0) {\r\n\t\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\r\n\t\t\t\t\t\tdomStyle.parts[j]();\r\n\t\t\t\t\tdelete stylesInDom[domStyle.id];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\t\r\n\tfunction addStylesToDom(styles, options) {\r\n\t\tfor(var i = 0; i < styles.length; i++) {\r\n\t\t\tvar item = styles[i];\r\n\t\t\tvar domStyle = stylesInDom[item.id];\r\n\t\t\tif(domStyle) {\r\n\t\t\t\tdomStyle.refs++;\r\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\r\n\t\t\t\t\tdomStyle.parts[j](item.parts[j]);\r\n\t\t\t\t}\r\n\t\t\t\tfor(; j < item.parts.length; j++) {\r\n\t\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvar parts = [];\r\n\t\t\t\tfor(var j = 0; j < item.parts.length; j++) {\r\n\t\t\t\t\tparts.push(addStyle(item.parts[j], options));\r\n\t\t\t\t}\r\n\t\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction listToStyles(list) {\r\n\t\tvar styles = [];\r\n\t\tvar newStyles = {};\r\n\t\tfor(var i = 0; i < list.length; i++) {\r\n\t\t\tvar item = list[i];\r\n\t\t\tvar id = item[0];\r\n\t\t\tvar css = item[1];\r\n\t\t\tvar media = item[2];\r\n\t\t\tvar sourceMap = item[3];\r\n\t\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\r\n\t\t\tif(!newStyles[id])\r\n\t\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\r\n\t\t\telse\r\n\t\t\t\tnewStyles[id].parts.push(part);\r\n\t\t}\r\n\t\treturn styles;\r\n\t}\r\n\t\r\n\tfunction insertStyleElement(options, styleElement) {\r\n\t\tvar head = getHeadElement();\r\n\t\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\r\n\t\tif (options.insertAt === \"top\") {\r\n\t\t\tif(!lastStyleElementInsertedAtTop) {\r\n\t\t\t\thead.insertBefore(styleElement, head.firstChild);\r\n\t\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\r\n\t\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\r\n\t\t\t} else {\r\n\t\t\t\thead.appendChild(styleElement);\r\n\t\t\t}\r\n\t\t\tstyleElementsInsertedAtTop.push(styleElement);\r\n\t\t} else if (options.insertAt === \"bottom\") {\r\n\t\t\thead.appendChild(styleElement);\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction removeStyleElement(styleElement) {\r\n\t\tstyleElement.parentNode.removeChild(styleElement);\r\n\t\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\r\n\t\tif(idx >= 0) {\r\n\t\t\tstyleElementsInsertedAtTop.splice(idx, 1);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction createStyleElement(options) {\r\n\t\tvar styleElement = document.createElement(\"style\");\r\n\t\tstyleElement.type = \"text/css\";\r\n\t\tinsertStyleElement(options, styleElement);\r\n\t\treturn styleElement;\r\n\t}\r\n\t\r\n\tfunction createLinkElement(options) {\r\n\t\tvar linkElement = document.createElement(\"link\");\r\n\t\tlinkElement.rel = \"stylesheet\";\r\n\t\tinsertStyleElement(options, linkElement);\r\n\t\treturn linkElement;\r\n\t}\r\n\t\r\n\tfunction addStyle(obj, options) {\r\n\t\tvar styleElement, update, remove;\r\n\t\r\n\t\tif (options.singleton) {\r\n\t\t\tvar styleIndex = singletonCounter++;\r\n\t\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\r\n\t\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\r\n\t\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\r\n\t\t} else if(obj.sourceMap &&\r\n\t\t\ttypeof URL === \"function\" &&\r\n\t\t\ttypeof URL.createObjectURL === \"function\" &&\r\n\t\t\ttypeof URL.revokeObjectURL === \"function\" &&\r\n\t\t\ttypeof Blob === \"function\" &&\r\n\t\t\ttypeof btoa === \"function\") {\r\n\t\t\tstyleElement = createLinkElement(options);\r\n\t\t\tupdate = updateLink.bind(null, styleElement);\r\n\t\t\tremove = function() {\r\n\t\t\t\tremoveStyleElement(styleElement);\r\n\t\t\t\tif(styleElement.href)\r\n\t\t\t\t\tURL.revokeObjectURL(styleElement.href);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tstyleElement = createStyleElement(options);\r\n\t\t\tupdate = applyToTag.bind(null, styleElement);\r\n\t\t\tremove = function() {\r\n\t\t\t\tremoveStyleElement(styleElement);\r\n\t\t\t};\r\n\t\t}\r\n\t\r\n\t\tupdate(obj);\r\n\t\r\n\t\treturn function updateStyle(newObj) {\r\n\t\t\tif(newObj) {\r\n\t\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\r\n\t\t\t\t\treturn;\r\n\t\t\t\tupdate(obj = newObj);\r\n\t\t\t} else {\r\n\t\t\t\tremove();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\t\r\n\tvar replaceText = (function () {\r\n\t\tvar textStore = [];\r\n\t\r\n\t\treturn function (index, replacement) {\r\n\t\t\ttextStore[index] = replacement;\r\n\t\t\treturn textStore.filter(Boolean).join('\\n');\r\n\t\t};\r\n\t})();\r\n\t\r\n\tfunction applyToSingletonTag(styleElement, index, remove, obj) {\r\n\t\tvar css = remove ? \"\" : obj.css;\r\n\t\r\n\t\tif (styleElement.styleSheet) {\r\n\t\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\r\n\t\t} else {\r\n\t\t\tvar cssNode = document.createTextNode(css);\r\n\t\t\tvar childNodes = styleElement.childNodes;\r\n\t\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\r\n\t\t\tif (childNodes.length) {\r\n\t\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\r\n\t\t\t} else {\r\n\t\t\t\tstyleElement.appendChild(cssNode);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction applyToTag(styleElement, obj) {\r\n\t\tvar css = obj.css;\r\n\t\tvar media = obj.media;\r\n\t\r\n\t\tif(media) {\r\n\t\t\tstyleElement.setAttribute(\"media\", media)\r\n\t\t}\r\n\t\r\n\t\tif(styleElement.styleSheet) {\r\n\t\t\tstyleElement.styleSheet.cssText = css;\r\n\t\t} else {\r\n\t\t\twhile(styleElement.firstChild) {\r\n\t\t\t\tstyleElement.removeChild(styleElement.firstChild);\r\n\t\t\t}\r\n\t\t\tstyleElement.appendChild(document.createTextNode(css));\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction updateLink(linkElement, obj) {\r\n\t\tvar css = obj.css;\r\n\t\tvar sourceMap = obj.sourceMap;\r\n\t\r\n\t\tif(sourceMap) {\r\n\t\t\t// http://stackoverflow.com/a/26603875\r\n\t\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\r\n\t\t}\r\n\t\r\n\t\tvar blob = new Blob([css], { type: \"text/css\" });\r\n\t\r\n\t\tvar oldSrc = linkElement.href;\r\n\t\r\n\t\tlinkElement.href = URL.createObjectURL(blob);\r\n\t\r\n\t\tif(oldSrc)\r\n\t\t\tURL.revokeObjectURL(oldSrc);\r\n\t}\r\n\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t type: {\n\t type: String\n\t },\n\t dismissable: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t show: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true,\n\t twoWay: true\n\t },\n\t duration: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 0\n\t },\n\t width: {\n\t type: String\n\t },\n\t placement: {\n\t type: String\n\t }\n\t },\n\t watch: {\n\t show: function show(val) {\n\t var _this = this;\n\t\n\t if (this._timeout) clearTimeout(this._timeout);\n\t if (val && Boolean(this.duration)) {\n\t this._timeout = setTimeout(function () {\n\t _this.show = false;\n\t }, this.duration);\n\t }\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .fade-transition {\n\t\n\t// transition: opacity .3s ease;\n\t\n\t// }\n\t\n\t// .fade-enter,\n\t\n\t// .fade-leave {\n\t\n\t// height: 0;\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// .alert.top {\n\t\n\t// position: fixed;\n\t\n\t// top: 30px;\n\t\n\t// margin: 0 auto;\n\t\n\t// left: 0;\n\t\n\t// right: 0;\n\t\n\t// z-index: 1050;\n\t\n\t// }\n\t\n\t// .alert.top-right {\n\t\n\t// position: fixed;\n\t\n\t// top: 30px;\n\t\n\t// right: 50px;\n\t\n\t// z-index: 1050;\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <div\n\t\n\t// v-show=\"show\"\n\t\n\t// v-bind:class=\"{\n\t\n\t// 'alert':\t\ttrue,\n\t\n\t// 'alert-success':(type == 'success'),\n\t\n\t// 'alert-warning':(type == 'warning'),\n\t\n\t// 'alert-info':\t(type == 'info'),\n\t\n\t// 'alert-danger':\t(type == 'danger'),\n\t\n\t// 'top': \t\t\t(placement === 'top'),\n\t\n\t// 'top-right': \t(placement === 'top-right')\n\t\n\t// }\"\n\t\n\t// transition=\"fade\"\n\t\n\t// v-bind:style=\"{width:width}\"\n\t\n\t// role=\"alert\">\n\t\n\t// <button v-show=\"dismissable\" type=\"button\" class=\"close\"\n\t\n\t// @click=\"show = false\">\n\t\n\t// <span>×</span>\n\t\n\t// </button>\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 103 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div\\r\\n v-show=\\\"show\\\"\\r\\n v-bind:class=\\\"{\\r\\n 'alert':\\t\\ttrue,\\r\\n 'alert-success':(type == 'success'),\\r\\n 'alert-warning':(type == 'warning'),\\r\\n 'alert-info':\\t(type == 'info'),\\r\\n 'alert-danger':\\t(type == 'danger'),\\r\\n 'top': \\t\\t\\t(placement === 'top'),\\r\\n 'top-right': \\t(placement === 'top-right')\\r\\n }\\\"\\r\\n transition=\\\"fade\\\"\\r\\n v-bind:style=\\\"{width:width}\\\"\\r\\n role=\\\"alert\\\">\\r\\n <button v-show=\\\"dismissable\\\" type=\\\"button\\\" class=\\\"close\\\"\\r\\n @click=\\\"show = false\\\">\\r\\n <span>×</span>\\r\\n </button>\\r\\n <slot></slot>\\r\\n </div>\";\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(105)\n\tmodule.exports = __webpack_require__(107)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(108)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Aside.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Aside.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Aside.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Aside.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Aside.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(106);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-9bcf1806&file=Aside.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Aside.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-9bcf1806&file=Aside.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Aside.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".aside-open {\\r\\n -webkit-transition: -webkit-transform 0.3s;\\r\\n transition: -webkit-transform 0.3s;\\r\\n transition: transform 0.3s;\\r\\n transition: transform 0.3s, -webkit-transform 0.3s;\\r\\n}\\r\\n.aside-open.has-push-right {\\r\\n -webkit-transform: translateX(-300px);\\r\\n transform: translateX(-300px);\\r\\n}\\r\\n.aside {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1049;\\r\\n overflow: auto;\\r\\n background: #fff;\\r\\n}\\r\\n.aside.left {\\r\\n left: 0;\\r\\n right: auto;\\r\\n}\\r\\n.aside.right {\\r\\n left: auto;\\r\\n right: 0;\\r\\n}\\r\\n.slideleft-enter {\\r\\n -webkit-animation:slideleft-in .3s;\\r\\n animation:slideleft-in .3s;\\r\\n}\\r\\n.slideleft-leave {\\r\\n -webkit-animation:slideleft-out .3s;\\r\\n animation:slideleft-out .3s;\\r\\n}\\r\\n@-webkit-keyframes slideleft-in {\\r\\n 0% {\\r\\n -webkit-transform: translateX(-100%);\\r\\n transform: translateX(-100%);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@keyframes slideleft-in {\\r\\n 0% {\\r\\n -webkit-transform: translateX(-100%);\\r\\n transform: translateX(-100%);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes slideleft-out {\\r\\n 0% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(-100%);\\r\\n transform: translateX(-100%);\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n@keyframes slideleft-out {\\r\\n 0% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(-100%);\\r\\n transform: translateX(-100%);\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n.slideright-enter {\\r\\n -webkit-animation:slideright-in .3s;\\r\\n animation:slideright-in .3s;\\r\\n}\\r\\n.slideright-leave {\\r\\n -webkit-animation:slideright-out .3s;\\r\\n animation:slideright-out .3s;\\r\\n}\\r\\n@-webkit-keyframes slideright-in {\\r\\n 0% {\\r\\n -webkit-transform: translateX(100%);\\r\\n transform: translateX(100%);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@keyframes slideright-in {\\r\\n 0% {\\r\\n -webkit-transform: translateX(100%);\\r\\n transform: translateX(100%);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes slideright-out {\\r\\n 0% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(100%);\\r\\n transform: translateX(100%);\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n@keyframes slideright-out {\\r\\n 0% {\\r\\n -webkit-transform: translateX(0);\\r\\n transform: translateX(0);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translateX(100%);\\r\\n transform: translateX(100%);\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n.aside:focus {\\r\\n outline: 0\\r\\n}\\r\\n@media (max-width: 991px) {\\r\\n .aside {\\r\\n min-width:240px\\r\\n }\\r\\n}\\r\\n.aside.left {\\r\\n right: auto;\\r\\n left: 0\\r\\n}\\r\\n.aside.right {\\r\\n right: 0;\\r\\n left: auto\\r\\n}\\r\\n.aside .aside-dialog .aside-header {\\r\\n border-bottom: 1px solid #e5e5e5;\\r\\n min-height: 16.43px;\\r\\n padding: 6px 15px;\\r\\n background: #337ab7;\\r\\n color: #fff\\r\\n}\\r\\n.aside .aside-dialog .aside-header .close {\\r\\n margin-right: -8px;\\r\\n padding: 4px 8px;\\r\\n color: #fff;\\r\\n font-size: 25px;\\r\\n opacity: .8\\r\\n}\\r\\n.aside .aside-dialog .aside-body {\\r\\n position: relative;\\r\\n padding: 15px\\r\\n}\\r\\n.aside .aside-dialog .aside-footer {\\r\\n padding: 15px;\\r\\n text-align: right;\\r\\n border-top: 1px solid #e5e5e5\\r\\n}\\r\\n.aside .aside-dialog .aside-footer .btn+.btn {\\r\\n margin-left: 5px;\\r\\n margin-bottom: 0\\r\\n}\\r\\n.aside .aside-dialog .aside-footer .btn-group .btn+.btn {\\r\\n margin-left: -1px\\r\\n}\\r\\n.aside .aside-dialog .aside-footer .btn-block+.btn-block {\\r\\n margin-left: 0\\r\\n}\\r\\n.aside-backdrop {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n right: 0;\\r\\n bottom: 0;\\r\\n left: 0;\\r\\n z-index: 1040;\\r\\n opacity: 0;\\r\\n -webkit-transition: opacity .3s ease;\\r\\n transition: opacity .3s ease;\\r\\n background-color: #000\\r\\n}\\r\\n.aside-backdrop.in {\\r\\n opacity: .5;\\r\\n filter: alpha(opacity=50)\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div class=\"aside\"\n\t\n\t// v-bind:style=\"{width:width + 'px'}\"\n\t\n\t// v-bind:class=\"{\n\t\n\t// left:placement === 'left',\n\t\n\t// right:placement === 'right'\n\t\n\t// }\"\n\t\n\t// v-show=\"show\"\n\t\n\t// :transition=\"(this.placement === 'left') ? 'slideleft' : 'slideright'\">\n\t\n\t// <div class=\"aside-dialog\">\n\t\n\t// <div class=\"aside-content\">\n\t\n\t// <div class=\"aside-header\">\n\t\n\t// <button type=\"button\" class=\"close\" @click='close'><span>×</span></button>\n\t\n\t// <h4 class=\"aside-title\">\n\t\n\t// <slot name=\"header\">\n\t\n\t// {{ header }}\n\t\n\t// </slot>\n\t\n\t// </h4>\n\t\n\t// </div>\n\t\n\t// <div class=\"aside-body\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t show: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t required: true,\n\t twoWay: true\n\t },\n\t placement: {\n\t type: String,\n\t default: 'right'\n\t },\n\t header: {\n\t type: String\n\t },\n\t width: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 320\n\t }\n\t },\n\t watch: {\n\t show: function show(val) {\n\t var _this = this;\n\t\n\t var body = document.body;\n\t var scrollBarWidth = (0, _utils.getScrollBarWidth)();\n\t if (val) {\n\t if (!this._backdrop) {\n\t this._backdrop = document.createElement('div');\n\t }\n\t this._backdrop.className = 'aside-backdrop';\n\t body.appendChild(this._backdrop);\n\t body.classList.add('modal-open');\n\t if (scrollBarWidth !== 0) {\n\t body.style.paddingRight = scrollBarWidth + 'px';\n\t }\n\t // request property that requires layout to force a layout\n\t var x = this._backdrop.clientHeight;\n\t this._backdrop.classList.add('in');\n\t (0, _NodeList2.default)(this._backdrop).on('click', function () {\n\t return _this.close();\n\t });\n\t } else {\n\t (0, _NodeList2.default)(this._backdrop).on('transitionend', function () {\n\t (0, _NodeList2.default)(_this._backdrop).off();\n\t try {\n\t body.classList.remove('modal-open');\n\t body.style.paddingRight = '0';\n\t body.removeChild(_this._backdrop);\n\t _this._backdrop = null;\n\t } catch (e) {}\n\t });\n\t this._backdrop.className = 'aside-backdrop';\n\t }\n\t }\n\t },\n\t methods: {\n\t close: function close() {\n\t this.show = false;\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .aside-open {\n\t\n\t// transition: transform 0.3s;\n\t\n\t// }\n\t\n\t// .aside-open.has-push-right {\n\t\n\t// transform: translateX(-300px);\n\t\n\t// }\n\t\n\t// .aside {\n\t\n\t// position: fixed;\n\t\n\t// top: 0;\n\t\n\t// bottom: 0;\n\t\n\t// z-index: 1049;\n\t\n\t// overflow: auto;\n\t\n\t// background: #fff;\n\t\n\t// }\n\t\n\t// .aside.left {\n\t\n\t// left: 0;\n\t\n\t// right: auto;\n\t\n\t// }\n\t\n\t// .aside.right {\n\t\n\t// left: auto;\n\t\n\t// right: 0;\n\t\n\t// }\n\t\n\t// .slideleft-enter {\n\t\n\t// animation:slideleft-in .3s;\n\t\n\t// }\n\t\n\t// .slideleft-leave {\n\t\n\t// animation:slideleft-out .3s;\n\t\n\t// }\n\t\n\t// @keyframes slideleft-in {\n\t\n\t// 0% {\n\t\n\t// transform: translateX(-100%);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: translateX(0);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// @keyframes slideleft-out {\n\t\n\t// 0% {\n\t\n\t// transform: translateX(0);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: translateX(-100%);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// .slideright-enter {\n\t\n\t// animation:slideright-in .3s;\n\t\n\t// }\n\t\n\t// .slideright-leave {\n\t\n\t// animation:slideright-out .3s;\n\t\n\t// }\n\t\n\t// @keyframes slideright-in {\n\t\n\t// 0% {\n\t\n\t// transform: translateX(100%);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: translateX(0);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// @keyframes slideright-out {\n\t\n\t// 0% {\n\t\n\t// transform: translateX(0);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: translateX(100%);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// .aside:focus {\n\t\n\t// outline: 0\n\t\n\t// }\n\t\n\t// @media (max-width: 991px) {\n\t\n\t// .aside {\n\t\n\t// min-width:240px\n\t\n\t// }\n\t\n\t// }\n\t\n\t// .aside.left {\n\t\n\t// right: auto;\n\t\n\t// left: 0\n\t\n\t// }\n\t\n\t// .aside.right {\n\t\n\t// right: 0;\n\t\n\t// left: auto\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-header {\n\t\n\t// border-bottom: 1px solid #e5e5e5;\n\t\n\t// min-height: 16.43px;\n\t\n\t// padding: 6px 15px;\n\t\n\t// background: #337ab7;\n\t\n\t// color: #fff\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-header .close {\n\t\n\t// margin-right: -8px;\n\t\n\t// padding: 4px 8px;\n\t\n\t// color: #fff;\n\t\n\t// font-size: 25px;\n\t\n\t// opacity: .8\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-body {\n\t\n\t// position: relative;\n\t\n\t// padding: 15px\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-footer {\n\t\n\t// padding: 15px;\n\t\n\t// text-align: right;\n\t\n\t// border-top: 1px solid #e5e5e5\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-footer .btn+.btn {\n\t\n\t// margin-left: 5px;\n\t\n\t// margin-bottom: 0\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-footer .btn-group .btn+.btn {\n\t\n\t// margin-left: -1px\n\t\n\t// }\n\t\n\t// .aside .aside-dialog .aside-footer .btn-block+.btn-block {\n\t\n\t// margin-left: 0\n\t\n\t// }\n\t\n\t// .aside-backdrop {\n\t\n\t// position: fixed;\n\t\n\t// top: 0;\n\t\n\t// right: 0;\n\t\n\t// bottom: 0;\n\t\n\t// left: 0;\n\t\n\t// z-index: 1040;\n\t\n\t// opacity: 0;\n\t\n\t// transition: opacity .3s ease;\n\t\n\t// background-color: #000\n\t\n\t// }\n\t\n\t// .aside-backdrop.in {\n\t\n\t// opacity: .5;\n\t\n\t// filter: alpha(opacity=50)\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 108 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"aside\\\"\\r\\n v-bind:style=\\\"{width:width + 'px'}\\\"\\r\\n v-bind:class=\\\"{\\r\\n left:placement === 'left',\\r\\n right:placement === 'right'\\r\\n }\\\"\\r\\n v-show=\\\"show\\\"\\r\\n :transition=\\\"(this.placement === 'left') ? 'slideleft' : 'slideright'\\\">\\r\\n <div class=\\\"aside-dialog\\\">\\r\\n <div class=\\\"aside-content\\\">\\r\\n <div class=\\\"aside-header\\\">\\r\\n <button type=\\\"button\\\" class=\\\"close\\\" @click='close'><span>×</span></button>\\r\\n <h4 class=\\\"aside-title\\\">\\r\\n <slot name=\\\"header\\\">\\r\\n {{ header }}\\r\\n </slot>\\r\\n </h4>\\r\\n </div>\\r\\n <div class=\\\"aside-body\\\">\\r\\n <slot></slot>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\";\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(110)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(111)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./buttonGroup.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./buttonGroup.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./buttonGroup.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./buttonGroup.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./buttonGroup.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t value: null,\n\t buttons: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t justified: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t type: {\n\t type: String,\n\t default: 'default'\n\t },\n\t vertical: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t },\n\t watch: {\n\t value: {\n\t deep: true,\n\t handler: function handler(val) {\n\t this.$children.forEach(function (el) {\n\t if (el.group && el.eval) el.eval();\n\t });\n\t }\n\t }\n\t },\n\t created: function created() {\n\t this._btnGroup = true;\n\t }\n\t};\n\t// </script>\n\t// <template>\n\t\n\t// <div :class=\"{'btn-group':buttons,'btn-group-justified':justified,'btn-group-vertical':vertical}\" :data-toggle=\"buttons&&'buttons'\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 111 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div :class=\\\"{'btn-group':buttons,'btn-group-justified':justified,'btn-group-vertical':vertical}\\\" :data-toggle=\\\"buttons&&'buttons'\\\">\\r\\n <slot></slot>\\r\\n </div>\";\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(113)\n\tmodule.exports = __webpack_require__(115)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(116)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Carousel.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Carousel.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-5afe80ab&file=Carousel.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Carousel.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Carousel.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-5afe80ab&file=Carousel.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Carousel.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(114);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-5afe80ab&file=Carousel.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Carousel.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-5afe80ab&file=Carousel.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Carousel.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 114 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".carousel-control[_v-5afe80ab] {\\r\\n cursor: pointer;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 115 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div class=\"carousel slide\" data-ride=\"carousel\">\n\t\n\t// <!-- Indicators -->\n\t\n\t// <ol class=\"carousel-indicators\" v-show=\"indicators\">\n\t\n\t// <li v-for=\"i in indicator\" @click=\"indicatorClick($index)\" v-bind:class=\"{active:$index === index}\"><span></span></li>\n\t\n\t// </ol>\n\t\n\t// <!-- Wrapper for slides -->\n\t\n\t// <div class=\"carousel-inner\" role=\"listbox\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// <!-- Controls -->\n\t\n\t// <div v-show=\"controls\" class=\"carousel-controls hidden-xs\">\n\t\n\t// <a class=\"left carousel-control\" role=\"button\" @click=\"prev\">\n\t\n\t// <span class=\"glyphicon glyphicon-chevron-left\" aria-hidden=\"true\"></span>\n\t\n\t// </a>\n\t\n\t// <a class=\"right carousel-control\" role=\"button\" @click=\"next\">\n\t\n\t// <span class=\"glyphicon glyphicon-chevron-right\" aria-hidden=\"true\"></span>\n\t\n\t// </a>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t indicators: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t controls: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t interval: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 5000\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t indicator: [],\n\t index: 0,\n\t isAnimating: false\n\t };\n\t },\n\t\n\t watch: {\n\t index: function index(newVal, oldVal) {\n\t this.slide(newVal > oldVal ? 'left' : 'right', newVal, oldVal);\n\t }\n\t },\n\t methods: {\n\t indicatorClick: function indicatorClick(index) {\n\t if (this.isAnimating || this.index === index) return false;\n\t this.isAnimating = true;\n\t this.index = index;\n\t },\n\t slide: function slide(direction, next, prev) {\n\t var _this = this;\n\t\n\t if (!this.$el) {\n\t return;\n\t }\n\t var $slider = (0, _NodeList2.default)('.item', this.$el);\n\t if (!$slider.length) {\n\t return;\n\t }\n\t var selected = $slider[next] || $slider[0];\n\t (0, _NodeList2.default)(selected).addClass(direction === 'left' ? 'next' : 'prev');\n\t // request property that requires layout to force a layout\n\t var x = selected.clientHeight;\n\t (0, _NodeList2.default)([$slider[prev], selected]).addClass(direction).on('transitionend', function () {\n\t $slider.off('transitionend').className = 'item';\n\t (0, _NodeList2.default)(selected).addClass('active');\n\t _this.isAnimating = false;\n\t });\n\t },\n\t next: function next() {\n\t if (!this.$el || this.isAnimating) {\n\t return false;\n\t }\n\t this.isAnimating = true;\n\t this.index + 1 < (0, _NodeList2.default)('.item', this.$el).length ? this.index += 1 : this.index = 0;\n\t },\n\t prev: function prev() {\n\t if (!this.$el || this.isAnimating) {\n\t return false;\n\t }\n\t this.isAnimating = true;\n\t this.index === 0 ? this.index = (0, _NodeList2.default)('.item', this.$el).length - 1 : this.index -= 1;\n\t },\n\t toggleInterval: function toggleInterval(val) {\n\t if (val === undefined) {\n\t val = this._intervalID;\n\t }\n\t if (this._intervalID) {\n\t clearInterval(this._intervalID);\n\t delete this._intervalID;\n\t }\n\t if (val && this.interval > 0) {\n\t this._intervalID = setInterval(this.next, this.interval);\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t var _this2 = this;\n\t\n\t this.toggleInterval(true);\n\t (0, _NodeList2.default)(this.$el).on('mouseenter', function () {\n\t return _this2.toggleInterval(false);\n\t }).on('mouseleave', function () {\n\t return _this2.toggleInterval(true);\n\t });\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this.toggleInterval(false);\n\t (0, _NodeList2.default)(this.$el).off('mouseenter mouseleave');\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// .carousel-control {\n\t\n\t// cursor: pointer;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 116 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"carousel slide\\\" data-ride=\\\"carousel\\\" _v-5afe80ab=\\\"\\\">\\n <!-- Indicators -->\\n <ol class=\\\"carousel-indicators\\\" v-show=\\\"indicators\\\" _v-5afe80ab=\\\"\\\">\\n <li v-for=\\\"i in indicator\\\" @click=\\\"indicatorClick($index)\\\" v-bind:class=\\\"{active:$index === index}\\\" _v-5afe80ab=\\\"\\\"><span _v-5afe80ab=\\\"\\\"></span></li>\\n </ol>\\n <!-- Wrapper for slides -->\\n <div class=\\\"carousel-inner\\\" role=\\\"listbox\\\" _v-5afe80ab=\\\"\\\">\\n <slot _v-5afe80ab=\\\"\\\"></slot>\\n </div>\\n <!-- Controls -->\\n <div v-show=\\\"controls\\\" class=\\\"carousel-controls hidden-xs\\\" _v-5afe80ab=\\\"\\\">\\n <a class=\\\"left carousel-control\\\" role=\\\"button\\\" @click=\\\"prev\\\" _v-5afe80ab=\\\"\\\">\\n <span class=\\\"glyphicon glyphicon-chevron-left\\\" aria-hidden=\\\"true\\\" _v-5afe80ab=\\\"\\\"></span>\\n </a>\\n <a class=\\\"right carousel-control\\\" role=\\\"button\\\" @click=\\\"next\\\" _v-5afe80ab=\\\"\\\">\\n <span class=\\\"glyphicon glyphicon-chevron-right\\\" aria-hidden=\\\"true\\\" _v-5afe80ab=\\\"\\\"></span>\\n </a>\\n </div>\\n</div>\";\n\n/***/ },\n/* 117 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(118)\n\tmodule.exports = __webpack_require__(120)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(121)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Checkbox.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Checkbox.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-dc195ce4&file=Checkbox.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Checkbox.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Checkbox.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-dc195ce4&file=Checkbox.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Checkbox.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 118 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(119);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-dc195ce4&file=Checkbox.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Checkbox.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-dc195ce4&file=Checkbox.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Checkbox.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 119 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"label.checkbox[_v-dc195ce4] {\\r\\n position: relative;\\r\\n padding-left: 18px;\\r\\n}\\r\\nlabel.checkbox > input[_v-dc195ce4] {\\r\\n box-sizing: border-box;\\r\\n position: absolute;\\r\\n z-index: -1;\\r\\n padding: 0;\\r\\n opacity: 0;\\r\\n margin: 0;\\r\\n}\\r\\nlabel.checkbox > .icon[_v-dc195ce4] {\\r\\n position: absolute;\\r\\n top: .2rem;\\r\\n left: 0;\\r\\n display: block;\\r\\n width: 1.4rem;\\r\\n height: 1.4rem;\\r\\n line-height:1rem;\\r\\n text-align: center;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n border-radius: .35rem;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center center;\\r\\n background-size: 50% 50%;\\r\\n}\\r\\nlabel.checkbox:not(.active) > .icon[_v-dc195ce4] {\\r\\n background-color: #ddd;\\r\\n border: 1px solid #bbb;\\r\\n}\\r\\nlabel.checkbox > input:focus ~ .icon[_v-dc195ce4] {\\r\\n outline: 0;\\r\\n border: 1px solid #66afe9;\\r\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\r\\n}\\r\\nlabel.checkbox.active > .icon[_v-dc195ce4] {\\r\\n background-size: 1rem 1rem;\\r\\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ij48cGF0aCBmaWxsPSIjZmZmIiBkPSJtNS43MywwLjUybC0zLjEyNDIyLDMuMzQxNjFsLTEuMzM4OTUsLTEuNDMyMTJsLTEuMjQ5NjksMS4zMzY2NWwyLjU4ODYzLDIuNzY4NzZsNC4zNzM5LC00LjY3ODI2bC0xLjI0OTY5LC0xLjMzNjY1bDAsMGwwLjAwMDAyLDAuMDAwMDF6Ii8+PC9zdmc+);\\r\\n}\\r\\nlabel.checkbox.active .btn-default[_v-dc195ce4] { -webkit-filter: brightness(75%); filter: brightness(75%); }\\r\\n\\r\\nlabel.checkbox.disabled[_v-dc195ce4],\\r\\nlabel.checkbox.readonly[_v-dc195ce4],\\r\\n.btn.readonly[_v-dc195ce4] {\\r\\n filter: alpha(opacity=65);\\r\\n box-shadow: none;\\r\\n opacity: .65;\\r\\n}\\r\\nlabel.btn > input[type=checkbox][_v-dc195ce4] {\\r\\n position: absolute;\\r\\n clip: rect(0,0,0,0);\\r\\n pointer-events: none;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t value: {\n\t default: true\n\t },\n\t checked: {\n\t twoWay: true\n\t },\n\t button: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t name: {\n\t type: String,\n\t default: null\n\t },\n\t readonly: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t type: {\n\t type: String,\n\t default: null\n\t }\n\t },\n\t computed: {\n\t active: function active() {\n\t return typeof this.value !== 'boolean' && this.group ? ~this.$parent.value.indexOf(this.value) : this.checked === this.value;\n\t },\n\t isButton: function isButton() {\n\t return this.button || this.group && this.$parent.buttons;\n\t },\n\t group: function group() {\n\t return this.$parent && this.$parent._checkboxGroup;\n\t },\n\t typeColor: function typeColor() {\n\t return this.type || this.$parent && this.$parent.type || 'default';\n\t }\n\t },\n\t watch: {\n\t checked: function checked(val) {\n\t if (typeof this.value !== 'boolean' && this.group) {\n\t if (this.checked && !~this.$parent.value.indexOf(this.value)) this.$parent.value.push(this.value);\n\t if (!this.checked && ~this.$parent.value.indexOf(this.value)) this.$parent.value.$remove(this.value);\n\t }\n\t }\n\t },\n\t created: function created() {\n\t if (typeof this.value === 'boolean') {\n\t return;\n\t }\n\t var parent = this.$parent;\n\t if (parent && parent._btnGroup && !parent._radioGroup) {\n\t parent._checkboxGroup = true;\n\t if (!(parent.value instanceof Array)) {\n\t parent.value = [];\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t if (!this.$parent._checkboxGroup || typeof this.value === 'boolean') {\n\t return;\n\t }\n\t if (this.$parent.value.length) {\n\t this.checked = ~this.$parent.value.indexOf(this.value);\n\t } else if (this.checked) {\n\t this.$parent.value.push(this.value);\n\t }\n\t },\n\t\n\t methods: {\n\t eval: function _eval() {\n\t if (typeof this.value !== 'boolean' && this.group) {\n\t this.checked = ~this.$parent.value.indexOf(this.value);\n\t }\n\t },\n\t focus: function focus() {\n\t this.$els.input.focus();\n\t },\n\t toggle: function toggle() {\n\t if (!this.disabled) {\n\t this.focus();\n\t if (!this.readonly) {\n\t this.checked = this.checked ? null : this.value;\n\t if (this.group && typeof this.value !== 'boolean') {\n\t var index = this.$parent.value.indexOf(this.value);\n\t this.$parent.value[~index ? '$remove' : 'push'](this.value);\n\t }\n\t }\n\t }\n\t return false;\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// label.checkbox {\n\t\n\t// position: relative;\n\t\n\t// padding-left: 18px;\n\t\n\t// }\n\t\n\t// label.checkbox > input {\n\t\n\t// box-sizing: border-box;\n\t\n\t// position: absolute;\n\t\n\t// z-index: -1;\n\t\n\t// padding: 0;\n\t\n\t// opacity: 0;\n\t\n\t// margin: 0;\n\t\n\t// }\n\t\n\t// label.checkbox > .icon {\n\t\n\t// position: absolute;\n\t\n\t// top: .2rem;\n\t\n\t// left: 0;\n\t\n\t// display: block;\n\t\n\t// width: 1.4rem;\n\t\n\t// height: 1.4rem;\n\t\n\t// line-height:1rem;\n\t\n\t// text-align: center;\n\t\n\t// user-select: none;\n\t\n\t// border-radius: .35rem;\n\t\n\t// background-repeat: no-repeat;\n\t\n\t// background-position: center center;\n\t\n\t// background-size: 50% 50%;\n\t\n\t// }\n\t\n\t// label.checkbox:not(.active) > .icon {\n\t\n\t// background-color: #ddd;\n\t\n\t// border: 1px solid #bbb;\n\t\n\t// }\n\t\n\t// label.checkbox > input:focus ~ .icon {\n\t\n\t// outline: 0;\n\t\n\t// border: 1px solid #66afe9;\n\t\n\t// box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\n\t\n\t// }\n\t\n\t// label.checkbox.active > .icon {\n\t\n\t// background-size: 1rem 1rem;\n\t\n\t// background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ij48cGF0aCBmaWxsPSIjZmZmIiBkPSJtNS43MywwLjUybC0zLjEyNDIyLDMuMzQxNjFsLTEuMzM4OTUsLTEuNDMyMTJsLTEuMjQ5NjksMS4zMzY2NWwyLjU4ODYzLDIuNzY4NzZsNC4zNzM5LC00LjY3ODI2bC0xLjI0OTY5LC0xLjMzNjY1bDAsMGwwLjAwMDAyLDAuMDAwMDF6Ii8+PC9zdmc+);\n\t\n\t// }\n\t\n\t// label.checkbox.active .btn-default { filter: brightness(75%); }\n\t\n\t\n\t// label.checkbox.disabled,\n\t\n\t// label.checkbox.readonly,\n\t\n\t// .btn.readonly {\n\t\n\t// filter: alpha(opacity=65);\n\t\n\t// box-shadow: none;\n\t\n\t// opacity: .65;\n\t\n\t// }\n\t\n\t// label.btn > input[type=checkbox] {\n\t\n\t// position: absolute;\n\t\n\t// clip: rect(0,0,0,0);\n\t\n\t// pointer-events: none;\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <label :class=\"[isButton?'btn btn-'+typeColor:'open checkbox '+typeColor,{active:checked,disabled:disabled,readonly:readonly}]\" @click.prevent=\"toggle\">\n\t\n\t// <input type=\"checkbox\" autocomplete=\"off\"\n\t\n\t// v-el:input\n\t\n\t// :checked=\"active\"\n\t\n\t// :value=\"value\"\n\t\n\t// :name=\"name\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// />\n\t\n\t// <span v-if=\"!isButton\" class=\"icon dropdown-toggle\" :class=\"[active?'btn-'+typeColor:'',{bg:typeColor==='default'}]\"></span>\n\t\n\t// <span v-if=\"!isButton&active&&typeColor==='default'\" class=\"icon\"></span>\n\t\n\t// <slot></slot>\n\t\n\t// </label>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 121 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<label :class=\\\"[isButton?'btn btn-'+typeColor:'open checkbox '+typeColor,{active:checked,disabled:disabled,readonly:readonly}]\\\" @click.prevent=\\\"toggle\\\" _v-dc195ce4=\\\"\\\">\\n <input type=\\\"checkbox\\\" autocomplete=\\\"off\\\" v-el:input=\\\"\\\" :checked=\\\"active\\\" :value=\\\"value\\\" :name=\\\"name\\\" :readonly=\\\"readonly\\\" :disabled=\\\"disabled\\\" _v-dc195ce4=\\\"\\\">\\n <span v-if=\\\"!isButton\\\" class=\\\"icon dropdown-toggle\\\" :class=\\\"[active?'btn-'+typeColor:'',{bg:typeColor==='default'}]\\\" _v-dc195ce4=\\\"\\\"></span>\\n <span v-if=\\\"!isButton&active&&typeColor==='default'\\\" class=\\\"icon\\\" _v-dc195ce4=\\\"\\\"></span>\\n <slot _v-dc195ce4=\\\"\\\"></slot>\\n </label>\";\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(123)\n\tmodule.exports = __webpack_require__(125)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(126)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Datepicker.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Datepicker.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Datepicker.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Datepicker.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Datepicker.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 123 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(124);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7e712e47&file=Datepicker.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Datepicker.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7e712e47&file=Datepicker.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Datepicker.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 124 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".datepicker{\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n}\\r\\ninput.datepicker-input.with-reset-button {\\r\\n padding-right: 25px;\\r\\n}\\r\\n.datepicker > button.close {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n right: 0;\\r\\n outline: none;\\r\\n z-index: 2;\\r\\n display: block;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n}\\r\\n.datepicker > button.close:focus {\\r\\n opacity: .2;\\r\\n}\\r\\n.datepicker-popup{\\r\\n position: absolute;\\r\\n border: 1px solid #ccc;\\r\\n border-radius: 5px;\\r\\n background: #fff;\\r\\n margin-top: 2px;\\r\\n z-index: 1000;\\r\\n box-shadow: 0 6px 12px rgba(0,0,0,0.175);\\r\\n}\\r\\n.datepicker-inner{\\r\\n width: 218px;\\r\\n}\\r\\n.datepicker-body{\\r\\n padding: 10px 10px;\\r\\n}\\r\\n.datepicker-ctrl p,\\r\\n.datepicker-ctrl span,\\r\\n.datepicker-body span{\\r\\n display: inline-block;\\r\\n width: 28px;\\r\\n line-height: 28px;\\r\\n height: 28px;\\r\\n border-radius: 4px;\\r\\n}\\r\\n.datepicker-ctrl p {\\r\\n width: 65%;\\r\\n}\\r\\n.datepicker-ctrl span {\\r\\n position: absolute;\\r\\n}\\r\\n.datepicker-body span {\\r\\n text-align: center;\\r\\n}\\r\\n.datepicker-monthRange span{\\r\\n width: 48px;\\r\\n height: 50px;\\r\\n line-height: 45px;\\r\\n}\\r\\n.datepicker-item-disable {\\r\\n background-color: white!important;\\r\\n cursor: not-allowed!important;\\r\\n}\\r\\n.decadeRange span:first-child,\\r\\n.decadeRange span:last-child,\\r\\n.datepicker-item-disable,\\r\\n.datepicker-item-gray{\\r\\n color: #999;\\r\\n}\\r\\n\\r\\n.datepicker-dateRange-item-active:hover,\\r\\n.datepicker-dateRange-item-active {\\r\\n background: rgb(50, 118, 177)!important;\\r\\n color: white!important;\\r\\n}\\r\\n.datepicker-monthRange {\\r\\n margin-top: 10px\\r\\n}\\r\\n.datepicker-monthRange span,\\r\\n.datepicker-ctrl span,\\r\\n.datepicker-ctrl p,\\r\\n.datepicker-dateRange span {\\r\\n cursor: pointer;\\r\\n}\\r\\n.datepicker-monthRange span:hover,\\r\\n.datepicker-ctrl p:hover,\\r\\n.datepicker-ctrl i:hover,\\r\\n.datepicker-dateRange span:hover,\\r\\n.datepicker-dateRange-item-hover {\\r\\n background-color : #eeeeee;\\r\\n}\\r\\n.datepicker-weekRange span{\\r\\n font-weight: bold;\\r\\n}\\r\\n.datepicker-label{\\r\\n background-color: #f8f8f8;\\r\\n font-weight: 700;\\r\\n padding: 7px 0;\\r\\n text-align: center;\\r\\n}\\r\\n.datepicker-ctrl{\\r\\n position: relative;\\r\\n height: 30px;\\r\\n line-height: 30px;\\r\\n font-weight: bold;\\r\\n text-align: center;\\r\\n}\\r\\n.month-btn{\\r\\n font-weight: bold;\\r\\n -webkit-user-select:none;\\r\\n -moz-user-select:none;\\r\\n -ms-user-select:none;\\r\\n user-select:none;\\r\\n}\\r\\n.datepicker-preBtn{\\r\\n left: 2px;\\r\\n}\\r\\n.datepicker-nextBtn{\\r\\n right: 2px;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 125 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div class=\"datepicker\">\n\t\n\t// <input class=\"form-control datepicker-input\" :class=\"{'with-reset-button': clearButton}\" type=\"text\" :placeholder=\"placeholder\"\n\t\n\t// :style=\"{width:width}\"\n\t\n\t// @click=\"inputClick\"\n\t\n\t// v-model=\"value\"/>\n\t\n\t// <button v-if=\"clearButton && value\" type=\"button\" class=\"close\" @click=\"value = ''\">\n\t\n\t// <span>×</span>\n\t\n\t// </button>\n\t\n\t// <div class=\"datepicker-popup\" v-show=\"displayDayView\">\n\t\n\t// <div class=\"datepicker-inner\">\n\t\n\t// <div class=\"datepicker-body\">\n\t\n\t// <div class=\"datepicker-ctrl\">\n\t\n\t// <span class=\"datepicker-preBtn glyphicon glyphicon-chevron-left\" aria-hidden=\"true\" @click=\"preNextMonthClick(0)\"></span>\n\t\n\t// <span class=\"datepicker-nextBtn glyphicon glyphicon-chevron-right\" aria-hidden=\"true\" @click=\"preNextMonthClick(1)\"></span>\n\t\n\t// <p @click=\"switchMonthView\">{{stringifyDayHeader(currDate)}}</p>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-weekRange\">\n\t\n\t// <span v-for=\"w in text.daysOfWeek\">{{w}}</span>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-dateRange\">\n\t\n\t// <span v-for=\"d in dateRange\" :class=\"d.sclass\" @click=\"daySelect(d.date,this)\">{{d.text}}</span>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-popup\" v-show=\"displayMonthView\">\n\t\n\t// <div class=\"datepicker-inner\">\n\t\n\t// <div class=\"datepicker-body\">\n\t\n\t// <div class=\"datepicker-ctrl\">\n\t\n\t// <span class=\"datepicker-preBtn glyphicon glyphicon-chevron-left\" aria-hidden=\"true\" @click=\"preNextYearClick(0)\"></span>\n\t\n\t// <span class=\"datepicker-nextBtn glyphicon glyphicon-chevron-right\" aria-hidden=\"true\" @click=\"preNextYearClick(1)\"></span>\n\t\n\t// <p @click=\"switchDecadeView\">{{stringifyYearHeader(currDate)}}</p>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-monthRange\">\n\t\n\t// <template v-for=\"m in text.months\">\n\t\n\t// <span :class=\"{'datepicker-dateRange-item-active':\n\t\n\t// (text.months[parse(value).getMonth()] === m) &&\n\t\n\t// currDate.getFullYear() === parse(value).getFullYear()}\"\n\t\n\t// @click=\"monthSelect($index)\"\n\t\n\t// >{{m.substr(0,3)}}</span>\n\t\n\t// </template>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-popup\" v-show=\"displayYearView\">\n\t\n\t// <div class=\"datepicker-inner\">\n\t\n\t// <div class=\"datepicker-body\">\n\t\n\t// <div class=\"datepicker-ctrl\">\n\t\n\t// <span class=\"datepicker-preBtn glyphicon glyphicon-chevron-left\" aria-hidden=\"true\" @click=\"preNextDecadeClick(0)\"></span>\n\t\n\t// <span class=\"datepicker-nextBtn glyphicon glyphicon-chevron-right\" aria-hidden=\"true\" @click=\"preNextDecadeClick(1)\"></span>\n\t\n\t// <p>{{stringifyDecadeHeader(currDate)}}</p>\n\t\n\t// </div>\n\t\n\t// <div class=\"datepicker-monthRange decadeRange\">\n\t\n\t// <template v-for=\"decade in decadeRange\">\n\t\n\t// <span :class=\"{'datepicker-dateRange-item-active':\n\t\n\t// parse(this.value).getFullYear() === decade.text}\"\n\t\n\t// @click.stop=\"yearSelect(decade.text)\"\n\t\n\t// >{{decade.text}}</span>\n\t\n\t// </template>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t value: {\n\t type: String,\n\t twoWay: true\n\t },\n\t format: {\n\t default: 'MM/dd/yyyy'\n\t },\n\t disabledDaysOfWeek: {\n\t type: Array,\n\t default: function _default() {\n\t return [];\n\t }\n\t },\n\t width: {\n\t type: String,\n\t default: '200px'\n\t },\n\t clearButton: {\n\t type: Boolean,\n\t default: false\n\t },\n\t lang: {\n\t type: String,\n\t default: navigator.language\n\t },\n\t placeholder: {\n\t type: String\n\t }\n\t },\n\t ready: function ready() {\n\t var _this = this;\n\t\n\t this._blur = function (e) {\n\t if (_this.$el !== null && !_this.$el.contains(e.target)) _this.close();\n\t };\n\t this.$dispatch('child-created', this);\n\t this.currDate = this.parse(this.value) || this.parse(new Date());\n\t (0, _NodeList2.default)(window).on('click', this._blur);\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t (0, _NodeList2.default)(window).off('click', this._blur);\n\t },\n\t data: function data() {\n\t return {\n\t currDate: new Date(),\n\t dateRange: [],\n\t decadeRange: [],\n\t displayDayView: false,\n\t displayMonthView: false,\n\t displayYearView: false\n\t };\n\t },\n\t\n\t watch: {\n\t currDate: function currDate() {\n\t this.getDateRange();\n\t }\n\t },\n\t computed: {\n\t text: function text() {\n\t return (0, _utils.translations)(this.lang);\n\t }\n\t },\n\t methods: {\n\t close: function close() {\n\t this.displayDayView = this.displayMonthView = this.displayYearView = false;\n\t },\n\t inputClick: function inputClick() {\n\t this.currDate = this.parse(this.value) || this.parse(new Date());\n\t if (this.displayMonthView || this.displayYearView) {\n\t this.displayDayView = false;\n\t } else {\n\t this.displayDayView = !this.displayDayView;\n\t }\n\t },\n\t preNextDecadeClick: function preNextDecadeClick(flag) {\n\t var year = this.currDate.getFullYear();\n\t var months = this.currDate.getMonth();\n\t var date = this.currDate.getDate();\n\t\n\t if (flag === 0) {\n\t this.currDate = new Date(year - 10, months, date);\n\t } else {\n\t this.currDate = new Date(year + 10, months, date);\n\t }\n\t },\n\t preNextMonthClick: function preNextMonthClick(flag) {\n\t var year = this.currDate.getFullYear();\n\t var month = this.currDate.getMonth();\n\t var date = this.currDate.getDate();\n\t\n\t if (flag === 0) {\n\t var preMonth = this.getYearMonth(year, month - 1);\n\t this.currDate = new Date(preMonth.year, preMonth.month, date);\n\t } else {\n\t var nextMonth = this.getYearMonth(year, month + 1);\n\t this.currDate = new Date(nextMonth.year, nextMonth.month, date);\n\t }\n\t },\n\t preNextYearClick: function preNextYearClick(flag) {\n\t var year = this.currDate.getFullYear();\n\t var months = this.currDate.getMonth();\n\t var date = this.currDate.getDate();\n\t\n\t if (flag === 0) {\n\t this.currDate = new Date(year - 1, months, date);\n\t } else {\n\t this.currDate = new Date(year + 1, months, date);\n\t }\n\t },\n\t yearSelect: function yearSelect(year) {\n\t this.displayYearView = false;\n\t this.displayMonthView = true;\n\t this.currDate = new Date(year, this.currDate.getMonth(), this.currDate.getDate());\n\t },\n\t daySelect: function daySelect(date, el) {\n\t if (el.$el.classList[0] === 'datepicker-item-disable') {\n\t return false;\n\t } else {\n\t this.currDate = date;\n\t this.value = this.stringify(this.currDate);\n\t this.displayDayView = false;\n\t }\n\t },\n\t switchMonthView: function switchMonthView() {\n\t this.displayDayView = false;\n\t this.displayMonthView = true;\n\t },\n\t switchDecadeView: function switchDecadeView() {\n\t this.displayMonthView = false;\n\t this.displayYearView = true;\n\t },\n\t monthSelect: function monthSelect(index) {\n\t this.displayMonthView = false;\n\t this.displayDayView = true;\n\t this.currDate = new Date(this.currDate.getFullYear(), index, this.currDate.getDate());\n\t },\n\t getYearMonth: function getYearMonth(year, month) {\n\t if (month > 11) {\n\t year++;\n\t month = 0;\n\t } else if (month < 0) {\n\t year--;\n\t month = 11;\n\t }\n\t return { year: year, month: month };\n\t },\n\t stringifyDecadeHeader: function stringifyDecadeHeader(date) {\n\t var yearStr = date.getFullYear().toString();\n\t var firstYearOfDecade = yearStr.substring(0, yearStr.length - 1) + 0;\n\t var lastYearOfDecade = parseInt(firstYearOfDecade, 10) + 10;\n\t return firstYearOfDecade + '-' + lastYearOfDecade;\n\t },\n\t stringifyDayHeader: function stringifyDayHeader(date) {\n\t return this.text.months[date.getMonth()] + ' ' + date.getFullYear();\n\t },\n\t parseMonth: function parseMonth(date) {\n\t return this.text.months[date.getMonth()];\n\t },\n\t stringifyYearHeader: function stringifyYearHeader(date) {\n\t return date.getFullYear();\n\t },\n\t stringify: function stringify(date) {\n\t var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.format;\n\t\n\t if (!date) date = this.parse();\n\t if (!date) return '';\n\t var year = date.getFullYear();\n\t var month = date.getMonth() + 1;\n\t var day = date.getDate();\n\t var monthName = this.parseMonth(date);\n\t\n\t return format.replace(/yyyy/g, year).replace(/MMMM/g, monthName).replace(/MMM/g, monthName.substring(0, 3)).replace(/MM/g, ('0' + month).slice(-2)).replace(/dd/g, ('0' + day).slice(-2)).replace(/yy/g, year).replace(/M(?!a)/g, month).replace(/d/g, day);\n\t },\n\t parse: function parse() {\n\t var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.value;\n\t\n\t var date = void 0;\n\t if (str.length === 10 && (this.format === 'dd-MM-yyyy' || this.format === 'dd/MM/yyyy')) {\n\t date = new Date(str.substring(6, 10), str.substring(3, 5) - 1, str.substring(0, 2));\n\t } else {\n\t date = new Date(str);\n\t }\n\t return isNaN(date.getFullYear()) ? new Date() : date;\n\t },\n\t getDayCount: function getDayCount(year, month) {\n\t var dict = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\t if (month === 1) {\n\t if (year % 400 === 0 || year % 4 === 0 && year % 100 !== 0) {\n\t return 29;\n\t }\n\t }\n\t return dict[month];\n\t },\n\t getDateRange: function getDateRange() {\n\t var _this2 = this;\n\t\n\t this.dateRange = [];\n\t this.decadeRange = [];\n\t var time = {\n\t year: this.currDate.getFullYear(),\n\t month: this.currDate.getMonth(),\n\t day: this.currDate.getDate()\n\t };\n\t var yearStr = time.year.toString();\n\t var firstYearOfDecade = yearStr.substring(0, yearStr.length - 1) + 0 - 1;\n\t for (var i = 0; i < 12; i++) {\n\t this.decadeRange.push({\n\t text: firstYearOfDecade + i\n\t });\n\t }\n\t\n\t var currMonthFirstDay = new Date(time.year, time.month, 1);\n\t var firstDayWeek = currMonthFirstDay.getDay() + 1;\n\t if (firstDayWeek === 0) {\n\t firstDayWeek = 7;\n\t }\n\t var dayCount = this.getDayCount(time.year, time.month);\n\t if (firstDayWeek > 1) {\n\t var preMonth = this.getYearMonth(time.year, time.month - 1);\n\t var prevMonthDayCount = this.getDayCount(preMonth.year, preMonth.month);\n\t for (var _i = 1; _i < firstDayWeek; _i++) {\n\t var dayText = prevMonthDayCount - firstDayWeek + _i + 1;\n\t this.dateRange.push({\n\t text: dayText,\n\t date: new Date(preMonth.year, preMonth.month, dayText),\n\t sclass: 'datepicker-item-gray'\n\t });\n\t }\n\t }\n\t\n\t var _loop = function _loop(_i2) {\n\t var date = new Date(time.year, time.month, _i2);\n\t var week = date.getDay();\n\t var sclass = '';\n\t _this2.disabledDaysOfWeek.forEach(function (el) {\n\t if (week === parseInt(el, 10)) sclass = 'datepicker-item-disable';\n\t });\n\t if (_i2 === time.day) {\n\t if (_this2.value) {\n\t var valueDate = _this2.parse(_this2.value);\n\t if (valueDate) {\n\t if (valueDate.getFullYear() === time.year && valueDate.getMonth() === time.month) {\n\t sclass = 'datepicker-dateRange-item-active';\n\t }\n\t }\n\t }\n\t }\n\t _this2.dateRange.push({\n\t text: _i2,\n\t date: date,\n\t sclass: sclass\n\t });\n\t };\n\t\n\t for (var _i2 = 1; _i2 <= dayCount; _i2++) {\n\t _loop(_i2);\n\t }\n\t\n\t if (this.dateRange.length < 42) {\n\t var nextMonthNeed = 42 - this.dateRange.length;\n\t var nextMonth = this.getYearMonth(time.year, time.month + 1);\n\t\n\t for (var _i3 = 1; _i3 <= nextMonthNeed; _i3++) {\n\t this.dateRange.push({\n\t text: _i3,\n\t date: new Date(nextMonth.year, nextMonth.month, _i3),\n\t sclass: 'datepicker-item-gray'\n\t });\n\t }\n\t }\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .datepicker{\n\t\n\t// position: relative;\n\t\n\t// display: inline-block;\n\t\n\t// }\n\t\n\t// input.datepicker-input.with-reset-button {\n\t\n\t// padding-right: 25px;\n\t\n\t// }\n\t\n\t// .datepicker > button.close {\n\t\n\t// position: absolute;\n\t\n\t// top: 0;\n\t\n\t// right: 0;\n\t\n\t// outline: none;\n\t\n\t// z-index: 2;\n\t\n\t// display: block;\n\t\n\t// width: 34px;\n\t\n\t// height: 34px;\n\t\n\t// line-height: 34px;\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .datepicker > button.close:focus {\n\t\n\t// opacity: .2;\n\t\n\t// }\n\t\n\t// .datepicker-popup{\n\t\n\t// position: absolute;\n\t\n\t// border: 1px solid #ccc;\n\t\n\t// border-radius: 5px;\n\t\n\t// background: #fff;\n\t\n\t// margin-top: 2px;\n\t\n\t// z-index: 1000;\n\t\n\t// box-shadow: 0 6px 12px rgba(0,0,0,0.175);\n\t\n\t// }\n\t\n\t// .datepicker-inner{\n\t\n\t// width: 218px;\n\t\n\t// }\n\t\n\t// .datepicker-body{\n\t\n\t// padding: 10px 10px;\n\t\n\t// }\n\t\n\t// .datepicker-ctrl p,\n\t\n\t// .datepicker-ctrl span,\n\t\n\t// .datepicker-body span{\n\t\n\t// display: inline-block;\n\t\n\t// width: 28px;\n\t\n\t// line-height: 28px;\n\t\n\t// height: 28px;\n\t\n\t// border-radius: 4px;\n\t\n\t// }\n\t\n\t// .datepicker-ctrl p {\n\t\n\t// width: 65%;\n\t\n\t// }\n\t\n\t// .datepicker-ctrl span {\n\t\n\t// position: absolute;\n\t\n\t// }\n\t\n\t// .datepicker-body span {\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .datepicker-monthRange span{\n\t\n\t// width: 48px;\n\t\n\t// height: 50px;\n\t\n\t// line-height: 45px;\n\t\n\t// }\n\t\n\t// .datepicker-item-disable {\n\t\n\t// background-color: white!important;\n\t\n\t// cursor: not-allowed!important;\n\t\n\t// }\n\t\n\t// .decadeRange span:first-child,\n\t\n\t// .decadeRange span:last-child,\n\t\n\t// .datepicker-item-disable,\n\t\n\t// .datepicker-item-gray{\n\t\n\t// color: #999;\n\t\n\t// }\n\t\n\t\n\t// .datepicker-dateRange-item-active:hover,\n\t\n\t// .datepicker-dateRange-item-active {\n\t\n\t// background: rgb(50, 118, 177)!important;\n\t\n\t// color: white!important;\n\t\n\t// }\n\t\n\t// .datepicker-monthRange {\n\t\n\t// margin-top: 10px\n\t\n\t// }\n\t\n\t// .datepicker-monthRange span,\n\t\n\t// .datepicker-ctrl span,\n\t\n\t// .datepicker-ctrl p,\n\t\n\t// .datepicker-dateRange span {\n\t\n\t// cursor: pointer;\n\t\n\t// }\n\t\n\t// .datepicker-monthRange span:hover,\n\t\n\t// .datepicker-ctrl p:hover,\n\t\n\t// .datepicker-ctrl i:hover,\n\t\n\t// .datepicker-dateRange span:hover,\n\t\n\t// .datepicker-dateRange-item-hover {\n\t\n\t// background-color : #eeeeee;\n\t\n\t// }\n\t\n\t// .datepicker-weekRange span{\n\t\n\t// font-weight: bold;\n\t\n\t// }\n\t\n\t// .datepicker-label{\n\t\n\t// background-color: #f8f8f8;\n\t\n\t// font-weight: 700;\n\t\n\t// padding: 7px 0;\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .datepicker-ctrl{\n\t\n\t// position: relative;\n\t\n\t// height: 30px;\n\t\n\t// line-height: 30px;\n\t\n\t// font-weight: bold;\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .month-btn{\n\t\n\t// font-weight: bold;\n\t\n\t// -webkit-user-select:none;\n\t\n\t// -moz-user-select:none;\n\t\n\t// -ms-user-select:none;\n\t\n\t// user-select:none;\n\t\n\t// }\n\t\n\t// .datepicker-preBtn{\n\t\n\t// left: 2px;\n\t\n\t// }\n\t\n\t// .datepicker-nextBtn{\n\t\n\t// right: 2px;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 126 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"datepicker\\\">\\r\\n <input class=\\\"form-control datepicker-input\\\" :class=\\\"{'with-reset-button': clearButton}\\\" type=\\\"text\\\" :placeholder=\\\"placeholder\\\"\\r\\n :style=\\\"{width:width}\\\"\\r\\n @click=\\\"inputClick\\\"\\r\\n v-model=\\\"value\\\"/>\\r\\n <button v-if=\\\"clearButton && value\\\" type=\\\"button\\\" class=\\\"close\\\" @click=\\\"value = ''\\\">\\r\\n <span>×</span>\\r\\n </button>\\r\\n <div class=\\\"datepicker-popup\\\" v-show=\\\"displayDayView\\\">\\r\\n <div class=\\\"datepicker-inner\\\">\\r\\n <div class=\\\"datepicker-body\\\">\\r\\n <div class=\\\"datepicker-ctrl\\\">\\r\\n <span class=\\\"datepicker-preBtn glyphicon glyphicon-chevron-left\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextMonthClick(0)\\\"></span>\\r\\n <span class=\\\"datepicker-nextBtn glyphicon glyphicon-chevron-right\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextMonthClick(1)\\\"></span>\\r\\n <p @click=\\\"switchMonthView\\\">{{stringifyDayHeader(currDate)}}</p>\\r\\n </div>\\r\\n <div class=\\\"datepicker-weekRange\\\">\\r\\n <span v-for=\\\"w in text.daysOfWeek\\\">{{w}}</span>\\r\\n </div>\\r\\n <div class=\\\"datepicker-dateRange\\\">\\r\\n <span v-for=\\\"d in dateRange\\\" :class=\\\"d.sclass\\\" @click=\\\"daySelect(d.date,this)\\\">{{d.text}}</span>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <div class=\\\"datepicker-popup\\\" v-show=\\\"displayMonthView\\\">\\r\\n <div class=\\\"datepicker-inner\\\">\\r\\n <div class=\\\"datepicker-body\\\">\\r\\n <div class=\\\"datepicker-ctrl\\\">\\r\\n <span class=\\\"datepicker-preBtn glyphicon glyphicon-chevron-left\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextYearClick(0)\\\"></span>\\r\\n <span class=\\\"datepicker-nextBtn glyphicon glyphicon-chevron-right\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextYearClick(1)\\\"></span>\\r\\n <p @click=\\\"switchDecadeView\\\">{{stringifyYearHeader(currDate)}}</p>\\r\\n </div>\\r\\n <div class=\\\"datepicker-monthRange\\\">\\r\\n <template v-for=\\\"m in text.months\\\">\\r\\n <span :class=\\\"{'datepicker-dateRange-item-active':\\r\\n (text.months[parse(value).getMonth()] === m) &&\\r\\n currDate.getFullYear() === parse(value).getFullYear()}\\\"\\r\\n @click=\\\"monthSelect($index)\\\"\\r\\n >{{m.substr(0,3)}}</span>\\r\\n </template>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <div class=\\\"datepicker-popup\\\" v-show=\\\"displayYearView\\\">\\r\\n <div class=\\\"datepicker-inner\\\">\\r\\n <div class=\\\"datepicker-body\\\">\\r\\n <div class=\\\"datepicker-ctrl\\\">\\r\\n <span class=\\\"datepicker-preBtn glyphicon glyphicon-chevron-left\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextDecadeClick(0)\\\"></span>\\r\\n <span class=\\\"datepicker-nextBtn glyphicon glyphicon-chevron-right\\\" aria-hidden=\\\"true\\\" @click=\\\"preNextDecadeClick(1)\\\"></span>\\r\\n <p>{{stringifyDecadeHeader(currDate)}}</p>\\r\\n </div>\\r\\n <div class=\\\"datepicker-monthRange decadeRange\\\">\\r\\n <template v-for=\\\"decade in decadeRange\\\">\\r\\n <span :class=\\\"{'datepicker-dateRange-item-active':\\r\\n parse(this.value).getFullYear() === decade.text}\\\"\\r\\n @click.stop=\\\"yearSelect(decade.text)\\\"\\r\\n >{{decade.text}}</span>\\r\\n </template>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\";\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(128)\n\tmodule.exports = __webpack_require__(130)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(131)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Dropdown.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Dropdown.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-628ea2dc&file=Dropdown.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Dropdown.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Dropdown.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-628ea2dc&file=Dropdown.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Dropdown.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(129);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-628ea2dc&file=Dropdown.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Dropdown.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-628ea2dc&file=Dropdown.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Dropdown.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 129 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".secret[_v-628ea2dc] {\\r\\n position: absolute;\\r\\n clip: rect(0 0 0 0);\\r\\n overflow: hidden;\\r\\n margin: -1px;\\r\\n height: 1px;\\r\\n width: 1px;\\r\\n padding: 0;\\r\\n border: 0;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <li v-if=\"isLi\" v-el:dropdown :class=\"classes\">\n\t\n\t// <slot name=\"button\">\n\t\n\t// <a class=\"dropdown-toggle\" role=\"button\" :class=\"{disabled: disabled}\" @keyup.esc=\"show = false\">\n\t\n\t// {{ text }}\n\t\n\t// <span class=\"caret\"></span>\n\t\n\t// </a>\n\t\n\t// </slot>\n\t\n\t// <slot name=\"dropdown-menu\">\n\t\n\t// <ul v-else class=\"dropdown-menu\">\n\t\n\t// <slot></slot>\n\t\n\t// </ul>\n\t\n\t// </slot>\n\t\n\t// </li>\n\t\n\t// <div v-else v-el:dropdown :class=\"classes\">\n\t\n\t// <slot name=\"before\"></slot>\n\t\n\t// <slot name=\"button\">\n\t\n\t// <button type=\"button\" class=\"btn btn-{{type}} dropdown-toggle\" @keyup.esc=\"show = false\" :disabled=\"disabled\">\n\t\n\t// {{ text }}\n\t\n\t// <span class=\"caret\"></span>\n\t\n\t// </button>\n\t\n\t// </slot>\n\t\n\t// <slot name=\"dropdown-menu\">\n\t\n\t// <ul class=\"dropdown-menu\">\n\t\n\t// <slot></slot>\n\t\n\t// </ul>\n\t\n\t// </slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t show: {\n\t twoWay: true,\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t 'class': null,\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t text: {\n\t type: String,\n\t default: null\n\t },\n\t type: {\n\t type: String,\n\t default: 'default'\n\t }\n\t },\n\t computed: {\n\t classes: function classes() {\n\t return [{ open: this.show, disabled: this.disabled }, this.class, this.isLi ? 'dropdown' : this.inInput ? 'input-group-btn' : 'btn-group'];\n\t },\n\t inInput: function inInput() {\n\t return this.$parent._input;\n\t },\n\t isLi: function isLi() {\n\t return this.$parent._navbar || this.$parent.menu || this.$parent._tabset;\n\t },\n\t menu: function menu() {\n\t return !this.$parent || this.$parent.navbar;\n\t },\n\t submenu: function submenu() {\n\t return this.$parent && (this.$parent.menu || this.$parent.submenu);\n\t },\n\t slots: function slots() {\n\t return this._slotContents;\n\t }\n\t },\n\t methods: {\n\t blur: function blur() {\n\t var _this = this;\n\t\n\t this.unblur();\n\t this._hide = setTimeout(function () {\n\t _this._hide = null;\n\t _this.show = false;\n\t }, 100);\n\t },\n\t unblur: function unblur() {\n\t if (this._hide) {\n\t clearTimeout(this._hide);\n\t this._hide = null;\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t var _this2 = this;\n\t\n\t var $el = (0, _NodeList2.default)(this.$els.dropdown);\n\t $el.onBlur(function (e) {\n\t _this2.show = false;\n\t });\n\t $el.findChildren('a,button.dropdown-toggle').on('click', function (e) {\n\t e.preventDefault();\n\t if (_this2.disabled) {\n\t return false;\n\t }\n\t _this2.show = !_this2.show;\n\t return false;\n\t });\n\t $el.findChildren('ul').on('click', 'li>a', function (e) {\n\t _this2.show = false;\n\t });\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t var $el = (0, _NodeList2.default)(this.$els.dropdown);\n\t $el.offBlur();\n\t $el.findChildren('a,button').off();\n\t $el.findChildren('ul').off();\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// .secret {\n\t\n\t// position: absolute;\n\t\n\t// clip: rect(0 0 0 0);\n\t\n\t// overflow: hidden;\n\t\n\t// margin: -1px;\n\t\n\t// height: 1px;\n\t\n\t// width: 1px;\n\t\n\t// padding: 0;\n\t\n\t// border: 0;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 131 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<li v-if=\\\"isLi\\\" v-el:dropdown=\\\"\\\" :class=\\\"classes\\\" _v-628ea2dc=\\\"\\\">\\n <slot name=\\\"button\\\" _v-628ea2dc=\\\"\\\">\\n <a class=\\\"dropdown-toggle\\\" role=\\\"button\\\" :class=\\\"{disabled: disabled}\\\" @keyup.esc=\\\"show = false\\\" _v-628ea2dc=\\\"\\\">\\n {{ text }}\\n <span class=\\\"caret\\\" _v-628ea2dc=\\\"\\\"></span>\\n </a>\\n </slot>\\n <slot name=\\\"dropdown-menu\\\" _v-628ea2dc=\\\"\\\">\\n <ul v-else=\\\"\\\" class=\\\"dropdown-menu\\\" _v-628ea2dc=\\\"\\\">\\n <slot _v-628ea2dc=\\\"\\\"></slot>\\n </ul>\\n </slot>\\n </li>\\n <div v-else=\\\"\\\" v-el:dropdown=\\\"\\\" :class=\\\"classes\\\" _v-628ea2dc=\\\"\\\">\\n <slot name=\\\"before\\\" _v-628ea2dc=\\\"\\\"></slot>\\n <slot name=\\\"button\\\" _v-628ea2dc=\\\"\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-{{type}} dropdown-toggle\\\" @keyup.esc=\\\"show = false\\\" :disabled=\\\"disabled\\\" _v-628ea2dc=\\\"\\\">\\n {{ text }}\\n <span class=\\\"caret\\\" _v-628ea2dc=\\\"\\\"></span>\\n </button>\\n </slot>\\n <slot name=\\\"dropdown-menu\\\" _v-628ea2dc=\\\"\\\">\\n <ul class=\\\"dropdown-menu\\\" _v-628ea2dc=\\\"\\\">\\n <slot _v-628ea2dc=\\\"\\\"></slot>\\n </ul>\\n </slot>\\n </div>\";\n\n/***/ },\n/* 132 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(133)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(134)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./FormGroup.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./FormGroup.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./FormGroup.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./FormGroup.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./FormGroup.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <slot></slot>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t valid: {\n\t twoWay: true,\n\t default: null\n\t },\n\t enterSubmit: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t icon: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t lang: {\n\t type: String,\n\t default: navigator.language\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t children: [],\n\t timeout: null\n\t };\n\t },\n\t\n\t watch: {\n\t valid: function valid(val, old) {\n\t if (val === old) {\n\t return;\n\t }\n\t this._parent && this._parent.validate();\n\t }\n\t },\n\t methods: {\n\t focus: function focus() {\n\t this.$els.input.focus();\n\t },\n\t validate: function validate() {\n\t var valid = true;\n\t this.children.some(function (el) {\n\t var v = el.validate ? el.validate() : el.valid !== undefined ? el.valid : el.required && !~['', null, undefined].indexOf(el.value);\n\t if (!v) valid = false;\n\t return !valid;\n\t });\n\t this.valid = valid;\n\t return valid === true;\n\t }\n\t },\n\t created: function created() {\n\t this._formGroup = true;\n\t var parent = this.$parent;\n\t while (parent && !parent._formGroup) {\n\t parent = parent.$parent;\n\t }\n\t if (parent && parent._formGroup) {\n\t parent.children.push(this);\n\t this._parent = parent;\n\t }\n\t },\n\t ready: function ready() {\n\t this.validate();\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t if (this._parent) this._parent.children.$remove(this);\n\t }\n\t};\n\t// </script>\n\n/***/ },\n/* 134 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<slot></slot>\";\n\n/***/ },\n/* 135 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(136)\n\tmodule.exports = __webpack_require__(138)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(139)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Input.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Input.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-461124e2&file=Input.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Input.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Input.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-461124e2&file=Input.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Input.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(137);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-461124e2&file=Input.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Input.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-461124e2&file=Input.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Input.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".form-group[_v-461124e2] {\\r\\n position: relative;\\r\\n}\\r\\nlabel~.close[_v-461124e2] {\\r\\n top: 25px;\\r\\n}\\r\\n.input-group>.icon[_v-461124e2] {\\r\\n position: relative;\\r\\n display: table-cell;\\r\\n width:0;\\r\\n z-index: 3;\\r\\n}\\r\\n.close[_v-461124e2] {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n right: 0;\\r\\n z-index: 2;\\r\\n display: block;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n}\\r\\n.has-feedback .close[_v-461124e2] {\\r\\n right: 20px;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 138 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div class=\"form-group\" :class=\"{validate:canValidate,'has-feedback':icon,'has-error':canValidate&&valid===false,'has-success':canValidate&&valid}\">\n\t\n\t// <slot name=\"label\"><label v-if=\"label\" class=\"control-label\" @click=\"focus\">{{label}}</label></slot>\n\t\n\t// <div v-if=\"slots.before||slots.after\" class=\"input-group\">\n\t\n\t// <slot name=\"before\"></slot>\n\t\n\t// <textarea v-if=\"type=='textarea'\" class=\"form-control\" v-el:input v-model=\"value\"\n\t\n\t// :cols=\"cols\"\n\t\n\t// :rows=\"rows\"\n\t\n\t// :name=\"name\"\n\t\n\t// :title=\"attr(title)\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :required=\"required\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// :maxlength=\"maxlength\"\n\t\n\t// :placeholder=\"placeholder\"\n\t\n\t// @blur=\"onblur\" @focus=\"onfocus\"\n\t\n\t// ></textarea>\n\t\n\t// <input v-else class=\"form-control\" v-el:input v-model=\"value\"\n\t\n\t// :name=\"name\"\n\t\n\t// :max=\"attr(max)\"\n\t\n\t// :min=\"attr(min)\"\n\t\n\t// :step=\"step\"\n\t\n\t// :type=\"type\"\n\t\n\t// :title=\"attr(title)\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :required=\"required\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// :maxlength=\"maxlength\"\n\t\n\t// :placeholder=\"placeholder\"\n\t\n\t// @keyup.enter=\"enterSubmit&&submit()\"\n\t\n\t// @blur=\"onblur\" @focus=\"onfocus\"\n\t\n\t// />\n\t\n\t// <div v-if=\"showClear && value\" :class=\"{icon:icon}\">\n\t\n\t// <span class=\"close\" @click=\"value = ''\">×</span>\n\t\n\t// </div>\n\t\n\t// <div v-if=\"icon\" class=\"icon\">\n\t\n\t// <span v-if=\"icon&&valid!==null\" :class=\"['form-control-feedback glyphicon','glyphicon-'+(valid?'ok':'remove')]\" aria-hidden=\"true\"></span>\n\t\n\t// </div>\n\t\n\t// <slot name=\"after\"></slot>\n\t\n\t// </div>\n\t\n\t// <template v-else>\n\t\n\t// <textarea v-if=\"type=='textarea'\" class=\"form-control\" v-el:input v-model=\"value\"\n\t\n\t// :cols=\"cols\"\n\t\n\t// :rows=\"rows\"\n\t\n\t// :name=\"name\"\n\t\n\t// :title=\"attr(title)\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :required=\"required\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// :maxlength=\"maxlength\"\n\t\n\t// :placeholder=\"placeholder\"\n\t\n\t// @blur=\"onblur\" @focus=\"onfocus\"\n\t\n\t// ></textarea>\n\t\n\t// <input v-else class=\"form-control\" v-el:input v-model=\"value\"\n\t\n\t// :name=\"name\"\n\t\n\t// :max=\"attr(max)\"\n\t\n\t// :min=\"attr(min)\"\n\t\n\t// :step=\"step\"\n\t\n\t// :type=\"type\"\n\t\n\t// :title=\"attr(title)\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :required=\"required\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// :maxlength=\"maxlength\"\n\t\n\t// :placeholder=\"placeholder\"\n\t\n\t// @keyup.enter=\"enterSubmit&&submit()\"\n\t\n\t// @blur=\"onblur\" @focus=\"onfocus\"\n\t\n\t// />\n\t\n\t// <span v-if=\"showClear && value\" class=\"close\" @click=\"value = ''\">×</span>\n\t\n\t// <span v-if=\"icon&&valid!==null\" :class=\"['form-control-feedback glyphicon','glyphicon-'+(valid?'ok':'remove')]\" aria-hidden=\"true\"></span>\n\t\n\t// </template>\n\t\n\t// <div v-if=\"showHelp\" class=\"help-block\" @click=\"focus\">{{help}}</div>\n\t\n\t// <div v-if=\"showError\" class=\"help-block with-errors\" @click=\"focus\">{{errorText}}</div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t value: {\n\t twoWay: true,\n\t default: null\n\t },\n\t match: {\n\t type: String,\n\t default: null\n\t },\n\t clearButton: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t enterSubmit: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t error: {\n\t type: String,\n\t default: null\n\t },\n\t help: {\n\t type: String,\n\t default: null\n\t },\n\t hideHelp: { // hide when have error\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t icon: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t label: {\n\t type: String,\n\t default: null\n\t },\n\t lang: {\n\t type: String,\n\t default: navigator.language\n\t },\n\t mask: null,\n\t maskDelay: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 100\n\t },\n\t max: {\n\t type: String,\n\t coerce: _utils.coerce.string,\n\t default: null\n\t },\n\t maxlength: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: null\n\t },\n\t min: {\n\t type: String,\n\t coerce: _utils.coerce.string,\n\t default: null\n\t },\n\t minlength: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 0\n\t },\n\t name: {\n\t type: String,\n\t default: null\n\t },\n\t pattern: {\n\t coerce: _utils.coerce.pattern,\n\t default: null\n\t },\n\t placeholder: {\n\t type: String,\n\t default: null\n\t },\n\t readonly: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t required: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t rows: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 3\n\t },\n\t step: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: null\n\t },\n\t type: {\n\t type: String,\n\t default: 'text'\n\t },\n\t validationDelay: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 250\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t valid: null,\n\t timeout: null\n\t };\n\t },\n\t\n\t computed: {\n\t canValidate: function canValidate() {\n\t return !this.disabled && !this.readonly && (this.required || this.pattern || this.nativeValidate || this.match !== null);\n\t },\n\t errorText: function errorText() {\n\t var value = this.value;\n\t var error = [this.error];\n\t if (!value && this.required) error.push('(' + this.text.required.toLowerCase() + ')');\n\t if (value && value.length < this.minlength) error.push('(' + this.text.minLength.toLowerCase() + ': ' + this.minlength + ')');\n\t return error.join(' ');\n\t },\n\t input: function input() {\n\t return this.$els.input;\n\t },\n\t nativeValidate: function nativeValidate() {\n\t return (this.input || {}).checkValidity && (~['url', 'email'].indexOf(this.type.toLowerCase()) || this.min || this.max);\n\t },\n\t showClear: function showClear() {\n\t // Disable the clear-button on Edge if is enabled. Edge has a native clear button.\n\t return (/\\bEdge\\//.test(window.navigator.userAgent) ? false : this.clearButton\n\t );\n\t },\n\t showError: function showError() {\n\t return this.error && this.valid === false;\n\t },\n\t showHelp: function showHelp() {\n\t return this.help && (!this.showError || !this.hideHelp);\n\t },\n\t slots: function slots() {\n\t return this._slotContents || {};\n\t },\n\t text: function text() {\n\t return (0, _utils.translations)(this.lang);\n\t },\n\t title: function title() {\n\t return this.errorText || this.help || '';\n\t }\n\t },\n\t watch: {\n\t match: function match(val) {\n\t this.eval();\n\t },\n\t valid: function valid(val, old) {\n\t if (val !== old) {\n\t this._parent && this._parent.validate();\n\t }\n\t },\n\t value: function value(val, old) {\n\t var _this = this;\n\t\n\t if (val !== old) {\n\t if (this.mask instanceof Function) {\n\t val = this.mask(val || '');\n\t if (this.value !== val) {\n\t if (this._timeout.mask) clearTimeout(this._timeout.mask);\n\t this._timeout.mask = setTimeout(function () {\n\t _this.value = val;\n\t _this.$els.input.value = val;\n\t }, this.maskDelay);\n\t }\n\t }\n\t this.eval();\n\t }\n\t }\n\t },\n\t methods: {\n\t attr: function attr(value) {\n\t return ~['', null, undefined].indexOf(value) || value instanceof Function ? undefined : value;\n\t },\n\t focus: function focus() {\n\t this.input.focus();\n\t },\n\t eval: function _eval() {\n\t var _this2 = this;\n\t\n\t if (this._timeout.eval) clearTimeout(this._timeout.eval);\n\t if (!this.canValidate) {\n\t this.valid = true;\n\t } else {\n\t this._timeout.eval = setTimeout(function () {\n\t _this2.valid = _this2.validate();\n\t _this2._timeout.eval = null;\n\t }, this.validationDelay);\n\t }\n\t },\n\t onblur: function onblur(e) {\n\t if (this.canValidate) {\n\t this.valid = this.validate();\n\t }\n\t this.$emit('blur', e);\n\t },\n\t onfocus: function onfocus(e) {\n\t this.$emit('focus', e);\n\t },\n\t submit: function submit() {\n\t if (this.$parent._formGroup) {\n\t return this.$parent.validate();\n\t }\n\t if (this.input.form) {\n\t var invalids = (0, _NodeList2.default)('.form-group.validate:not(.has-success)', this.input.form);\n\t if (invalids.length) {\n\t invalids.find('input,textarea,select')[0].focus();\n\t } else {\n\t this.input.form.submit();\n\t }\n\t }\n\t },\n\t validate: function validate() {\n\t if (!this.canValidate) {\n\t return true;\n\t }\n\t var value = (this.value || '').trim();\n\t if (!value) {\n\t return !this.required;\n\t }\n\t if (this.match !== null) {\n\t return this.match === value;\n\t }\n\t if (value.length < this.minlength) {\n\t return false;\n\t }\n\t if (this.nativeValidate && !this.input.checkValidity()) {\n\t return false;\n\t }\n\t if (this.pattern) {\n\t return this.pattern instanceof Function ? this.pattern(this.value) : this.pattern.test(this.value);\n\t }\n\t return true;\n\t }\n\t },\n\t created: function created() {\n\t this._input = true;\n\t this._timeout = {};\n\t var parent = this.$parent;\n\t while (parent && !parent._formGroup) {\n\t parent = parent.$parent;\n\t }\n\t if (parent && parent._formGroup) {\n\t this._parent = parent;\n\t }\n\t },\n\t ready: function ready() {\n\t var _this3 = this;\n\t\n\t this._parent && this._parent.children.push(this);\n\t (0, _NodeList2.default)(this.input).on('focus', function (e) {\n\t return _this3.$emit('focus', e);\n\t }).on('blur', function (e) {\n\t if (_this3.canValidate) {\n\t _this3.valid = _this3.validate();\n\t }\n\t _this3.$emit('blur', e);\n\t });\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._parent && this._parent.children.$remove(this);\n\t (0, _NodeList2.default)(this.input).off();\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// .form-group {\n\t\n\t// position: relative;\n\t\n\t// }\n\t\n\t// label~.close {\n\t\n\t// top: 25px;\n\t\n\t// }\n\t\n\t// .input-group>.icon {\n\t\n\t// position: relative;\n\t\n\t// display: table-cell;\n\t\n\t// width:0;\n\t\n\t// z-index: 3;\n\t\n\t// }\n\t\n\t// .close {\n\t\n\t// position: absolute;\n\t\n\t// top: 0;\n\t\n\t// right: 0;\n\t\n\t// z-index: 2;\n\t\n\t// display: block;\n\t\n\t// width: 34px;\n\t\n\t// height: 34px;\n\t\n\t// line-height: 34px;\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .has-feedback .close {\n\t\n\t// right: 20px;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 139 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"form-group\\\" :class=\\\"{validate:canValidate,'has-feedback':icon,'has-error':canValidate&&valid===false,'has-success':canValidate&&valid}\\\" _v-461124e2=\\\"\\\">\\n <slot name=\\\"label\\\" _v-461124e2=\\\"\\\"><label v-if=\\\"label\\\" class=\\\"control-label\\\" @click=\\\"focus\\\" _v-461124e2=\\\"\\\">{{label}}</label></slot>\\n <div v-if=\\\"slots.before||slots.after\\\" class=\\\"input-group\\\" _v-461124e2=\\\"\\\">\\n <slot name=\\\"before\\\" _v-461124e2=\\\"\\\"></slot>\\n <textarea v-if=\\\"type=='textarea'\\\" class=\\\"form-control\\\" v-el:input=\\\"\\\" v-model=\\\"value\\\" :cols=\\\"cols\\\" :rows=\\\"rows\\\" :name=\\\"name\\\" :title=\\\"attr(title)\\\" :readonly=\\\"readonly\\\" :required=\\\"required\\\" :disabled=\\\"disabled\\\" :maxlength=\\\"maxlength\\\" :placeholder=\\\"placeholder\\\" @blur=\\\"onblur\\\" @focus=\\\"onfocus\\\" _v-461124e2=\\\"\\\"></textarea>\\n <input v-else=\\\"\\\" class=\\\"form-control\\\" v-el:input=\\\"\\\" v-model=\\\"value\\\" :name=\\\"name\\\" :max=\\\"attr(max)\\\" :min=\\\"attr(min)\\\" :step=\\\"step\\\" :type=\\\"type\\\" :title=\\\"attr(title)\\\" :readonly=\\\"readonly\\\" :required=\\\"required\\\" :disabled=\\\"disabled\\\" :maxlength=\\\"maxlength\\\" :placeholder=\\\"placeholder\\\" @keyup.enter=\\\"enterSubmit&&submit()\\\" @blur=\\\"onblur\\\" @focus=\\\"onfocus\\\" _v-461124e2=\\\"\\\">\\n <div v-if=\\\"showClear && value\\\" :class=\\\"{icon:icon}\\\" _v-461124e2=\\\"\\\">\\n <span class=\\\"close\\\" @click=\\\"value = ''\\\" _v-461124e2=\\\"\\\">×</span>\\n </div>\\n <div v-if=\\\"icon\\\" class=\\\"icon\\\" _v-461124e2=\\\"\\\">\\n <span v-if=\\\"icon&&valid!==null\\\" :class=\\\"['form-control-feedback glyphicon','glyphicon-'+(valid?'ok':'remove')]\\\" aria-hidden=\\\"true\\\" _v-461124e2=\\\"\\\"></span>\\n </div>\\n <slot name=\\\"after\\\" _v-461124e2=\\\"\\\"></slot>\\n </div>\\n <template v-else=\\\"\\\" _v-461124e2=\\\"\\\">\\n <textarea v-if=\\\"type=='textarea'\\\" class=\\\"form-control\\\" v-el:input=\\\"\\\" v-model=\\\"value\\\" :cols=\\\"cols\\\" :rows=\\\"rows\\\" :name=\\\"name\\\" :title=\\\"attr(title)\\\" :readonly=\\\"readonly\\\" :required=\\\"required\\\" :disabled=\\\"disabled\\\" :maxlength=\\\"maxlength\\\" :placeholder=\\\"placeholder\\\" @blur=\\\"onblur\\\" @focus=\\\"onfocus\\\" _v-461124e2=\\\"\\\"></textarea>\\n <input v-else=\\\"\\\" class=\\\"form-control\\\" v-el:input=\\\"\\\" v-model=\\\"value\\\" :name=\\\"name\\\" :max=\\\"attr(max)\\\" :min=\\\"attr(min)\\\" :step=\\\"step\\\" :type=\\\"type\\\" :title=\\\"attr(title)\\\" :readonly=\\\"readonly\\\" :required=\\\"required\\\" :disabled=\\\"disabled\\\" :maxlength=\\\"maxlength\\\" :placeholder=\\\"placeholder\\\" @keyup.enter=\\\"enterSubmit&&submit()\\\" @blur=\\\"onblur\\\" @focus=\\\"onfocus\\\" _v-461124e2=\\\"\\\">\\n <span v-if=\\\"showClear && value\\\" class=\\\"close\\\" @click=\\\"value = ''\\\" _v-461124e2=\\\"\\\">×</span>\\n <span v-if=\\\"icon&&valid!==null\\\" :class=\\\"['form-control-feedback glyphicon','glyphicon-'+(valid?'ok':'remove')]\\\" aria-hidden=\\\"true\\\" _v-461124e2=\\\"\\\"></span>\\n </template>\\n <div v-if=\\\"showHelp\\\" class=\\\"help-block\\\" @click=\\\"focus\\\" _v-461124e2=\\\"\\\">{{help}}</div>\\n <div v-if=\\\"showError\\\" class=\\\"help-block with-errors\\\" @click=\\\"focus\\\" _v-461124e2=\\\"\\\">{{errorText}}</div>\\n </div>\";\n\n/***/ },\n/* 140 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(141)\n\tmodule.exports = __webpack_require__(143)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(148)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Modal.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Modal.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Modal.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Modal.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Modal.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 141 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(142);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-0ee4321c&file=Modal.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Modal.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-0ee4321c&file=Modal.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Modal.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".modal {\\r\\n -webkit-transition: all 0.3s ease;\\r\\n transition: all 0.3s ease;\\r\\n}\\r\\n.modal.in {\\r\\n background-color: rgba(0,0,0,0.5);\\r\\n}\\r\\n.modal.zoom .modal-dialog {\\r\\n -webkit-transform: scale(0.1);\\r\\n transform: scale(0.1);\\r\\n top: 300px;\\r\\n opacity: 0;\\r\\n -webkit-transition: all 0.3s;\\r\\n transition: all 0.3s;\\r\\n}\\r\\n.modal.zoom.in .modal-dialog {\\r\\n -webkit-transform: scale(1);\\r\\n transform: scale(1);\\r\\n -webkit-transform: translate3d(0, -300px, 0);\\r\\n transform: translate3d(0, -300px, 0);\\r\\n opacity: 1;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _isInteger = __webpack_require__(144);\n\t\n\tvar _isInteger2 = _interopRequireDefault(_isInteger);\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div role=\"dialog\"\n\t\n\t// v-bind:class=\"{\n\t\n\t// 'modal':true,\n\t\n\t// 'fade':effect === 'fade',\n\t\n\t// 'zoom':effect === 'zoom'\n\t\n\t// }\"\n\t\n\t// >\n\t\n\t// <div v-bind:class=\"{'modal-dialog':true,'modal-lg':large,'modal-sm':small}\" role=\"document\"\n\t\n\t// v-bind:style=\"{width: optionalWidth}\">\n\t\n\t// <div class=\"modal-content\">\n\t\n\t// <slot name=\"modal-header\">\n\t\n\t// <div class=\"modal-header\">\n\t\n\t// <button type=\"button\" class=\"close\" @click=\"close\"><span>×</span></button>\n\t\n\t// <h4 class=\"modal-title\">\n\t\n\t// <slot name=\"title\">\n\t\n\t// {{title}}\n\t\n\t// </slot>\n\t\n\t// </h4>\n\t\n\t// </div>\n\t\n\t// </slot>\n\t\n\t// <slot name=\"modal-body\">\n\t\n\t// <div class=\"modal-body\"></div>\n\t\n\t// </slot>\n\t\n\t// <slot name=\"modal-footer\">\n\t\n\t// <div class=\"modal-footer\">\n\t\n\t// <button type=\"button\" class=\"btn btn-default\" @click=\"close\">{{ cancelText }}</button>\n\t\n\t// <button type=\"button\" class=\"btn btn-primary\" @click=\"callback\">{{ okText }}</button>\n\t\n\t// </div>\n\t\n\t// </slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t okText: {\n\t type: String,\n\t default: 'Save changes'\n\t },\n\t cancelText: {\n\t type: String,\n\t default: 'Close'\n\t },\n\t title: {\n\t type: String,\n\t default: ''\n\t },\n\t show: {\n\t required: true,\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t twoWay: true\n\t },\n\t width: {\n\t default: null\n\t },\n\t callback: {\n\t type: Function,\n\t default: function _default() {}\n\t },\n\t effect: {\n\t type: String,\n\t default: null\n\t },\n\t backdrop: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t large: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t small: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t },\n\t computed: {\n\t optionalWidth: function optionalWidth() {\n\t if (this.width === null) {\n\t return null;\n\t } else if ((0, _isInteger2.default)(this.width)) {\n\t return this.width + 'px';\n\t }\n\t return this.width;\n\t }\n\t },\n\t watch: {\n\t show: function show(val) {\n\t var _this = this;\n\t\n\t var el = this.$el;\n\t var body = document.body;\n\t var scrollBarWidth = (0, _utils.getScrollBarWidth)();\n\t if (val) {\n\t (0, _NodeList2.default)(el).find('.modal-content').focus();\n\t el.style.display = 'block';\n\t setTimeout(function () {\n\t return (0, _NodeList2.default)(el).addClass('in');\n\t }, 0);\n\t (0, _NodeList2.default)(body).addClass('modal-open');\n\t if (scrollBarWidth !== 0) {\n\t body.style.paddingRight = scrollBarWidth + 'px';\n\t }\n\t if (this.backdrop) {\n\t (0, _NodeList2.default)(el).on('click', function (e) {\n\t if (e.target === el) _this.show = false;\n\t });\n\t }\n\t } else {\n\t body.style.paddingRight = null;\n\t (0, _NodeList2.default)(body).removeClass('modal-open');\n\t (0, _NodeList2.default)(el).removeClass('in').on('transitionend', function () {\n\t (0, _NodeList2.default)(el).off('click transitionend');\n\t el.style.display = 'none';\n\t });\n\t }\n\t }\n\t },\n\t methods: {\n\t close: function close() {\n\t this.show = false;\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t// <style>\n\t\n\t// .modal {\n\t\n\t// transition: all 0.3s ease;\n\t\n\t// }\n\t\n\t// .modal.in {\n\t\n\t// background-color: rgba(0,0,0,0.5);\n\t\n\t// }\n\t\n\t// .modal.zoom .modal-dialog {\n\t\n\t// -webkit-transform: scale(0.1);\n\t\n\t// -moz-transform: scale(0.1);\n\t\n\t// -ms-transform: scale(0.1);\n\t\n\t// transform: scale(0.1);\n\t\n\t// top: 300px;\n\t\n\t// opacity: 0;\n\t\n\t// -webkit-transition: all 0.3s;\n\t\n\t// -moz-transition: all 0.3s;\n\t\n\t// transition: all 0.3s;\n\t\n\t// }\n\t\n\t// .modal.zoom.in .modal-dialog {\n\t\n\t// -webkit-transform: scale(1);\n\t\n\t// -moz-transform: scale(1);\n\t\n\t// -ms-transform: scale(1);\n\t\n\t// transform: scale(1);\n\t\n\t// -webkit-transform: translate3d(0, -300px, 0);\n\t\n\t// transform: translate3d(0, -300px, 0);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 144 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(145), __esModule: true };\n\n/***/ },\n/* 145 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(146);\n\tmodule.exports = __webpack_require__(33).Number.isInteger;\n\n/***/ },\n/* 146 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar $export = __webpack_require__(31);\n\t\n\t$export($export.S, 'Number', {isInteger: __webpack_require__(147)});\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar isObject = __webpack_require__(39)\n\t , floor = Math.floor;\n\tmodule.exports = function isInteger(it){\n\t return !isObject(it) && isFinite(it) && floor(it) === it;\n\t};\n\n/***/ },\n/* 148 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div role=\\\"dialog\\\"\\r\\n v-bind:class=\\\"{\\r\\n 'modal':true,\\r\\n 'fade':effect === 'fade',\\r\\n 'zoom':effect === 'zoom'\\r\\n }\\\"\\r\\n >\\r\\n <div v-bind:class=\\\"{'modal-dialog':true,'modal-lg':large,'modal-sm':small}\\\" role=\\\"document\\\"\\r\\n v-bind:style=\\\"{width: optionalWidth}\\\">\\r\\n <div class=\\\"modal-content\\\">\\r\\n <slot name=\\\"modal-header\\\">\\r\\n <div class=\\\"modal-header\\\">\\r\\n <button type=\\\"button\\\" class=\\\"close\\\" @click=\\\"close\\\"><span>×</span></button>\\r\\n <h4 class=\\\"modal-title\\\">\\r\\n <slot name=\\\"title\\\">\\r\\n {{title}}\\r\\n </slot>\\r\\n </h4>\\r\\n </div>\\r\\n </slot>\\r\\n <slot name=\\\"modal-body\\\">\\r\\n <div class=\\\"modal-body\\\"></div>\\r\\n </slot>\\r\\n <slot name=\\\"modal-footer\\\">\\r\\n <div class=\\\"modal-footer\\\">\\r\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" @click=\\\"close\\\">{{ cancelText }}</button>\\r\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" @click=\\\"callback\\\">{{ okText }}</button>\\r\\n </div>\\r\\n </slot>\\r\\n </div>\\r\\n </div>\\r\\n </div>\";\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(150)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(151)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Navbar.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Navbar.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Navbar.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Navbar.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Navbar.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t props: {\n\t type: {\n\t type: String,\n\t default: 'default'\n\t },\n\t placement: {\n\t type: String,\n\t default: ''\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t id: 'bs-example-navbar-collapse-1',\n\t collapsed: true,\n\t styles: {}\n\t };\n\t },\n\t\n\t computed: {\n\t slots: function slots() {\n\t return this._slotContents;\n\t }\n\t },\n\t methods: {\n\t toggleCollapse: function toggleCollapse(e) {\n\t e && e.preventDefault();\n\t this.collapsed = !this.collapsed;\n\t }\n\t },\n\t created: function created() {\n\t this._navbar = true;\n\t },\n\t ready: function ready() {\n\t var _this = this;\n\t\n\t var $dropdown = (0, _NodeList2.default)('.dropdown>[data-toggle=\"dropdown\"]', this.$el).parent();\n\t $dropdown.on('click', '.dropdown-toggle', function (e) {\n\t e.preventDefault();\n\t $dropdown.each(function (content) {\n\t if (content.contains(e.target)) content.classList.toggle('open');\n\t });\n\t }).on('click', '.dropdown-menu>li>a', function (e) {\n\t $dropdown.each(function (content) {\n\t if (content.contains(e.target)) content.classList.remove('open');\n\t });\n\t }).onBlur(function (e) {\n\t $dropdown.each(function (content) {\n\t if (!content.contains(e.target)) content.classList.remove('open');\n\t });\n\t });\n\t (0, _NodeList2.default)(this.$el).on('click touchstart', 'li:not(.dropdown)>a', function (e) {\n\t setTimeout(function () {\n\t _this.collapsed = true;\n\t }, 200);\n\t }).onBlur(function (e) {\n\t if (!_this.$el.contains(e.target)) {\n\t _this.collapsed = true;\n\t }\n\t });\n\t var height = this.$el.offsetHeight;\n\t if (this.placement === 'top') {\n\t document.body.style.paddingTop = height + 'px';\n\t }\n\t if (this.placement === 'bottom') {\n\t document.body.style.paddingBottom = height + 'px';\n\t }\n\t if (this.slots.collapse) (0, _NodeList2.default)('[data-toggle=\"collapse\"]', this.$el).on('click', function (e) {\n\t return _this.toggleCollapse(e);\n\t });\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t (0, _NodeList2.default)('.dropdown', this.$el).off('click').offBlur();\n\t if (this.slots.collapse) (0, _NodeList2.default)('[data-toggle=\"collapse\"]', this.$el).off('click');\n\t }\n\t};\n\t// </script>\n\t// <template>\n\t\n\t// <nav v-el:navbar :class=\"['navbar',{\n\t\n\t// 'navbar-inverse':(type == 'inverse'),\n\t\n\t// 'navbar-default':(type == 'default'),\n\t\n\t// 'navbar-fixed-top':(placement === 'top'),\n\t\n\t// 'navbar-fixed-bottom':(placement === 'bottom'),\n\t\n\t// 'navbar-static-top':(placement === 'static')\n\t\n\t// }]\">\n\t\n\t// <div class=\"container-fluid\">\n\t\n\t// <div class=\"navbar-header\">\n\t\n\t// <button v-if=\"!slots.collapse\" type=\"button\" class=\"navbar-toggle collapsed\" aria-expanded=\"false\" @click=\"toggleCollapse\">\n\t\n\t// <span class=\"sr-only\">Toggle navigation</span>\n\t\n\t// <span class=\"icon-bar\"></span>\n\t\n\t// <span class=\"icon-bar\"></span>\n\t\n\t// <span class=\"icon-bar\"></span>\n\t\n\t// </button>\n\t\n\t// <slot name=\"collapse\"></slot>\n\t\n\t// <slot name=\"brand\"></slot>\n\t\n\t// </div>\n\t\n\t// <div :class=\"['navbar-collapse',{collapse:collapsed}]\">\n\t\n\t// <ul class=\"nav navbar-nav\">\n\t\n\t// <slot></slot>\n\t\n\t// </ul>\n\t\n\t// <ul v-if=\"slots.right\" class=\"nav navbar-nav navbar-right\">\n\t\n\t// <slot name=\"right\"></slot>\n\t\n\t// </ul>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </nav>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 151 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<nav v-el:navbar :class=\\\"['navbar',{\\r\\n 'navbar-inverse':(type == 'inverse'),\\r\\n 'navbar-default':(type == 'default'),\\r\\n 'navbar-fixed-top':(placement === 'top'),\\r\\n 'navbar-fixed-bottom':(placement === 'bottom'),\\r\\n 'navbar-static-top':(placement === 'static')\\r\\n }]\\\">\\r\\n <div class=\\\"container-fluid\\\">\\r\\n <div class=\\\"navbar-header\\\">\\r\\n <button v-if=\\\"!slots.collapse\\\" type=\\\"button\\\" class=\\\"navbar-toggle collapsed\\\" aria-expanded=\\\"false\\\" @click=\\\"toggleCollapse\\\">\\r\\n <span class=\\\"sr-only\\\">Toggle navigation</span>\\r\\n <span class=\\\"icon-bar\\\"></span>\\r\\n <span class=\\\"icon-bar\\\"></span>\\r\\n <span class=\\\"icon-bar\\\"></span>\\r\\n </button>\\r\\n <slot name=\\\"collapse\\\"></slot>\\r\\n <slot name=\\\"brand\\\"></slot>\\r\\n </div>\\r\\n <div :class=\\\"['navbar-collapse',{collapse:collapsed}]\\\">\\r\\n <ul class=\\\"nav navbar-nav\\\">\\r\\n <slot></slot>\\r\\n </ul>\\r\\n <ul v-if=\\\"slots.right\\\" class=\\\"nav navbar-nav navbar-right\\\">\\r\\n <slot name=\\\"right\\\"></slot>\\r\\n </ul>\\r\\n </div>\\r\\n </div>\\r\\n </nav>\";\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(153)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(154)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Option.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Option.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Option.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Option.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Option.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 153 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t// <template><li v-el:v v-if=\"loading\"><slot></slot></li></template>\n\t\n\t// <script>\n\texports.default = {\n\t props: { value: null },\n\t data: function data() {\n\t return { loading: true };\n\t },\n\t ready: function ready() {\n\t if (this.$parent._select) {\n\t if (!this.$parent.options) {\n\t this.$parent.options = [];\n\t }\n\t var el = {};\n\t el[this.$parent.optionsLabel] = this.$els.v.innerHTML;\n\t el[this.$parent.optionsValue] = this.value;\n\t this.$parent.options.push(el);\n\t this.loading = false;\n\t } else {\n\t console.warn('options only work inside a select component');\n\t }\n\t }\n\t};\n\t// </script>\n\n/***/ },\n/* 154 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<li v-el:v v-if=\\\"loading\\\"><slot></slot></li>\";\n\n/***/ },\n/* 155 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(156)\n\tmodule.exports = __webpack_require__(158)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(159)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Panel.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Panel.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Panel.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Panel.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Panel.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 156 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(157);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-1edc72c9&file=Panel.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Panel.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-1edc72c9&file=Panel.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Panel.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 157 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".accordion-toggle {\\r\\n cursor: pointer;\\r\\n}\\r\\n.collapse-transition {\\r\\n -webkit-transition: max-height .5s ease;\\r\\n transition: max-height .5s ease;\\r\\n}\\r\\n.collapse-enter, .collapse-leave {\\r\\n max-height: 0!important;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t header: {\n\t type: String\n\t },\n\t isOpen: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: null\n\t },\n\t type: {\n\t type: String,\n\t default: null\n\t }\n\t },\n\t computed: {\n\t inAccordion: function inAccordion() {\n\t return this.$parent && this.$parent._isAccordion;\n\t },\n\t panelType: function panelType() {\n\t return 'panel panel-' + (this.type || this.$parent && this.$parent.type || 'default');\n\t }\n\t },\n\t methods: {\n\t toggle: function toggle() {\n\t this.isOpen = !this.isOpen;\n\t this.$dispatch('isOpenEvent', this);\n\t }\n\t },\n\t transitions: {\n\t collapse: {\n\t afterEnter: function afterEnter(el) {\n\t el.style.maxHeight = '';\n\t el.style.overflow = '';\n\t },\n\t beforeLeave: function beforeLeave(el) {\n\t el.style.maxHeight = el.offsetHeight + 'px';\n\t el.style.overflow = 'hidden';\n\t // Recalculate DOM before the class gets added.\n\t return el.offsetHeight;\n\t }\n\t }\n\t },\n\t created: function created() {\n\t if (this.isOpen === null) {\n\t this.isOpen = !this.inAccordion;\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .accordion-toggle {\n\t\n\t// cursor: pointer;\n\t\n\t// }\n\t\n\t// .collapse-transition {\n\t\n\t// transition: max-height .5s ease;\n\t\n\t// }\n\t\n\t// .collapse-enter, .collapse-leave {\n\t\n\t// max-height: 0!important;\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <div :class=\"panelType\">\n\t\n\t// <div :class=\"['panel-heading',{'accordion-toggle':inAccordion}]\" @click.prevent=\"inAccordion&&toggle()\">\n\t\n\t// <slot name=\"header\">\n\t\n\t// <h4 class=\"panel-title\">{{ header }}</h4>\n\t\n\t// </slot>\n\t\n\t// </div>\n\t\n\t// <div class=\"panel-collapse\"\n\t\n\t// v-el:panel\n\t\n\t// v-show=\"isOpen\"\n\t\n\t// transition=\"collapse\"\n\t\n\t// >\n\t\n\t// <div class=\"panel-body\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 159 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div :class=\\\"panelType\\\">\\r\\n <div :class=\\\"['panel-heading',{'accordion-toggle':inAccordion}]\\\" @click.prevent=\\\"inAccordion&&toggle()\\\">\\r\\n <slot name=\\\"header\\\">\\r\\n <h4 class=\\\"panel-title\\\">{{ header }}</h4>\\r\\n </slot>\\r\\n </div>\\r\\n <div class=\\\"panel-collapse\\\"\\r\\n v-el:panel\\r\\n v-show=\\\"isOpen\\\"\\r\\n transition=\\\"collapse\\\"\\r\\n >\\r\\n <div class=\\\"panel-body\\\">\\r\\n <slot></slot>\\r\\n </div>\\r\\n </div>\\r\\n </div>\";\n\n/***/ },\n/* 160 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(161)\n\tmodule.exports = __webpack_require__(163)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(165)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Popover.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Popover.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Popover.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Popover.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Popover.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 161 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(162);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-493790ac&file=Popover.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Popover.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-493790ac&file=Popover.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Popover.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".popover.top,\\r\\n.popover.left,\\r\\n.popover.right,\\r\\n.popover.bottom {\\r\\n display: block;\\r\\n}\\r\\n.scale-enter {\\r\\n -webkit-animation:scale-in 0.15s ease-in;\\r\\n animation:scale-in 0.15s ease-in;\\r\\n}\\r\\n.scale-leave {\\r\\n -webkit-animation:scale-out 0.15s ease-out;\\r\\n animation:scale-out 0.15s ease-out;\\r\\n}\\r\\n@-webkit-keyframes scale-in {\\r\\n 0% {\\r\\n -webkit-transform: scale(0);\\r\\n transform: scale(0);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: scale(1);\\r\\n transform: scale(1);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@keyframes scale-in {\\r\\n 0% {\\r\\n -webkit-transform: scale(0);\\r\\n transform: scale(0);\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: scale(1);\\r\\n transform: scale(1);\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes scale-out {\\r\\n 0% {\\r\\n -webkit-transform: scale(1);\\r\\n transform: scale(1);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: scale(0);\\r\\n transform: scale(0);\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n@keyframes scale-out {\\r\\n 0% {\\r\\n -webkit-transform: scale(1);\\r\\n transform: scale(1);\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: scale(0);\\r\\n transform: scale(0);\\r\\n opacity: 0;\\r\\n }\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _popoverMixins = __webpack_require__(164);\n\t\n\tvar _popoverMixins2 = _interopRequireDefault(_popoverMixins);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t mixins: [_popoverMixins2.default],\n\t props: {\n\t trigger: {\n\t type: String,\n\t default: 'click'\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .popover.top,\n\t\n\t// .popover.left,\n\t\n\t// .popover.right,\n\t\n\t// .popover.bottom {\n\t\n\t// display: block;\n\t\n\t// }\n\t\n\t// .scale-enter {\n\t\n\t// animation:scale-in 0.15s ease-in;\n\t\n\t// }\n\t\n\t// .scale-leave {\n\t\n\t// animation:scale-out 0.15s ease-out;\n\t\n\t// }\n\t\n\t// @keyframes scale-in {\n\t\n\t// 0% {\n\t\n\t// transform: scale(0);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: scale(1);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// @keyframes scale-out {\n\t\n\t// 0% {\n\t\n\t// transform: scale(1);\n\t\n\t// opacity: 1;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// transform: scale(0);\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <span v-el:trigger>\n\t\n\t// <slot></slot>\n\t\n\t// <div v-el:popover v-if=\"show\"\n\t\n\t// :class=\"['popover',placement]\"\n\t\n\t// :transition=\"effect\"\n\t\n\t// >\n\t\n\t// <div class=\"arrow\"></div>\n\t\n\t// <h3 class=\"popover-title\" v-if=\"title\">\n\t\n\t// <slot name=\"title\">{{title}}</slot>\n\t\n\t// </h3>\n\t\n\t// <div class=\"popover-content\">\n\t\n\t// <slot name=\"content\">{{{content}}}</slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </span>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t props: {\n\t trigger: {\n\t type: String\n\t },\n\t effect: {\n\t type: String,\n\t default: 'fade'\n\t },\n\t title: {\n\t type: String\n\t },\n\t content: {\n\t type: String\n\t },\n\t header: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: true\n\t },\n\t placement: {\n\t type: String,\n\t default: 'top'\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t position: {\n\t top: 0,\n\t left: 0\n\t },\n\t show: false\n\t };\n\t },\n\t\n\t methods: {\n\t toggle: function toggle(e) {\n\t var _this = this;\n\t\n\t if (e && this.trigger === 'contextmenu') e.preventDefault();\n\t if (!(this.show = !this.show)) {\n\t return;\n\t }\n\t setTimeout(function () {\n\t var popover = _this.$els.popover;\n\t var trigger = _this.$els.trigger.children[0];\n\t switch (_this.placement) {\n\t case 'top':\n\t _this.position.left = trigger.offsetLeft - popover.offsetWidth / 2 + trigger.offsetWidth / 2;\n\t _this.position.top = trigger.offsetTop - popover.offsetHeight;\n\t break;\n\t case 'left':\n\t _this.position.left = trigger.offsetLeft - popover.offsetWidth;\n\t _this.position.top = trigger.offsetTop + trigger.offsetHeight / 2 - popover.offsetHeight / 2;\n\t break;\n\t case 'right':\n\t _this.position.left = trigger.offsetLeft + trigger.offsetWidth;\n\t _this.position.top = trigger.offsetTop + trigger.offsetHeight / 2 - popover.offsetHeight / 2;\n\t break;\n\t case 'bottom':\n\t _this.position.left = trigger.offsetLeft - popover.offsetWidth / 2 + trigger.offsetWidth / 2;\n\t _this.position.top = trigger.offsetTop + trigger.offsetHeight;\n\t break;\n\t default:\n\t console.warn('Wrong placement prop');\n\t }\n\t popover.style.top = _this.position.top + 'px';\n\t popover.style.left = _this.position.left + 'px';\n\t }, 0);\n\t }\n\t },\n\t ready: function ready() {\n\t var trigger = this.$els.trigger;\n\t if (!trigger) return console.error('Could not find trigger v-el in your component that uses popoverMixin.');\n\t\n\t if (this.trigger === 'focus' && !~trigger.tabIndex) {\n\t trigger = (0, _NodeList2.default)('a,input,select,textarea,button', trigger);\n\t if (!trigger.length) {\n\t trigger = null;\n\t }\n\t }\n\t if (trigger) {\n\t var events = { contextmenu: 'contextmenu', hover: 'mouseleave mouseenter', focus: 'blur focus' };\n\t (0, _NodeList2.default)(trigger).on(events[this.trigger] || 'click', this.toggle);\n\t this._trigger = trigger;\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t if (this._trigger) (0, _NodeList2.default)(this._trigger).off();\n\t }\n\t};\n\n/***/ },\n/* 165 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<span v-el:trigger>\\r\\n <slot></slot>\\r\\n <div v-el:popover v-if=\\\"show\\\"\\r\\n :class=\\\"['popover',placement]\\\"\\r\\n :transition=\\\"effect\\\"\\r\\n >\\r\\n <div class=\\\"arrow\\\"></div>\\r\\n <h3 class=\\\"popover-title\\\" v-if=\\\"title\\\">\\r\\n <slot name=\\\"title\\\">{{title}}</slot>\\r\\n </h3>\\r\\n <div class=\\\"popover-content\\\">\\r\\n <slot name=\\\"content\\\">{{{content}}}</slot>\\r\\n </div>\\r\\n </div>\\r\\n </span>\";\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(167)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(168)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Progressbar.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Progressbar.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Progressbar.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Progressbar.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Progressbar.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 167 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t now: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t required: true\n\t },\n\t label: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t type: {\n\t type: String\n\t },\n\t striped: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t animated: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t }\n\t};\n\t// </script>\n\t// <template>\n\t\n\t// <div role=\"progressbar\" \n\t\n\t// :class=\"['progress-bar',{\n\t\n\t// 'progress-bar-success':type == 'success',\n\t\n\t// 'progress-bar-warning':type == 'warning',\n\t\n\t// 'progress-bar-info':type == 'info',\n\t\n\t// 'progress-bar-danger':type == 'danger',\n\t\n\t// 'progress-bar-striped':striped,\n\t\n\t// 'active':animated\n\t\n\t// }]\"\n\t\n\t// :style=\"{width: now + '%'}\"\n\t\n\t// >\n\t\n\t// {{label ? now + '%' : ''}}\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 168 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div role=\\\"progressbar\\\" \\r\\n :class=\\\"['progress-bar',{\\r\\n 'progress-bar-success':type == 'success',\\r\\n 'progress-bar-warning':type == 'warning',\\r\\n 'progress-bar-info':type == 'info',\\r\\n 'progress-bar-danger':type == 'danger',\\r\\n 'progress-bar-striped':striped,\\r\\n 'active':animated\\r\\n }]\\\"\\r\\n :style=\\\"{width: now + '%'}\\\"\\r\\n >\\r\\n {{label ? now + '%' : ''}}\\r\\n </div>\";\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(170)\n\tmodule.exports = __webpack_require__(172)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(173)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Radio.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Radio.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Radio.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Radio.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Radio.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 170 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(171);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-3d64a940&file=Radio.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Radio.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-3d64a940&file=Radio.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Radio.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".radio { position: relative; }\\r\\n.radio > label > input {\\r\\n position: absolute;\\r\\n margin: 0;\\r\\n padding: 0;\\r\\n opacity: 0;\\r\\n z-index: -1;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n.radio > label > .icon {\\r\\n position: absolute;\\r\\n top: .15rem;\\r\\n left: 0;\\r\\n display: block;\\r\\n width: 1.4rem;\\r\\n height: 1.4rem;\\r\\n text-align: center;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n border-radius: .7rem;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center center;\\r\\n background-size: 50% 50%;\\r\\n}\\r\\n.radio:not(.active) > label > .icon {\\r\\n background-color: #ddd;\\r\\n border: 1px solid #bbb;\\r\\n}\\r\\n.radio > label > input:focus ~ .icon {\\r\\n outline: 0;\\r\\n border: 1px solid #66afe9;\\r\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\r\\n}\\r\\n.radio.active > label > .icon {\\r\\n background-size: 1rem 1rem;\\r\\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI0IiBmaWxsPSIjZmZmIi8+PC9zdmc+);\\r\\n}\\r\\n.radio.active .btn-default { -webkit-filter: brightness(75%); filter: brightness(75%); }\\r\\n\\r\\n.radio.disabled > label > .icon,\\r\\n.radio.readonly > label > .icon,\\r\\n.btn.readonly {\\r\\n filter: alpha(opacity=65);\\r\\n box-shadow: none;\\r\\n opacity: .65;\\r\\n}\\r\\nlabel.btn > input[type=radio] {\\r\\n position: absolute;\\r\\n clip: rect(0,0,0,0);\\r\\n pointer-events: none;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 172 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t value: {\n\t default: true\n\t },\n\t checked: {\n\t twoWay: true\n\t },\n\t button: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t name: {\n\t type: String,\n\t default: null\n\t },\n\t readonly: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t type: {\n\t type: String,\n\t default: null\n\t }\n\t },\n\t computed: {\n\t active: function active() {\n\t return this.group ? this.$parent.value === this.value : this.value === this.checked;\n\t },\n\t buttonStyle: function buttonStyle() {\n\t return this.button || this.group && this.$parent.buttons;\n\t },\n\t group: function group() {\n\t return this.$parent && this.$parent._radioGroup;\n\t },\n\t typeColor: function typeColor() {\n\t return this.type || this.$parent && this.$parent.type || 'default';\n\t }\n\t },\n\t created: function created() {\n\t var parent = this.$parent;\n\t if (!parent) return;\n\t if (parent._btnGroup && !parent._checkboxGroup) {\n\t parent._radioGroup = true;\n\t }\n\t },\n\t ready: function ready() {\n\t if (!this.$parent._radioGroup) return;\n\t if (this.$parent.value) {\n\t this.checked = this.$parent.value === this.value;\n\t } else if (this.checked) {\n\t this.$parent.value = this.value;\n\t }\n\t },\n\t\n\t methods: {\n\t focus: function focus() {\n\t this.$els.input.focus();\n\t },\n\t toggle: function toggle() {\n\t if (this.disabled) {\n\t return;\n\t }\n\t this.focus();\n\t if (this.readonly) {\n\t return;\n\t }\n\t this.checked = this.value;\n\t if (this.group) {\n\t this.$parent.value = this.value;\n\t }\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scope>\n\t\n\t// .radio { position: relative; }\n\t\n\t// .radio > label > input {\n\t\n\t// position: absolute;\n\t\n\t// margin: 0;\n\t\n\t// padding: 0;\n\t\n\t// opacity: 0;\n\t\n\t// z-index: -1;\n\t\n\t// box-sizing: border-box;\n\t\n\t// }\n\t\n\t// .radio > label > .icon {\n\t\n\t// position: absolute;\n\t\n\t// top: .15rem;\n\t\n\t// left: 0;\n\t\n\t// display: block;\n\t\n\t// width: 1.4rem;\n\t\n\t// height: 1.4rem;\n\t\n\t// text-align: center;\n\t\n\t// user-select: none;\n\t\n\t// border-radius: .7rem;\n\t\n\t// background-repeat: no-repeat;\n\t\n\t// background-position: center center;\n\t\n\t// background-size: 50% 50%;\n\t\n\t// }\n\t\n\t// .radio:not(.active) > label > .icon {\n\t\n\t// background-color: #ddd;\n\t\n\t// border: 1px solid #bbb;\n\t\n\t// }\n\t\n\t// .radio > label > input:focus ~ .icon {\n\t\n\t// outline: 0;\n\t\n\t// border: 1px solid #66afe9;\n\t\n\t// box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\n\t\n\t// }\n\t\n\t// .radio.active > label > .icon {\n\t\n\t// background-size: 1rem 1rem;\n\t\n\t// background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI0IiBmaWxsPSIjZmZmIi8+PC9zdmc+);\n\t\n\t// }\n\t\n\t// .radio.active .btn-default { filter: brightness(75%); }\n\t\n\t\n\t// .radio.disabled > label > .icon,\n\t\n\t// .radio.readonly > label > .icon,\n\t\n\t// .btn.readonly {\n\t\n\t// filter: alpha(opacity=65);\n\t\n\t// box-shadow: none;\n\t\n\t// opacity: .65;\n\t\n\t// }\n\t\n\t// label.btn > input[type=radio] {\n\t\n\t// position: absolute;\n\t\n\t// clip: rect(0,0,0,0);\n\t\n\t// pointer-events: none;\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <label v-if=\"buttonStyle\" :class=\"['btn btn-'+typeColor,{active:active,disabled:disabled,readonly:readonly}]\" @click.prevent=\"toggle\">\n\t\n\t// <input type=\"radio\" autocomplete=\"off\"\n\t\n\t// v-el:input\n\t\n\t// v-show=\"!readonly\"\n\t\n\t// :checked=\"active\"\n\t\n\t// :value=\"value\"\n\t\n\t// :name=\"name\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// />\n\t\n\t// <slot></slot>\n\t\n\t// </label>\n\t\n\t// <div v-else :class=\"['radio',typeColor,{active:active,disabled:disabled,readonly:readonly}]\" @click.prevent=\"toggle\">\n\t\n\t// <label class=\"open\">\n\t\n\t// <input type=\"radio\" autocomplete=\"off\"\n\t\n\t// v-el:input\n\t\n\t// :checked=\"active\"\n\t\n\t// :value=\"value\"\n\t\n\t// :name=\"name\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// :disabled=\"disabled\"\n\t\n\t// />\n\t\n\t// <span class=\"icon dropdown-toggle\" :class=\"[active?'btn-'+typeColor:'',{bg:typeColor==='default'}]\"></span>\n\t\n\t// <span v-if=\"active&&typeColor==='default'\" class=\"icon\"></span>\n\t\n\t// <slot></slot>\n\t\n\t// </label>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 173 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<label v-if=\\\"buttonStyle\\\" :class=\\\"['btn btn-'+typeColor,{active:active,disabled:disabled,readonly:readonly}]\\\" @click.prevent=\\\"toggle\\\">\\r\\n <input type=\\\"radio\\\" autocomplete=\\\"off\\\"\\r\\n v-el:input\\r\\n v-show=\\\"!readonly\\\"\\r\\n :checked=\\\"active\\\"\\r\\n :value=\\\"value\\\"\\r\\n :name=\\\"name\\\"\\r\\n :readonly=\\\"readonly\\\"\\r\\n :disabled=\\\"disabled\\\"\\r\\n />\\r\\n <slot></slot>\\r\\n </label>\\r\\n <div v-else :class=\\\"['radio',typeColor,{active:active,disabled:disabled,readonly:readonly}]\\\" @click.prevent=\\\"toggle\\\">\\r\\n <label class=\\\"open\\\">\\r\\n <input type=\\\"radio\\\" autocomplete=\\\"off\\\"\\r\\n v-el:input\\r\\n :checked=\\\"active\\\"\\r\\n :value=\\\"value\\\"\\r\\n :name=\\\"name\\\"\\r\\n :readonly=\\\"readonly\\\"\\r\\n :disabled=\\\"disabled\\\"\\r\\n />\\r\\n <span class=\\\"icon dropdown-toggle\\\" :class=\\\"[active?'btn-'+typeColor:'',{bg:typeColor==='default'}]\\\"></span>\\r\\n <span v-if=\\\"active&&typeColor==='default'\\\" class=\\\"icon\\\"></span>\\r\\n <slot></slot>\\r\\n </label>\\r\\n </div>\";\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(175)\n\tmodule.exports = __webpack_require__(177)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(193)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Select.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Select.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-0f3bb707&file=Select.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Select.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Select.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-0f3bb707&file=Select.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Select.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 175 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(176);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-0f3bb707&file=Select.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Select.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-0f3bb707&file=Select.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Select.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 176 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"button.form-control.dropdown-toggle[_v-0f3bb707]{\\r\\n height: auto;\\r\\n padding-right: 24px;\\r\\n}\\r\\nbutton.form-control.dropdown-toggle[_v-0f3bb707]:after{\\r\\n content: ' ';\\r\\n position: absolute;\\r\\n right: 13px;\\r\\n top: 50%;\\r\\n margin: -1px 0 0;\\r\\n border-top: 4px dashed;\\r\\n border-top: 4px solid \\\\9;\\r\\n border-right: 4px solid transparent;\\r\\n border-left: 4px solid transparent;\\r\\n}\\r\\n.bs-searchbox[_v-0f3bb707] {\\r\\n position: relative;\\r\\n margin: 4px 8px;\\r\\n}\\r\\n.bs-searchbox .close[_v-0f3bb707] {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n right: 0;\\r\\n z-index: 2;\\r\\n display: block;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n}\\r\\n.bs-searchbox input[_v-0f3bb707]:focus,\\r\\n.secret:focus + button[_v-0f3bb707] {\\r\\n outline: 0;\\r\\n border-color: #66afe9 !important;\\r\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\r\\n}\\r\\n.secret[_v-0f3bb707] {\\r\\n border: 0;\\r\\n clip: rect(0 0 0 0);\\r\\n height: 1px;\\r\\n margin: -1px;\\r\\n overflow: hidden;\\r\\n padding: 0;\\r\\n position: absolute;\\r\\n width: 1px;\\r\\n}\\r\\nbutton>.close[_v-0f3bb707] { margin-left: 5px;}\\r\\n.notify.out[_v-0f3bb707] { position: relative; }\\r\\n.notify.in[_v-0f3bb707],\\r\\n.notify>div[_v-0f3bb707] {\\r\\n position: absolute;\\r\\n width: 96%;\\r\\n margin: 0 2%;\\r\\n min-height: 26px;\\r\\n padding: 3px 5px;\\r\\n background: #f5f5f5;\\r\\n border: 1px solid #e3e3e3;\\r\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\r\\n pointer-events: none;\\r\\n}\\r\\n.notify>div[_v-0f3bb707] {\\r\\n top: 5px;\\r\\n z-index: 1;\\r\\n}\\r\\n.notify.in[_v-0f3bb707] {\\r\\n opacity: .9;\\r\\n bottom: 5px;\\r\\n}\\r\\n.btn-group-justified .dropdown-toggle>span[_v-0f3bb707]:not(.close) {\\r\\n width: calc(100% - 18px);\\r\\n display: inline-block;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: -4px;\\r\\n}\\r\\n.btn-group-justified .dropdown-menu[_v-0f3bb707] { width: 100%; }\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _typeof2 = __webpack_require__(178);\n\t\n\tvar _typeof3 = _interopRequireDefault(_typeof2);\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _NodeList = __webpack_require__(27);\n\t\n\tvar _NodeList2 = _interopRequireDefault(_NodeList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div v-el:select :class=\"classes\">\n\t\n\t// <button type=\"button\" class=\"form-control dropdown-toggle\"\n\t\n\t// :disabled=\"disabled || !hasParent\"\n\t\n\t// :readonly=\"readonly\"\n\t\n\t// @click=\"toggle()\"\n\t\n\t// @keyup.esc=\"show = false\"\n\t\n\t// >\n\t\n\t// <span class=\"btn-content\" v-html=\"loading ? text.loading : showPlaceholder || selected\"></span>\n\t\n\t// <span v-if=\"clearButton&&values.length\" class=\"close\" @click=\"clear()\">×</span>\n\t\n\t// </button>\n\t\n\t// <select v-el:sel v-model=\"value\" v-show=\"show\" name=\"{{name}}\" class=\"secret\" :multiple=\"multiple\" :required=\"required\" :readonly=\"readonly\" :disabled=\"disabled\">\n\t\n\t// <option v-if=\"required\" value=\"\"></option>\n\t\n\t// <option v-for=\"option in options\" :value=\"option[optionsValue]||option\">{{ option[optionsLabel]||option }}</option>\n\t\n\t// </select>\n\t\n\t// <ul class=\"dropdown-menu\">\n\t\n\t// <template v-if=\"options.length\">\n\t\n\t// <li v-if=\"canSearch\" class=\"bs-searchbox\">\n\t\n\t// <input type=\"text\" placeholder=\"{{searchText||text.search}}\" class=\"form-control\" autocomplete=\"off\"\n\t\n\t// v-el:search\n\t\n\t// v-model=\"searchValue\"\n\t\n\t// @keyup.esc=\"show = false\"\n\t\n\t// />\n\t\n\t// <span v-show=\"searchValue\" class=\"close\" @click=\"clearSearch\">×</span>\n\t\n\t// </li>\n\t\n\t// <li v-if=\"required&&!clearButton\"><a @mousedown.prevent=\"clear() && blur()\">{{ placeholder || text.notSelected }}</a></li>\n\t\n\t// <li v-for=\"option in options | filterBy searchValue\" :id=\"option[optionsValue]||option\">\n\t\n\t// <a @mousedown.prevent=\"select(option[optionsValue],option)\">\n\t\n\t// <span v-html=\"option[optionsLabel]||option\"></span>\n\t\n\t// <span class=\"glyphicon glyphicon-ok check-mark\" v-show=\"isSelected(option[optionsValue])\"></span>\n\t\n\t// </a>\n\t\n\t// </li>\n\t\n\t// </template>\n\t\n\t// <slot></slot>\n\t\n\t// <div v-if=\"showNotify && !closeOnSelect\" class=\"notify in\" transition=\"fadein\">{{limitText}}</div>\n\t\n\t// </ul>\n\t\n\t// <div v-if=\"showNotify && closeOnSelect\" class=\"notify out\" transition=\"fadein\"><div>{{limitText}}</div></div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\tvar timeout = {};\n\texports.default = {\n\t props: {\n\t value: {\n\t twoWay: true\n\t },\n\t options: {\n\t type: Array,\n\t default: function _default() {\n\t return [];\n\t }\n\t },\n\t multiple: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t clearButton: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t closeOnSelect: { // only works when multiple\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t lang: {\n\t type: String,\n\t default: navigator.language\n\t },\n\t limit: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 1024\n\t },\n\t name: {\n\t type: String,\n\t default: null\n\t },\n\t optionsLabel: {\n\t type: String,\n\t default: 'label'\n\t },\n\t optionsValue: {\n\t type: String,\n\t default: 'value'\n\t },\n\t parent: {\n\t default: true\n\t },\n\t placeholder: {\n\t type: String,\n\t default: null\n\t },\n\t readonly: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: null\n\t },\n\t required: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: null\n\t },\n\t minSearch: {\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 0\n\t },\n\t search: { // Allow searching (only works when options are provided)\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t searchText: {\n\t type: String,\n\t default: null\n\t },\n\t url: {\n\t type: String,\n\t default: null\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t loading: null,\n\t searchValue: null,\n\t show: false,\n\t showNotify: false,\n\t valid: null\n\t };\n\t },\n\t\n\t computed: {\n\t selected: function selected() {\n\t var _this = this;\n\t\n\t if (this.options.length === 0) {\n\t return '';\n\t }\n\t var foundItems = [];\n\t this.values.forEach(function (item) {\n\t if (~['number', 'string'].indexOf(typeof item === 'undefined' ? 'undefined' : (0, _typeof3.default)(item))) {\n\t var option = null;\n\t if (_this.options.some(function (o) {\n\t if (o instanceof Object ? o[_this.optionsValue] === item : o === item) {\n\t option = o;\n\t return true;\n\t }\n\t })) {\n\t foundItems.push(option[_this.optionsLabel] || option);\n\t }\n\t }\n\t });\n\t return foundItems.join(', ');\n\t },\n\t classes: function classes() {\n\t return [{ open: this.show, disabled: this.disabled }, this.class, this.isLi ? 'dropdown' : this.inInput ? 'input-group-btn' : 'btn-group'];\n\t },\n\t inInput: function inInput() {\n\t return this.$parent._input;\n\t },\n\t isLi: function isLi() {\n\t return this.$parent._navbar || this.$parent.menu || this.$parent._tabset;\n\t },\n\t canSearch: function canSearch() {\n\t return this.minSearch ? this.options.length >= this.minSearch : this.search;\n\t },\n\t limitText: function limitText() {\n\t return this.text.limit.replace('{{limit}}', this.limit);\n\t },\n\t showPlaceholder: function showPlaceholder() {\n\t return this.values.length === 0 || !this.hasParent ? this.placeholder || this.text.notSelected : null;\n\t },\n\t text: function text() {\n\t return (0, _utils.translations)(this.lang);\n\t },\n\t hasParent: function hasParent() {\n\t return this.parent instanceof Array ? this.parent.length : this.parent;\n\t },\n\t values: function values() {\n\t return this.value instanceof Array ? this.value : this.value !== null && this.value !== undefined ? [this.value] : [];\n\t }\n\t },\n\t watch: {\n\t options: function options(_options) {\n\t var _this2 = this;\n\t\n\t var changed = false;\n\t if (_options instanceof Array && _options.length) {\n\t _options.map(function (el) {\n\t if (!(el instanceof Object)) {\n\t var obj = {};\n\t obj[_this2.optionsLabel] = el;\n\t obj[_this2.optionsValue] = el;\n\t changed = true;\n\t return obj;\n\t }\n\t return el;\n\t });\n\t }\n\t if (changed) {\n\t this.options = _options;\n\t }\n\t },\n\t show: function show(val) {\n\t if (val) {\n\t this.$els.sel.focus();\n\t this.$els.search && this.$els.search.focus();\n\t }\n\t },\n\t url: function url() {\n\t this.update();\n\t },\n\t value: function value(val) {\n\t var _this3 = this;\n\t\n\t this.$emit('change', val);\n\t this.$emit('selected', this.selected);\n\t if (this.value instanceof Array && val.length > this.limit) {\n\t this.showNotify = true;\n\t if (timeout.limit) clearTimeout(timeout.limit);\n\t timeout.limit = setTimeout(function () {\n\t timeout.limit = false;\n\t _this3.showNotify = false;\n\t }, 1500);\n\t }\n\t this.checkValue();\n\t this.valid = this.validate();\n\t },\n\t valid: function valid(val, old) {\n\t if (val === old) {\n\t return;\n\t }\n\t this._parent && this._parent.validate();\n\t }\n\t },\n\t methods: {\n\t blur: function blur() {\n\t this.show = false;\n\t },\n\t clear: function clear() {\n\t if (this.disabled || this.readonly) {\n\t return;\n\t }\n\t this.value = this.value instanceof Array ? [] : null;\n\t this.toggle();\n\t },\n\t clearSearch: function clearSearch() {\n\t this.searchValue = '';\n\t this.$els.search.focus();\n\t },\n\t checkValue: function checkValue() {\n\t if (this.multiple && !(this.value instanceof Array)) {\n\t this.value = this.value === null || this.value === undefined ? [] : [this.value];\n\t }\n\t if (!this.multiple && this.value instanceof Array) {\n\t this.value = this.value.length ? this.value.pop() : null;\n\t }\n\t if (this.limit < 1) {\n\t this.limit = 1;\n\t }\n\t if (this.values.length > this.limit) {\n\t this.value = this.value.slice(0, this.limit);\n\t }\n\t },\n\t isSelected: function isSelected(v) {\n\t return this.values.indexOf(v) > -1;\n\t },\n\t select: function select(v, alt) {\n\t if (this.value instanceof Array) {\n\t if (~this.value.indexOf(v)) {\n\t this.value.$remove(v);\n\t } else {\n\t this.value.push(v);\n\t }\n\t if (this.closeOnSelect) {\n\t this.toggle();\n\t }\n\t } else {\n\t this.value = !~['', null, undefined].indexOf(v) ? v : alt;\n\t this.toggle();\n\t }\n\t },\n\t toggle: function toggle() {\n\t this.show = !this.show;\n\t },\n\t update: function update() {\n\t var _this4 = this;\n\t\n\t if (!this.url) return;\n\t this.loading = true;\n\t (0, _utils.getJSON)(this.url).then(function (data) {\n\t var options = [];\n\t data.forEach(function (opc) {\n\t if (opc[_this4.optionsValue] !== undefined && opc[_this4.optionsLabel] !== undefined) options.push(opc);\n\t });\n\t _this4.options = options;\n\t if (!options.length) {\n\t _this4.value = _this4.value instanceof Array ? [] : null;\n\t }\n\t }).always(function () {\n\t _this4.loading = false;\n\t _this4.checkValue();\n\t });\n\t },\n\t validate: function validate() {\n\t return !this.required ? true : this.value instanceof Array ? this.value.length > 0 : this.value !== null;\n\t }\n\t },\n\t created: function created() {\n\t this._select = true;\n\t if (this.value === undefined || !this.parent) {\n\t this.value = null;\n\t }\n\t if (!this.multiple && this.value instanceof Array) {\n\t this.value = this.value.shift();\n\t }\n\t this.checkValue();\n\t if (this.url) this.update();\n\t var parent = this.$parent;\n\t while (parent && !parent._formGroup) {\n\t parent = parent.$parent;\n\t }\n\t if (parent && parent._formGroup) {\n\t parent.children.push(this);\n\t this._parent = parent;\n\t }\n\t },\n\t ready: function ready() {\n\t var _this5 = this;\n\t\n\t (0, _NodeList2.default)(this.$els.select).onBlur(function (e) {\n\t _this5.show = false;\n\t });\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t if (this._parent) this._parent.children.$remove(this);\n\t (0, _NodeList2.default)(this.$els.select).offBlur();\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// button.form-control.dropdown-toggle{\n\t\n\t// height: auto;\n\t\n\t// padding-right: 24px;\n\t\n\t// }\n\t\n\t// button.form-control.dropdown-toggle:after{\n\t\n\t// content: ' ';\n\t\n\t// position: absolute;\n\t\n\t// right: 13px;\n\t\n\t// top: 50%;\n\t\n\t// margin: -1px 0 0;\n\t\n\t// border-top: 4px dashed;\n\t\n\t// border-top: 4px solid \\9;\n\t\n\t// border-right: 4px solid transparent;\n\t\n\t// border-left: 4px solid transparent;\n\t\n\t// }\n\t\n\t// .bs-searchbox {\n\t\n\t// position: relative;\n\t\n\t// margin: 4px 8px;\n\t\n\t// }\n\t\n\t// .bs-searchbox .close {\n\t\n\t// position: absolute;\n\t\n\t// top: 0;\n\t\n\t// right: 0;\n\t\n\t// z-index: 2;\n\t\n\t// display: block;\n\t\n\t// width: 34px;\n\t\n\t// height: 34px;\n\t\n\t// line-height: 34px;\n\t\n\t// text-align: center;\n\t\n\t// }\n\t\n\t// .bs-searchbox input:focus,\n\t\n\t// .secret:focus + button {\n\t\n\t// outline: 0;\n\t\n\t// border-color: #66afe9 !important;\n\t\n\t// box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\n\t\n\t// }\n\t\n\t// .secret {\n\t\n\t// border: 0;\n\t\n\t// clip: rect(0 0 0 0);\n\t\n\t// height: 1px;\n\t\n\t// margin: -1px;\n\t\n\t// overflow: hidden;\n\t\n\t// padding: 0;\n\t\n\t// position: absolute;\n\t\n\t// width: 1px;\n\t\n\t// }\n\t\n\t// button>.close { margin-left: 5px;}\n\t\n\t// .notify.out { position: relative; }\n\t\n\t// .notify.in,\n\t\n\t// .notify>div {\n\t\n\t// position: absolute;\n\t\n\t// width: 96%;\n\t\n\t// margin: 0 2%;\n\t\n\t// min-height: 26px;\n\t\n\t// padding: 3px 5px;\n\t\n\t// background: #f5f5f5;\n\t\n\t// border: 1px solid #e3e3e3;\n\t\n\t// box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\n\t\n\t// pointer-events: none;\n\t\n\t// }\n\t\n\t// .notify>div {\n\t\n\t// top: 5px;\n\t\n\t// z-index: 1;\n\t\n\t// }\n\t\n\t// .notify.in {\n\t\n\t// opacity: .9;\n\t\n\t// bottom: 5px;\n\t\n\t// }\n\t\n\t// .btn-group-justified .dropdown-toggle>span:not(.close) {\n\t\n\t// width: calc(100% - 18px);\n\t\n\t// display: inline-block;\n\t\n\t// overflow: hidden;\n\t\n\t// white-space: nowrap;\n\t\n\t// text-overflow: ellipsis;\n\t\n\t// margin-bottom: -4px;\n\t\n\t// }\n\t\n\t// .btn-group-justified .dropdown-menu { width: 100%; }\n\t\n\t// </style>\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _iterator = __webpack_require__(46);\n\t\n\tvar _iterator2 = _interopRequireDefault(_iterator);\n\t\n\tvar _symbol = __webpack_require__(179);\n\t\n\tvar _symbol2 = _interopRequireDefault(_symbol);\n\t\n\tvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n\t return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n\t} : function (obj) {\n\t return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n\t};\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(180), __esModule: true };\n\n/***/ },\n/* 180 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(181);\n\t__webpack_require__(190);\n\t__webpack_require__(191);\n\t__webpack_require__(192);\n\tmodule.exports = __webpack_require__(33).Symbol;\n\n/***/ },\n/* 181 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// ECMAScript 6 symbols shim\n\tvar global = __webpack_require__(32)\n\t , has = __webpack_require__(55)\n\t , DESCRIPTORS = __webpack_require__(41)\n\t , $export = __webpack_require__(31)\n\t , redefine = __webpack_require__(54)\n\t , META = __webpack_require__(182).KEY\n\t , $fails = __webpack_require__(42)\n\t , shared = __webpack_require__(69)\n\t , setToStringTag = __webpack_require__(73)\n\t , uid = __webpack_require__(70)\n\t , wks = __webpack_require__(74)\n\t , wksExt = __webpack_require__(81)\n\t , wksDefine = __webpack_require__(183)\n\t , keyOf = __webpack_require__(184)\n\t , enumKeys = __webpack_require__(185)\n\t , isArray = __webpack_require__(188)\n\t , anObject = __webpack_require__(38)\n\t , toIObject = __webpack_require__(62)\n\t , toPrimitive = __webpack_require__(44)\n\t , createDesc = __webpack_require__(45)\n\t , _create = __webpack_require__(58)\n\t , gOPNExt = __webpack_require__(86)\n\t , $GOPD = __webpack_require__(189)\n\t , $DP = __webpack_require__(37)\n\t , $keys = __webpack_require__(60)\n\t , gOPD = $GOPD.f\n\t , dP = $DP.f\n\t , gOPN = gOPNExt.f\n\t , $Symbol = global.Symbol\n\t , $JSON = global.JSON\n\t , _stringify = $JSON && $JSON.stringify\n\t , PROTOTYPE = 'prototype'\n\t , HIDDEN = wks('_hidden')\n\t , TO_PRIMITIVE = wks('toPrimitive')\n\t , isEnum = {}.propertyIsEnumerable\n\t , SymbolRegistry = shared('symbol-registry')\n\t , AllSymbols = shared('symbols')\n\t , OPSymbols = shared('op-symbols')\n\t , ObjectProto = Object[PROTOTYPE]\n\t , USE_NATIVE = typeof $Symbol == 'function'\n\t , QObject = global.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\t\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n\t return _create(dP({}, 'a', {\n\t get: function(){ return dP(this, 'a', {value: 7}).a; }\n\t })).a != 7;\n\t}) ? function(it, key, D){\n\t var protoDesc = gOPD(ObjectProto, key);\n\t if(protoDesc)delete ObjectProto[key];\n\t dP(it, key, D);\n\t if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n\t} : dP;\n\t\n\tvar wrap = function(tag){\n\t var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n\t sym._k = tag;\n\t return sym;\n\t};\n\t\n\tvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n\t return typeof it == 'symbol';\n\t} : function(it){\n\t return it instanceof $Symbol;\n\t};\n\t\n\tvar $defineProperty = function defineProperty(it, key, D){\n\t if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n\t anObject(it);\n\t key = toPrimitive(key, true);\n\t anObject(D);\n\t if(has(AllSymbols, key)){\n\t if(!D.enumerable){\n\t if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n\t it[HIDDEN][key] = true;\n\t } else {\n\t if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n\t D = _create(D, {enumerable: createDesc(0, false)});\n\t } return setSymbolDesc(it, key, D);\n\t } return dP(it, key, D);\n\t};\n\tvar $defineProperties = function defineProperties(it, P){\n\t anObject(it);\n\t var keys = enumKeys(P = toIObject(P))\n\t , i = 0\n\t , l = keys.length\n\t , key;\n\t while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n\t return it;\n\t};\n\tvar $create = function create(it, P){\n\t return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n\t};\n\tvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n\t var E = isEnum.call(this, key = toPrimitive(key, true));\n\t if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n\t return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n\t};\n\tvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n\t it = toIObject(it);\n\t key = toPrimitive(key, true);\n\t if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n\t var D = gOPD(it, key);\n\t if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n\t return D;\n\t};\n\tvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n\t var names = gOPN(toIObject(it))\n\t , result = []\n\t , i = 0\n\t , key;\n\t while(names.length > i){\n\t if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n\t } return result;\n\t};\n\tvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n\t var IS_OP = it === ObjectProto\n\t , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n\t , result = []\n\t , i = 0\n\t , key;\n\t while(names.length > i){\n\t if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n\t } return result;\n\t};\n\t\n\t// 19.4.1.1 Symbol([description])\n\tif(!USE_NATIVE){\n\t $Symbol = function Symbol(){\n\t if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n\t var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n\t var $set = function(value){\n\t if(this === ObjectProto)$set.call(OPSymbols, value);\n\t if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n\t setSymbolDesc(this, tag, createDesc(1, value));\n\t };\n\t if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n\t return wrap(tag);\n\t };\n\t redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n\t return this._k;\n\t });\n\t\n\t $GOPD.f = $getOwnPropertyDescriptor;\n\t $DP.f = $defineProperty;\n\t __webpack_require__(87).f = gOPNExt.f = $getOwnPropertyNames;\n\t __webpack_require__(187).f = $propertyIsEnumerable;\n\t __webpack_require__(186).f = $getOwnPropertySymbols;\n\t\n\t if(DESCRIPTORS && !__webpack_require__(53)){\n\t redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n\t }\n\t\n\t wksExt.f = function(name){\n\t return wrap(wks(name));\n\t }\n\t}\n\t\n\t$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\t\n\tfor(var symbols = (\n\t // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n\t 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n\t).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\t\n\tfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\t\n\t$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n\t // 19.4.2.1 Symbol.for(key)\n\t 'for': function(key){\n\t return has(SymbolRegistry, key += '')\n\t ? SymbolRegistry[key]\n\t : SymbolRegistry[key] = $Symbol(key);\n\t },\n\t // 19.4.2.5 Symbol.keyFor(sym)\n\t keyFor: function keyFor(key){\n\t if(isSymbol(key))return keyOf(SymbolRegistry, key);\n\t throw TypeError(key + ' is not a symbol!');\n\t },\n\t useSetter: function(){ setter = true; },\n\t useSimple: function(){ setter = false; }\n\t});\n\t\n\t$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n\t // 19.1.2.2 Object.create(O [, Properties])\n\t create: $create,\n\t // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n\t defineProperty: $defineProperty,\n\t // 19.1.2.3 Object.defineProperties(O, Properties)\n\t defineProperties: $defineProperties,\n\t // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n\t getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n\t // 19.1.2.7 Object.getOwnPropertyNames(O)\n\t getOwnPropertyNames: $getOwnPropertyNames,\n\t // 19.1.2.8 Object.getOwnPropertySymbols(O)\n\t getOwnPropertySymbols: $getOwnPropertySymbols\n\t});\n\t\n\t// 24.3.2 JSON.stringify(value [, replacer [, space]])\n\t$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n\t var S = $Symbol();\n\t // MS Edge converts symbol values to JSON as {}\n\t // WebKit converts symbol values to JSON as null\n\t // V8 throws on boxed symbols\n\t return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n\t})), 'JSON', {\n\t stringify: function stringify(it){\n\t if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n\t var args = [it]\n\t , i = 1\n\t , replacer, $replacer;\n\t while(arguments.length > i)args.push(arguments[i++]);\n\t replacer = args[1];\n\t if(typeof replacer == 'function')$replacer = replacer;\n\t if($replacer || !isArray(replacer))replacer = function(key, value){\n\t if($replacer)value = $replacer.call(this, key, value);\n\t if(!isSymbol(value))return value;\n\t };\n\t args[1] = replacer;\n\t return _stringify.apply($JSON, args);\n\t }\n\t});\n\t\n\t// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n\t$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(36)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n\t// 19.4.3.5 Symbol.prototype[@@toStringTag]\n\tsetToStringTag($Symbol, 'Symbol');\n\t// 20.2.1.9 Math[@@toStringTag]\n\tsetToStringTag(Math, 'Math', true);\n\t// 24.3.3 JSON[@@toStringTag]\n\tsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ },\n/* 182 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar META = __webpack_require__(70)('meta')\n\t , isObject = __webpack_require__(39)\n\t , has = __webpack_require__(55)\n\t , setDesc = __webpack_require__(37).f\n\t , id = 0;\n\tvar isExtensible = Object.isExtensible || function(){\n\t return true;\n\t};\n\tvar FREEZE = !__webpack_require__(42)(function(){\n\t return isExtensible(Object.preventExtensions({}));\n\t});\n\tvar setMeta = function(it){\n\t setDesc(it, META, {value: {\n\t i: 'O' + ++id, // object ID\n\t w: {} // weak collections IDs\n\t }});\n\t};\n\tvar fastKey = function(it, create){\n\t // return primitive with prefix\n\t if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\t if(!has(it, META)){\n\t // can't set metadata to uncaught frozen object\n\t if(!isExtensible(it))return 'F';\n\t // not necessary to add metadata\n\t if(!create)return 'E';\n\t // add missing metadata\n\t setMeta(it);\n\t // return object ID\n\t } return it[META].i;\n\t};\n\tvar getWeak = function(it, create){\n\t if(!has(it, META)){\n\t // can't set metadata to uncaught frozen object\n\t if(!isExtensible(it))return true;\n\t // not necessary to add metadata\n\t if(!create)return false;\n\t // add missing metadata\n\t setMeta(it);\n\t // return hash weak collections IDs\n\t } return it[META].w;\n\t};\n\t// add metadata on freeze-family methods calling\n\tvar onFreeze = function(it){\n\t if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n\t return it;\n\t};\n\tvar meta = module.exports = {\n\t KEY: META,\n\t NEED: false,\n\t fastKey: fastKey,\n\t getWeak: getWeak,\n\t onFreeze: onFreeze\n\t};\n\n/***/ },\n/* 183 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(32)\n\t , core = __webpack_require__(33)\n\t , LIBRARY = __webpack_require__(53)\n\t , wksExt = __webpack_require__(81)\n\t , defineProperty = __webpack_require__(37).f;\n\tmodule.exports = function(name){\n\t var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n\t if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n\t};\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getKeys = __webpack_require__(60)\n\t , toIObject = __webpack_require__(62);\n\tmodule.exports = function(object, el){\n\t var O = toIObject(object)\n\t , keys = getKeys(O)\n\t , length = keys.length\n\t , index = 0\n\t , key;\n\t while(length > index)if(O[key = keys[index++]] === el)return key;\n\t};\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// all enumerable object keys, includes symbols\n\tvar getKeys = __webpack_require__(60)\n\t , gOPS = __webpack_require__(186)\n\t , pIE = __webpack_require__(187);\n\tmodule.exports = function(it){\n\t var result = getKeys(it)\n\t , getSymbols = gOPS.f;\n\t if(getSymbols){\n\t var symbols = getSymbols(it)\n\t , isEnum = pIE.f\n\t , i = 0\n\t , key;\n\t while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n\t } return result;\n\t};\n\n/***/ },\n/* 186 */\n/***/ function(module, exports) {\n\n\texports.f = Object.getOwnPropertySymbols;\n\n/***/ },\n/* 187 */\n/***/ function(module, exports) {\n\n\texports.f = {}.propertyIsEnumerable;\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.2.2 IsArray(argument)\n\tvar cof = __webpack_require__(64);\n\tmodule.exports = Array.isArray || function isArray(arg){\n\t return cof(arg) == 'Array';\n\t};\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pIE = __webpack_require__(187)\n\t , createDesc = __webpack_require__(45)\n\t , toIObject = __webpack_require__(62)\n\t , toPrimitive = __webpack_require__(44)\n\t , has = __webpack_require__(55)\n\t , IE8_DOM_DEFINE = __webpack_require__(40)\n\t , gOPD = Object.getOwnPropertyDescriptor;\n\t\n\texports.f = __webpack_require__(41) ? gOPD : function getOwnPropertyDescriptor(O, P){\n\t O = toIObject(O);\n\t P = toPrimitive(P, true);\n\t if(IE8_DOM_DEFINE)try {\n\t return gOPD(O, P);\n\t } catch(e){ /* empty */ }\n\t if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n\t};\n\n/***/ },\n/* 190 */\n/***/ function(module, exports) {\n\n\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(183)('asyncIterator');\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(183)('observable');\n\n/***/ },\n/* 193 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div v-el:select=\\\"\\\" :class=\\\"classes\\\" _v-0f3bb707=\\\"\\\">\\n <button type=\\\"button\\\" class=\\\"form-control dropdown-toggle\\\" :disabled=\\\"disabled || !hasParent\\\" :readonly=\\\"readonly\\\" @click=\\\"toggle()\\\" @keyup.esc=\\\"show = false\\\" _v-0f3bb707=\\\"\\\">\\n <span class=\\\"btn-content\\\" v-html=\\\"loading ? text.loading : showPlaceholder || selected\\\" _v-0f3bb707=\\\"\\\"></span>\\n <span v-if=\\\"clearButton&&values.length\\\" class=\\\"close\\\" @click=\\\"clear()\\\" _v-0f3bb707=\\\"\\\">×</span>\\n </button>\\n <select v-el:sel=\\\"\\\" v-model=\\\"value\\\" v-show=\\\"show\\\" name=\\\"{{name}}\\\" class=\\\"secret\\\" :multiple=\\\"multiple\\\" :required=\\\"required\\\" :readonly=\\\"readonly\\\" :disabled=\\\"disabled\\\" _v-0f3bb707=\\\"\\\">\\n <option v-if=\\\"required\\\" value=\\\"\\\" _v-0f3bb707=\\\"\\\"></option>\\n <option v-for=\\\"option in options\\\" :value=\\\"option[optionsValue]||option\\\" _v-0f3bb707=\\\"\\\">{{ option[optionsLabel]||option }}</option>\\n </select>\\n <ul class=\\\"dropdown-menu\\\" _v-0f3bb707=\\\"\\\">\\n <template v-if=\\\"options.length\\\" _v-0f3bb707=\\\"\\\">\\n <li v-if=\\\"canSearch\\\" class=\\\"bs-searchbox\\\" _v-0f3bb707=\\\"\\\">\\n <input type=\\\"text\\\" placeholder=\\\"{{searchText||text.search}}\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" v-el:search=\\\"\\\" v-model=\\\"searchValue\\\" @keyup.esc=\\\"show = false\\\" _v-0f3bb707=\\\"\\\">\\n <span v-show=\\\"searchValue\\\" class=\\\"close\\\" @click=\\\"clearSearch\\\" _v-0f3bb707=\\\"\\\">×</span>\\n </li>\\n <li v-if=\\\"required&&!clearButton\\\" _v-0f3bb707=\\\"\\\"><a @mousedown.prevent=\\\"clear() && blur()\\\" _v-0f3bb707=\\\"\\\">{{ placeholder || text.notSelected }}</a></li>\\n <li v-for=\\\"option in options | filterBy searchValue\\\" :id=\\\"option[optionsValue]||option\\\" _v-0f3bb707=\\\"\\\">\\n <a @mousedown.prevent=\\\"select(option[optionsValue],option)\\\" _v-0f3bb707=\\\"\\\">\\n <span v-html=\\\"option[optionsLabel]||option\\\" _v-0f3bb707=\\\"\\\"></span>\\n <span class=\\\"glyphicon glyphicon-ok check-mark\\\" v-show=\\\"isSelected(option[optionsValue])\\\" _v-0f3bb707=\\\"\\\"></span>\\n </a>\\n </li>\\n </template>\\n <slot _v-0f3bb707=\\\"\\\"></slot>\\n <div v-if=\\\"showNotify && !closeOnSelect\\\" class=\\\"notify in\\\" transition=\\\"fadein\\\" _v-0f3bb707=\\\"\\\">{{limitText}}</div>\\n </ul>\\n <div v-if=\\\"showNotify && closeOnSelect\\\" class=\\\"notify out\\\" transition=\\\"fadein\\\" _v-0f3bb707=\\\"\\\"><div _v-0f3bb707=\\\"\\\">{{limitText}}</div></div>\\n </div>\";\n\n/***/ },\n/* 194 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(195)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(196)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Slider.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Slider.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Slider.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Slider.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Slider.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 195 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t// <template>\n\t\n\t// <div class=\"item\">\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t data: function data() {\n\t return {\n\t index: 0,\n\t show: false\n\t };\n\t },\n\t\n\t computed: {\n\t show: function show() {\n\t return this.$parent.index === this.index;\n\t }\n\t },\n\t ready: function ready() {\n\t for (var c in this.$parent.$children) {\n\t if (this.$parent.$children[c] === this) {\n\t this.index = parseInt(c, 10);\n\t break;\n\t }\n\t }\n\t //this.index = [...this.$el.parentNode.children].indexOf(this.$el)\n\t this.$parent.indicator.push(this.index);\n\t if (this.index === 0) {\n\t this.$el.classList.add('active');\n\t }\n\t }\n\t};\n\t// </script>\n\n/***/ },\n/* 196 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div class=\\\"item\\\">\\r\\n <slot></slot>\\r\\n </div>\";\n\n/***/ },\n/* 197 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(198)\n\tmodule.exports = __webpack_require__(200)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(201)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Spinner.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Spinner.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Spinner.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Spinner.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Spinner.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 198 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(199);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7169b11e&file=Spinner.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Spinner.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7169b11e&file=Spinner.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Spinner.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 199 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@-webkit-keyframes spin {\\r\\n 100% {\\r\\n -webkit-transform: rotate(360deg);\\r\\n transform: rotate(360deg);\\r\\n }\\r\\n}\\r\\n@keyframes spin {\\r\\n 100% {\\r\\n -webkit-transform: rotate(360deg);\\r\\n transform: rotate(360deg);\\r\\n }\\r\\n}\\r\\n.spinner-gritcode {\\r\\n top: 0;\\r\\n left: 0;\\r\\n bottom: 0;\\r\\n right: 0;\\r\\n z-index: 9998;\\r\\n position: absolute;\\r\\n width: 100%;\\r\\n text-align: center;\\r\\n background: rgba(255, 255, 255, 0.9);\\r\\n}\\r\\n.spinner-gritcode.spinner-fixed {\\r\\n position: fixed;\\r\\n}\\r\\n.spinner-gritcode .spinner-wrapper {\\r\\n position: absolute;\\r\\n top: 50%;\\r\\n left: 50%;\\r\\n -webkit-transform: translate(-50%, -50%);\\r\\n transform: translate(-50%, -50%);\\r\\n -ms-transform: translate(-50%, -50%);\\r\\n}\\r\\n.spinner-gritcode .spinner-circle {\\r\\n position: relative;\\r\\n border: 4px solid #ccc;\\r\\n border-right-color: #337ab7;\\r\\n border-radius: 50%;\\r\\n display: inline-block;\\r\\n -webkit-animation: spin 0.6s linear;\\r\\n animation: spin 0.6s linear;\\r\\n -webkit-animation-iteration-count: infinite;\\r\\n animation-iteration-count: infinite;\\r\\n width: 3em;\\r\\n height: 3em;\\r\\n z-index: 2;\\r\\n}\\r\\n.spinner-gritcode .spinner-text {\\r\\n position: relative;\\r\\n text-align: center;\\r\\n margin-top: 0.5em;\\r\\n z-index: 2;\\r\\n width: 100%;\\r\\n font-size: 95%;\\r\\n color: #337ab7;\\r\\n}\\r\\n.spinner-gritcode.spinner-sm .spinner-circle {\\r\\n width: 1.5em;\\r\\n height: 1.5em;\\r\\n}\\r\\n.spinner-gritcode.spinner-md .spinner-circle {\\r\\n width: 2em;\\r\\n height: 2em;\\r\\n}\\r\\n.spinner-gritcode.spinner-lg .spinner-circle {\\r\\n width: 2.5em;\\r\\n height: 2.5em;\\r\\n}\\r\\n.spinner-gritcode.spinner-xl .spinner-circle {\\r\\n width: 3.5em;\\r\\n height: 3.5em;\\r\\n}\\r\\n.lt-ie10 .spinner-gritcode .spinner-circle,\\r\\n.ie9 .spinner-gritcode .spinner-circle,\\r\\n.oldie .spinner-gritcode .spinner-circle,\\r\\n.no-csstransitions .spinner-gritcode .spinner-circle,\\r\\n.no-csstransforms3d .spinner-gritcode .spinner-circle {\\r\\n background: url(\\\"http://i2.wp.com/www.thegreatnovelingadventure.com/wp-content/plugins/wp-polls/images/loading.gif\\\") center center no-repeat;\\r\\n -webkit-animation: none;\\r\\n animation: none;\\r\\n margin-left: 0;\\r\\n margin-top: 5px;\\r\\n border: none;\\r\\n width: 32px;\\r\\n height: 32px;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 200 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar MIN_WAIT = 500; // in ms\n\t\n\t// <template>\n\t\n\t// <div :class=\"['spinner spinner-gritcode',spinnerSize,{'spinner-fixed':fixed}]\" v-show=\"active\">\n\t\n\t// <div class=\"spinner-wrapper\">\n\t\n\t// <div class=\"spinner-circle\"></div>\n\t\n\t// <div class=\"spinner-text\">{{text}}</div>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t props: {\n\t size: {\n\t type: String,\n\t default: 'md'\n\t },\n\t text: {\n\t type: String,\n\t default: ''\n\t },\n\t fixed: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t active: false\n\t };\n\t },\n\t\n\t computed: {\n\t spinnerSize: function spinnerSize() {\n\t return this.size ? 'spinner-' + this.size : 'spinner-sm';\n\t }\n\t },\n\t ready: function ready() {\n\t this._body = document.querySelector('body');\n\t this._bodyOverflow = this._body.style.overflowY || '';\n\t },\n\t\n\t methods: {\n\t getMinWait: function getMinWait(delay) {\n\t delay = delay || 0;\n\t return new Date().getTime() - this._started.getTime() < MIN_WAIT ? MIN_WAIT - parseInt(new Date().getTime() - this._started.getTime(), 10) + delay : 0 + delay;\n\t },\n\t show: function show(options) {\n\t if (options && options.text) {\n\t this.text = options.text;\n\t }\n\t if (options && options.size) {\n\t this.size = options.size;\n\t }\n\t if (options && options.fixed) {\n\t this.fixed = options.fixed;\n\t }\n\t\n\t // block scrolling when spinner is on\n\t this._body.style.overflowY = 'hidden';\n\t\n\t // activate spinner\n\t this._started = new Date();\n\t this.active = true;\n\t this.$root.$broadcast('shown::spinner');\n\t },\n\t hide: function hide() {\n\t var _this = this;\n\t\n\t var delay = 0;\n\t this._spinnerAnimation = setTimeout(function () {\n\t _this.active = false;\n\t _this._body.style.overflowY = _this._bodyOverflow;\n\t _this.$root.$broadcast('hidden::spinner');\n\t }, this.getMinWait(delay));\n\t }\n\t },\n\t events: {\n\t 'show::spinner': function showSpinner(options) {\n\t this.show(options);\n\t },\n\t 'hide::spinner': function hideSpinner() {\n\t this.hide();\n\t },\n\t 'start::ajax': function startAjax(options) {\n\t this.show(options);\n\t },\n\t 'end::ajax': function endAjax() {\n\t this.hide();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t clearTimeout(this._spinnerAnimation);\n\t this._body.style.overflowY = this._bodyOverflow;\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// @keyframes spin {\n\t\n\t// 100% {\n\t\n\t// transform: rotate(360deg);\n\t\n\t// }\n\t\n\t// }\n\t\n\t// .spinner-gritcode {\n\t\n\t// top: 0;\n\t\n\t// left: 0;\n\t\n\t// bottom: 0;\n\t\n\t// right: 0;\n\t\n\t// z-index: 9998;\n\t\n\t// position: absolute;\n\t\n\t// width: 100%;\n\t\n\t// text-align: center;\n\t\n\t// background: rgba(255, 255, 255, 0.9);\n\t\n\t// }\n\t\n\t// .spinner-gritcode.spinner-fixed {\n\t\n\t// position: fixed;\n\t\n\t// }\n\t\n\t// .spinner-gritcode .spinner-wrapper {\n\t\n\t// position: absolute;\n\t\n\t// top: 50%;\n\t\n\t// left: 50%;\n\t\n\t// transform: translate(-50%, -50%);\n\t\n\t// -ms-transform: translate(-50%, -50%);\n\t\n\t// }\n\t\n\t// .spinner-gritcode .spinner-circle {\n\t\n\t// position: relative;\n\t\n\t// border: 4px solid #ccc;\n\t\n\t// border-right-color: #337ab7;\n\t\n\t// border-radius: 50%;\n\t\n\t// display: inline-block;\n\t\n\t// animation: spin 0.6s linear;\n\t\n\t// animation-iteration-count: infinite;\n\t\n\t// width: 3em;\n\t\n\t// height: 3em;\n\t\n\t// z-index: 2;\n\t\n\t// }\n\t\n\t// .spinner-gritcode .spinner-text {\n\t\n\t// position: relative;\n\t\n\t// text-align: center;\n\t\n\t// margin-top: 0.5em;\n\t\n\t// z-index: 2;\n\t\n\t// width: 100%;\n\t\n\t// font-size: 95%;\n\t\n\t// color: #337ab7;\n\t\n\t// }\n\t\n\t// .spinner-gritcode.spinner-sm .spinner-circle {\n\t\n\t// width: 1.5em;\n\t\n\t// height: 1.5em;\n\t\n\t// }\n\t\n\t// .spinner-gritcode.spinner-md .spinner-circle {\n\t\n\t// width: 2em;\n\t\n\t// height: 2em;\n\t\n\t// }\n\t\n\t// .spinner-gritcode.spinner-lg .spinner-circle {\n\t\n\t// width: 2.5em;\n\t\n\t// height: 2.5em;\n\t\n\t// }\n\t\n\t// .spinner-gritcode.spinner-xl .spinner-circle {\n\t\n\t// width: 3.5em;\n\t\n\t// height: 3.5em;\n\t\n\t// }\n\t\n\t// .lt-ie10 .spinner-gritcode .spinner-circle,\n\t\n\t// .ie9 .spinner-gritcode .spinner-circle,\n\t\n\t// .oldie .spinner-gritcode .spinner-circle,\n\t\n\t// .no-csstransitions .spinner-gritcode .spinner-circle,\n\t\n\t// .no-csstransforms3d .spinner-gritcode .spinner-circle {\n\t\n\t// background: url(\"http://i2.wp.com/www.thegreatnovelingadventure.com/wp-content/plugins/wp-polls/images/loading.gif\") center center no-repeat;\n\t\n\t// animation: none;\n\t\n\t// margin-left: 0;\n\t\n\t// margin-top: 5px;\n\t\n\t// border: none;\n\t\n\t// width: 32px;\n\t\n\t// height: 32px;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 201 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div :class=\\\"['spinner spinner-gritcode',spinnerSize,{'spinner-fixed':fixed}]\\\" v-show=\\\"active\\\">\\r\\n <div class=\\\"spinner-wrapper\\\">\\r\\n <div class=\\\"spinner-circle\\\"></div>\\r\\n <div class=\\\"spinner-text\\\">{{text}}</div>\\r\\n </div>\\r\\n </div>\";\n\n/***/ },\n/* 202 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(203)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(204)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tab.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tab.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tab.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tab.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tab.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 203 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t header: {\n\t type: String\n\t },\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t }\n\t },\n\t computed: {\n\t active: function active() {\n\t return this._tabset.show === this;\n\t },\n\t index: function index() {\n\t return this._tabset.tabs.indexOf(this);\n\t },\n\t show: function show() {\n\t return this._tabset && this._tabset.show === this;\n\t },\n\t transition: function transition() {\n\t return this._tabset ? this._tabset.effect : null;\n\t }\n\t },\n\t created: function created() {\n\t this._ingroup = this.$parent && this.$parent._tabgroup;\n\t var tabset = this;\n\t while (tabset && tabset._tabset !== true && tabset.$parent) {\n\t tabset = tabset.$parent;\n\t }\n\t if (!tabset._tabset) {\n\t this._tabset = {};\n\t console.warn('Warning: \"tab\" depend on \"tabset\" to work properly.');\n\t } else {\n\t tabset.tabs.push(this);\n\t if (!this._ingroup) {\n\t tabset.headers.push(this);\n\t } else {\n\t if (!~tabset.headers.indexOf(this.$parent)) {\n\t tabset.headers.push(this.$parent);\n\t }\n\t }\n\t this._tabset = tabset;\n\t }\n\t if (this._ingroup) {\n\t this.$parent.tabs.push(this);\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t if (this._tabset.active === this.index) {\n\t this._tabset.active = 0;\n\t }\n\t if (this._ingroup) {\n\t this.$parent.tabs.$remove(this);\n\t }\n\t this._tabset.tabs.$remove(this);\n\t }\n\t};\n\t// </script>\n\t// <template>\n\t\n\t// <div role=\"tabpanel\" class=\"tab-pane active\" v-show=\"show\"\n\t\n\t// :class=\"{hide:!show}\"\n\t\n\t// :transition=\"transition\"\n\t\n\t// >\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 204 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div role=\\\"tabpanel\\\" class=\\\"tab-pane active\\\" v-show=\\\"show\\\"\\r\\n :class=\\\"{hide:!show}\\\"\\r\\n :transition=\\\"transition\\\"\\r\\n >\\r\\n <slot></slot>\\r\\n </div>\";\n\n/***/ },\n/* 205 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(206)\n\tmodule.exports = __webpack_require__(208)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(209)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./TabGroup.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./TabGroup.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-7ecb8635&file=TabGroup.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./TabGroup.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./TabGroup.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-7ecb8635&file=TabGroup.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./TabGroup.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 206 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(207);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7ecb8635&file=TabGroup.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./TabGroup.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-7ecb8635&file=TabGroup.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./TabGroup.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 207 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".nav-tabs[_v-7ecb8635] {\\r\\n margin-bottom: 15px;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 208 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\texports.default = {\n\t props: {\n\t disabled: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t header: {\n\t type: String\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t tabs: [],\n\t show: false\n\t };\n\t },\n\t\n\t computed: {\n\t active: function active() {\n\t return ~this.tabs.indexOf(this._tabset.show);\n\t }\n\t },\n\t created: function created() {\n\t this._tabgroup = true;\n\t var tabset = this.$parent && this.$parent._tabset === true ? this.$parent : {};\n\t if (this.$parent && this.$parent._tabgroup) {\n\t console.error('Can\\'t nest tabgroups.');\n\t }\n\t while (tabset && !tabset._tabset && tabset.$parent) {\n\t tabset = tabset.$parent;\n\t }\n\t if (!tabset._tabset) {\n\t this._tabset = {};\n\t this.show = true;\n\t console.warn('Warning: tabgroup depend on tabset to work properly.');\n\t } else {\n\t this._tabset = tabset;\n\t }\n\t },\n\t\n\t methods: {\n\t blur: function blur() {\n\t this.show = false;\n\t },\n\t toggle: function toggle() {\n\t this.show = !this.show;\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// .nav-tabs {\n\t\n\t// margin-bottom: 15px;\n\t\n\t// }\n\t\n\t// </style>\n\t// <template><slot></slot></template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 209 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<slot _v-7ecb8635=\\\"\\\"></slot>\";\n\n/***/ },\n/* 210 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(211)\n\tmodule.exports = __webpack_require__(213)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(214)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tabset.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tabset.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-e8aecb90&file=Tabset.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tabset.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tabset.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/template-rewriter.js?id=_v-e8aecb90&file=Tabset.vue!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tabset.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 211 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(212);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-e8aecb90&file=Tabset.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Tabset.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-e8aecb90&file=Tabset.vue&scoped=true!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Tabset.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 212 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".nav-tabs[_v-e8aecb90] {\\r\\n margin-bottom: 15px;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 213 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar _Dropdown = __webpack_require__(127);\n\t\n\tvar _Dropdown2 = _interopRequireDefault(_Dropdown);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// <template>\n\t\n\t// <div>\n\t\n\t// <!-- Nav tabs -->\n\t\n\t// <ul class=\"nav nav-{{navStyle}}\" role=\"tablist\">\n\t\n\t// <template v-for=\"t in headers\">\n\t\n\t// <li v-if=\"!t._tabgroup\" :class=\"{active:t.active, disabled:t.disabled}\" @click.prevent=\"select(t)\">\n\t\n\t// <a href=\"#\"><slot name=\"header\">{{{t.header}}}</slot></a>\n\t\n\t// </li>\n\t\n\t// <dropdown v-else :text=\"t.header\" :class=\"{active:t.active}\" :disabled=\"t.disabled\">\n\t\n\t// <li v-for=\"tab in t.tabs\" :class=\"{disabled:tab.disabled}\"><a href=\"#\" @click.prevent=\"select(tab)\">{{tab.header}}</a></li>\n\t\n\t// </dropdown>\n\t\n\t// </template>\n\t\n\t// </ul>\n\t\n\t// <div class=\"tab-content\" v-el:tab-content>\n\t\n\t// <slot></slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\texports.default = {\n\t components: {\n\t dropdown: _Dropdown2.default\n\t },\n\t props: {\n\t navStyle: {\n\t type: String,\n\t default: 'tabs'\n\t },\n\t effect: {\n\t type: String,\n\t default: 'fadein'\n\t },\n\t active: {\n\t twoWay: true,\n\t type: Number,\n\t coerce: _utils.coerce.number,\n\t default: 0\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t show: null,\n\t headers: [],\n\t tabs: []\n\t };\n\t },\n\t created: function created() {\n\t this._tabset = true;\n\t },\n\t\n\t watch: {\n\t active: function active(val) {\n\t this.show = this.tabs[val];\n\t }\n\t },\n\t ready: function ready() {\n\t this.show = this.tabs[this.active];\n\t },\n\t\n\t methods: {\n\t select: function select(tab) {\n\t if (!tab.disabled) {\n\t this.active = tab.index;\n\t }\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style scoped>\n\t\n\t// .nav-tabs {\n\t\n\t// margin-bottom: 15px;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 214 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div _v-e8aecb90=\\\"\\\">\\n <!-- Nav tabs -->\\n <ul class=\\\"nav nav-{{navStyle}}\\\" role=\\\"tablist\\\" _v-e8aecb90=\\\"\\\">\\n <template v-for=\\\"t in headers\\\" _v-e8aecb90=\\\"\\\">\\n <li v-if=\\\"!t._tabgroup\\\" :class=\\\"{active:t.active, disabled:t.disabled}\\\" @click.prevent=\\\"select(t)\\\" _v-e8aecb90=\\\"\\\">\\n <a href=\\\"#\\\" _v-e8aecb90=\\\"\\\"><slot name=\\\"header\\\" _v-e8aecb90=\\\"\\\">{{{t.header}}}</slot></a>\\n </li>\\n <dropdown v-else=\\\"\\\" :text=\\\"t.header\\\" :class=\\\"{active:t.active}\\\" :disabled=\\\"t.disabled\\\" _v-e8aecb90=\\\"\\\">\\n <li v-for=\\\"tab in t.tabs\\\" :class=\\\"{disabled:tab.disabled}\\\" _v-e8aecb90=\\\"\\\"><a href=\\\"#\\\" @click.prevent=\\\"select(tab)\\\" _v-e8aecb90=\\\"\\\">{{tab.header}}</a></li>\\n </dropdown>\\n </template>\\n </ul>\\n <div class=\\\"tab-content\\\" v-el:tab-content=\\\"\\\" _v-e8aecb90=\\\"\\\">\\n <slot _v-e8aecb90=\\\"\\\"></slot>\\n </div>\\n </div>\";\n\n/***/ },\n/* 215 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(216)\n\tmodule.exports = __webpack_require__(218)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(219)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tooltip.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tooltip.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tooltip.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Tooltip.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Tooltip.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 216 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(217);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-000c6bf0&file=Tooltip.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Tooltip.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-000c6bf0&file=Tooltip.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Tooltip.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 217 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".tooltip.top,\\r\\n.tooltip.left,\\r\\n.tooltip.right,\\r\\n.tooltip.bottom {\\r\\n opacity: .9\\r\\n}\\r\\n.fadein-enter {\\r\\n -webkit-animation:fadein-in 0.3s ease-in;\\r\\n animation:fadein-in 0.3s ease-in;\\r\\n}\\r\\n.fadein-leave {\\r\\n -webkit-animation:fadein-out 0.3s ease-out;\\r\\n animation:fadein-out 0.3s ease-out;\\r\\n}\\r\\n@-webkit-keyframes fadein-in {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n opacity: .9;\\r\\n }\\r\\n}\\r\\n@keyframes fadein-in {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n opacity: .9;\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes fadein-out {\\r\\n 0% {\\r\\n opacity: .9;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n@keyframes fadein-out {\\r\\n 0% {\\r\\n opacity: .9;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 218 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _popoverMixins = __webpack_require__(164);\n\t\n\tvar _popoverMixins2 = _interopRequireDefault(_popoverMixins);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t mixins: [_popoverMixins2.default],\n\t props: {\n\t trigger: {\n\t type: String,\n\t default: 'hover'\n\t },\n\t effect: {\n\t type: String,\n\t default: 'scale'\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .tooltip.top,\n\t\n\t// .tooltip.left,\n\t\n\t// .tooltip.right,\n\t\n\t// .tooltip.bottom {\n\t\n\t// opacity: .9\n\t\n\t// }\n\t\n\t// .fadein-enter {\n\t\n\t// animation:fadein-in 0.3s ease-in;\n\t\n\t// }\n\t\n\t// .fadein-leave {\n\t\n\t// animation:fadein-out 0.3s ease-out;\n\t\n\t// }\n\t\n\t// @keyframes fadein-in {\n\t\n\t// 0% {\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// opacity: .9;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// @keyframes fadein-out {\n\t\n\t// 0% {\n\t\n\t// opacity: .9;\n\t\n\t// }\n\t\n\t// 100% {\n\t\n\t// opacity: 0;\n\t\n\t// }\n\t\n\t// }\n\t\n\t// </style>\n\t// <template>\n\t\n\t// <span v-el:trigger>\n\t\n\t// <slot></slot>\n\t\n\t// <div v-el:popover v-if=\"show\" style=\"display:block;\"\n\t\n\t// :class=\"['tooltip',placement]\"\n\t\n\t// :transition=\"effect\"\n\t\n\t// >\n\t\n\t// <div class=\"tooltip-arrow\"></div>\n\t\n\t// <div class=\"tooltip-inner\">\n\t\n\t// <slot name=\"content\">{{{content}}}</slot>\n\t\n\t// </div>\n\t\n\t// </div>\n\t\n\t// </span>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\n/***/ },\n/* 219 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<span v-el:trigger>\\r\\n <slot></slot>\\r\\n <div v-el:popover v-if=\\\"show\\\" style=\\\"display:block;\\\"\\r\\n :class=\\\"['tooltip',placement]\\\"\\r\\n :transition=\\\"effect\\\"\\r\\n >\\r\\n <div class=\\\"tooltip-arrow\\\"></div>\\r\\n <div class=\\\"tooltip-inner\\\">\\r\\n <slot name=\\\"content\\\">{{{content}}}</slot>\\r\\n </div>\\r\\n </div>\\r\\n </span>\";\n\n/***/ },\n/* 220 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(221)\n\tmodule.exports = __webpack_require__(223)\n\t\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\t;(typeof module.exports === \"function\" ? module.exports.options : module.exports).template = __webpack_require__(224)\n\tif (false) {\n\t(function () {\n\tvar hotAPI = require(\"vue-hot-reload-api\")\n\thotAPI.install(require(\"vue\"))\n\tif (!hotAPI.compatible) return\n\tvar id = \"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Typeahead.vue\"\n\thotAPI.createRecord(id, module.exports)\n\tmodule.hot.accept([\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Typeahead.vue\",\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Typeahead.vue\"], function () {\n\tvar newOptions = require(\"-!babel!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./Typeahead.vue\")\n\tif (newOptions && newOptions.__esModule) newOptions = newOptions.default\n\tvar newTemplate = require(\"-!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./Typeahead.vue\")\n\thotAPI.update(id, newOptions, newTemplate)\n\t})\n\t})()\n\t}\n\n/***/ },\n/* 221 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(222);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(101)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-78dbe8e8&file=Typeahead.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Typeahead.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=_v-78dbe8e8&file=Typeahead.vue!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./Typeahead.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 222 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(100)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".dropdown-menu > li > a {\\r\\n cursor: pointer;\\r\\n}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 223 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _utils = __webpack_require__(92);\n\t\n\tvar Vue = window.Vue; // <template>\n\t\n\t// <div style=\"position: relative\"\n\t\n\t// v-bind:class=\"{'open':showDropdown}\"\n\t\n\t// >\n\t\n\t// <input type=\"text\" class=\"form-control\"\n\t\n\t// :placeholder=\"placeholder\"\n\t\n\t// autocomplete=\"off\"\n\t\n\t// v-model=\"value\"\n\t\n\t// @input=\"update\"\n\t\n\t// @keydown.up=\"up\"\n\t\n\t// @keydown.down=\"down\"\n\t\n\t// @keydown.enter= \"hit\"\n\t\n\t// @keydown.esc=\"reset\"\n\t\n\t// @blur=\"showDropdown = false\"\n\t\n\t// />\n\t\n\t// <ul class=\"dropdown-menu\" v-el:dropdown>\n\t\n\t// <li v-for=\"item in items\" v-bind:class=\"{'active': isActive($index)}\">\n\t\n\t// <a @mousedown.prevent=\"hit\" @mousemove=\"setActive($index)\">\n\t\n\t// <partial :name=\"templateName\"></partial>\n\t\n\t// </a>\n\t\n\t// </li>\n\t\n\t// </ul>\n\t\n\t// </div>\n\t\n\t// </template>\n\t\n\t\n\t// <script>\n\t\n\tvar _DELAY_ = 200;\n\t\n\texports.default = {\n\t created: function created() {\n\t this.items = this.primitiveData;\n\t },\n\t\n\t partials: {\n\t default: '<span v-html=\"item | highlight value\"></span>'\n\t },\n\t props: {\n\t value: {\n\t twoWay: true,\n\t type: String,\n\t default: ''\n\t },\n\t data: {\n\t type: Array\n\t },\n\t limit: {\n\t type: Number,\n\t default: 8\n\t },\n\t async: {\n\t type: String\n\t },\n\t template: {\n\t type: String\n\t },\n\t templateName: {\n\t type: String,\n\t default: 'default'\n\t },\n\t key: {\n\t type: String,\n\t default: null\n\t },\n\t matchCase: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t matchStart: {\n\t type: Boolean,\n\t coerce: _utils.coerce.boolean,\n\t default: false\n\t },\n\t onHit: {\n\t type: Function,\n\t default: function _default(items) {\n\t this.reset();\n\t this.value = items;\n\t }\n\t },\n\t placeholder: {\n\t type: String\n\t },\n\t delay: {\n\t type: Number,\n\t default: _DELAY_,\n\t coerce: _utils.coerce.number\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t showDropdown: false,\n\t noResults: true,\n\t current: 0,\n\t items: []\n\t };\n\t },\n\t\n\t computed: {\n\t primitiveData: function primitiveData() {\n\t var _this = this;\n\t\n\t if (this.data) {\n\t return this.data.filter(function (value) {\n\t value = _this.matchCase ? value : value.toLowerCase();\n\t var query = _this.matchCase ? _this.value : _this.value.toLowerCase();\n\t return _this.matchStart ? value.indexOf(query) === 0 : value.indexOf(query) !== -1;\n\t }).slice(0, this.limit);\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t // register a partial:\n\t if (this.templateName && this.templateName !== 'default') {\n\t Vue.partial(this.templateName, this.template);\n\t }\n\t },\n\t\n\t methods: {\n\t update: function update() {\n\t if (!this.value) {\n\t this.reset();\n\t return false;\n\t }\n\t if (this.data) {\n\t this.items = this.primitiveData;\n\t this.showDropdown = this.items.length > 0;\n\t }\n\t if (this.async) this.query();\n\t },\n\t\n\t query: (0, _utils.delayer)(function () {\n\t var _this2 = this;\n\t\n\t (0, _utils.getJSON)(this.async + this.value).then(function (data) {\n\t _this2.items = (_this2.key ? data[_this2.key] : data).slice(0, _this2.limit);\n\t _this2.showDropdown = _this2.items.length;\n\t });\n\t }, 'delay', _DELAY_),\n\t reset: function reset() {\n\t this.items = [];\n\t this.value = '';\n\t this.loading = false;\n\t this.showDropdown = false;\n\t },\n\t setActive: function setActive(index) {\n\t this.current = index;\n\t },\n\t isActive: function isActive(index) {\n\t return this.current === index;\n\t },\n\t hit: function hit(e) {\n\t e.preventDefault();\n\t this.onHit(this.items[this.current], this);\n\t },\n\t up: function up() {\n\t if (this.current > 0) this.current--;\n\t },\n\t down: function down() {\n\t if (this.current < this.items.length - 1) this.current++;\n\t }\n\t },\n\t filters: {\n\t highlight: function highlight(value, phrase) {\n\t return value.replace(new RegExp('(' + phrase + ')', 'gi'), '<strong>$1</strong>');\n\t }\n\t }\n\t};\n\t// </script>\n\t\n\t\n\t// <style>\n\t\n\t// .dropdown-menu > li > a {\n\t\n\t// cursor: pointer;\n\t\n\t// }\n\t\n\t// </style>\n\n/***/ },\n/* 224 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<div style=\\\"position: relative\\\"\\r\\n v-bind:class=\\\"{'open':showDropdown}\\\"\\r\\n >\\r\\n <input type=\\\"text\\\" class=\\\"form-control\\\"\\r\\n :placeholder=\\\"placeholder\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n v-model=\\\"value\\\"\\r\\n @input=\\\"update\\\"\\r\\n @keydown.up=\\\"up\\\"\\r\\n @keydown.down=\\\"down\\\"\\r\\n @keydown.enter= \\\"hit\\\"\\r\\n @keydown.esc=\\\"reset\\\"\\r\\n @blur=\\\"showDropdown = false\\\"\\r\\n />\\r\\n <ul class=\\\"dropdown-menu\\\" v-el:dropdown>\\r\\n <li v-for=\\\"item in items\\\" v-bind:class=\\\"{'active': isActive($index)}\\\">\\r\\n <a @mousedown.prevent=\\\"hit\\\" @mousemove=\\\"setActive($index)\\\">\\r\\n <partial :name=\\\"templateName\\\"></partial>\\r\\n </a>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\";\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=vue-strap.js.map//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Z1ZS1zdHJhcC9kaXN0L3Z1ZS1zdHJhcC5qcz9lMTQ3Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlZ1ZVN0cmFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlZ1ZVN0cmFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX05vZGVMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgX05vZGVMaXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX05vZGVMaXN0KTtcblx0XG5cdHZhciBfQWNjb3JkaW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7XG5cdFxuXHR2YXIgX0FjY29yZGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BY2NvcmRpb24pO1xuXHRcblx0dmFyIF9BZmZpeCA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpO1xuXHRcblx0dmFyIF9BZmZpeDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BZmZpeCk7XG5cdFxuXHR2YXIgX0FsZXJ0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nyk7XG5cdFxuXHR2YXIgX0FsZXJ0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0FsZXJ0KTtcblx0XG5cdHZhciBfQXNpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNCk7XG5cdFxuXHR2YXIgX0FzaWRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0FzaWRlKTtcblx0XG5cdHZhciBfYnV0dG9uR3JvdXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOSk7XG5cdFxuXHR2YXIgX2J1dHRvbkdyb3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1dHRvbkdyb3VwKTtcblx0XG5cdHZhciBfQ2Fyb3VzZWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMik7XG5cdFxuXHR2YXIgX0Nhcm91c2VsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Nhcm91c2VsKTtcblx0XG5cdHZhciBfQ2hlY2tib3ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNyk7XG5cdFxuXHR2YXIgX0NoZWNrYm94MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0NoZWNrYm94KTtcblx0XG5cdHZhciBfRGF0ZXBpY2tlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTIyKTtcblx0XG5cdHZhciBfRGF0ZXBpY2tlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9EYXRlcGlja2VyKTtcblx0XG5cdHZhciBfRHJvcGRvd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNyk7XG5cdFxuXHR2YXIgX0Ryb3Bkb3duMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Ryb3Bkb3duKTtcblx0XG5cdHZhciBfRm9ybUdyb3VwID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpO1xuXHRcblx0dmFyIF9Gb3JtR3JvdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfRm9ybUdyb3VwKTtcblx0XG5cdHZhciBfSW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNSk7XG5cdFxuXHR2YXIgX0lucHV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0lucHV0KTtcblx0XG5cdHZhciBfTW9kYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0MCk7XG5cdFxuXHR2YXIgX01vZGFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX01vZGFsKTtcblx0XG5cdHZhciBfTmF2YmFyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDkpO1xuXHRcblx0dmFyIF9OYXZiYXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTmF2YmFyKTtcblx0XG5cdHZhciBfT3B0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTIpO1xuXHRcblx0dmFyIF9PcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfT3B0aW9uKTtcblx0XG5cdHZhciBfUGFuZWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1NSk7XG5cdFxuXHR2YXIgX1BhbmVsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1BhbmVsKTtcblx0XG5cdHZhciBfUG9wb3ZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYwKTtcblx0XG5cdHZhciBfUG9wb3ZlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Qb3BvdmVyKTtcblx0XG5cdHZhciBfUHJvZ3Jlc3NiYXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Nik7XG5cdFxuXHR2YXIgX1Byb2dyZXNzYmFyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1Byb2dyZXNzYmFyKTtcblx0XG5cdHZhciBfUmFkaW8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2OSk7XG5cdFxuXHR2YXIgX1JhZGlvMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1JhZGlvKTtcblx0XG5cdHZhciBfU2VsZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzQpO1xuXHRcblx0dmFyIF9TZWxlY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfU2VsZWN0KTtcblx0XG5cdHZhciBfU2xpZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTQpO1xuXHRcblx0dmFyIF9TbGlkZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfU2xpZGVyKTtcblx0XG5cdHZhciBfU3Bpbm5lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTk3KTtcblx0XG5cdHZhciBfU3Bpbm5lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9TcGlubmVyKTtcblx0XG5cdHZhciBfVGFiID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDIpO1xuXHRcblx0dmFyIF9UYWIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVGFiKTtcblx0XG5cdHZhciBfVGFiR3JvdXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNSk7XG5cdFxuXHR2YXIgX1RhYkdyb3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RhYkdyb3VwKTtcblx0XG5cdHZhciBfVGFic2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTApO1xuXHRcblx0dmFyIF9UYWJzZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVGFic2V0KTtcblx0XG5cdHZhciBfVG9vbHRpcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjE1KTtcblx0XG5cdHZhciBfVG9vbHRpcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub29sdGlwKTtcblx0XG5cdHZhciBfVHlwZWFoZWFkID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjApO1xuXHRcblx0dmFyIF9UeXBlYWhlYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVHlwZWFoZWFkKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHR2YXIgVnVlU3RyYXAgPSB7XG5cdCAgJDogX05vZGVMaXN0Mi5kZWZhdWx0LFxuXHQgIGFjY29yZGlvbjogX0FjY29yZGlvbjIuZGVmYXVsdCxcblx0ICBhZmZpeDogX0FmZml4Mi5kZWZhdWx0LFxuXHQgIGFsZXJ0OiBfQWxlcnQyLmRlZmF1bHQsXG5cdCAgYXNpZGU6IF9Bc2lkZTIuZGVmYXVsdCxcblx0ICBidXR0b25Hcm91cDogX2J1dHRvbkdyb3VwMi5kZWZhdWx0LFxuXHQgIGNhcm91c2VsOiBfQ2Fyb3VzZWwyLmRlZmF1bHQsXG5cdCAgY2hlY2tib3g6IF9DaGVja2JveDIuZGVmYXVsdCxcblx0ICBkYXRlcGlja2VyOiBfRGF0ZXBpY2tlcjIuZGVmYXVsdCxcblx0ICBkcm9wZG93bjogX0Ryb3Bkb3duMi5kZWZhdWx0LFxuXHQgIGZvcm1Hcm91cDogX0Zvcm1Hcm91cDIuZGVmYXVsdCxcblx0ICBpbnB1dDogX0lucHV0Mi5kZWZhdWx0LFxuXHQgIG1vZGFsOiBfTW9kYWwyLmRlZmF1bHQsXG5cdCAgbmF2YmFyOiBfTmF2YmFyMi5kZWZhdWx0LFxuXHQgIG9wdGlvbjogX09wdGlvbjIuZGVmYXVsdCxcblx0ICBwYW5lbDogX1BhbmVsMi5kZWZhdWx0LFxuXHQgIHBvcG92ZXI6IF9Qb3BvdmVyMi5kZWZhdWx0LFxuXHQgIHByb2dyZXNzYmFyOiBfUHJvZ3Jlc3NiYXIyLmRlZmF1bHQsXG5cdCAgcmFkaW86IF9SYWRpbzIuZGVmYXVsdCxcblx0ICBzZWxlY3Q6IF9TZWxlY3QyLmRlZmF1bHQsXG5cdCAgc2xpZGVyOiBfU2xpZGVyMi5kZWZhdWx0LFxuXHQgIHNwaW5uZXI6IF9TcGlubmVyMi5kZWZhdWx0LFxuXHQgIHRhYjogX1RhYjIuZGVmYXVsdCxcblx0ICB0YWJHcm91cDogX1RhYkdyb3VwMi5kZWZhdWx0LFxuXHQgIHRhYnNldDogX1RhYnNldDIuZGVmYXVsdCxcblx0ICB0b29sdGlwOiBfVG9vbHRpcDIuZGVmYXVsdCxcblx0ICB0eXBlYWhlYWQ6IF9UeXBlYWhlYWQyLmRlZmF1bHRcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gVnVlU3RyYXA7XG5cbi8qKiovIH0sXG4vKiAxICovLFxuLyogMiAqLyxcbi8qIDMgKi8sXG4vKiA0ICovLFxuLyogNSAqLyxcbi8qIDYgKi8sXG4vKiA3ICovLFxuLyogOCAqLyxcbi8qIDkgKi8sXG4vKiAxMCAqLyxcbi8qIDExICovLFxuLyogMTIgKi8sXG4vKiAxMyAqLyxcbi8qIDE0ICovLFxuLyogMTUgKi8sXG4vKiAxNiAqLyxcbi8qIDE3ICovLFxuLyogMTggKi8sXG4vKiAxOSAqLyxcbi8qIDIwICovLFxuLyogMjEgKi8sXG4vKiAyMiAqLyxcbi8qIDIzICovLFxuLyogMjQgKi8sXG4vKiAyNSAqLyxcbi8qIDI2ICovLFxuLyogMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9kZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuXHRcblx0dmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cdFxuXHR2YXIgX2l0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdFxuXHR2YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblx0XG5cdHZhciBfZ2V0T3duUHJvcGVydHlOYW1lcyA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRcblx0dmFyIF9nZXRPd25Qcm9wZXJ0eU5hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldE93blByb3BlcnR5TmFtZXMpO1xuXHRcblx0dmFyIF9jbGFzc0NhbGxDaGVjazIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTtcblx0XG5cdHZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cdHZhciBub2RlRXJyb3IgPSBuZXcgRXJyb3IoJ1Bhc3NlZCBhcmd1bWVudHMgbXVzdCBiZSBvZiBOb2RlJyk7XG5cdHZhciBibHVyRXZlbnQgPSB2b2lkIDA7XG5cdHZhciBibHVyTGlzdCA9IFtdO1xuXHR2YXIgRXZlbnRzID0gW107XG5cdFxuXHRmdW5jdGlvbiBpc05vZGUodmFsKSB7XG5cdCAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xuXHR9XG5cdGZ1bmN0aW9uIGlzTm9kZUxpc3QodmFsKSB7XG5cdCAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlTGlzdCB8fCB2YWwgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCB2YWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTENvbGxlY3Rpb24gfHwgdmFsIGluc3RhbmNlb2YgQXJyYXk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNwbGl0V29yZHModmFsKSB7XG5cdCAgdmFsID0gdmFsLnRyaW0oKTtyZXR1cm4gdmFsLmxlbmd0aCA/IHZhbC5yZXBsYWNlKC9cXHMrLywgJyAnKS5zcGxpdCgnICcpIDogW107XG5cdH1cblx0ZnVuY3Rpb24gam9pbldvcmRzKHZhbCkge1xuXHQgIHJldHVybiB2YWwubGVuZ3RoID8gdmFsLmpvaW4oJyAnKSA6ICcnO1xuXHR9XG5cdFxuXHR2YXIgTm9kZUxpc3QgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gTm9kZUxpc3QoYXJncykge1xuXHQgICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgTm9kZUxpc3QpO1xuXHRcblx0ICAgIHZhciBub2RlcyA9IGFyZ3M7XG5cdCAgICBpZiAoYXJnc1swXSA9PT0gd2luZG93KSB7XG5cdCAgICAgIG5vZGVzID0gW3dpbmRvd107XG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuXHQgICAgICBub2RlcyA9IChhcmdzWzFdIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKGFyZ3NbMF0pO1xuXHQgICAgICBpZiAoYXJnc1sxXSkge1xuXHQgICAgICAgIHRoaXMub3duZXIgPSBhcmdzWzFdO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKDAgaW4gYXJncyAmJiAhaXNOb2RlKGFyZ3NbMF0pICYmIGFyZ3NbMF0gJiYgJ2xlbmd0aCcgaW4gYXJnc1swXSkge1xuXHQgICAgICBub2RlcyA9IGFyZ3NbMF07XG5cdCAgICAgIGlmIChhcmdzWzFdKSB7XG5cdCAgICAgICAgdGhpcy5vd25lciA9IGFyZ3NbMV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChub2Rlcykge1xuXHQgICAgICBmb3IgKHZhciBpIGluIG5vZGVzKSB7XG5cdCAgICAgICAgdGhpc1tpXSA9IG5vZGVzW2ldO1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMubGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhpcy5sZW5ndGggPSAwO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoTm9kZUxpc3QsIFt7XG5cdCAgICBrZXk6ICdjb25jYXQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbmNhdCgpIHtcblx0ICAgICAgdmFyIG5vZGVzID0gQXJyYXlQcm90by5zbGljZS5jYWxsKHRoaXMpO1xuXHQgICAgICBmdW5jdGlvbiBmbGF0dGVuKGFycikge1xuXHQgICAgICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGFyciwgZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgICBpZiAoaXNOb2RlKGVsKSkge1xuXHQgICAgICAgICAgICBpZiAoIX5ub2Rlcy5pbmRleE9mKGVsKSkgbm9kZXMucHVzaChlbCk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZUxpc3QoZWwpKSB7XG5cdCAgICAgICAgICAgIGZsYXR0ZW4oZWwpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGFyZ3MsIGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgICBpZiAoaXNOb2RlKGFyZykpIHtcblx0ICAgICAgICAgIGlmICghfm5vZGVzLmluZGV4T2YoYXJnKSkgbm9kZXMucHVzaChhcmcpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlTGlzdChhcmcpKSB7XG5cdCAgICAgICAgICBmbGF0dGVuKGFyZyk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHRocm93IEVycm9yKCdDb25jYXQgYXJndW1lbnRzIG11c3QgYmUgb2YgYSBOb2RlLCBOb2RlTGlzdCwgSFRNTENvbGxlY3Rpb24sIG9yIEFycmF5IG9mIChOb2RlLCBOb2RlTGlzdCwgSFRNTENvbGxlY3Rpb24sIEFycmF5KScpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiBOb2RlTGlzdEpTKG5vZGVzLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdkZWxldGUnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIF9kZWxldGUoKSB7XG5cdCAgICAgIHZhciBub3RSZW1vdmVkID0gZmxhdHRlbih0aGlzKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgaWYgKGVsLnJlbW92ZSkge1xuXHQgICAgICAgICAgZWwucmVtb3ZlKCk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChlbC5wYXJlbnROb2RlKSB7XG5cdCAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHkuY29udGFpbnMoZWwpO1xuXHQgICAgICB9KTtcblx0ICAgICAgaWYgKG5vdFJlbW92ZWQubGVuZ3RoKSBjb25zb2xlLndhcm4oJ05vZGVMaXN0OiBTb21lIG5vZGVzIGNvdWxkIG5vdCBiZSBkZWxldGVkLicpO1xuXHQgICAgICByZXR1cm4gbm90UmVtb3ZlZDtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdlYWNoJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBlYWNoKCkge1xuXHQgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgQXJyYXlQcm90by5mb3JFYWNoLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHQgICAgICByZXR1cm4gdGhpcztcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdmaWx0ZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGZpbHRlcigpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcblx0ICAgICAgICBhcmdzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBOb2RlTGlzdEpTKEFycmF5UHJvdG8uZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3MpLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdmaW5kJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBmaW5kKGVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG5vZGVzID0gW107XG5cdCAgICAgIGZsYXR0ZW4odGhpcykuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgICAgIEFycmF5UHJvdG8ucHVzaC5hcHBseShub2Rlcywgbm9kZS5xdWVyeVNlbGVjdG9yQWxsKGVsZW1lbnQpKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiBmbGF0dGVuKG5vZGVzLCB0aGlzLm93bmVyKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdmaW5kQ2hpbGRyZW4nLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmRDaGlsZHJlbihlbGVtZW50KSB7XG5cdCAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAoZWxlbWVudCkgcmV0dXJuIHRoaXMuZmluZChlbGVtZW50KS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgcmV0dXJuIF90aGlzLmluY2x1ZGVzKGVsLnBhcmVudEVsZW1lbnQpO1xuXHQgICAgICB9KTtcblx0ICAgICAgcmV0dXJuIGZsYXR0ZW4odGhpcy5tYXAoZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgcmV0dXJuIGVsLmNoaWxkcmVuO1xuXHQgICAgICB9KSk7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnZm9yRWFjaCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gZm9yRWFjaCgpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIEFycmF5UHJvdG8uZm9yRWFjaC5hcHBseSh0aGlzLCBhcmdzKTtcblx0ICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnaW5jbHVkZXMnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsZW1lbnQsIGluZGV4KSB7XG5cdCAgICAgIHJldHVybiB+dGhpcy5pbmRleE9mKGVsZW1lbnQsIGluZGV4KTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdtYXAnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIG1hcCgpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjUgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk1XSA9IGFyZ3VtZW50c1tfa2V5NV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBtYXBwZWQgPSBBcnJheVByb3RvLm1hcC5hcHBseSh0aGlzLCBhcmdzKTtcblx0ICAgICAgcmV0dXJuIG1hcHBlZC5zb21lKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgIHJldHVybiBpc05vZGUoZWwpIHx8IGlzTm9kZUxpc3QoZWwpO1xuXHQgICAgICB9KSA/IGZsYXR0ZW4obWFwcGVkLCB0aGlzKSA6IG1hcHBlZDtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdwYXJlbnQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcmVudCgpIHtcblx0ICAgICAgcmV0dXJuIGZsYXR0ZW4odGhpcy5tYXAoZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgcmV0dXJuIGVsLnBhcmVudE5vZGU7XG5cdCAgICAgIH0pLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdwb3AnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHBvcChhbW91bnQpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBhbW91bnQgIT09ICdudW1iZXInKSB7XG5cdCAgICAgICAgYW1vdW50ID0gMTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgbm9kZXMgPSBbXTtcblx0ICAgICAgdmFyIHBvcCA9IEFycmF5UHJvdG8ucG9wLmJpbmQodGhpcyk7XG5cdCAgICAgIHdoaWxlIChhbW91bnQtLSkge1xuXHQgICAgICAgIG5vZGVzLnB1c2gocG9wKCkpO1xuXHQgICAgICB9cmV0dXJuIE5vZGVMaXN0SlMobm9kZXMsIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ3B1c2gnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHB1c2goKSB7XG5cdCAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXHRcblx0ICAgICAgZm9yICh2YXIgX2xlbjYgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjYpLCBfa2V5NiA9IDA7IF9rZXk2IDwgX2xlbjY7IF9rZXk2KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk2XSA9IGFyZ3VtZW50c1tfa2V5Nl07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGFyZ3MsIGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgICBpZiAoIWlzTm9kZShhcmcpKSB0aHJvdyBub2RlRXJyb3I7XG5cdCAgICAgICAgaWYgKCF+X3RoaXMyLmluZGV4T2YoYXJnKSkgQXJyYXlQcm90by5wdXNoLmNhbGwoX3RoaXMyLCBhcmcpO1xuXHQgICAgICB9KTtcblx0ICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnc2hpZnQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0KGFtb3VudCkge1xuXHQgICAgICBpZiAodHlwZW9mIGFtb3VudCAhPT0gJ251bWJlcicpIHtcblx0ICAgICAgICBhbW91bnQgPSAxO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBub2RlcyA9IFtdO1xuXHQgICAgICB3aGlsZSAoYW1vdW50LS0pIHtcblx0ICAgICAgICBub2Rlcy5wdXNoKEFycmF5UHJvdG8uc2hpZnQuY2FsbCh0aGlzKSk7XG5cdCAgICAgIH1yZXR1cm4gbm9kZXMubGVuZ3RoID09IDEgPyBub2Rlc1swXSA6IE5vZGVMaXN0SlMobm9kZXMsIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ3NsaWNlJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBzbGljZSgpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjcgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjcpLCBfa2V5NyA9IDA7IF9rZXk3IDwgX2xlbjc7IF9rZXk3KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBOb2RlTGlzdEpTKEFycmF5UHJvdG8uc2xpY2UuYXBwbHkodGhpcywgYXJncyksIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ3NwbGljZScsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gc3BsaWNlKCkge1xuXHQgICAgICBmb3IgKHZhciBfbGVuOCA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuOCksIF9rZXk4ID0gMDsgX2tleTggPCBfbGVuODsgX2tleTgrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleThdID0gYXJndW1lbnRzW19rZXk4XTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgZm9yICh2YXIgaSA9IDIsIGwgPSBhcmdzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuXHQgICAgICAgIGlmICghaXNOb2RlKGFyZ3NbaV0pKSB0aHJvdyBub2RlRXJyb3I7XG5cdCAgICAgIH1cblx0ICAgICAgQXJyYXlQcm90by5zcGxpY2UuYXBwbHkodGhpcywgYXJncyk7XG5cdCAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ3Vuc2hpZnQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQoKSB7XG5cdCAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXHRcblx0ICAgICAgdmFyIHVuc2hpZnQgPSBBcnJheVByb3RvLnVuc2hpZnQuYmluZCh0aGlzKTtcblx0XG5cdCAgICAgIGZvciAodmFyIF9sZW45ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW45KSwgX2tleTkgPSAwOyBfa2V5OSA8IF9sZW45OyBfa2V5OSsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5OV0gPSBhcmd1bWVudHNbX2tleTldO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBBcnJheVByb3RvLmZvckVhY2guY2FsbChhcmdzLCBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgICAgaWYgKCFpc05vZGUoYXJnKSkgdGhyb3cgbm9kZUVycm9yO1xuXHQgICAgICAgIGlmICghfl90aGlzMy5pbmRleE9mKGFyZykpIHVuc2hpZnQoYXJnKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ2FkZENsYXNzJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRDbGFzcyhjbGFzc2VzKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUNsYXNzKGNsYXNzZXMsIHRydWUpO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ3JlbW92ZUNsYXNzJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhjbGFzc2VzKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUNsYXNzKGNsYXNzZXMsIGZhbHNlKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICd0b2dnbGVDbGFzcycsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoY2xhc3NlcywgdmFsdWUpIHtcblx0ICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgPyAndG9nZ2xlJyA6IHZhbHVlID8gJ2FkZCcgOiAncmVtb3ZlJztcblx0ICAgICAgaWYgKHR5cGVvZiBjbGFzc2VzID09PSAnc3RyaW5nJykge1xuXHQgICAgICAgIGNsYXNzZXMgPSBzcGxpdFdvcmRzKGNsYXNzZXMpO1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICB2YXIgbGlzdCA9IHNwbGl0V29yZHMoZWwuY2xhc3NOYW1lKTtcblx0ICAgICAgICBjbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcblx0ICAgICAgICAgIHZhciBoYXNDbGFzcyA9IH5saXN0LmluZGV4T2YoYyk7XG5cdCAgICAgICAgICBpZiAoIWhhc0NsYXNzICYmIG1ldGhvZCAhPT0gJ3JlbW92ZScpIGxpc3QucHVzaChjKTtcblx0ICAgICAgICAgIGlmIChoYXNDbGFzcyAmJiBtZXRob2QgIT09ICdhZGQnKSB7XG5cdCAgICAgICAgICAgIGxpc3QgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gZWwgIT09IGM7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGxpc3QgPSBqb2luV29yZHMobGlzdCk7XG5cdCAgICAgICAgaWYgKCFsaXN0KSBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7ZWxzZSBlbC5jbGFzc05hbWUgPSBsaXN0O1xuXHQgICAgICB9KTtcblx0ICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnZ2V0Jyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQocHJvcCkge1xuXHQgICAgICB2YXIgYXJyID0gW107XG5cdCAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICBpZiAoZWwgIT09IG51bGwpIHtcblx0ICAgICAgICAgIGVsID0gZWxbcHJvcF07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGFyci5wdXNoKGVsKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiBmbGF0dGVuKGFyciwgdGhpcyk7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnc2V0Jyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQocHJvcCwgdmFsdWUpIHtcblx0ICAgICAgaWYgKHByb3AuY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xuXHQgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIGlmIChlbCkge1xuXHQgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcCkge1xuXHQgICAgICAgICAgICAgIGlmIChrZXkgaW4gZWwpIHtcblx0ICAgICAgICAgICAgICAgIGVsW2tleV0gPSBwcm9wW2tleV07XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgICAgaWYgKHByb3AgaW4gZWwpIHtcblx0ICAgICAgICAgICAgZWxbcHJvcF0gPSB2YWx1ZTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gdGhpcztcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdjYWxsJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxsKCkge1xuXHQgICAgICBmb3IgKHZhciBfbGVuMTAgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjEwKSwgX2tleTEwID0gMDsgX2tleTEwIDwgX2xlbjEwOyBfa2V5MTArKykge1xuXHQgICAgICAgIGFyZ3NbX2tleTEwXSA9IGFyZ3VtZW50c1tfa2V5MTBdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90by5zaGlmdC5jYWxsKGFyZ3MpO1xuXHQgICAgICB2YXIgYXJyID0gW107XG5cdCAgICAgIHZhciByZXR1cm5UaGlzID0gdHJ1ZTtcblx0ICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgIGlmIChlbCAmJiBlbFttZXRob2RdIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblx0ICAgICAgICAgIGVsID0gZWxbbWV0aG9kXS5hcHBseShlbCwgYXJncyk7XG5cdCAgICAgICAgICBhcnIucHVzaChlbCk7XG5cdCAgICAgICAgICBpZiAocmV0dXJuVGhpcyAmJiBlbCAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgIHJldHVyblRoaXMgPSBmYWxzZTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgYXJyLnB1c2godW5kZWZpbmVkKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gcmV0dXJuVGhpcyA/IHRoaXMgOiBmbGF0dGVuKGFyciwgdGhpcyk7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnaXRlbScsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gaXRlbShpbmRleCkge1xuXHQgICAgICByZXR1cm4gTm9kZUxpc3RKUyhbdGhpc1tpbmRleF1dLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdvbicsXG5cdFxuXHRcblx0ICAgIC8vIGV2ZW50IGhhbmRsZXJzXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcblx0ICAgICAgaWYgKHR5cGVvZiBldmVudHMgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgZXZlbnRzID0gc3BsaXRXb3JkcyhldmVudHMpO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICghdGhpcyB8fCAhdGhpcy5sZW5ndGgpIHJldHVybiB0aGlzO1xuXHQgICAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgIGNhbGxiYWNrID0gc2VsZWN0b3I7XG5cdCAgICAgICAgc2VsZWN0b3IgPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICghY2FsbGJhY2spIHJldHVybiB0aGlzO1xuXHQgICAgICB2YXIgZm4gPSBjYWxsYmFjaztcblx0ICAgICAgY2FsbGJhY2sgPSBzZWxlY3RvciA/IGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgICAgdmFyIGVscyA9IE5vZGVMaXN0SlMoc2VsZWN0b3IsIHRoaXMpO1xuXHQgICAgICAgIGlmICghZWxzLmxlbmd0aCkge1xuXHQgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHMuc29tZShmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIHZhciB0YXJnZXQgPSBlbC5jb250YWlucyhlLnRhcmdldCk7XG5cdCAgICAgICAgICBpZiAodGFyZ2V0KSBmbi5jYWxsKGVsLCBlLCBlbCk7XG5cdCAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9IDogZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgICBmbi5hcHBseSh0aGlzLCBbZSwgdGhpc10pO1xuXHQgICAgICB9O1xuXHQgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAgICAgICBpZiAoZWwgPT09IHdpbmRvdyB8fCBpc05vZGUoZWwpKSB7XG5cdCAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrLCBmYWxzZSk7XG5cdCAgICAgICAgICAgIEV2ZW50cy5wdXNoKHtcblx0ICAgICAgICAgICAgICBlbDogZWwsXG5cdCAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuXHQgICAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ29mZicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gb2ZmKGV2ZW50cywgY2FsbGJhY2spIHtcblx0ICAgICAgaWYgKGV2ZW50cyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG5cdCAgICAgICAgY2FsbGJhY2sgPSBldmVudHM7XG5cdCAgICAgICAgZXZlbnRzID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgICBldmVudHMgPSBldmVudHMgaW5zdGFuY2VvZiBBcnJheSA/IGV2ZW50cyA6IHR5cGVvZiBldmVudHMgPT09ICdzdHJpbmcnID8gc3BsaXRXb3JkcyhldmVudHMpIDogbnVsbDtcblx0ICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgIEV2ZW50cyA9IEV2ZW50cy5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgICAgIGlmIChlICYmIGUuZWwgPT09IGVsICYmICghY2FsbGJhY2sgfHwgY2FsbGJhY2sgPT09IGUuY2FsbGJhY2spICYmICghZXZlbnRzIHx8IH5ldmVudHMuaW5kZXhPZihlLmV2ZW50KSkpIHtcblx0ICAgICAgICAgICAgZS5lbC5yZW1vdmVFdmVudExpc3RlbmVyKGUuZXZlbnQsIGUuY2FsbGJhY2spO1xuXHQgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfSk7XG5cdCAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0ICAgIGtleTogJ29uQmx1cicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gb25CbHVyKGNhbGxiYWNrKSB7XG5cdCAgICAgIGlmICghdGhpcyB8fCAhdGhpcy5sZW5ndGgpIHJldHVybiB0aGlzO1xuXHQgICAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm4gdGhpcztcblx0ICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgIGJsdXJMaXN0LnB1c2goeyBlbDogZWwsIGNhbGxiYWNrOiBjYWxsYmFjayB9KTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGlmICghYmx1ckV2ZW50KSB7XG5cdCAgICAgICAgYmx1ckV2ZW50ID0gZnVuY3Rpb24gYmx1ckV2ZW50KGUpIHtcblx0ICAgICAgICAgIGJsdXJMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgICAgICAgdmFyIHRhcmdldCA9IGl0ZW0uZWwuY29udGFpbnMoZS50YXJnZXQpIHx8IGl0ZW0uZWwgPT09IGUudGFyZ2V0O1xuXHQgICAgICAgICAgICBpZiAoIXRhcmdldCkgaXRlbS5jYWxsYmFjay5jYWxsKGl0ZW0uZWwsIGUsIGl0ZW0uZWwpO1xuXHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfTtcblx0ICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGJsdXJFdmVudCwgZmFsc2UpO1xuXHQgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBibHVyRXZlbnQsIGZhbHNlKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gdGhpcztcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdvZmZCbHVyJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBvZmZCbHVyKGNhbGxiYWNrKSB7XG5cdCAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICBibHVyTGlzdCA9IGJsdXJMaXN0LmZpbHRlcihmdW5jdGlvbiAoYmx1cikge1xuXHQgICAgICAgICAgaWYgKGJsdXIgJiYgYmx1ci5lbCA9PT0gZWwgJiYgKCFjYWxsYmFjayB8fCBibHVyLmNhbGxiYWNrID09PSBjYWxsYmFjaykpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIGVsO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9KTtcblx0ICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnYXNBcnJheScsXG5cdCAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcblx0ICAgICAgcmV0dXJuIEFycmF5UHJvdG8uc2xpY2UuY2FsbCh0aGlzKTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdCAgcmV0dXJuIE5vZGVMaXN0O1xuXHR9KCk7XG5cdFxuXHR2YXIgTkwgPSBOb2RlTGlzdC5wcm90b3R5cGU7XG5cdFxuXHRmdW5jdGlvbiBmbGF0dGVuKGFyciwgb3duZXIpIHtcblx0ICB2YXIgbGlzdCA9IFtdO1xuXHQgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGFyciwgZnVuY3Rpb24gKGVsKSB7XG5cdCAgICBpZiAoaXNOb2RlKGVsKSkge1xuXHQgICAgICBpZiAoIX5saXN0LmluZGV4T2YoZWwpKSBsaXN0LnB1c2goZWwpO1xuXHQgICAgfSBlbHNlIGlmIChpc05vZGVMaXN0KGVsKSkge1xuXHQgICAgICBmb3IgKHZhciBpZCBpbiBlbCkge1xuXHQgICAgICAgIGxpc3QucHVzaChlbFtpZF0pO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKGVsICE9PSBudWxsKSB7XG5cdCAgICAgIGFyci5nZXQgPSBOTC5nZXQ7XG5cdCAgICAgIGFyci5zZXQgPSBOTC5zZXQ7XG5cdCAgICAgIGFyci5jYWxsID0gTkwuY2FsbDtcblx0ICAgICAgYXJyLm93bmVyID0gb3duZXI7XG5cdCAgICAgIHJldHVybiBhcnI7XG5cdCAgICB9XG5cdCAgfSk7XG5cdCAgcmV0dXJuIE5vZGVMaXN0SlMobGlzdCwgb3duZXIpO1xuXHR9XG5cdFxuXHQoMCwgX2dldE93blByb3BlcnR5TmFtZXMyLmRlZmF1bHQpKEFycmF5UHJvdG8pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHQgIGlmIChrZXkgIT09ICdqb2luJyAmJiBrZXkgIT09ICdjb3B5V2l0aGluJyAmJiBrZXkgIT09ICdmaWxsJyAmJiBOTFtrZXldID09PSB1bmRlZmluZWQpIHtcblx0ICAgIE5MW2tleV0gPSBBcnJheVByb3RvW2tleV07XG5cdCAgfVxuXHR9KTtcblx0aWYgKHdpbmRvdy5TeW1ib2wgJiYgX2l0ZXJhdG9yMi5kZWZhdWx0KSB7XG5cdCAgTkxbX2l0ZXJhdG9yMi5kZWZhdWx0XSA9IE5MLnZhbHVlcyA9IEFycmF5UHJvdG9bX2l0ZXJhdG9yMi5kZWZhdWx0XTtcblx0fVxuXHR2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdGZ1bmN0aW9uIHNldHRlckdldHRlcihwcm9wKSB7XG5cdCAgdmFyIF90aGlzNCA9IHRoaXM7XG5cdFxuXHQgIGlmIChOTFtwcm9wXSkgcmV0dXJuO1xuXHQgIGlmIChkaXZbcHJvcF0gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXHQgICAgTkxbcHJvcF0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIGZvciAodmFyIF9sZW4xMSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMTEpLCBfa2V5MTEgPSAwOyBfa2V5MTEgPCBfbGVuMTE7IF9rZXkxMSsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5MTFdID0gYXJndW1lbnRzW19rZXkxMV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBhcnIgPSBbXTtcblx0ICAgICAgdmFyIHJldHVyblRoaXMgPSB0cnVlO1xuXHQgICAgICBmb3IgKHZhciBpIGluIE5MKSB7XG5cdCAgICAgICAgdmFyIGVsID0gTkxbaV07XG5cdCAgICAgICAgaWYgKGVsICYmIGVsW3Byb3BdIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblx0ICAgICAgICAgIGVsID0gZWxbcHJvcF0uYXBwbHkoZWwsIGFyZ3MpO1xuXHQgICAgICAgICAgYXJyLnB1c2goZWwpO1xuXHQgICAgICAgICAgaWYgKHJldHVyblRoaXMgJiYgZWwgIT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICByZXR1cm5UaGlzID0gZmFsc2U7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGFyci5wdXNoKHVuZGVmaW5lZCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiByZXR1cm5UaGlzID8gX3RoaXM0IDogZmxhdHRlbihhcnIsIF90aGlzNCk7XG5cdCAgICB9O1xuXHQgIH0gZWxzZSB7XG5cdCAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShOTCwgcHJvcCwge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcblx0ICAgICAgICB2YXIgYXJyID0gW107XG5cdCAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgICAgaWYgKGVsICE9PSBudWxsKSB7XG5cdCAgICAgICAgICAgIGVsID0gZWxbcHJvcF07XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBhcnIucHVzaChlbCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgcmV0dXJuIGZsYXR0ZW4oYXJyLCB0aGlzKTtcblx0ICAgICAgfSxcblx0ICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcblx0ICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgICBpZiAoZWwgJiYgcHJvcCBpbiBlbCkge1xuXHQgICAgICAgICAgICBlbFtwcm9wXSA9IHZhbHVlO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9XG5cdH1cblx0Zm9yICh2YXIgcHJvcCBpbiBkaXYpIHtcblx0ICBzZXR0ZXJHZXR0ZXIocHJvcCk7XG5cdH1mdW5jdGlvbiBOb2RlTGlzdEpTKCkge1xuXHQgIGZvciAodmFyIF9sZW4xMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMTIpLCBfa2V5MTIgPSAwOyBfa2V5MTIgPCBfbGVuMTI7IF9rZXkxMisrKSB7XG5cdCAgICBhcmdzW19rZXkxMl0gPSBhcmd1bWVudHNbX2tleTEyXTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBuZXcgTm9kZUxpc3QoYXJncyk7XG5cdH1cblx0d2luZG93Lk5MID0gTm9kZUxpc3RKUztcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IE5vZGVMaXN0SlM7XG5cbi8qKiovIH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMzApO1xuXHR2YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpLk9iamVjdDtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKXtcblx0ICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHQvLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuXHQkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKSwgJ09iamVjdCcsIHtkZWZpbmVQcm9wZXJ0eTogX193ZWJwYWNrX3JlcXVpcmVfXygzNykuZn0pO1xuXG4vKioqLyB9LFxuLyogMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgY29yZSAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcblx0ICAsIGN0eCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpXG5cdCAgLCBoaWRlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cdFxuXHR2YXIgJGV4cG9ydCA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG5cdCAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkZcblx0ICAgICwgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuR1xuXHQgICAgLCBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TXG5cdCAgICAsIElTX1BST1RPICA9IHR5cGUgJiAkZXhwb3J0LlBcblx0ICAgICwgSVNfQklORCAgID0gdHlwZSAmICRleHBvcnQuQlxuXHQgICAgLCBJU19XUkFQICAgPSB0eXBlICYgJGV4cG9ydC5XXG5cdCAgICAsIGV4cG9ydHMgICA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pXG5cdCAgICAsIGV4cFByb3RvICA9IGV4cG9ydHNbUFJPVE9UWVBFXVxuXHQgICAgLCB0YXJnZXQgICAgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdXG5cdCAgICAsIGtleSwgb3duLCBvdXQ7XG5cdCAgaWYoSVNfR0xPQkFMKXNvdXJjZSA9IG5hbWU7XG5cdCAgZm9yKGtleSBpbiBzb3VyY2Upe1xuXHQgICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG5cdCAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuXHQgICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuXHQgICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcblx0ICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG5cdCAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcblx0ICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG5cdCAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuXHQgICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcblx0ICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG5cdCAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uKEMpe1xuXHQgICAgICB2YXIgRiA9IGZ1bmN0aW9uKGEsIGIsIGMpe1xuXHQgICAgICAgIGlmKHRoaXMgaW5zdGFuY2VvZiBDKXtcblx0ICAgICAgICAgIHN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtcblx0ICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEM7XG5cdCAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuXHQgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcblx0ICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuXHQgICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgfTtcblx0ICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuXHQgICAgICByZXR1cm4gRjtcblx0ICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuXHQgICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuXHQgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG5cdCAgICBpZihJU19QUk9UTyl7XG5cdCAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcblx0ICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcblx0ICAgICAgaWYodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSloaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyB0eXBlIGJpdG1hcFxuXHQkZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuXHQkZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuXHQkZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuXHQkZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG5cdCRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuXHQkZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcblx0JGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG5cdCRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YCBcblx0bW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG4vKioqLyB9LFxuLyogMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5cdHZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuXHQgID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0aWYodHlwZW9mIF9fZyA9PSAnbnVtYmVyJylfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuLyoqKi8gfSxcbi8qIDMzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0ge3ZlcnNpb246ICcyLjQuMCd9O1xuXHRpZih0eXBlb2YgX19lID09ICdudW1iZXInKV9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuLyoqKi8gfSxcbi8qIDM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcblx0dmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuXHQgIGFGdW5jdGlvbihmbik7XG5cdCAgaWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjtcblx0ICBzd2l0Y2gobGVuZ3RoKXtcblx0ICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uKGEpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcblx0ICAgIH07XG5cdCAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG5cdCAgICB9O1xuXHQgICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24oYSwgYiwgYyl7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuXHQgICAgfTtcblx0ICB9XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKC8qIC4uLmFyZ3MgKi8pe1xuXHQgICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZih0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZFAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG5cdCAgLCBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSkgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG5cdH0gOiBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIG9iamVjdFtrZXldID0gdmFsdWU7XG5cdCAgcmV0dXJuIG9iamVjdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgYW5PYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KVxuXHQgICwgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVxuXHQgICwgdG9QcmltaXRpdmUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KVxuXHQgICwgZFAgICAgICAgICAgICAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cdFxuXHRleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpe1xuXHQgIGFuT2JqZWN0KE8pO1xuXHQgIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcblx0ICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcblx0ICBpZihJRThfRE9NX0RFRklORSl0cnkge1xuXHQgICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuXHQgIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cblx0ICBpZignZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcblx0ICBpZigndmFsdWUnIGluIEF0dHJpYnV0ZXMpT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG5cdCAgcmV0dXJuIE87XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oNDEpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKShmdW5jdGlvbigpe1xuXHQgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX3JlcXVpcmVfXyg0MykoJ2RpdicpLCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5cdG1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oNDIpKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gNzsgfX0pLmEgIT0gNztcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA0MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuICEhZXhlYygpO1xuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSlcblx0ICAsIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikuZG9jdW1lbnRcblx0ICAvLyBpbiBvbGQgSUUgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCdcblx0ICAsIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblx0Ly8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcblx0Ly8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgUyl7XG5cdCAgaWYoIWlzT2JqZWN0KGl0KSlyZXR1cm4gaXQ7XG5cdCAgdmFyIGZuLCB2YWw7XG5cdCAgaWYoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuXHQgIGlmKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpcmV0dXJuIHZhbDtcblx0ICBpZighUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuXHQgIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuXHQgIHJldHVybiB7XG5cdCAgICBlbnVtZXJhYmxlICA6ICEoYml0bWFwICYgMSksXG5cdCAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG5cdCAgICB3cml0YWJsZSAgICA6ICEoYml0bWFwICYgNCksXG5cdCAgICB2YWx1ZSAgICAgICA6IHZhbHVlXG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNDcpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA0NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNzcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oODEpLmYoJ2l0ZXJhdG9yJyk7XG5cbi8qKiovIH0sXG4vKiA0OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJGF0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpKHRydWUpO1xuXHRcblx0Ly8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbihpdGVyYXRlZCl7XG5cdCAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuXHQgIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG5cdC8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcblx0fSwgZnVuY3Rpb24oKXtcblx0ICB2YXIgTyAgICAgPSB0aGlzLl90XG5cdCAgICAsIGluZGV4ID0gdGhpcy5faVxuXHQgICAgLCBwb2ludDtcblx0ICBpZihpbmRleCA+PSBPLmxlbmd0aClyZXR1cm4ge3ZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWV9O1xuXHQgIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcblx0ICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcblx0ICByZXR1cm4ge3ZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2V9O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MClcblx0ICAsIGRlZmluZWQgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpO1xuXHQvLyB0cnVlICAtPiBTdHJpbmcjYXRcblx0Ly8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oVE9fU1RSSU5HKXtcblx0ICByZXR1cm4gZnVuY3Rpb24odGhhdCwgcG9zKXtcblx0ICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpXG5cdCAgICAgICwgaSA9IHRvSW50ZWdlcihwb3MpXG5cdCAgICAgICwgbCA9IHMubGVuZ3RoXG5cdCAgICAgICwgYSwgYjtcblx0ICAgIGlmKGkgPCAwIHx8IGkgPj0gbClyZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG5cdCAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuXHQgICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcblx0ICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcblx0ICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDUwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyA3LjEuNCBUb0ludGVnZXJcblx0dmFyIGNlaWwgID0gTWF0aC5jZWlsXG5cdCAgLCBmbG9vciA9IE1hdGguZmxvb3I7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKGl0ID09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIExJQlJBUlkgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mylcblx0ICAsICRleHBvcnQgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHJlZGVmaW5lICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClcblx0ICAsIGhpZGUgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIGhhcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSlcblx0ICAsIEl0ZXJhdG9ycyAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nilcblx0ICAsICRpdGVyQ3JlYXRlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nylcblx0ICAsIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSlcblx0ICAsIElURVJBVE9SICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCkoJ2l0ZXJhdG9yJylcblx0ICAsIEJVR0dZICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcblx0ICAsIEZGX0lURVJBVE9SICAgID0gJ0BAaXRlcmF0b3InXG5cdCAgLCBLRVlTICAgICAgICAgICA9ICdrZXlzJ1xuXHQgICwgVkFMVUVTICAgICAgICAgPSAndmFsdWVzJztcblx0XG5cdHZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCl7XG5cdCAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXHQgIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcblx0ICAgIGlmKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKXJldHVybiBwcm90b1traW5kXTtcblx0ICAgIHN3aXRjaChraW5kKXtcblx0ICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgIH07XG5cdCAgdmFyIFRBRyAgICAgICAgPSBOQU1FICsgJyBJdGVyYXRvcidcblx0ICAgICwgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTXG5cdCAgICAsIFZBTFVFU19CVUcgPSBmYWxzZVxuXHQgICAgLCBwcm90byAgICAgID0gQmFzZS5wcm90b3R5cGVcblx0ICAgICwgJG5hdGl2ZSAgICA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuXHQgICAgLCAkZGVmYXVsdCAgID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVClcblx0ICAgICwgJGVudHJpZXMgICA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWRcblx0ICAgICwgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmVcblx0ICAgICwgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcblx0ICAvLyBGaXggbmF0aXZlXG5cdCAgaWYoJGFueU5hdGl2ZSl7XG5cdCAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSkpO1xuXHQgICAgaWYoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpe1xuXHQgICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG5cdCAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuXHQgICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcblx0ICAgICAgaWYoIUxJQlJBUlkgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKWhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuXHQgIGlmKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUyl7XG5cdCAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcblx0ICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG5cdCAgfVxuXHQgIC8vIERlZmluZSBpdGVyYXRvclxuXHQgIGlmKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKXtcblx0ICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG5cdCAgfVxuXHQgIC8vIFBsdWcgZm9yIGxpYnJhcnlcblx0ICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcblx0ICBJdGVyYXRvcnNbVEFHXSAgPSByZXR1cm5UaGlzO1xuXHQgIGlmKERFRkFVTFQpe1xuXHQgICAgbWV0aG9kcyA9IHtcblx0ICAgICAgdmFsdWVzOiAgREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG5cdCAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcblx0ICAgICAgZW50cmllczogJGVudHJpZXNcblx0ICAgIH07XG5cdCAgICBpZihGT1JDRUQpZm9yKGtleSBpbiBtZXRob2RzKXtcblx0ICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKXJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG5cdCAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuXHQgIH1cblx0ICByZXR1cm4gbWV0aG9kcztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiA1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcblxuLyoqKi8gfSxcbi8qIDU1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwga2V5KXtcblx0ICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDU2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKioqLyB9LFxuLyogNTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGNyZWF0ZSAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OClcblx0ICAsIGRlc2NyaXB0b3IgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cdFxuXHQvLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KShJdGVyYXRvclByb3RvdHlwZSwgX193ZWJwYWNrX3JlcXVpcmVfXyg3NCkoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuXHQgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwge25leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCl9KTtcblx0ICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDU4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcblx0dmFyIGFuT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOClcblx0ICAsIGRQcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSlcblx0ICAsIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSlcblx0ICAsIElFX1BST1RPICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OCkoJ0lFX1BST1RPJylcblx0ICAsIEVtcHR5ICAgICAgID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfVxuXHQgICwgUFJPVE9UWVBFICAgPSAncHJvdG90eXBlJztcblx0XG5cdC8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcblx0dmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbigpe1xuXHQgIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG5cdCAgdmFyIGlmcmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpKCdpZnJhbWUnKVxuXHQgICAgLCBpICAgICAgPSBlbnVtQnVnS2V5cy5sZW5ndGhcblx0ICAgICwgbHQgICAgID0gJzwnXG5cdCAgICAsIGd0ICAgICA9ICc+J1xuXHQgICAgLCBpZnJhbWVEb2N1bWVudDtcblx0ICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuXHQgIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcblx0ICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuXHQgIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcblx0ICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuXHQgIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcblx0ICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG5cdCAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcblx0ICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcblx0ICB3aGlsZShpLS0pZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG5cdCAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcyl7XG5cdCAgdmFyIHJlc3VsdDtcblx0ICBpZihPICE9PSBudWxsKXtcblx0ICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcblx0ICAgIHJlc3VsdCA9IG5ldyBFbXB0eTtcblx0ICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuXHQgICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuXHQgICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG5cdCAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcblx0ICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDU5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZFAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KVxuXHQgICwgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KVxuXHQgICwgZ2V0S2V5cyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSkgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcyl7XG5cdCAgYW5PYmplY3QoTyk7XG5cdCAgdmFyIGtleXMgICA9IGdldEtleXMoUHJvcGVydGllcylcblx0ICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcblx0ICAgICwgaSA9IDBcblx0ICAgICwgUDtcblx0ICB3aGlsZShsZW5ndGggPiBpKWRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG5cdCAgcmV0dXJuIE87XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG5cdHZhciAka2V5cyAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpXG5cdCAgLCBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pe1xuXHQgIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGhhcyAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTUpXG5cdCAgLCB0b0lPYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgYXJyYXlJbmRleE9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSkoZmFsc2UpXG5cdCAgLCBJRV9QUk9UTyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KSgnSUVfUFJPVE8nKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBuYW1lcyl7XG5cdCAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwga2V5O1xuXHQgIGZvcihrZXkgaW4gTylpZihrZXkgIT0gSUVfUFJPVE8paGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcblx0ICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpe1xuXHQgICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcblx0ICB9XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3Ncblx0dmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKVxuXHQgICwgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuXHQvLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xuXHR2YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Milcblx0ICAsIHRvTGVuZ3RoICA9IF9fd2VicGFja19yZXF1aXJlX18oNjYpXG5cdCAgLCB0b0luZGV4ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihJU19JTkNMVURFUyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKCR0aGlzLCBlbCwgZnJvbUluZGV4KXtcblx0ICAgIHZhciBPICAgICAgPSB0b0lPYmplY3QoJHRoaXMpXG5cdCAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpXG5cdCAgICAgICwgaW5kZXggID0gdG9JbmRleChmcm9tSW5kZXgsIGxlbmd0aClcblx0ICAgICAgLCB2YWx1ZTtcblx0ICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cblx0ICAgIGlmKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKXdoaWxlKGxlbmd0aCA+IGluZGV4KXtcblx0ICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuXHQgICAgICBpZih2YWx1ZSAhPSB2YWx1ZSlyZXR1cm4gdHJ1ZTtcblx0ICAgIC8vIEFycmF5I3RvSW5kZXggaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3Rcblx0ICAgIH0gZWxzZSBmb3IoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKWlmKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pe1xuXHQgICAgICBpZihPW2luZGV4XSA9PT0gZWwpcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG5cdCAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyA3LjEuMTUgVG9MZW5ndGhcblx0dmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNTApXG5cdCAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MClcblx0ICAsIG1heCAgICAgICA9IE1hdGgubWF4XG5cdCAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpbmRleCwgbGVuZ3RoKXtcblx0ICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG5cdCAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpKCdrZXlzJylcblx0ICAsIHVpZCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG5cdCAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG5cdCAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaWQgPSAwXG5cdCAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcblx0bW9kdWxlLmV4cG9ydHMgPSAoXG5cdCAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcblx0KS5zcGxpdCgnLCcpO1xuXG4vKioqLyB9LFxuLyogNzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KS5mXG5cdCAgLCBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KVxuXHQgICwgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCkoJ3RvU3RyaW5nVGFnJyk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCB0YWcsIHN0YXQpe1xuXHQgIGlmKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpZGVmKGl0LCBUQUcsIHtjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWd9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgc3RvcmUgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpKCd3a3MnKVxuXHQgICwgdWlkICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBTeW1ib2wgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikuU3ltYm9sXG5cdCAgLCBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXHRcblx0dmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKXtcblx0ICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cblx0ICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG5cdH07XG5cdFxuXHQkZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG4vKioqLyB9LFxuLyogNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG5cdHZhciBoYXMgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTUpXG5cdCAgLCB0b09iamVjdCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpXG5cdCAgLCBJRV9QUk9UTyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpKCdJRV9QUk9UTycpXG5cdCAgLCBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihPKXtcblx0ICBPID0gdG9PYmplY3QoTyk7XG5cdCAgaWYoaGFzKE8sIElFX1BST1RPKSlyZXR1cm4gT1tJRV9QUk9UT107XG5cdCAgaWYodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcil7XG5cdCAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cdCAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG5cdHZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNzgpO1xuXHR2YXIgZ2xvYmFsICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBoaWRlICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIEl0ZXJhdG9ycyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KVxuXHQgICwgVE9fU1RSSU5HX1RBRyA9IF9fd2VicGFja19yZXF1aXJlX18oNzQpKCd0b1N0cmluZ1RhZycpO1xuXHRcblx0Zm9yKHZhciBjb2xsZWN0aW9ucyA9IFsnTm9kZUxpc3QnLCAnRE9NVG9rZW5MaXN0JywgJ01lZGlhTGlzdCcsICdTdHlsZVNoZWV0TGlzdCcsICdDU1NSdWxlTGlzdCddLCBpID0gMDsgaSA8IDU7IGkrKyl7XG5cdCAgdmFyIE5BTUUgICAgICAgPSBjb2xsZWN0aW9uc1tpXVxuXHQgICAgLCBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdXG5cdCAgICAsIHByb3RvICAgICAgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuXHQgIGlmKHByb3RvICYmICFwcm90b1tUT19TVFJJTkdfVEFHXSloaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcblx0ICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDc4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBhZGRUb1Vuc2NvcGFibGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OSlcblx0ICAsIHN0ZXAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKVxuXHQgICwgSXRlcmF0b3JzICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTYpXG5cdCAgLCB0b0lPYmplY3QgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7XG5cdFxuXHQvLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG5cdC8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG5cdC8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcblx0Ly8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MikoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG5cdCAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcblx0ICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuXHQvLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcblx0fSwgZnVuY3Rpb24oKXtcblx0ICB2YXIgTyAgICAgPSB0aGlzLl90XG5cdCAgICAsIGtpbmQgID0gdGhpcy5fa1xuXHQgICAgLCBpbmRleCA9IHRoaXMuX2krKztcblx0ICBpZighTyB8fCBpbmRleCA+PSBPLmxlbmd0aCl7XG5cdCAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuXHQgICAgcmV0dXJuIHN0ZXAoMSk7XG5cdCAgfVxuXHQgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuXHQgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuXHQgIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcblx0fSwgJ3ZhbHVlcycpO1xuXHRcblx0Ly8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuXHRJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXHRcblx0YWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuXHRhZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcblx0YWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG4vKioqLyB9LFxuLyogNzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfTtcblxuLyoqKi8gfSxcbi8qIDgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGRvbmUsIHZhbHVlKXtcblx0ICByZXR1cm4ge3ZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KTtcblxuLyoqKi8gfSxcbi8qIDgyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oODMpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA4MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4NCk7XG5cdHZhciAkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuT2JqZWN0O1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuXHQgIHJldHVybiAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5cdF9fd2VicGFja19yZXF1aXJlX18oODUpKCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg4NikuZjtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA4NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG5cdHZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIGNvcmUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgZmFpbHMgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgZXhlYyl7XG5cdCAgdmFyIGZuICA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXVxuXHQgICAgLCBleHAgPSB7fTtcblx0ICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuXHQgICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24oKXsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG5cdHZhciB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgZ09QTiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NykuZlxuXHQgICwgdG9TdHJpbmcgID0ge30udG9TdHJpbmc7XG5cdFxuXHR2YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuXHQgID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXHRcblx0dmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZ09QTihpdCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiA4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuXHR2YXIgJGtleXMgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpXG5cdCAgLCBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSkuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cdFxuXHRleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pe1xuXHQgIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG5cdCAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcblx0ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZhciBfZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0XG5cdHZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcblx0ICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuXHQgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG5cdCAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG5cdCAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcblx0ICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG5cdCAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcblx0ICAgIHJldHVybiBDb25zdHJ1Y3Rvcjtcblx0ICB9O1xuXHR9KCk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTMpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9BY2NvcmRpb24udnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FjY29yZGlvbi52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0FjY29yZGlvbi52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQWNjb3JkaW9uLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0FjY29yZGlvbi52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogOTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICB0eXBlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIG9uZUF0QXRpbWU6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9XG5cdCAgfSxcblx0ICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuXHQgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICB0aGlzLl9pc0FjY29yZGlvbiA9IHRydWU7XG5cdCAgICB0aGlzLiRvbignaXNPcGVuRXZlbnQnLCBmdW5jdGlvbiAoY2hpbGQpIHtcblx0ICAgICAgaWYgKF90aGlzLm9uZUF0QXRpbWUpIHtcblx0ICAgICAgICBfdGhpcy4kY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuXHQgICAgICAgICAgaWYgKGNoaWxkICE9PSBpdGVtKSB7XG5cdCAgICAgICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdiBjbGFzcz1cInBhbmVsLWdyb3VwXCI+XG5cdFxuXHQvLyAgICAgPHNsb3Q+PC9zbG90PlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDkyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0ZXhwb3J0cy5nZXRKU09OID0gZ2V0SlNPTjtcblx0ZXhwb3J0cy5nZXRTY3JvbGxCYXJXaWR0aCA9IGdldFNjcm9sbEJhcldpZHRoO1xuXHRleHBvcnRzLnRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9ucztcblx0ZXhwb3J0cy5kZWxheWVyID0gZGVsYXllcjtcblx0ZXhwb3J0cy5WdWVGaXhlciA9IFZ1ZUZpeGVyO1xuXHQvLyBjb2VyY2UgY29udmVydCBzb20gdHlwZXMgb2YgZGF0YSBpbnRvIGFub3RoZXIgdHlwZVxuXHR2YXIgY29lcmNlID0gZXhwb3J0cy5jb2VyY2UgPSB7XG5cdCAgLy8gQ29udmVydCBhIHN0cmluZyB0byBib29sZWFtLiBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWUgd2l0aG91dCBtb2RpZmljYXRpb24sIHNvIGlmIGlzIG5vdCBib29sZWFuLCBWdWUgdGhyb3cgYSB3YXJuaW5nLlxuXHQgIGJvb2xlYW46IGZ1bmN0aW9uIGJvb2xlYW4odmFsKSB7XG5cdCAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyB2YWwgPT09ICcnIHx8IHZhbCA9PT0gJ3RydWUnID8gdHJ1ZSA6IHZhbCA9PT0gJ2ZhbHNlJyB8fCB2YWwgPT09ICdudWxsJyB8fCB2YWwgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiB2YWwgOiB2YWw7XG5cdCAgfSxcblx0ICAvLyBBdHRlbXB0IHRvIGNvbnZlcnQgYSBzdHJpbmcgdmFsdWUgdG8gYSBOdW1iZXIuIE90aGVyd2lzZSwgcmV0dXJuIDAuXG5cdCAgbnVtYmVyOiBmdW5jdGlvbiBudW1iZXIodmFsKSB7XG5cdCAgICB2YXIgYWx0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBudWxsO1xuXHQgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInID8gdmFsIDogdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsIHx8IGlzTmFOKE51bWJlcih2YWwpKSA/IGFsdCA6IE51bWJlcih2YWwpO1xuXHQgIH0sXG5cdCAgLy8gQXR0ZW1wdCB0byBjb252ZXJ0IHRvIHN0cmluZyBhbnkgdmFsdWUsIGV4Y2VwdCBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG5cdCAgc3RyaW5nOiBmdW5jdGlvbiBzdHJpbmcodmFsKSB7XG5cdCAgICByZXR1cm4gdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsID8gJycgOiB2YWwgKyAnJztcblx0ICB9LFxuXHQgIC8vIFBhdHRlcm4gYWNjZXB0IFJlZ0V4cCwgZnVuY3Rpb24sIG9yIHN0cmluZyAoY29udmVydGVkIHRvIFJlZ0V4cCkuIE90aGVyd2lzZSByZXR1cm4gbnVsbC5cblx0ICBwYXR0ZXJuOiBmdW5jdGlvbiBwYXR0ZXJuKHZhbCkge1xuXHQgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHZhbCBpbnN0YW5jZW9mIFJlZ0V4cCA/IHZhbCA6IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gbmV3IFJlZ0V4cCh2YWwpIDogbnVsbDtcblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBnZXRKU09OKHVybCkge1xuXHQgIHZhciByZXF1ZXN0ID0gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHQgIHZhciBkYXRhID0ge307XG5cdCAgLy8gcCAoLXNpbXVsYXRlZC0gcHJvbWlzZSlcblx0ICB2YXIgcCA9IHtcblx0ICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4oZm4xLCBmbjIpIHtcblx0ICAgICAgcmV0dXJuIHAuZG9uZShmbjEpLmZhaWwoZm4yKTtcblx0ICAgIH0sXG5cdCAgICBjYXRjaDogZnVuY3Rpb24gX2NhdGNoKGZuKSB7XG5cdCAgICAgIHJldHVybiBwLmZhaWwoZm4pO1xuXHQgICAgfSxcblx0ICAgIGFsd2F5czogZnVuY3Rpb24gYWx3YXlzKGZuKSB7XG5cdCAgICAgIHJldHVybiBwLmRvbmUoZm4pLmZhaWwoZm4pO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgWydkb25lJywgJ2ZhaWwnXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAgICBkYXRhW25hbWVdID0gW107XG5cdCAgICBwW25hbWVdID0gZnVuY3Rpb24gKGZuKSB7XG5cdCAgICAgIGlmIChmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSBkYXRhW25hbWVdLnB1c2goZm4pO1xuXHQgICAgICByZXR1cm4gcDtcblx0ICAgIH07XG5cdCAgfSk7XG5cdCAgcC5kb25lKEpTT04ucGFyc2UpO1xuXHQgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHJlcXVlc3QucmVhZHlTdGF0ZSA9PT0gNCkge1xuXHQgICAgICB2YXIgcmVzcG9uc2U7XG5cdCAgICAgIHZhciBpO1xuXHQgICAgICB2YXIgdmFsdWU7XG5cdFxuXHQgICAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBlID0geyBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzIH07XG5cdCAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5yZXNwb25zZVRleHQ7XG5cdFxuXHQgICAgICAgICAgICBmb3IgKGkgaW4gZGF0YS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgdmFsdWUgPSBkYXRhLmRvbmVbaV0ocmVzcG9uc2UpO1xuXHRcblx0ICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB2YWx1ZTtcblx0ICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICAgICAgICBkYXRhLmZhaWwuZm9yRWFjaChmdW5jdGlvbiAoZmFpbCkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBmYWlsKGVycik7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBkYXRhLmZhaWwuZm9yRWFjaChmdW5jdGlvbiAoZmFpbCkge1xuXHQgICAgICAgICAgICByZXR1cm4gZmFpbChlKTtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSkoKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIHJlcXVlc3Qub3BlbignR0VUJywgdXJsKTtcblx0ICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cdCAgcmVxdWVzdC5zZW5kKCk7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFNjcm9sbEJhcldpZHRoKCkge1xuXHQgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDw9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHtcblx0ICAgIHJldHVybiAwO1xuXHQgIH1cblx0ICB2YXIgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG5cdCAgaW5uZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cdCAgaW5uZXIuc3R5bGUuaGVpZ2h0ID0gJzIwMHB4Jztcblx0XG5cdCAgdmFyIG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgb3V0ZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXHQgIG91dGVyLnN0eWxlLnRvcCA9ICcwcHgnO1xuXHQgIG91dGVyLnN0eWxlLmxlZnQgPSAnMHB4Jztcblx0ICBvdXRlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cdCAgb3V0ZXIuc3R5bGUud2lkdGggPSAnMjAwcHgnO1xuXHQgIG91dGVyLnN0eWxlLmhlaWdodCA9ICcxNTBweCc7XG5cdCAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcblx0ICBvdXRlci5hcHBlbmRDaGlsZChpbm5lcik7XG5cdFxuXHQgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0ZXIpO1xuXHQgIHZhciB3MSA9IGlubmVyLm9mZnNldFdpZHRoO1xuXHQgIG91dGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG5cdCAgdmFyIHcyID0gaW5uZXIub2Zmc2V0V2lkdGg7XG5cdCAgaWYgKHcxID09PSB3MikgdzIgPSBvdXRlci5jbGllbnRXaWR0aDtcblx0XG5cdCAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdXRlcik7XG5cdFxuXHQgIHJldHVybiB3MSAtIHcyO1xuXHR9XG5cdFxuXHQvLyByZXR1cm4gYWxsIHRoZSB0cmFuc2xhdGlvbnMgb3IgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgKGVuZ2xpc2gpXG5cdGZ1bmN0aW9uIHRyYW5zbGF0aW9ucygpIHtcblx0ICB2YXIgbGFuZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ2VuJztcblx0XG5cdCAgdmFyIHRleHQgPSB7XG5cdCAgICBkYXlzT2ZXZWVrOiBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ10sXG5cdCAgICBsaW1pdDogJ0xpbWl0IHJlYWNoZWQgKHt7bGltaXR9fSBpdGVtcyBtYXgpLicsXG5cdCAgICBsb2FkaW5nOiAnTG9hZGluZy4uLicsXG5cdCAgICBtaW5MZW5ndGg6ICdNaW4uIExlbmd0aCcsXG5cdCAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuXHQgICAgbm90U2VsZWN0ZWQ6ICdOb3RoaW5nIFNlbGVjdGVkJyxcblx0ICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQnLFxuXHQgICAgc2VhcmNoOiAnU2VhcmNoJ1xuXHQgIH07XG5cdCAgcmV0dXJuIHdpbmRvdy5WdWVTdHJhcExhbmcgPyB3aW5kb3cuVnVlU3RyYXBMYW5nKGxhbmcpIDogdGV4dDtcblx0fVxuXHRcblx0Ly8gZGVsYXllcjogc2V0IGEgZnVuY3Rpb24gdGhhdCBleGVjdXRlIGFmdGVyIGEgZGVsYXlcblx0Ly8gQHBhcmFtcyAoZnVuY3Rpb24sIGRlbGF5X3Byb3Agb3IgdmFsdWUsIGRlZmF1bHRfdmFsdWUpXG5cdGZ1bmN0aW9uIGRlbGF5ZXIoZm4sIHZhclRpbWVyKSB7XG5cdCAgdmFyIGlmTmFOID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAxMDA7XG5cdFxuXHQgIGZ1bmN0aW9uIHRvSW50KGVsKSB7XG5cdCAgICByZXR1cm4gKC9eWzAtOV0rJC8udGVzdChlbCkgPyBOdW1iZXIoZWwpIHx8IDEgOiBudWxsXG5cdCAgICApO1xuXHQgIH1cblx0ICB2YXIgdGltZXJJZDtcblx0ICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0aW1lcklkKSBjbGVhclRpbWVvdXQodGltZXJJZCk7XG5cdCAgICB0aW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdCAgICAgIGZuLmFwcGx5KF90aGlzLCBhcmdzKTtcblx0ICAgIH0sIHRvSW50KHZhclRpbWVyKSB8fCB0b0ludCh0aGlzW3ZhclRpbWVyXSkgfHwgaWZOYU4pO1xuXHQgIH07XG5cdH1cblx0XG5cdC8vIEZpeCBhIHZ1ZSBpbnN0YW5jZSBMaWZlY3ljbGUgdG8gdnVlIDEvMiAoanVzdCB0aGUgYmFzaWMgZWxlbWVudHMsIGlzIG5vdCBhIHJlYWwgcGFyc2VyLCBzbyB0aGlzIHdvcmsgb25seSBpZiB5b3VyIGNvZGUgaXMgY29tcGF0aWJsZSB3aXRoIGJvdGgpXG5cdGZ1bmN0aW9uIFZ1ZUZpeGVyKHZ1ZSkge1xuXHQgIHZhciB2dWUyID0gIXdpbmRvdy5WdWUgfHwgIXdpbmRvdy5WdWUucGFydGlhbDtcblx0ICB2YXIgbWl4aW4gPSB7XG5cdCAgICBjb21wdXRlZDoge1xuXHQgICAgICB2dWUyOiBmdW5jdGlvbiB2dWUyKCkge1xuXHQgICAgICAgIHJldHVybiAhdGhpcy4kZGlzcGF0Y2g7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXHQgIGlmICghdnVlMikge1xuXHQgICAgaWYgKHZ1ZS5iZWZvcmVDcmVhdGUpIHtcblx0ICAgICAgbWl4aW4uY3JlYXRlID0gdnVlLmJlZm9yZUNyZWF0ZTtcblx0ICAgICAgZGVsZXRlIHZ1ZS5iZWZvcmVDcmVhdGU7XG5cdCAgICB9XG5cdCAgICBpZiAodnVlLmJlZm9yZU1vdW50KSB7XG5cdCAgICAgIHZ1ZS5iZWZvcmVDb21waWxlID0gdnVlLmJlZm9yZU1vdW50O1xuXHQgICAgICBkZWxldGUgdnVlLmJlZm9yZU1vdW50O1xuXHQgICAgfVxuXHQgICAgaWYgKHZ1ZS5tb3VudGVkKSB7XG5cdCAgICAgIHZ1ZS5yZWFkeSA9IHZ1ZS5tb3VudGVkO1xuXHQgICAgICBkZWxldGUgdnVlLm1vdW50ZWQ7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIGlmICh2dWUuYmVmb3JlQ29tcGlsZSkge1xuXHQgICAgICB2dWUuYmVmb3JlTW91bnQgPSB2dWUuYmVmb3JlQ29tcGlsZTtcblx0ICAgICAgZGVsZXRlIHZ1ZS5iZWZvcmVDb21waWxlO1xuXHQgICAgfVxuXHQgICAgaWYgKHZ1ZS5jb21waWxlZCkge1xuXHQgICAgICBtaXhpbi5jb21waWxlZCA9IHZ1ZS5jb21waWxlZDtcblx0ICAgICAgZGVsZXRlIHZ1ZS5jb21waWxlZDtcblx0ICAgIH1cblx0ICAgIGlmICh2dWUucmVhZHkpIHtcblx0ICAgICAgdnVlLm1vdW50ZWQgPSB2dWUucmVhZHk7XG5cdCAgICAgIGRlbGV0ZSB2dWUucmVhZHk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlmICghdnVlLm1peGlucykge1xuXHQgICAgdnVlLm1peGlucyA9IFtdO1xuXHQgIH1cblx0ICB2dWUubWl4aW5zLnVuc2hpZnQobWl4aW4pO1xuXHQgIHJldHVybiB2dWU7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDkzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwtZ3JvdXBcXFwiPlxcclxcbiAgICA8c2xvdD48L3Nsb3Q+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDk0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oOTUpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nilcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FmZml4LnZ1ZVwiXG5cdGhvdEFQSS5jcmVhdGVSZWNvcmQoaWQsIG1vZHVsZS5leHBvcnRzKVxuXHRtb2R1bGUuaG90LmFjY2VwdChbXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9BZmZpeC52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0FmZml4LnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9BZmZpeC52dWVcIilcblx0aWYgKG5ld09wdGlvbnMgJiYgbmV3T3B0aW9ucy5fX2VzTW9kdWxlKSBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5kZWZhdWx0XG5cdHZhciBuZXdUZW1wbGF0ZSA9IHJlcXVpcmUoXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9BZmZpeC52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogOTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ob2RlTGlzdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2IGNsYXNzPVwiaGlkZGVuLXByaW50IGhpZGRlbi14cyBoaWRkZW4tc21cIj5cblx0XG5cdC8vICAgICA8bmF2IGNsYXNzPVwiYnMtZG9jcy1zaWRlYmFyXCIgOmNsYXNzPVwie2FmZml4OmFmZml4ZWR9XCIgOnN0eWxlPVwie21hcmdpblRvcDp0b3B9XCI+XG5cdFxuXHQvLyAgICAgICA8c2xvdD48L3Nsb3Q+XG5cdFxuXHQvLyAgICAgPC9uYXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIG9mZnNldDoge1xuXHQgICAgICB0eXBlOiBOdW1iZXIsXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5udW1iZXIsXG5cdCAgICAgIGRlZmF1bHQ6IDBcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBhZmZpeGVkOiBmYWxzZVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICBjb21wdXRlZDoge1xuXHQgICAgdG9wOiBmdW5jdGlvbiB0b3AoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLm9mZnNldCA+IDAgPyB0aGlzLm9mZnNldCArICdweCcgOiBudWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvYWZmaXgvaW5kZXguanN4I0wyMFxuXHQgICAgY2hlY2tTY3JvbGw6IGZ1bmN0aW9uIGNoZWNrU2Nyb2xsKCkge1xuXHQgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgICAgLy8gaWYgaXMgaGlkZGVuIGRvbid0IGNhbGN1bGF0ZSBhbnl0aGluZ1xuXHQgICAgICBpZiAoISh0aGlzLiRlbC5vZmZzZXRXaWR0aCB8fCB0aGlzLiRlbC5vZmZzZXRIZWlnaHQgfHwgdGhpcy4kZWwuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIGdldCB3aW5kb3cgc2Nyb2xsIGFuZCBlbGVtZW50IHBvc2l0aW9uIHRvIGRldGVjdCBpZiBoYXZlIHRvIGJlIG5vcm1hbCBvciBhZmZpeGVkXG5cdCAgICAgIHZhciBzY3JvbGwgPSB7fTtcblx0ICAgICAgdmFyIGVsZW1lbnQgPSB7fTtcblx0ICAgICAgdmFyIHJlY3QgPSB0aGlzLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0ICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXHQgICAgICBbJ1RvcCcsICdMZWZ0J10uZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuXHQgICAgICAgIHZhciB0ID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgICAgIHZhciByZXQgPSB3aW5kb3dbJ3BhZ2UnICsgKHR5cGUgPT09ICdUb3AnID8gJ1knIDogJ1gnKSArICdPZmZzZXQnXTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gJ3Njcm9sbCcgKyB0eXBlO1xuXHQgICAgICAgIGlmICh0eXBlb2YgcmV0ICE9PSAnbnVtYmVyJykge1xuXHQgICAgICAgICAgLy8gaWU2LDcsOCBzdGFuZGFyZCBtb2RlXG5cdCAgICAgICAgICByZXQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbbWV0aG9kXTtcblx0ICAgICAgICAgIGlmICh0eXBlb2YgcmV0ICE9PSAnbnVtYmVyJykge1xuXHQgICAgICAgICAgICAvLyBxdWlya3MgbW9kZVxuXHQgICAgICAgICAgICByZXQgPSBkb2N1bWVudC5ib2R5W21ldGhvZF07XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHNjcm9sbFt0XSA9IHJldDtcblx0ICAgICAgICBlbGVtZW50W3RdID0gc2Nyb2xsW3RdICsgcmVjdFt0XSAtIChfdGhpcy4kZWxbJ2NsaWVudCcgKyB0eXBlXSB8fCBib2R5WydjbGllbnQnICsgdHlwZV0gfHwgMCk7XG5cdCAgICAgIH0pO1xuXHQgICAgICB2YXIgZml4ID0gc2Nyb2xsLnRvcCA+IGVsZW1lbnQudG9wIC0gdGhpcy5vZmZzZXQ7XG5cdCAgICAgIGlmICh0aGlzLmFmZml4ZWQgIT09IGZpeCkge1xuXHQgICAgICAgIHRoaXMuYWZmaXhlZCA9IGZpeDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkod2luZG93KS5vbignc2Nyb2xsIHJlc2l6ZScsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzMi5jaGVja1Njcm9sbCgpO1xuXHQgICAgfSk7XG5cdCAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzMi5jaGVja1Njcm9sbCgpO1xuXHQgICAgfSwgMCk7XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cdFxuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkod2luZG93KS5vZmYoJ3Njcm9sbCByZXNpemUnLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJldHVybiBfdGhpczMuY2hlY2tTY3JvbGwoKTtcblx0ICAgIH0pO1xuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cbi8qKiovIH0sXG4vKiA5NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcImhpZGRlbi1wcmludCBoaWRkZW4teHMgaGlkZGVuLXNtXFxcIj5cXHJcXG4gICAgPG5hdiBjbGFzcz1cXFwiYnMtZG9jcy1zaWRlYmFyXFxcIiA6Y2xhc3M9XFxcInthZmZpeDphZmZpeGVkfVxcXCIgOnN0eWxlPVxcXCJ7bWFyZ2luVG9wOnRvcH1cXFwiPlxcclxcbiAgICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gICAgPC9uYXY+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDk3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAzKVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQWxlcnQudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FsZXJ0LnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQWxlcnQudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FsZXJ0LnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0FsZXJ0LnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiA5OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oOTkpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtMjAwZTg2MjEmZmlsZT1BbGVydC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vQWxlcnQudnVlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtMjAwZTg2MjEmZmlsZT1BbGVydC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vQWxlcnQudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogOTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5mYWRlLXRyYW5zaXRpb24ge1xcclxcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlO1xcclxcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MgZWFzZTtcXHJcXG59XFxyXFxuLmZhZGUtZW50ZXIsXFxyXFxuLmZhZGUtbGVhdmUge1xcclxcbiAgaGVpZ2h0OiAwO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG59XFxyXFxuLmFsZXJ0LnRvcCB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB0b3A6IDMwcHg7XFxyXFxuICBtYXJnaW46IDAgYXV0bztcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIHotaW5kZXg6IDEwNTA7XFxyXFxufVxcclxcbi5hbGVydC50b3AtcmlnaHQge1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgdG9wOiAzMHB4O1xcclxcbiAgcmlnaHQ6IDUwcHg7XFxyXFxuICB6LWluZGV4OiAxMDUwO1xcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAxMDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qXHJcblx0XHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxyXG5cdFx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxyXG5cdCovXHJcblx0Ly8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGxpc3QgPSBbXTtcclxuXHRcclxuXHRcdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRcdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcclxuXHRcdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRcdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0XHR9O1xyXG5cdFxyXG5cdFx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRcdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0XHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5cdFx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxyXG5cdFx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XHJcblx0XHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiBsaXN0O1xyXG5cdH07XHJcblxuXG4vKioqLyB9LFxuLyogMTAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKlxyXG5cdFx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxuXHRcdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuXHQqL1xyXG5cdHZhciBzdHlsZXNJbkRvbSA9IHt9LFxyXG5cdFx0bWVtb2l6ZSA9IGZ1bmN0aW9uKGZuKSB7XHJcblx0XHRcdHZhciBtZW1vO1xyXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgbWVtbyA9PT0gXCJ1bmRlZmluZWRcIikgbWVtbyA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcblx0XHRcdFx0cmV0dXJuIG1lbW87XHJcblx0XHRcdH07XHJcblx0XHR9LFxyXG5cdFx0aXNPbGRJRSA9IG1lbW9pemUoZnVuY3Rpb24oKSB7XHJcblx0XHRcdHJldHVybiAvbXNpZSBbNi05XVxcYi8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtcclxuXHRcdH0pLFxyXG5cdFx0Z2V0SGVhZEVsZW1lbnQgPSBtZW1vaXplKGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0cmV0dXJuIGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xyXG5cdFx0fSksXHJcblx0XHRzaW5nbGV0b25FbGVtZW50ID0gbnVsbCxcclxuXHRcdHNpbmdsZXRvbkNvdW50ZXIgPSAwLFxyXG5cdFx0c3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3AgPSBbXTtcclxuXHRcclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG9wdGlvbnMpIHtcclxuXHRcdGlmKGZhbHNlKSB7XHJcblx0XHRcdGlmKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50XCIpO1xyXG5cdFx0fVxyXG5cdFxyXG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblx0XHQvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cclxuXHRcdC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcclxuXHRcdGlmICh0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gPT09IFwidW5kZWZpbmVkXCIpIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xyXG5cdFxyXG5cdFx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIDxoZWFkPi5cclxuXHRcdGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ1bmRlZmluZWRcIikgb3B0aW9ucy5pbnNlcnRBdCA9IFwiYm90dG9tXCI7XHJcblx0XHJcblx0XHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxpc3QpO1xyXG5cdFx0YWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBvcHRpb25zKTtcclxuXHRcclxuXHRcdHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xyXG5cdFx0XHR2YXIgbWF5UmVtb3ZlID0gW107XHJcblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcclxuXHRcdFx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcclxuXHRcdFx0XHRkb21TdHlsZS5yZWZzLS07XHJcblx0XHRcdFx0bWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmKG5ld0xpc3QpIHtcclxuXHRcdFx0XHR2YXIgbmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QpO1xyXG5cdFx0XHRcdGFkZFN0eWxlc1RvRG9tKG5ld1N0eWxlcywgb3B0aW9ucyk7XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXTtcclxuXHRcdFx0XHRpZihkb21TdHlsZS5yZWZzID09PSAwKSB7XHJcblx0XHRcdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspXHJcblx0XHRcdFx0XHRcdGRvbVN0eWxlLnBhcnRzW2pdKCk7XHJcblx0XHRcdFx0XHRkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblx0XHJcblx0ZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBvcHRpb25zKSB7XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gc3R5bGVzW2ldO1xyXG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcclxuXHRcdFx0aWYoZG9tU3R5bGUpIHtcclxuXHRcdFx0XHRkb21TdHlsZS5yZWZzKys7XHJcblx0XHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Zm9yKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR2YXIgcGFydHMgPSBbXTtcclxuXHRcdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0cGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHN0eWxlc0luRG9tW2l0ZW0uaWRdID0ge2lkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHN9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyhsaXN0KSB7XHJcblx0XHR2YXIgc3R5bGVzID0gW107XHJcblx0XHR2YXIgbmV3U3R5bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IGxpc3RbaV07XHJcblx0XHRcdHZhciBpZCA9IGl0ZW1bMF07XHJcblx0XHRcdHZhciBjc3MgPSBpdGVtWzFdO1xyXG5cdFx0XHR2YXIgbWVkaWEgPSBpdGVtWzJdO1xyXG5cdFx0XHR2YXIgc291cmNlTWFwID0gaXRlbVszXTtcclxuXHRcdFx0dmFyIHBhcnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xyXG5cdFx0XHRpZighbmV3U3R5bGVzW2lkXSlcclxuXHRcdFx0XHRzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0ge2lkOiBpZCwgcGFydHM6IFtwYXJ0XX0pO1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0bmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0eWxlcztcclxuXHR9XHJcblx0XHJcblx0ZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCkge1xyXG5cdFx0dmFyIGhlYWQgPSBnZXRIZWFkRWxlbWVudCgpO1xyXG5cdFx0dmFyIGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wID0gc3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3Bbc3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3AubGVuZ3RoIC0gMV07XHJcblx0XHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ0b3BcIikge1xyXG5cdFx0XHRpZighbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3ApIHtcclxuXHRcdFx0XHRoZWFkLmluc2VydEJlZm9yZShzdHlsZUVsZW1lbnQsIGhlYWQuZmlyc3RDaGlsZCk7XHJcblx0XHRcdH0gZWxzZSBpZihsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZykge1xyXG5cdFx0XHRcdGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlRWxlbWVudCwgbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcC5wdXNoKHN0eWxlRWxlbWVudCk7XHJcblx0XHR9IGVsc2UgaWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcclxuXHRcdFx0aGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHRmdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XHJcblx0XHRzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xyXG5cdFx0dmFyIGlkeCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLmluZGV4T2Yoc3R5bGVFbGVtZW50KTtcclxuXHRcdGlmKGlkeCA+PSAwKSB7XHJcblx0XHRcdHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLnNwbGljZShpZHgsIDEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHRmdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xyXG5cdFx0dmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcclxuXHRcdHN0eWxlRWxlbWVudC50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xyXG5cdFx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCk7XHJcblx0XHRyZXR1cm4gc3R5bGVFbGVtZW50O1xyXG5cdH1cclxuXHRcclxuXHRmdW5jdGlvbiBjcmVhdGVMaW5rRWxlbWVudChvcHRpb25zKSB7XHJcblx0XHR2YXIgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcclxuXHRcdGxpbmtFbGVtZW50LnJlbCA9IFwic3R5bGVzaGVldFwiO1xyXG5cdFx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIGxpbmtFbGVtZW50KTtcclxuXHRcdHJldHVybiBsaW5rRWxlbWVudDtcclxuXHR9XHJcblx0XHJcblx0ZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XHJcblx0XHR2YXIgc3R5bGVFbGVtZW50LCB1cGRhdGUsIHJlbW92ZTtcclxuXHRcclxuXHRcdGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xyXG5cdFx0XHR2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcclxuXHRcdFx0c3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSk7XHJcblx0XHRcdHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKTtcclxuXHRcdFx0cmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSk7XHJcblx0XHR9IGVsc2UgaWYob2JqLnNvdXJjZU1hcCAmJlxyXG5cdFx0XHR0eXBlb2YgVVJMID09PSBcImZ1bmN0aW9uXCIgJiZcclxuXHRcdFx0dHlwZW9mIFVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxyXG5cdFx0XHR0eXBlb2YgVVJMLnJldm9rZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXHJcblx0XHRcdHR5cGVvZiBCbG9iID09PSBcImZ1bmN0aW9uXCIgJiZcclxuXHRcdFx0dHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xyXG5cdFx0XHRzdHlsZUVsZW1lbnQgPSBjcmVhdGVMaW5rRWxlbWVudChvcHRpb25zKTtcclxuXHRcdFx0dXBkYXRlID0gdXBkYXRlTGluay5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCk7XHJcblx0XHRcdHJlbW92ZSA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xyXG5cdFx0XHRcdGlmKHN0eWxlRWxlbWVudC5ocmVmKVxyXG5cdFx0XHRcdFx0VVJMLnJldm9rZU9iamVjdFVSTChzdHlsZUVsZW1lbnQuaHJlZik7XHJcblx0XHRcdH07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucyk7XHJcblx0XHRcdHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpO1xyXG5cdFx0XHRyZW1vdmUgPSBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcclxuXHRcdHVwZGF0ZShvYmopO1xyXG5cdFxyXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xyXG5cdFx0XHRpZihuZXdPYmopIHtcclxuXHRcdFx0XHRpZihuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApXHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0dXBkYXRlKG9iaiA9IG5ld09iaik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVtb3ZlKCk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fVxyXG5cdFxyXG5cdHZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XHJcblx0XHR2YXIgdGV4dFN0b3JlID0gW107XHJcblx0XHJcblx0XHRyZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xyXG5cdFx0XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XHJcblx0XHRcdHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xyXG5cdFx0fTtcclxuXHR9KSgpO1xyXG5cdFxyXG5cdGZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcclxuXHRcdHZhciBjc3MgPSByZW1vdmUgPyBcIlwiIDogb2JqLmNzcztcclxuXHRcclxuXHRcdGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xyXG5cdFx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XHJcblx0XHRcdHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXM7XHJcblx0XHRcdGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcclxuXHRcdFx0aWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XHJcblx0XHRcdFx0c3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdGZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGVFbGVtZW50LCBvYmopIHtcclxuXHRcdHZhciBjc3MgPSBvYmouY3NzO1xyXG5cdFx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xyXG5cdFxyXG5cdFx0aWYobWVkaWEpIHtcclxuXHRcdFx0c3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1lZGlhXCIsIG1lZGlhKVxyXG5cdFx0fVxyXG5cdFxyXG5cdFx0aWYoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcclxuXHRcdFx0c3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHdoaWxlKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XHJcblx0XHRcdFx0c3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdGZ1bmN0aW9uIHVwZGF0ZUxpbmsobGlua0VsZW1lbnQsIG9iaikge1xyXG5cdFx0dmFyIGNzcyA9IG9iai5jc3M7XHJcblx0XHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcclxuXHRcclxuXHRcdGlmKHNvdXJjZU1hcCkge1xyXG5cdFx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxyXG5cdFx0XHRjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArIFwiICovXCI7XHJcblx0XHR9XHJcblx0XHJcblx0XHR2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3NdLCB7IHR5cGU6IFwidGV4dC9jc3NcIiB9KTtcclxuXHRcclxuXHRcdHZhciBvbGRTcmMgPSBsaW5rRWxlbWVudC5ocmVmO1xyXG5cdFxyXG5cdFx0bGlua0VsZW1lbnQuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcblx0XHJcblx0XHRpZihvbGRTcmMpXHJcblx0XHRcdFVSTC5yZXZva2VPYmplY3RVUkwob2xkU3JjKTtcclxuXHR9XHJcblxuXG4vKioqLyB9LFxuLyogMTAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBwcm9wczoge1xuXHQgICAgdHlwZToge1xuXHQgICAgICB0eXBlOiBTdHJpbmdcblx0ICAgIH0sXG5cdCAgICBkaXNtaXNzYWJsZToge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBzaG93OiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiB0cnVlLFxuXHQgICAgICB0d29XYXk6IHRydWVcblx0ICAgIH0sXG5cdCAgICBkdXJhdGlvbjoge1xuXHQgICAgICB0eXBlOiBOdW1iZXIsXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5udW1iZXIsXG5cdCAgICAgIGRlZmF1bHQ6IDBcblx0ICAgIH0sXG5cdCAgICB3aWR0aDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmdcblx0ICAgIH0sXG5cdCAgICBwbGFjZW1lbnQ6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9XG5cdCAgfSxcblx0ICB3YXRjaDoge1xuXHQgICAgc2hvdzogZnVuY3Rpb24gc2hvdyh2YWwpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIGlmICh0aGlzLl90aW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG5cdCAgICAgIGlmICh2YWwgJiYgQm9vbGVhbih0aGlzLmR1cmF0aW9uKSkge1xuXHQgICAgICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIF90aGlzLnNob3cgPSBmYWxzZTtcblx0ICAgICAgICB9LCB0aGlzLmR1cmF0aW9uKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdFxuXHRcblx0Ly8gPHN0eWxlPlxuXHRcblx0Ly8gLmZhZGUtdHJhbnNpdGlvbiB7XG5cdFxuXHQvLyAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZmFkZS1lbnRlcixcblx0XG5cdC8vIC5mYWRlLWxlYXZlIHtcblx0XG5cdC8vICAgaGVpZ2h0OiAwO1xuXHRcblx0Ly8gICBvcGFjaXR5OiAwO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFsZXJ0LnRvcCB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBmaXhlZDtcblx0XG5cdC8vICAgdG9wOiAzMHB4O1xuXHRcblx0Ly8gICBtYXJnaW46IDAgYXV0bztcblx0XG5cdC8vICAgbGVmdDogMDtcblx0XG5cdC8vICAgcmlnaHQ6IDA7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDEwNTA7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYWxlcnQudG9wLXJpZ2h0IHtcblx0XG5cdC8vICAgcG9zaXRpb246IGZpeGVkO1xuXHRcblx0Ly8gICB0b3A6IDMwcHg7XG5cdFxuXHQvLyAgIHJpZ2h0OiA1MHB4O1xuXHRcblx0Ly8gICB6LWluZGV4OiAxMDUwO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2XG5cdFxuXHQvLyAgICAgdi1zaG93PVwic2hvd1wiXG5cdFxuXHQvLyAgICAgdi1iaW5kOmNsYXNzPVwie1xuXHRcblx0Ly8gICAgICAgJ2FsZXJ0JzpcdFx0dHJ1ZSxcblx0XG5cdC8vICAgICAgICdhbGVydC1zdWNjZXNzJzoodHlwZSA9PSAnc3VjY2VzcycpLFxuXHRcblx0Ly8gICAgICAgJ2FsZXJ0LXdhcm5pbmcnOih0eXBlID09ICd3YXJuaW5nJyksXG5cdFxuXHQvLyAgICAgICAnYWxlcnQtaW5mbyc6XHQodHlwZSA9PSAnaW5mbycpLFxuXHRcblx0Ly8gICAgICAgJ2FsZXJ0LWRhbmdlcic6XHQodHlwZSA9PSAnZGFuZ2VyJyksXG5cdFxuXHQvLyAgICAgICAndG9wJzogXHRcdFx0KHBsYWNlbWVudCA9PT0gJ3RvcCcpLFxuXHRcblx0Ly8gICAgICAgJ3RvcC1yaWdodCc6IFx0KHBsYWNlbWVudCA9PT0gJ3RvcC1yaWdodCcpXG5cdFxuXHQvLyAgICAgfVwiXG5cdFxuXHQvLyAgICAgdHJhbnNpdGlvbj1cImZhZGVcIlxuXHRcblx0Ly8gICAgIHYtYmluZDpzdHlsZT1cInt3aWR0aDp3aWR0aH1cIlxuXHRcblx0Ly8gICAgIHJvbGU9XCJhbGVydFwiPlxuXHRcblx0Ly8gICAgIDxidXR0b24gdi1zaG93PVwiZGlzbWlzc2FibGVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiXG5cdFxuXHQvLyAgICAgICBAY2xpY2s9XCJzaG93ID0gZmFsc2VcIj5cblx0XG5cdC8vICAgICAgIDxzcGFuPiZ0aW1lczs8L3NwYW4+XG5cdFxuXHQvLyAgICAgPC9idXR0b24+XG5cdFxuXHQvLyAgICAgPHNsb3Q+PC9zbG90PlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDEwMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXZcXHJcXG4gICAgdi1zaG93PVxcXCJzaG93XFxcIlxcclxcbiAgICB2LWJpbmQ6Y2xhc3M9XFxcIntcXHJcXG4gICAgICAnYWxlcnQnOlxcdFxcdHRydWUsXFxyXFxuICAgICAgJ2FsZXJ0LXN1Y2Nlc3MnOih0eXBlID09ICdzdWNjZXNzJyksXFxyXFxuICAgICAgJ2FsZXJ0LXdhcm5pbmcnOih0eXBlID09ICd3YXJuaW5nJyksXFxyXFxuICAgICAgJ2FsZXJ0LWluZm8nOlxcdCh0eXBlID09ICdpbmZvJyksXFxyXFxuICAgICAgJ2FsZXJ0LWRhbmdlcic6XFx0KHR5cGUgPT0gJ2RhbmdlcicpLFxcclxcbiAgICAgICd0b3AnOiBcXHRcXHRcXHQocGxhY2VtZW50ID09PSAndG9wJyksXFxyXFxuICAgICAgJ3RvcC1yaWdodCc6IFxcdChwbGFjZW1lbnQgPT09ICd0b3AtcmlnaHQnKVxcclxcbiAgICB9XFxcIlxcclxcbiAgICB0cmFuc2l0aW9uPVxcXCJmYWRlXFxcIlxcclxcbiAgICB2LWJpbmQ6c3R5bGU9XFxcInt3aWR0aDp3aWR0aH1cXFwiXFxyXFxuICAgIHJvbGU9XFxcImFsZXJ0XFxcIj5cXHJcXG4gICAgPGJ1dHRvbiB2LXNob3c9XFxcImRpc21pc3NhYmxlXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCJcXHJcXG4gICAgICBAY2xpY2s9XFxcInNob3cgPSBmYWxzZVxcXCI+XFxyXFxuICAgICAgPHNwYW4+JnRpbWVzOzwvc3Bhbj5cXHJcXG4gICAgPC9idXR0b24+XFxyXFxuICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gIDwvZGl2PlwiO1xuXG4vKioqLyB9LFxuLyogMTA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNSlcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNylcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOClcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FzaWRlLnZ1ZVwiXG5cdGhvdEFQSS5jcmVhdGVSZWNvcmQoaWQsIG1vZHVsZS5leHBvcnRzKVxuXHRtb2R1bGUuaG90LmFjY2VwdChbXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Bc2lkZS52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0FzaWRlLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Bc2lkZS52dWVcIilcblx0aWYgKG5ld09wdGlvbnMgJiYgbmV3T3B0aW9ucy5fX2VzTW9kdWxlKSBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5kZWZhdWx0XG5cdHZhciBuZXdUZW1wbGF0ZSA9IHJlcXVpcmUoXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Bc2lkZS52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMTA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXHRcblx0Ly8gbG9hZCB0aGUgc3R5bGVzXG5cdHZhciBjb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDYpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtOWJjZjE4MDYmZmlsZT1Bc2lkZS52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vQXNpZGUudnVlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtOWJjZjE4MDYmZmlsZT1Bc2lkZS52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vQXNpZGUudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIuYXNpZGUtb3BlbiB7XFxyXFxuICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3M7XFxyXFxuICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzO1xcclxcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7XFxyXFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgLXdlYmtpdC10cmFuc2Zvcm0gMC4zcztcXHJcXG59XFxyXFxuLmFzaWRlLW9wZW4uaGFzLXB1c2gtcmlnaHQge1xcclxcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwMHB4KTtcXHJcXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMDBweCk7XFxyXFxufVxcclxcbi5hc2lkZSB7XFxyXFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICBib3R0b206IDA7XFxyXFxuICAgIHotaW5kZXg6IDEwNDk7XFxyXFxuICAgIG92ZXJmbG93OiBhdXRvO1xcclxcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcclxcbn1cXHJcXG4uYXNpZGUubGVmdCB7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgcmlnaHQ6IGF1dG87XFxyXFxufVxcclxcbi5hc2lkZS5yaWdodCB7XFxyXFxuICBsZWZ0OiBhdXRvO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxufVxcclxcbi5zbGlkZWxlZnQtZW50ZXIge1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246c2xpZGVsZWZ0LWluIC4zcztcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uOnNsaWRlbGVmdC1pbiAuM3M7XFxyXFxufVxcclxcbi5zbGlkZWxlZnQtbGVhdmUge1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246c2xpZGVsZWZ0LW91dCAuM3M7XFxyXFxuICAgICAgICAgIGFuaW1hdGlvbjpzbGlkZWxlZnQtb3V0IC4zcztcXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlbGVmdC1pbiB7XFxyXFxuICAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXHJcXG4gICAgb3BhY2l0eTogMTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuQGtleWZyYW1lcyBzbGlkZWxlZnQtaW4ge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICB9XFxyXFxufVxcclxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZWxlZnQtb3V0IHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIHNsaWRlbGVmdC1vdXQge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zbGlkZXJpZ2h0LWVudGVyIHtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOnNsaWRlcmlnaHQtaW4gLjNzO1xcclxcbiAgICAgICAgICBhbmltYXRpb246c2xpZGVyaWdodC1pbiAuM3M7XFxyXFxufVxcclxcbi5zbGlkZXJpZ2h0LWxlYXZlIHtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOnNsaWRlcmlnaHQtb3V0IC4zcztcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uOnNsaWRlcmlnaHQtb3V0IC4zcztcXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlcmlnaHQtaW4ge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIHNsaWRlcmlnaHQtaW4ge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbn1cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVyaWdodC1vdXQge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIHNsaWRlcmlnaHQtb3V0IHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmFzaWRlOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogMFxcclxcbn1cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG4gIC5hc2lkZSB7XFxyXFxuICAgIG1pbi13aWR0aDoyNDBweFxcclxcbiAgfVxcclxcbn1cXHJcXG4uYXNpZGUubGVmdCB7XFxyXFxuICByaWdodDogYXV0bztcXHJcXG4gIGxlZnQ6IDBcXHJcXG59XFxyXFxuLmFzaWRlLnJpZ2h0IHtcXHJcXG4gIHJpZ2h0OiAwO1xcclxcbiAgbGVmdDogYXV0b1xcclxcbn1cXHJcXG4uYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtaGVhZGVyIHtcXHJcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1O1xcclxcbiAgbWluLWhlaWdodDogMTYuNDNweDtcXHJcXG4gIHBhZGRpbmc6IDZweCAxNXB4O1xcclxcbiAgYmFja2dyb3VuZDogIzMzN2FiNztcXHJcXG4gIGNvbG9yOiAjZmZmXFxyXFxufVxcclxcbi5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1oZWFkZXIgLmNsb3NlIHtcXHJcXG4gIG1hcmdpbi1yaWdodDogLThweDtcXHJcXG4gIHBhZGRpbmc6IDRweCA4cHg7XFxyXFxuICBjb2xvcjogI2ZmZjtcXHJcXG4gIGZvbnQtc2l6ZTogMjVweDtcXHJcXG4gIG9wYWNpdHk6IC44XFxyXFxufVxcclxcbi5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1ib2R5IHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIHBhZGRpbmc6IDE1cHhcXHJcXG59XFxyXFxuLmFzaWRlIC5hc2lkZS1kaWFsb2cgLmFzaWRlLWZvb3RlciB7XFxyXFxuICBwYWRkaW5nOiAxNXB4O1xcclxcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxyXFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNVxcclxcbn1cXHJcXG4uYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtZm9vdGVyIC5idG4rLmJ0biB7XFxyXFxuICBtYXJnaW4tbGVmdDogNXB4O1xcclxcbiAgbWFyZ2luLWJvdHRvbTogMFxcclxcbn1cXHJcXG4uYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0bisuYnRuIHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAtMXB4XFxyXFxufVxcclxcbi5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1mb290ZXIgLmJ0bi1ibG9jaysuYnRuLWJsb2NrIHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAwXFxyXFxufVxcclxcbi5hc2lkZS1iYWNrZHJvcCB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB0b3A6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICB6LWluZGV4OiAxMDQwO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MgZWFzZTtcXHJcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwXFxyXFxufVxcclxcbi5hc2lkZS1iYWNrZHJvcC5pbiB7XFxyXFxuICBvcGFjaXR5OiAuNTtcXHJcXG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MClcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMTA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBfTm9kZUxpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBfTm9kZUxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTm9kZUxpc3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdiBjbGFzcz1cImFzaWRlXCJcblx0XG5cdC8vICAgICB2LWJpbmQ6c3R5bGU9XCJ7d2lkdGg6d2lkdGggKyAncHgnfVwiXG5cdFxuXHQvLyAgICAgdi1iaW5kOmNsYXNzPVwie1xuXHRcblx0Ly8gICAgIGxlZnQ6cGxhY2VtZW50ID09PSAnbGVmdCcsXG5cdFxuXHQvLyAgICAgcmlnaHQ6cGxhY2VtZW50ID09PSAncmlnaHQnXG5cdFxuXHQvLyAgICAgfVwiXG5cdFxuXHQvLyAgICAgdi1zaG93PVwic2hvd1wiXG5cdFxuXHQvLyAgICAgOnRyYW5zaXRpb249XCIodGhpcy5wbGFjZW1lbnQgPT09ICdsZWZ0JykgPyAnc2xpZGVsZWZ0JyA6ICdzbGlkZXJpZ2h0J1wiPlxuXHRcblx0Ly8gICAgIDxkaXYgY2xhc3M9XCJhc2lkZS1kaWFsb2dcIj5cblx0XG5cdC8vICAgICAgIDxkaXYgY2xhc3M9XCJhc2lkZS1jb250ZW50XCI+XG5cdFxuXHQvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJhc2lkZS1oZWFkZXJcIj5cblx0XG5cdC8vICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgQGNsaWNrPSdjbG9zZSc+PHNwYW4+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj5cblx0XG5cdC8vICAgICAgICAgICA8aDQgY2xhc3M9XCJhc2lkZS10aXRsZVwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj5cblx0XG5cdC8vICAgICAgICAgICAgIHt7IGhlYWRlciB9fVxuXHRcblx0Ly8gICAgICAgICAgIDwvc2xvdD5cblx0XG5cdC8vICAgICAgICAgICA8L2g0PlxuXHRcblx0Ly8gICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgICAgPGRpdiBjbGFzcz1cImFzaWRlLWJvZHlcIj5cblx0XG5cdC8vICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG5cdFxuXHQvLyAgICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgPC9kaXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHNob3c6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIHJlcXVpcmVkOiB0cnVlLFxuXHQgICAgICB0d29XYXk6IHRydWVcblx0ICAgIH0sXG5cdCAgICBwbGFjZW1lbnQ6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAncmlnaHQnXG5cdCAgICB9LFxuXHQgICAgaGVhZGVyOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfSxcblx0ICAgIHdpZHRoOiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMzIwXG5cdCAgICB9XG5cdCAgfSxcblx0ICB3YXRjaDoge1xuXHQgICAgc2hvdzogZnVuY3Rpb24gc2hvdyh2YWwpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcblx0ICAgICAgdmFyIHNjcm9sbEJhcldpZHRoID0gKDAsIF91dGlscy5nZXRTY3JvbGxCYXJXaWR0aCkoKTtcblx0ICAgICAgaWYgKHZhbCkge1xuXHQgICAgICAgIGlmICghdGhpcy5fYmFja2Ryb3ApIHtcblx0ICAgICAgICAgIHRoaXMuX2JhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuX2JhY2tkcm9wLmNsYXNzTmFtZSA9ICdhc2lkZS1iYWNrZHJvcCc7XG5cdCAgICAgICAgYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9iYWNrZHJvcCk7XG5cdCAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XG5cdCAgICAgICAgaWYgKHNjcm9sbEJhcldpZHRoICE9PSAwKSB7XG5cdCAgICAgICAgICBib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHNjcm9sbEJhcldpZHRoICsgJ3B4Jztcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gcmVxdWVzdCBwcm9wZXJ0eSB0aGF0IHJlcXVpcmVzIGxheW91dCB0byBmb3JjZSBhIGxheW91dFxuXHQgICAgICAgIHZhciB4ID0gdGhpcy5fYmFja2Ryb3AuY2xpZW50SGVpZ2h0O1xuXHQgICAgICAgIHRoaXMuX2JhY2tkcm9wLmNsYXNzTGlzdC5hZGQoJ2luJyk7XG5cdCAgICAgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy5fYmFja2Ryb3ApLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBfdGhpcy5jbG9zZSgpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRoaXMuX2JhY2tkcm9wKS5vbigndHJhbnNpdGlvbmVuZCcsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKF90aGlzLl9iYWNrZHJvcCkub2ZmKCk7XG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLW9wZW4nKTtcblx0ICAgICAgICAgICAgYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMCc7XG5cdCAgICAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGQoX3RoaXMuX2JhY2tkcm9wKTtcblx0ICAgICAgICAgICAgX3RoaXMuX2JhY2tkcm9wID0gbnVsbDtcblx0ICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgdGhpcy5fYmFja2Ryb3AuY2xhc3NOYW1lID0gJ2FzaWRlLWJhY2tkcm9wJztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCkge1xuXHQgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXHRcblx0XG5cdC8vIDxzdHlsZT5cblx0XG5cdC8vIC5hc2lkZS1vcGVuIHtcblx0XG5cdC8vICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYXNpZGUtb3Blbi5oYXMtcHVzaC1yaWdodCB7XG5cdFxuXHQvLyAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzAwcHgpO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlIHtcblx0XG5cdC8vICAgICBwb3NpdGlvbjogZml4ZWQ7XG5cdFxuXHQvLyAgICAgdG9wOiAwO1xuXHRcblx0Ly8gICAgIGJvdHRvbTogMDtcblx0XG5cdC8vICAgICB6LWluZGV4OiAxMDQ5O1xuXHRcblx0Ly8gICAgIG92ZXJmbG93OiBhdXRvO1xuXHRcblx0Ly8gICAgIGJhY2tncm91bmQ6ICNmZmY7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYXNpZGUubGVmdCB7XG5cdFxuXHQvLyAgIGxlZnQ6IDA7XG5cdFxuXHQvLyAgIHJpZ2h0OiBhdXRvO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlLnJpZ2h0IHtcblx0XG5cdC8vICAgbGVmdDogYXV0bztcblx0XG5cdC8vICAgcmlnaHQ6IDA7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc2xpZGVsZWZ0LWVudGVyIHtcblx0XG5cdC8vICAgYW5pbWF0aW9uOnNsaWRlbGVmdC1pbiAuM3M7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc2xpZGVsZWZ0LWxlYXZlIHtcblx0XG5cdC8vICAgYW5pbWF0aW9uOnNsaWRlbGVmdC1vdXQgLjNzO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gQGtleWZyYW1lcyBzbGlkZWxlZnQtaW4ge1xuXHRcblx0Ly8gICAwJSB7XG5cdFxuXHQvLyAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAwO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyAgIDEwMCUge1xuXHRcblx0Ly8gICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAxO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBAa2V5ZnJhbWVzIHNsaWRlbGVmdC1vdXQge1xuXHRcblx0Ly8gICAwJSB7XG5cdFxuXHQvLyAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXHRcblx0Ly8gICAgIG9wYWNpdHk6IDE7XG5cdFxuXHQvLyAgIH1cblx0XG5cdC8vICAgMTAwJSB7XG5cdFxuXHQvLyAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAwO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc2xpZGVyaWdodC1lbnRlciB7XG5cdFxuXHQvLyAgIGFuaW1hdGlvbjpzbGlkZXJpZ2h0LWluIC4zcztcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5zbGlkZXJpZ2h0LWxlYXZlIHtcblx0XG5cdC8vICAgYW5pbWF0aW9uOnNsaWRlcmlnaHQtb3V0IC4zcztcblx0XG5cdC8vIH1cblx0XG5cdC8vIEBrZXlmcmFtZXMgc2xpZGVyaWdodC1pbiB7XG5cdFxuXHQvLyAgIDAlIHtcblx0XG5cdC8vICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMDtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gICAxMDAlIHtcblx0XG5cdC8vICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMTtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gQGtleWZyYW1lcyBzbGlkZXJpZ2h0LW91dCB7XG5cdFxuXHQvLyAgIDAlIHtcblx0XG5cdC8vICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMTtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gICAxMDAlIHtcblx0XG5cdC8vICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMDtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlOmZvY3VzIHtcblx0XG5cdC8vICAgICBvdXRsaW5lOiAwXG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcblx0XG5cdC8vICAgLmFzaWRlIHtcblx0XG5cdC8vICAgICBtaW4td2lkdGg6MjQwcHhcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlLmxlZnQge1xuXHRcblx0Ly8gICByaWdodDogYXV0bztcblx0XG5cdC8vICAgbGVmdDogMFxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlLnJpZ2h0IHtcblx0XG5cdC8vICAgcmlnaHQ6IDA7XG5cdFxuXHQvLyAgIGxlZnQ6IGF1dG9cblx0XG5cdC8vIH1cblx0XG5cdC8vIC5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1oZWFkZXIge1xuXHRcblx0Ly8gICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTtcblx0XG5cdC8vICAgbWluLWhlaWdodDogMTYuNDNweDtcblx0XG5cdC8vICAgcGFkZGluZzogNnB4IDE1cHg7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQ6ICMzMzdhYjc7XG5cdFxuXHQvLyAgIGNvbG9yOiAjZmZmXG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtaGVhZGVyIC5jbG9zZSB7XG5cdFxuXHQvLyAgIG1hcmdpbi1yaWdodDogLThweDtcblx0XG5cdC8vICAgcGFkZGluZzogNHB4IDhweDtcblx0XG5cdC8vICAgY29sb3I6ICNmZmY7XG5cdFxuXHQvLyAgIGZvbnQtc2l6ZTogMjVweDtcblx0XG5cdC8vICAgb3BhY2l0eTogLjhcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1ib2R5IHtcblx0XG5cdC8vICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcblx0Ly8gICBwYWRkaW5nOiAxNXB4XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtZm9vdGVyIHtcblx0XG5cdC8vICAgcGFkZGluZzogMTVweDtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cdFxuXHQvLyAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuYXNpZGUgLmFzaWRlLWRpYWxvZyAuYXNpZGUtZm9vdGVyIC5idG4rLmJ0biB7XG5cdFxuXHQvLyAgIG1hcmdpbi1sZWZ0OiA1cHg7XG5cdFxuXHQvLyAgIG1hcmdpbi1ib3R0b206IDBcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5hc2lkZSAuYXNpZGUtZGlhbG9nIC5hc2lkZS1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG4ge1xuXHRcblx0Ly8gICBtYXJnaW4tbGVmdDogLTFweFxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlIC5hc2lkZS1kaWFsb2cgLmFzaWRlLWZvb3RlciAuYnRuLWJsb2NrKy5idG4tYmxvY2sge1xuXHRcblx0Ly8gICBtYXJnaW4tbGVmdDogMFxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmFzaWRlLWJhY2tkcm9wIHtcblx0XG5cdC8vICAgcG9zaXRpb246IGZpeGVkO1xuXHRcblx0Ly8gICB0b3A6IDA7XG5cdFxuXHQvLyAgIHJpZ2h0OiAwO1xuXHRcblx0Ly8gICBib3R0b206IDA7XG5cdFxuXHQvLyAgIGxlZnQ6IDA7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDEwNDA7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IDA7XG5cdFxuXHQvLyAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQtY29sb3I6ICMwMDBcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5hc2lkZS1iYWNrZHJvcC5pbiB7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IC41O1xuXHRcblx0Ly8gICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApXG5cdFxuXHQvLyB9XG5cdFxuXHQvLyA8L3N0eWxlPlxuXG4vKioqLyB9LFxuLyogMTA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiYXNpZGVcXFwiXFxyXFxuICAgIHYtYmluZDpzdHlsZT1cXFwie3dpZHRoOndpZHRoICsgJ3B4J31cXFwiXFxyXFxuICAgIHYtYmluZDpjbGFzcz1cXFwie1xcclxcbiAgICBsZWZ0OnBsYWNlbWVudCA9PT0gJ2xlZnQnLFxcclxcbiAgICByaWdodDpwbGFjZW1lbnQgPT09ICdyaWdodCdcXHJcXG4gICAgfVxcXCJcXHJcXG4gICAgdi1zaG93PVxcXCJzaG93XFxcIlxcclxcbiAgICA6dHJhbnNpdGlvbj1cXFwiKHRoaXMucGxhY2VtZW50ID09PSAnbGVmdCcpID8gJ3NsaWRlbGVmdCcgOiAnc2xpZGVyaWdodCdcXFwiPlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJhc2lkZS1kaWFsb2dcXFwiPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImFzaWRlLWNvbnRlbnRcXFwiPlxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiYXNpZGUtaGVhZGVyXFxcIj5cXHJcXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCIgQGNsaWNrPSdjbG9zZSc+PHNwYW4+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj5cXHJcXG4gICAgICAgICAgPGg0IGNsYXNzPVxcXCJhc2lkZS10aXRsZVxcXCI+XFxyXFxuICAgICAgICAgIDxzbG90IG5hbWU9XFxcImhlYWRlclxcXCI+XFxyXFxuICAgICAgICAgICAge3sgaGVhZGVyIH19XFxyXFxuICAgICAgICAgIDwvc2xvdD5cXHJcXG4gICAgICAgICAgPC9oND5cXHJcXG4gICAgICAgIDwvZGl2PlxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiYXNpZGUtYm9keVxcXCI+XFxyXFxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gICAgICAgIDwvZGl2PlxcclxcbiAgICAgIDwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG4gIDwvZGl2PlwiO1xuXG4vKioqLyB9LFxuLyogMTA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEwKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTExKVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vYnV0dG9uR3JvdXAudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL2J1dHRvbkdyb3VwLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vYnV0dG9uR3JvdXAudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL2J1dHRvbkdyb3VwLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL2J1dHRvbkdyb3VwLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICB2YWx1ZTogbnVsbCxcblx0ICAgIGJ1dHRvbnM6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IHRydWVcblx0ICAgIH0sXG5cdCAgICBqdXN0aWZpZWQ6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgdHlwZToge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICdkZWZhdWx0J1xuXHQgICAgfSxcblx0ICAgIHZlcnRpY2FsOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgd2F0Y2g6IHtcblx0ICAgIHZhbHVlOiB7XG5cdCAgICAgIGRlZXA6IHRydWUsXG5cdCAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsKSB7XG5cdCAgICAgICAgdGhpcy4kY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIGlmIChlbC5ncm91cCAmJiBlbC5ldmFsKSBlbC5ldmFsKCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHQgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG5cdCAgICB0aGlzLl9idG5Hcm91cCA9IHRydWU7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2IDpjbGFzcz1cInsnYnRuLWdyb3VwJzpidXR0b25zLCdidG4tZ3JvdXAtanVzdGlmaWVkJzpqdXN0aWZpZWQsJ2J0bi1ncm91cC12ZXJ0aWNhbCc6dmVydGljYWx9XCIgOmRhdGEtdG9nZ2xlPVwiYnV0dG9ucyYmJ2J1dHRvbnMnXCI+XG5cdFxuXHQvLyAgICAgPHNsb3Q+PC9zbG90PlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDExMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgOmNsYXNzPVxcXCJ7J2J0bi1ncm91cCc6YnV0dG9ucywnYnRuLWdyb3VwLWp1c3RpZmllZCc6anVzdGlmaWVkLCdidG4tZ3JvdXAtdmVydGljYWwnOnZlcnRpY2FsfVxcXCIgOmRhdGEtdG9nZ2xlPVxcXCJidXR0b25zJiYnYnV0dG9ucydcXFwiPlxcclxcbiAgICA8c2xvdD48L3Nsb3Q+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDExMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygxMTMpXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTUpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTYpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9DYXJvdXNlbC52dWVcIlxuXHRob3RBUEkuY3JlYXRlUmVjb3JkKGlkLCBtb2R1bGUuZXhwb3J0cylcblx0bW9kdWxlLmhvdC5hY2NlcHQoW1wiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQ2Fyb3VzZWwudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1yZXdyaXRlci5qcz9pZD1fdi01YWZlODBhYiZmaWxlPUNhcm91c2VsLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9DYXJvdXNlbC52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQ2Fyb3VzZWwudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtcmV3cml0ZXIuanM/aWQ9X3YtNWFmZTgwYWImZmlsZT1DYXJvdXNlbC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQ2Fyb3VzZWwudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDExMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTE0KTtcblx0aWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cdC8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cblx0dmFyIHVwZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKShjb250ZW50LCB7fSk7XG5cdGlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXHQvLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5cdGlmKGZhbHNlKSB7XG5cdFx0Ly8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTVhZmU4MGFiJmZpbGU9Q2Fyb3VzZWwudnVlJnNjb3BlZD10cnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL0Nhcm91c2VsLnZ1ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTVhZmU4MGFiJmZpbGU9Q2Fyb3VzZWwudnVlJnNjb3BlZD10cnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL0Nhcm91c2VsLnZ1ZVwiKTtcblx0XHRcdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cdFx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDExNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApKCk7XG5cdC8vIGltcG9ydHNcblx0XG5cdFxuXHQvLyBtb2R1bGVcblx0ZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLmNhcm91c2VsLWNvbnRyb2xbX3YtNWFmZTgwYWJdIHtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMTE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBfTm9kZUxpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBfTm9kZUxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTm9kZUxpc3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vIDxkaXYgY2xhc3M9XCJjYXJvdXNlbCBzbGlkZVwiIGRhdGEtcmlkZT1cImNhcm91c2VsXCI+XG5cdFxuXHQvLyAgIDwhLS0gSW5kaWNhdG9ycyAtLT5cblx0XG5cdC8vICAgPG9sIGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiIHYtc2hvdz1cImluZGljYXRvcnNcIj5cblx0XG5cdC8vICAgICA8bGkgdi1mb3I9XCJpIGluIGluZGljYXRvclwiIEBjbGljaz1cImluZGljYXRvckNsaWNrKCRpbmRleClcIiB2LWJpbmQ6Y2xhc3M9XCJ7YWN0aXZlOiRpbmRleCA9PT0gaW5kZXh9XCI+PHNwYW4+PC9zcGFuPjwvbGk+XG5cdFxuXHQvLyAgIDwvb2w+XG5cdFxuXHQvLyAgIDwhLS0gV3JhcHBlciBmb3Igc2xpZGVzIC0tPlxuXHRcblx0Ly8gICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIiByb2xlPVwibGlzdGJveFwiPlxuXHRcblx0Ly8gICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgPC9kaXY+XG5cdFxuXHQvLyAgIDwhLS0gQ29udHJvbHMgLS0+XG5cdFxuXHQvLyAgIDxkaXYgdi1zaG93PVwiY29udHJvbHNcIiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2xzIGhpZGRlbi14c1wiPlxuXHRcblx0Ly8gICAgIDxhIGNsYXNzPVwibGVmdCBjYXJvdXNlbC1jb250cm9sXCIgcm9sZT1cImJ1dHRvblwiIEBjbGljaz1cInByZXZcIj5cblx0XG5cdC8vICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgPC9hPlxuXHRcblx0Ly8gICAgIDxhIGNsYXNzPVwicmlnaHQgY2Fyb3VzZWwtY29udHJvbFwiIHJvbGU9XCJidXR0b25cIiBAY2xpY2s9XCJuZXh0XCI+XG5cdFxuXHQvLyAgICAgICA8c3BhbiBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICA8L2E+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC9kaXY+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBwcm9wczoge1xuXHQgICAgaW5kaWNhdG9yczoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogdHJ1ZVxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xzOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgaW50ZXJ2YWw6IHtcblx0ICAgICAgdHlwZTogTnVtYmVyLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UubnVtYmVyLFxuXHQgICAgICBkZWZhdWx0OiA1MDAwXG5cdCAgICB9XG5cdCAgfSxcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgaW5kaWNhdG9yOiBbXSxcblx0ICAgICAgaW5kZXg6IDAsXG5cdCAgICAgIGlzQW5pbWF0aW5nOiBmYWxzZVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICB3YXRjaDoge1xuXHQgICAgaW5kZXg6IGZ1bmN0aW9uIGluZGV4KG5ld1ZhbCwgb2xkVmFsKSB7XG5cdCAgICAgIHRoaXMuc2xpZGUobmV3VmFsID4gb2xkVmFsID8gJ2xlZnQnIDogJ3JpZ2h0JywgbmV3VmFsLCBvbGRWYWwpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgaW5kaWNhdG9yQ2xpY2s6IGZ1bmN0aW9uIGluZGljYXRvckNsaWNrKGluZGV4KSB7XG5cdCAgICAgIGlmICh0aGlzLmlzQW5pbWF0aW5nIHx8IHRoaXMuaW5kZXggPT09IGluZGV4KSByZXR1cm4gZmFsc2U7XG5cdCAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXHQgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG5cdCAgICB9LFxuXHQgICAgc2xpZGU6IGZ1bmN0aW9uIHNsaWRlKGRpcmVjdGlvbiwgbmV4dCwgcHJldikge1xuXHQgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgICAgaWYgKCF0aGlzLiRlbCkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgJHNsaWRlciA9ICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKCcuaXRlbScsIHRoaXMuJGVsKTtcblx0ICAgICAgaWYgKCEkc2xpZGVyLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgc2VsZWN0ZWQgPSAkc2xpZGVyW25leHRdIHx8ICRzbGlkZXJbMF07XG5cdCAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHNlbGVjdGVkKS5hZGRDbGFzcyhkaXJlY3Rpb24gPT09ICdsZWZ0JyA/ICduZXh0JyA6ICdwcmV2Jyk7XG5cdCAgICAgIC8vIHJlcXVlc3QgcHJvcGVydHkgdGhhdCByZXF1aXJlcyBsYXlvdXQgdG8gZm9yY2UgYSBsYXlvdXRcblx0ICAgICAgdmFyIHggPSBzZWxlY3RlZC5jbGllbnRIZWlnaHQ7XG5cdCAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKFskc2xpZGVyW3ByZXZdLCBzZWxlY3RlZF0pLmFkZENsYXNzKGRpcmVjdGlvbikub24oJ3RyYW5zaXRpb25lbmQnLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgJHNsaWRlci5vZmYoJ3RyYW5zaXRpb25lbmQnKS5jbGFzc05hbWUgPSAnaXRlbSc7XG5cdCAgICAgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkoc2VsZWN0ZWQpLmFkZENsYXNzKCdhY3RpdmUnKTtcblx0ICAgICAgICBfdGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlO1xuXHQgICAgICB9KTtcblx0ICAgIH0sXG5cdCAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuXHQgICAgICBpZiAoIXRoaXMuJGVsIHx8IHRoaXMuaXNBbmltYXRpbmcpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5pc0FuaW1hdGluZyA9IHRydWU7XG5cdCAgICAgIHRoaXMuaW5kZXggKyAxIDwgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkoJy5pdGVtJywgdGhpcy4kZWwpLmxlbmd0aCA/IHRoaXMuaW5kZXggKz0gMSA6IHRoaXMuaW5kZXggPSAwO1xuXHQgICAgfSxcblx0ICAgIHByZXY6IGZ1bmN0aW9uIHByZXYoKSB7XG5cdCAgICAgIGlmICghdGhpcy4kZWwgfHwgdGhpcy5pc0FuaW1hdGluZykge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLmlzQW5pbWF0aW5nID0gdHJ1ZTtcblx0ICAgICAgdGhpcy5pbmRleCA9PT0gMCA/IHRoaXMuaW5kZXggPSAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KSgnLml0ZW0nLCB0aGlzLiRlbCkubGVuZ3RoIC0gMSA6IHRoaXMuaW5kZXggLT0gMTtcblx0ICAgIH0sXG5cdCAgICB0b2dnbGVJbnRlcnZhbDogZnVuY3Rpb24gdG9nZ2xlSW50ZXJ2YWwodmFsKSB7XG5cdCAgICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgIHZhbCA9IHRoaXMuX2ludGVydmFsSUQ7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHRoaXMuX2ludGVydmFsSUQpIHtcblx0ICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSUQpO1xuXHQgICAgICAgIGRlbGV0ZSB0aGlzLl9pbnRlcnZhbElEO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICh2YWwgJiYgdGhpcy5pbnRlcnZhbCA+IDApIHtcblx0ICAgICAgICB0aGlzLl9pbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwodGhpcy5uZXh0LCB0aGlzLmludGVydmFsKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgdGhpcy50b2dnbGVJbnRlcnZhbCh0cnVlKTtcblx0ICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRoaXMuJGVsKS5vbignbW91c2VlbnRlcicsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzMi50b2dnbGVJbnRlcnZhbChmYWxzZSk7XG5cdCAgICB9KS5vbignbW91c2VsZWF2ZScsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzMi50b2dnbGVJbnRlcnZhbCh0cnVlKTtcblx0ICAgIH0pO1xuXHQgIH0sXG5cdCAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcblx0ICAgIHRoaXMudG9nZ2xlSW50ZXJ2YWwoZmFsc2UpO1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy4kZWwpLm9mZignbW91c2VlbnRlciBtb3VzZWxlYXZlJyk7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGUgc2NvcGVkPlxuXHRcblx0Ly8gLmNhcm91c2VsLWNvbnRyb2wge1xuXHRcblx0Ly8gICBjdXJzb3I6IHBvaW50ZXI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyA8L3N0eWxlPlxuXG4vKioqLyB9LFxuLyogMTE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiY2Fyb3VzZWwgc2xpZGVcXFwiIGRhdGEtcmlkZT1cXFwiY2Fyb3VzZWxcXFwiIF92LTVhZmU4MGFiPVxcXCJcXFwiPlxcbiAgPCEtLSBJbmRpY2F0b3JzIC0tPlxcbiAgPG9sIGNsYXNzPVxcXCJjYXJvdXNlbC1pbmRpY2F0b3JzXFxcIiB2LXNob3c9XFxcImluZGljYXRvcnNcXFwiIF92LTVhZmU4MGFiPVxcXCJcXFwiPlxcbiAgICA8bGkgdi1mb3I9XFxcImkgaW4gaW5kaWNhdG9yXFxcIiBAY2xpY2s9XFxcImluZGljYXRvckNsaWNrKCRpbmRleClcXFwiIHYtYmluZDpjbGFzcz1cXFwie2FjdGl2ZTokaW5kZXggPT09IGluZGV4fVxcXCIgX3YtNWFmZTgwYWI9XFxcIlxcXCI+PHNwYW4gX3YtNWFmZTgwYWI9XFxcIlxcXCI+PC9zcGFuPjwvbGk+XFxuICA8L29sPlxcbiAgPCEtLSBXcmFwcGVyIGZvciBzbGlkZXMgLS0+XFxuICA8ZGl2IGNsYXNzPVxcXCJjYXJvdXNlbC1pbm5lclxcXCIgcm9sZT1cXFwibGlzdGJveFxcXCIgX3YtNWFmZTgwYWI9XFxcIlxcXCI+XFxuICAgIDxzbG90IF92LTVhZmU4MGFiPVxcXCJcXFwiPjwvc2xvdD5cXG4gIDwvZGl2PlxcbiAgPCEtLSBDb250cm9scyAtLT5cXG4gIDxkaXYgdi1zaG93PVxcXCJjb250cm9sc1xcXCIgY2xhc3M9XFxcImNhcm91c2VsLWNvbnRyb2xzIGhpZGRlbi14c1xcXCIgX3YtNWFmZTgwYWI9XFxcIlxcXCI+XFxuICAgIDxhIGNsYXNzPVxcXCJsZWZ0IGNhcm91c2VsLWNvbnRyb2xcXFwiIHJvbGU9XFxcImJ1dHRvblxcXCIgQGNsaWNrPVxcXCJwcmV2XFxcIiBfdi01YWZlODBhYj1cXFwiXFxcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIiBfdi01YWZlODBhYj1cXFwiXFxcIj48L3NwYW4+XFxuICAgIDwvYT5cXG4gICAgPGEgY2xhc3M9XFxcInJpZ2h0IGNhcm91c2VsLWNvbnRyb2xcXFwiIHJvbGU9XFxcImJ1dHRvblxcXCIgQGNsaWNrPVxcXCJuZXh0XFxcIiBfdi01YWZlODBhYj1cXFwiXFxcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XFxcIiBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCIgX3YtNWFmZTgwYWI9XFxcIlxcXCI+PC9zcGFuPlxcbiAgICA8L2E+XFxuICA8L2Rpdj5cXG48L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDExNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygxMTgpXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjApXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjEpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9DaGVja2JveC52dWVcIlxuXHRob3RBUEkuY3JlYXRlUmVjb3JkKGlkLCBtb2R1bGUuZXhwb3J0cylcblx0bW9kdWxlLmhvdC5hY2NlcHQoW1wiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQ2hlY2tib3gudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1yZXdyaXRlci5qcz9pZD1fdi1kYzE5NWNlNCZmaWxlPUNoZWNrYm94LnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9DaGVja2JveC52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vQ2hlY2tib3gudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtcmV3cml0ZXIuanM/aWQ9X3YtZGMxOTVjZTQmZmlsZT1DaGVja2JveC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQ2hlY2tib3gudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDExOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTtcblx0aWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cdC8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cblx0dmFyIHVwZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKShjb250ZW50LCB7fSk7XG5cdGlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXHQvLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5cdGlmKGZhbHNlKSB7XG5cdFx0Ly8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LWRjMTk1Y2U0JmZpbGU9Q2hlY2tib3gudnVlJnNjb3BlZD10cnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL0NoZWNrYm94LnZ1ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LWRjMTk1Y2U0JmZpbGU9Q2hlY2tib3gudnVlJnNjb3BlZD10cnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL0NoZWNrYm94LnZ1ZVwiKTtcblx0XHRcdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cdFx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDExOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApKCk7XG5cdC8vIGltcG9ydHNcblx0XG5cdFxuXHQvLyBtb2R1bGVcblx0ZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwibGFiZWwuY2hlY2tib3hbX3YtZGMxOTVjZTRdIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIHBhZGRpbmctbGVmdDogMThweDtcXHJcXG59XFxyXFxubGFiZWwuY2hlY2tib3ggPiBpbnB1dFtfdi1kYzE5NWNlNF0ge1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHotaW5kZXg6IC0xO1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxufVxcclxcbmxhYmVsLmNoZWNrYm94ID4gLmljb25bX3YtZGMxOTVjZTRdIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogLjJyZW07XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aWR0aDogMS40cmVtO1xcclxcbiAgaGVpZ2h0OiAxLjRyZW07XFxyXFxuICBsaW5lLWhlaWdodDoxcmVtO1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXHJcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcclxcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IC4zNXJlbTtcXHJcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxyXFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xcclxcbiAgYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlO1xcclxcbn1cXHJcXG5sYWJlbC5jaGVja2JveDpub3QoLmFjdGl2ZSkgPiAuaWNvbltfdi1kYzE5NWNlNF0ge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7XFxyXFxufVxcclxcbmxhYmVsLmNoZWNrYm94ID4gaW5wdXQ6Zm9jdXMgfiAuaWNvbltfdi1kYzE5NWNlNF0ge1xcclxcbiAgb3V0bGluZTogMDtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICM2NmFmZTk7XFxyXFxuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpO1xcclxcbn1cXHJcXG5sYWJlbC5jaGVja2JveC5hY3RpdmUgPiAuaWNvbltfdi1kYzE5NWNlNF0ge1xcclxcbiAgYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07XFxyXFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejROQ2p4emRtY2dlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjNhV1IwYUQwaU55SWdhR1ZwWjJoMFBTSTNJajQ4Y0dGMGFDQm1hV3hzUFNJalptWm1JaUJrUFNKdE5TNDNNeXd3TGpVeWJDMHpMakV5TkRJeUxETXVNelF4TmpGc0xURXVNek00T1RVc0xURXVORE15TVRKc0xURXVNalE1Tmprc01TNHpNelkyTld3eUxqVTRPRFl6TERJdU56WTROelpzTkM0ek56TTVMQzAwTGpZM09ESTJiQzB4TGpJME9UWTVMQzB4TGpNek5qWTFiREFzTUd3d0xqQXdNREF5TERBdU1EQXdNREY2SWk4K1BDOXpkbWMrKTtcXHJcXG59XFxyXFxubGFiZWwuY2hlY2tib3guYWN0aXZlIC5idG4tZGVmYXVsdFtfdi1kYzE5NWNlNF0geyAtd2Via2l0LWZpbHRlcjogYnJpZ2h0bmVzcyg3NSUpOyBmaWx0ZXI6IGJyaWdodG5lc3MoNzUlKTsgfVxcclxcblxcclxcbmxhYmVsLmNoZWNrYm94LmRpc2FibGVkW192LWRjMTk1Y2U0XSxcXHJcXG5sYWJlbC5jaGVja2JveC5yZWFkb25seVtfdi1kYzE5NWNlNF0sXFxyXFxuLmJ0bi5yZWFkb25seVtfdi1kYzE5NWNlNF0ge1xcclxcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTY1KTtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICBvcGFjaXR5OiAuNjU7XFxyXFxufVxcclxcbmxhYmVsLmJ0biA+IGlucHV0W3R5cGU9Y2hlY2tib3hdW192LWRjMTk1Y2U0XSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBjbGlwOiByZWN0KDAsMCwwLDApO1xcclxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxufVwiLCBcIlwiXSk7XG5cdFxuXHQvLyBleHBvcnRzXG5cblxuLyoqKi8gfSxcbi8qIDEyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHZhbHVlOiB7XG5cdCAgICAgIGRlZmF1bHQ6IHRydWVcblx0ICAgIH0sXG5cdCAgICBjaGVja2VkOiB7XG5cdCAgICAgIHR3b1dheTogdHJ1ZVxuXHQgICAgfSxcblx0ICAgIGJ1dHRvbjoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBkaXNhYmxlZDoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBuYW1lOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIHJlYWRvbmx5OiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIHR5cGU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9XG5cdCAgfSxcblx0ICBjb21wdXRlZDoge1xuXHQgICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG5cdCAgICAgIHJldHVybiB0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuZ3JvdXAgPyB+dGhpcy4kcGFyZW50LnZhbHVlLmluZGV4T2YodGhpcy52YWx1ZSkgOiB0aGlzLmNoZWNrZWQgPT09IHRoaXMudmFsdWU7XG5cdCAgICB9LFxuXHQgICAgaXNCdXR0b246IGZ1bmN0aW9uIGlzQnV0dG9uKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5idXR0b24gfHwgdGhpcy5ncm91cCAmJiB0aGlzLiRwYXJlbnQuYnV0dG9ucztcblx0ICAgIH0sXG5cdCAgICBncm91cDogZnVuY3Rpb24gZ3JvdXAoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50Ll9jaGVja2JveEdyb3VwO1xuXHQgICAgfSxcblx0ICAgIHR5cGVDb2xvcjogZnVuY3Rpb24gdHlwZUNvbG9yKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy50eXBlIHx8IHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQudHlwZSB8fCAnZGVmYXVsdCc7XG5cdCAgICB9XG5cdCAgfSxcblx0ICB3YXRjaDoge1xuXHQgICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZCh2YWwpIHtcblx0ICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAnYm9vbGVhbicgJiYgdGhpcy5ncm91cCkge1xuXHQgICAgICAgIGlmICh0aGlzLmNoZWNrZWQgJiYgIX50aGlzLiRwYXJlbnQudmFsdWUuaW5kZXhPZih0aGlzLnZhbHVlKSkgdGhpcy4kcGFyZW50LnZhbHVlLnB1c2godGhpcy52YWx1ZSk7XG5cdCAgICAgICAgaWYgKCF0aGlzLmNoZWNrZWQgJiYgfnRoaXMuJHBhcmVudC52YWx1ZS5pbmRleE9mKHRoaXMudmFsdWUpKSB0aGlzLiRwYXJlbnQudmFsdWUuJHJlbW92ZSh0aGlzLnZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG5cdCAgICBpZiAocGFyZW50ICYmIHBhcmVudC5fYnRuR3JvdXAgJiYgIXBhcmVudC5fcmFkaW9Hcm91cCkge1xuXHQgICAgICBwYXJlbnQuX2NoZWNrYm94R3JvdXAgPSB0cnVlO1xuXHQgICAgICBpZiAoIShwYXJlbnQudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcblx0ICAgICAgICBwYXJlbnQudmFsdWUgPSBbXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgaWYgKCF0aGlzLiRwYXJlbnQuX2NoZWNrYm94R3JvdXAgfHwgdHlwZW9mIHRoaXMudmFsdWUgPT09ICdib29sZWFuJykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAodGhpcy4kcGFyZW50LnZhbHVlLmxlbmd0aCkge1xuXHQgICAgICB0aGlzLmNoZWNrZWQgPSB+dGhpcy4kcGFyZW50LnZhbHVlLmluZGV4T2YodGhpcy52YWx1ZSk7XG5cdCAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tlZCkge1xuXHQgICAgICB0aGlzLiRwYXJlbnQudmFsdWUucHVzaCh0aGlzLnZhbHVlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBtZXRob2RzOiB7XG5cdCAgICBldmFsOiBmdW5jdGlvbiBfZXZhbCgpIHtcblx0ICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAnYm9vbGVhbicgJiYgdGhpcy5ncm91cCkge1xuXHQgICAgICAgIHRoaXMuY2hlY2tlZCA9IH50aGlzLiRwYXJlbnQudmFsdWUuaW5kZXhPZih0aGlzLnZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcblx0ICAgICAgdGhpcy4kZWxzLmlucHV0LmZvY3VzKCk7XG5cdCAgICB9LFxuXHQgICAgdG9nZ2xlOiBmdW5jdGlvbiB0b2dnbGUoKSB7XG5cdCAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuXHQgICAgICAgIHRoaXMuZm9jdXMoKTtcblx0ICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcblx0ICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZCA/IG51bGwgOiB0aGlzLnZhbHVlO1xuXHQgICAgICAgICAgaWYgKHRoaXMuZ3JvdXAgJiYgdHlwZW9mIHRoaXMudmFsdWUgIT09ICdib29sZWFuJykge1xuXHQgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLiRwYXJlbnQudmFsdWUuaW5kZXhPZih0aGlzLnZhbHVlKTtcblx0ICAgICAgICAgICAgdGhpcy4kcGFyZW50LnZhbHVlW35pbmRleCA/ICckcmVtb3ZlJyA6ICdwdXNoJ10odGhpcy52YWx1ZSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXHRcblx0XG5cdC8vIDxzdHlsZSBzY29wZWQ+XG5cdFxuXHQvLyBsYWJlbC5jaGVja2JveCB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XG5cdC8vICAgcGFkZGluZy1sZWZ0OiAxOHB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gbGFiZWwuY2hlY2tib3ggPiBpbnB1dCB7XG5cdFxuXHQvLyAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgei1pbmRleDogLTE7XG5cdFxuXHQvLyAgIHBhZGRpbmc6IDA7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IDA7XG5cdFxuXHQvLyAgIG1hcmdpbjogMDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIGxhYmVsLmNoZWNrYm94ID4gLmljb24ge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFxuXHQvLyAgIHRvcDogLjJyZW07XG5cdFxuXHQvLyAgIGxlZnQ6IDA7XG5cdFxuXHQvLyAgIGRpc3BsYXk6IGJsb2NrO1xuXHRcblx0Ly8gICB3aWR0aDogMS40cmVtO1xuXHRcblx0Ly8gICBoZWlnaHQ6IDEuNHJlbTtcblx0XG5cdC8vICAgbGluZS1oZWlnaHQ6MXJlbTtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gICB1c2VyLXNlbGVjdDogbm9uZTtcblx0XG5cdC8vICAgYm9yZGVyLXJhZGl1czogLjM1cmVtO1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLXNpemU6IDUwJSA1MCU7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBsYWJlbC5jaGVja2JveDpub3QoLmFjdGl2ZSkgPiAuaWNvbiB7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG5cdFxuXHQvLyAgIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBsYWJlbC5jaGVja2JveCA+IGlucHV0OmZvY3VzIH4gLmljb24ge1xuXHRcblx0Ly8gICBvdXRsaW5lOiAwO1xuXHRcblx0Ly8gICBib3JkZXI6IDFweCBzb2xpZCAjNjZhZmU5O1xuXHRcblx0Ly8gICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gbGFiZWwuY2hlY2tib3guYWN0aXZlID4gLmljb24ge1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTtcblx0XG5cdC8vICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0TkNqeHpkbWNnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JaUIzYVdSMGFEMGlOeUlnYUdWcFoyaDBQU0kzSWo0OGNHRjBhQ0JtYVd4c1BTSWpabVptSWlCa1BTSnROUzQzTXl3d0xqVXliQzB6TGpFeU5ESXlMRE11TXpReE5qRnNMVEV1TXpNNE9UVXNMVEV1TkRNeU1USnNMVEV1TWpRNU5qa3NNUzR6TXpZMk5Xd3lMalU0T0RZekxESXVOelk0Tnpac05DNHpOek01TEMwMExqWTNPREkyYkMweExqSTBPVFk1TEMweExqTXpOalkxYkRBc01Hd3dMakF3TURBeUxEQXVNREF3TURGNklpOCtQQzl6ZG1jKyk7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBsYWJlbC5jaGVja2JveC5hY3RpdmUgLmJ0bi1kZWZhdWx0IHsgZmlsdGVyOiBicmlnaHRuZXNzKDc1JSk7IH1cblx0XG5cdFxuXHQvLyBsYWJlbC5jaGVja2JveC5kaXNhYmxlZCxcblx0XG5cdC8vIGxhYmVsLmNoZWNrYm94LnJlYWRvbmx5LFxuXHRcblx0Ly8gLmJ0bi5yZWFkb25seSB7XG5cdFxuXHQvLyAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT02NSk7XG5cdFxuXHQvLyAgIGJveC1zaGFkb3c6IG5vbmU7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IC42NTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIGxhYmVsLmJ0biA+IGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcblx0XG5cdC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcblx0Ly8gICBjbGlwOiByZWN0KDAsMCwwLDApO1xuXHRcblx0Ly8gICBwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGxhYmVsIDpjbGFzcz1cIltpc0J1dHRvbj8nYnRuIGJ0bi0nK3R5cGVDb2xvcjonb3BlbiBjaGVja2JveCAnK3R5cGVDb2xvcix7YWN0aXZlOmNoZWNrZWQsZGlzYWJsZWQ6ZGlzYWJsZWQscmVhZG9ubHk6cmVhZG9ubHl9XVwiIEBjbGljay5wcmV2ZW50PVwidG9nZ2xlXCI+XG5cdFxuXHQvLyAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFxuXHQvLyAgICAgICB2LWVsOmlucHV0XG5cdFxuXHQvLyAgICAgICA6Y2hlY2tlZD1cImFjdGl2ZVwiXG5cdFxuXHQvLyAgICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG5cdFxuXHQvLyAgICAgICA6bmFtZT1cIm5hbWVcIlxuXHRcblx0Ly8gICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuXHRcblx0Ly8gICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuXHRcblx0Ly8gICAgIC8+XG5cdFxuXHQvLyAgICAgPHNwYW4gdi1pZj1cIiFpc0J1dHRvblwiIGNsYXNzPVwiaWNvbiBkcm9wZG93bi10b2dnbGVcIiA6Y2xhc3M9XCJbYWN0aXZlPydidG4tJyt0eXBlQ29sb3I6Jycse2JnOnR5cGVDb2xvcj09PSdkZWZhdWx0J31dXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgIDxzcGFuIHYtaWY9XCIhaXNCdXR0b24mYWN0aXZlJiZ0eXBlQ29sb3I9PT0nZGVmYXVsdCdcIiBjbGFzcz1cImljb25cIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgPHNsb3Q+PC9zbG90PlxuXHRcblx0Ly8gICA8L2xhYmVsPlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXG4vKioqLyB9LFxuLyogMTIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGxhYmVsIDpjbGFzcz1cXFwiW2lzQnV0dG9uPydidG4gYnRuLScrdHlwZUNvbG9yOidvcGVuIGNoZWNrYm94ICcrdHlwZUNvbG9yLHthY3RpdmU6Y2hlY2tlZCxkaXNhYmxlZDpkaXNhYmxlZCxyZWFkb25seTpyZWFkb25seX1dXFxcIiBAY2xpY2sucHJldmVudD1cXFwidG9nZ2xlXFxcIiBfdi1kYzE5NWNlND1cXFwiXFxcIj5cXG4gICAgPGlucHV0IHR5cGU9XFxcImNoZWNrYm94XFxcIiBhdXRvY29tcGxldGU9XFxcIm9mZlxcXCIgdi1lbDppbnB1dD1cXFwiXFxcIiA6Y2hlY2tlZD1cXFwiYWN0aXZlXFxcIiA6dmFsdWU9XFxcInZhbHVlXFxcIiA6bmFtZT1cXFwibmFtZVxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgX3YtZGMxOTVjZTQ9XFxcIlxcXCI+XFxuICAgIDxzcGFuIHYtaWY9XFxcIiFpc0J1dHRvblxcXCIgY2xhc3M9XFxcImljb24gZHJvcGRvd24tdG9nZ2xlXFxcIiA6Y2xhc3M9XFxcIlthY3RpdmU/J2J0bi0nK3R5cGVDb2xvcjonJyx7Ymc6dHlwZUNvbG9yPT09J2RlZmF1bHQnfV1cXFwiIF92LWRjMTk1Y2U0PVxcXCJcXFwiPjwvc3Bhbj5cXG4gICAgPHNwYW4gdi1pZj1cXFwiIWlzQnV0dG9uJmFtcDthY3RpdmUmYW1wOyZhbXA7dHlwZUNvbG9yPT09J2RlZmF1bHQnXFxcIiBjbGFzcz1cXFwiaWNvblxcXCIgX3YtZGMxOTVjZTQ9XFxcIlxcXCI+PC9zcGFuPlxcbiAgICA8c2xvdCBfdi1kYzE5NWNlND1cXFwiXFxcIj48L3Nsb3Q+XFxuICA8L2xhYmVsPlwiO1xuXG4vKioqLyB9LFxuLyogMTIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDEyMylcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNSlcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNilcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0RhdGVwaWNrZXIudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0RhdGVwaWNrZXIudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9EYXRlcGlja2VyLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9EYXRlcGlja2VyLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0RhdGVwaWNrZXIudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDEyMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTI0KTtcblx0aWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cdC8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cblx0dmFyIHVwZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKShjb250ZW50LCB7fSk7XG5cdGlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXHQvLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5cdGlmKGZhbHNlKSB7XG5cdFx0Ly8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTdlNzEyZTQ3JmZpbGU9RGF0ZXBpY2tlci52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vRGF0ZXBpY2tlci52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi03ZTcxMmU0NyZmaWxlPURhdGVwaWNrZXIudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL0RhdGVwaWNrZXIudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIuZGF0ZXBpY2tlcntcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG59XFxyXFxuaW5wdXQuZGF0ZXBpY2tlci1pbnB1dC53aXRoLXJlc2V0LWJ1dHRvbiB7XFxyXFxuICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlciA+IGJ1dHRvbi5jbG9zZSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB0b3A6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxuICB6LWluZGV4OiAyO1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aWR0aDogMzRweDtcXHJcXG4gIGhlaWdodDogMzRweDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAzNHB4O1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlciA+IGJ1dHRvbi5jbG9zZTpmb2N1cyB7XFxyXFxuICBvcGFjaXR5OiAuMjtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItcG9wdXB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xcclxcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcclxcbiAgYmFja2dyb3VuZDogI2ZmZjtcXHJcXG4gIG1hcmdpbi10b3A6IDJweDtcXHJcXG4gIHotaW5kZXg6IDEwMDA7XFxyXFxuICBib3gtc2hhZG93OiAwIDZweCAxMnB4IHJnYmEoMCwwLDAsMC4xNzUpO1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1pbm5lcntcXHJcXG4gIHdpZHRoOiAyMThweDtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItYm9keXtcXHJcXG4gIHBhZGRpbmc6IDEwcHggMTBweDtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItY3RybCBwLFxcclxcbi5kYXRlcGlja2VyLWN0cmwgc3BhbixcXHJcXG4uZGF0ZXBpY2tlci1ib2R5IHNwYW57XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICB3aWR0aDogMjhweDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xcclxcbiAgaGVpZ2h0OiAyOHB4O1xcclxcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1jdHJsIHAge1xcclxcbiAgd2lkdGg6IDY1JTtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItY3RybCBzcGFuIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItYm9keSBzcGFuIHtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItbW9udGhSYW5nZSBzcGFue1xcclxcbiAgd2lkdGg6IDQ4cHg7XFxyXFxuICBoZWlnaHQ6IDUwcHg7XFxyXFxuICBsaW5lLWhlaWdodDogNDVweDtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItaXRlbS1kaXNhYmxlIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlIWltcG9ydGFudDtcXHJcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQhaW1wb3J0YW50O1xcclxcbn1cXHJcXG4uZGVjYWRlUmFuZ2Ugc3BhbjpmaXJzdC1jaGlsZCxcXHJcXG4uZGVjYWRlUmFuZ2Ugc3BhbjpsYXN0LWNoaWxkLFxcclxcbi5kYXRlcGlja2VyLWl0ZW0tZGlzYWJsZSxcXHJcXG4uZGF0ZXBpY2tlci1pdGVtLWdyYXl7XFxyXFxuICBjb2xvcjogIzk5OTtcXHJcXG59XFxyXFxuXFxyXFxuLmRhdGVwaWNrZXItZGF0ZVJhbmdlLWl0ZW0tYWN0aXZlOmhvdmVyLFxcclxcbi5kYXRlcGlja2VyLWRhdGVSYW5nZS1pdGVtLWFjdGl2ZSB7XFxyXFxuICBiYWNrZ3JvdW5kOiByZ2IoNTAsIDExOCwgMTc3KSFpbXBvcnRhbnQ7XFxyXFxuICBjb2xvcjogd2hpdGUhaW1wb3J0YW50O1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1tb250aFJhbmdlIHtcXHJcXG4gIG1hcmdpbi10b3A6IDEwcHhcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItbW9udGhSYW5nZSBzcGFuLFxcclxcbi5kYXRlcGlja2VyLWN0cmwgc3BhbixcXHJcXG4uZGF0ZXBpY2tlci1jdHJsIHAsXFxyXFxuLmRhdGVwaWNrZXItZGF0ZVJhbmdlIHNwYW4ge1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1tb250aFJhbmdlIHNwYW46aG92ZXIsXFxyXFxuLmRhdGVwaWNrZXItY3RybCBwOmhvdmVyLFxcclxcbi5kYXRlcGlja2VyLWN0cmwgaTpob3ZlcixcXHJcXG4uZGF0ZXBpY2tlci1kYXRlUmFuZ2Ugc3Bhbjpob3ZlcixcXHJcXG4uZGF0ZXBpY2tlci1kYXRlUmFuZ2UtaXRlbS1ob3ZlciB7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yIDogI2VlZWVlZTtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItd2Vla1JhbmdlIHNwYW57XFxyXFxuICBmb250LXdlaWdodDogYm9sZDtcXHJcXG59XFxyXFxuLmRhdGVwaWNrZXItbGFiZWx7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xcclxcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXHJcXG4gIHBhZGRpbmc6IDdweCAwO1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1jdHJse1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgaGVpZ2h0OiAzMHB4O1xcclxcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XFxyXFxuICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG59XFxyXFxuLm1vbnRoLWJ0bntcXHJcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lO1xcclxcbiAgLW1vei11c2VyLXNlbGVjdDpub25lO1xcclxcbiAgLW1zLXVzZXItc2VsZWN0Om5vbmU7XFxyXFxuICB1c2VyLXNlbGVjdDpub25lO1xcclxcbn1cXHJcXG4uZGF0ZXBpY2tlci1wcmVCdG57XFxyXFxuICBsZWZ0OiAycHg7XFxyXFxufVxcclxcbi5kYXRlcGlja2VyLW5leHRCdG57XFxyXFxuICByaWdodDogMnB4O1xcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAxMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ob2RlTGlzdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlclwiPlxuXHRcblx0Ly8gICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkYXRlcGlja2VyLWlucHV0XCIgOmNsYXNzPVwieyd3aXRoLXJlc2V0LWJ1dHRvbic6IGNsZWFyQnV0dG9ufVwiIHR5cGU9XCJ0ZXh0XCIgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcIlxuXHRcblx0Ly8gICAgICAgICA6c3R5bGU9XCJ7d2lkdGg6d2lkdGh9XCJcblx0XG5cdC8vICAgICAgICAgQGNsaWNrPVwiaW5wdXRDbGlja1wiXG5cdFxuXHQvLyAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiLz5cblx0XG5cdC8vICAgICA8YnV0dG9uIHYtaWY9XCJjbGVhckJ1dHRvbiAmJiB2YWx1ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgQGNsaWNrPVwidmFsdWUgPSAnJ1wiPlxuXHRcblx0Ly8gICAgICAgPHNwYW4+JnRpbWVzOzwvc3Bhbj5cblx0XG5cdC8vICAgICA8L2J1dHRvbj5cblx0XG5cdC8vICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1wb3B1cFwiIHYtc2hvdz1cImRpc3BsYXlEYXlWaWV3XCI+XG5cdFxuXHQvLyAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1pbm5lclwiPlxuXHRcblx0Ly8gICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1ib2R5XCI+XG5cdFxuXHQvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY3RybFwiPlxuXHRcblx0Ly8gICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLXByZUJ0biBnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIEBjbGljaz1cInByZU5leHRNb250aENsaWNrKDApXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLW5leHRCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgQGNsaWNrPVwicHJlTmV4dE1vbnRoQ2xpY2soMSlcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICAgICAgICA8cCBAY2xpY2s9XCJzd2l0Y2hNb250aFZpZXdcIj57e3N0cmluZ2lmeURheUhlYWRlcihjdXJyRGF0ZSl9fTwvcD5cblx0XG5cdC8vICAgICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci13ZWVrUmFuZ2VcIj5cblx0XG5cdC8vICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwidyBpbiB0ZXh0LmRheXNPZldlZWtcIj57e3d9fTwvc3Bhbj5cblx0XG5cdC8vICAgICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1kYXRlUmFuZ2VcIj5cblx0XG5cdC8vICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwiZCBpbiBkYXRlUmFuZ2VcIiA6Y2xhc3M9XCJkLnNjbGFzc1wiIEBjbGljaz1cImRheVNlbGVjdChkLmRhdGUsdGhpcylcIj57e2QudGV4dH19PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLXBvcHVwXCIgdi1zaG93PVwiZGlzcGxheU1vbnRoVmlld1wiPlxuXHRcblx0Ly8gICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItaW5uZXJcIj5cblx0XG5cdC8vICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItYm9keVwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWN0cmxcIj5cblx0XG5cdC8vICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlci1wcmVCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBAY2xpY2s9XCJwcmVOZXh0WWVhckNsaWNrKDApXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLW5leHRCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgQGNsaWNrPVwicHJlTmV4dFllYXJDbGljaygxKVwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgICAgICAgIDxwIEBjbGljaz1cInN3aXRjaERlY2FkZVZpZXdcIj57e3N0cmluZ2lmeVllYXJIZWFkZXIoY3VyckRhdGUpfX08L3A+XG5cdFxuXHQvLyAgICAgICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItbW9udGhSYW5nZVwiPlxuXHRcblx0Ly8gICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwibSBpbiB0ZXh0Lm1vbnRoc1wiPlxuXHRcblx0Ly8gICAgICAgICAgICAgICA8c3BhbiAgIDpjbGFzcz1cInsnZGF0ZXBpY2tlci1kYXRlUmFuZ2UtaXRlbS1hY3RpdmUnOlxuXHRcblx0Ly8gICAgICAgICAgICAgICAgICAgKHRleHQubW9udGhzW3BhcnNlKHZhbHVlKS5nZXRNb250aCgpXSAgPT09IG0pICYmXG5cdFxuXHQvLyAgICAgICAgICAgICAgICAgICBjdXJyRGF0ZS5nZXRGdWxsWWVhcigpID09PSBwYXJzZSh2YWx1ZSkuZ2V0RnVsbFllYXIoKX1cIlxuXHRcblx0Ly8gICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibW9udGhTZWxlY3QoJGluZGV4KVwiXG5cdFxuXHQvLyAgICAgICAgICAgICAgICAgPnt7bS5zdWJzdHIoMCwzKX19PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblx0XG5cdC8vICAgICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1wb3B1cFwiIHYtc2hvdz1cImRpc3BsYXlZZWFyVmlld1wiPlxuXHRcblx0Ly8gICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItaW5uZXJcIj5cblx0XG5cdC8vICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItYm9keVwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWN0cmxcIj5cblx0XG5cdC8vICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlci1wcmVCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBAY2xpY2s9XCJwcmVOZXh0RGVjYWRlQ2xpY2soMClcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVwaWNrZXItbmV4dEJ0biBnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBAY2xpY2s9XCJwcmVOZXh0RGVjYWRlQ2xpY2soMSlcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICAgICAgICA8cD57e3N0cmluZ2lmeURlY2FkZUhlYWRlcihjdXJyRGF0ZSl9fTwvcD5cblx0XG5cdC8vICAgICAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1tb250aFJhbmdlIGRlY2FkZVJhbmdlXCI+XG5cdFxuXHQvLyAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJkZWNhZGUgaW4gZGVjYWRlUmFuZ2VcIj5cblx0XG5cdC8vICAgICAgICAgICAgICAgPHNwYW4gOmNsYXNzPVwieydkYXRlcGlja2VyLWRhdGVSYW5nZS1pdGVtLWFjdGl2ZSc6XG5cdFxuXHQvLyAgICAgICAgICAgICAgICAgICBwYXJzZSh0aGlzLnZhbHVlKS5nZXRGdWxsWWVhcigpID09PSBkZWNhZGUudGV4dH1cIlxuXHRcblx0Ly8gICAgICAgICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJ5ZWFyU2VsZWN0KGRlY2FkZS50ZXh0KVwiXG5cdFxuXHQvLyAgICAgICAgICAgICAgICAgPnt7ZGVjYWRlLnRleHR9fTwvc3Bhbj5cblx0XG5cdC8vICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cdFxuXHQvLyAgICAgICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgPC9kaXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHZhbHVlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgdHdvV2F5OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgZm9ybWF0OiB7XG5cdCAgICAgIGRlZmF1bHQ6ICdNTS9kZC95eXl5J1xuXHQgICAgfSxcblx0ICAgIGRpc2FibGVkRGF5c09mV2Vlazoge1xuXHQgICAgICB0eXBlOiBBcnJheSxcblx0ICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG5cdCAgICAgICAgcmV0dXJuIFtdO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgd2lkdGg6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAnMjAwcHgnXG5cdCAgICB9LFxuXHQgICAgY2xlYXJCdXR0b246IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBsYW5nOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbmF2aWdhdG9yLmxhbmd1YWdlXG5cdCAgICB9LFxuXHQgICAgcGxhY2Vob2xkZXI6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9XG5cdCAgfSxcblx0ICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7XG5cdCAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgIHRoaXMuX2JsdXIgPSBmdW5jdGlvbiAoZSkge1xuXHQgICAgICBpZiAoX3RoaXMuJGVsICE9PSBudWxsICYmICFfdGhpcy4kZWwuY29udGFpbnMoZS50YXJnZXQpKSBfdGhpcy5jbG9zZSgpO1xuXHQgICAgfTtcblx0ICAgIHRoaXMuJGRpc3BhdGNoKCdjaGlsZC1jcmVhdGVkJywgdGhpcyk7XG5cdCAgICB0aGlzLmN1cnJEYXRlID0gdGhpcy5wYXJzZSh0aGlzLnZhbHVlKSB8fCB0aGlzLnBhcnNlKG5ldyBEYXRlKCkpO1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkod2luZG93KS5vbignY2xpY2snLCB0aGlzLl9ibHVyKTtcblx0ICB9LFxuXHQgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG5cdCAgICAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KSh3aW5kb3cpLm9mZignY2xpY2snLCB0aGlzLl9ibHVyKTtcblx0ICB9LFxuXHQgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBjdXJyRGF0ZTogbmV3IERhdGUoKSxcblx0ICAgICAgZGF0ZVJhbmdlOiBbXSxcblx0ICAgICAgZGVjYWRlUmFuZ2U6IFtdLFxuXHQgICAgICBkaXNwbGF5RGF5VmlldzogZmFsc2UsXG5cdCAgICAgIGRpc3BsYXlNb250aFZpZXc6IGZhbHNlLFxuXHQgICAgICBkaXNwbGF5WWVhclZpZXc6IGZhbHNlXG5cdCAgICB9O1xuXHQgIH0sXG5cdFxuXHQgIHdhdGNoOiB7XG5cdCAgICBjdXJyRGF0ZTogZnVuY3Rpb24gY3VyckRhdGUoKSB7XG5cdCAgICAgIHRoaXMuZ2V0RGF0ZVJhbmdlKCk7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBjb21wdXRlZDoge1xuXHQgICAgdGV4dDogZnVuY3Rpb24gdGV4dCgpIHtcblx0ICAgICAgcmV0dXJuICgwLCBfdXRpbHMudHJhbnNsYXRpb25zKSh0aGlzLmxhbmcpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCkge1xuXHQgICAgICB0aGlzLmRpc3BsYXlEYXlWaWV3ID0gdGhpcy5kaXNwbGF5TW9udGhWaWV3ID0gdGhpcy5kaXNwbGF5WWVhclZpZXcgPSBmYWxzZTtcblx0ICAgIH0sXG5cdCAgICBpbnB1dENsaWNrOiBmdW5jdGlvbiBpbnB1dENsaWNrKCkge1xuXHQgICAgICB0aGlzLmN1cnJEYXRlID0gdGhpcy5wYXJzZSh0aGlzLnZhbHVlKSB8fCB0aGlzLnBhcnNlKG5ldyBEYXRlKCkpO1xuXHQgICAgICBpZiAodGhpcy5kaXNwbGF5TW9udGhWaWV3IHx8IHRoaXMuZGlzcGxheVllYXJWaWV3KSB7XG5cdCAgICAgICAgdGhpcy5kaXNwbGF5RGF5VmlldyA9IGZhbHNlO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuZGlzcGxheURheVZpZXcgPSAhdGhpcy5kaXNwbGF5RGF5Vmlldztcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHByZU5leHREZWNhZGVDbGljazogZnVuY3Rpb24gcHJlTmV4dERlY2FkZUNsaWNrKGZsYWcpIHtcblx0ICAgICAgdmFyIHllYXIgPSB0aGlzLmN1cnJEYXRlLmdldEZ1bGxZZWFyKCk7XG5cdCAgICAgIHZhciBtb250aHMgPSB0aGlzLmN1cnJEYXRlLmdldE1vbnRoKCk7XG5cdCAgICAgIHZhciBkYXRlID0gdGhpcy5jdXJyRGF0ZS5nZXREYXRlKCk7XG5cdFxuXHQgICAgICBpZiAoZmxhZyA9PT0gMCkge1xuXHQgICAgICAgIHRoaXMuY3VyckRhdGUgPSBuZXcgRGF0ZSh5ZWFyIC0gMTAsIG1vbnRocywgZGF0ZSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy5jdXJyRGF0ZSA9IG5ldyBEYXRlKHllYXIgKyAxMCwgbW9udGhzLCBkYXRlKTtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHByZU5leHRNb250aENsaWNrOiBmdW5jdGlvbiBwcmVOZXh0TW9udGhDbGljayhmbGFnKSB7XG5cdCAgICAgIHZhciB5ZWFyID0gdGhpcy5jdXJyRGF0ZS5nZXRGdWxsWWVhcigpO1xuXHQgICAgICB2YXIgbW9udGggPSB0aGlzLmN1cnJEYXRlLmdldE1vbnRoKCk7XG5cdCAgICAgIHZhciBkYXRlID0gdGhpcy5jdXJyRGF0ZS5nZXREYXRlKCk7XG5cdFxuXHQgICAgICBpZiAoZmxhZyA9PT0gMCkge1xuXHQgICAgICAgIHZhciBwcmVNb250aCA9IHRoaXMuZ2V0WWVhck1vbnRoKHllYXIsIG1vbnRoIC0gMSk7XG5cdCAgICAgICAgdGhpcy5jdXJyRGF0ZSA9IG5ldyBEYXRlKHByZU1vbnRoLnllYXIsIHByZU1vbnRoLm1vbnRoLCBkYXRlKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgbmV4dE1vbnRoID0gdGhpcy5nZXRZZWFyTW9udGgoeWVhciwgbW9udGggKyAxKTtcblx0ICAgICAgICB0aGlzLmN1cnJEYXRlID0gbmV3IERhdGUobmV4dE1vbnRoLnllYXIsIG5leHRNb250aC5tb250aCwgZGF0ZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBwcmVOZXh0WWVhckNsaWNrOiBmdW5jdGlvbiBwcmVOZXh0WWVhckNsaWNrKGZsYWcpIHtcblx0ICAgICAgdmFyIHllYXIgPSB0aGlzLmN1cnJEYXRlLmdldEZ1bGxZZWFyKCk7XG5cdCAgICAgIHZhciBtb250aHMgPSB0aGlzLmN1cnJEYXRlLmdldE1vbnRoKCk7XG5cdCAgICAgIHZhciBkYXRlID0gdGhpcy5jdXJyRGF0ZS5nZXREYXRlKCk7XG5cdFxuXHQgICAgICBpZiAoZmxhZyA9PT0gMCkge1xuXHQgICAgICAgIHRoaXMuY3VyckRhdGUgPSBuZXcgRGF0ZSh5ZWFyIC0gMSwgbW9udGhzLCBkYXRlKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzLmN1cnJEYXRlID0gbmV3IERhdGUoeWVhciArIDEsIG1vbnRocywgZGF0ZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICB5ZWFyU2VsZWN0OiBmdW5jdGlvbiB5ZWFyU2VsZWN0KHllYXIpIHtcblx0ICAgICAgdGhpcy5kaXNwbGF5WWVhclZpZXcgPSBmYWxzZTtcblx0ICAgICAgdGhpcy5kaXNwbGF5TW9udGhWaWV3ID0gdHJ1ZTtcblx0ICAgICAgdGhpcy5jdXJyRGF0ZSA9IG5ldyBEYXRlKHllYXIsIHRoaXMuY3VyckRhdGUuZ2V0TW9udGgoKSwgdGhpcy5jdXJyRGF0ZS5nZXREYXRlKCkpO1xuXHQgICAgfSxcblx0ICAgIGRheVNlbGVjdDogZnVuY3Rpb24gZGF5U2VsZWN0KGRhdGUsIGVsKSB7XG5cdCAgICAgIGlmIChlbC4kZWwuY2xhc3NMaXN0WzBdID09PSAnZGF0ZXBpY2tlci1pdGVtLWRpc2FibGUnKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuY3VyckRhdGUgPSBkYXRlO1xuXHQgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnN0cmluZ2lmeSh0aGlzLmN1cnJEYXRlKTtcblx0ICAgICAgICB0aGlzLmRpc3BsYXlEYXlWaWV3ID0gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBzd2l0Y2hNb250aFZpZXc6IGZ1bmN0aW9uIHN3aXRjaE1vbnRoVmlldygpIHtcblx0ICAgICAgdGhpcy5kaXNwbGF5RGF5VmlldyA9IGZhbHNlO1xuXHQgICAgICB0aGlzLmRpc3BsYXlNb250aFZpZXcgPSB0cnVlO1xuXHQgICAgfSxcblx0ICAgIHN3aXRjaERlY2FkZVZpZXc6IGZ1bmN0aW9uIHN3aXRjaERlY2FkZVZpZXcoKSB7XG5cdCAgICAgIHRoaXMuZGlzcGxheU1vbnRoVmlldyA9IGZhbHNlO1xuXHQgICAgICB0aGlzLmRpc3BsYXlZZWFyVmlldyA9IHRydWU7XG5cdCAgICB9LFxuXHQgICAgbW9udGhTZWxlY3Q6IGZ1bmN0aW9uIG1vbnRoU2VsZWN0KGluZGV4KSB7XG5cdCAgICAgIHRoaXMuZGlzcGxheU1vbnRoVmlldyA9IGZhbHNlO1xuXHQgICAgICB0aGlzLmRpc3BsYXlEYXlWaWV3ID0gdHJ1ZTtcblx0ICAgICAgdGhpcy5jdXJyRGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VyckRhdGUuZ2V0RnVsbFllYXIoKSwgaW5kZXgsIHRoaXMuY3VyckRhdGUuZ2V0RGF0ZSgpKTtcblx0ICAgIH0sXG5cdCAgICBnZXRZZWFyTW9udGg6IGZ1bmN0aW9uIGdldFllYXJNb250aCh5ZWFyLCBtb250aCkge1xuXHQgICAgICBpZiAobW9udGggPiAxMSkge1xuXHQgICAgICAgIHllYXIrKztcblx0ICAgICAgICBtb250aCA9IDA7XG5cdCAgICAgIH0gZWxzZSBpZiAobW9udGggPCAwKSB7XG5cdCAgICAgICAgeWVhci0tO1xuXHQgICAgICAgIG1vbnRoID0gMTE7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHsgeWVhcjogeWVhciwgbW9udGg6IG1vbnRoIH07XG5cdCAgICB9LFxuXHQgICAgc3RyaW5naWZ5RGVjYWRlSGVhZGVyOiBmdW5jdGlvbiBzdHJpbmdpZnlEZWNhZGVIZWFkZXIoZGF0ZSkge1xuXHQgICAgICB2YXIgeWVhclN0ciA9IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuXHQgICAgICB2YXIgZmlyc3RZZWFyT2ZEZWNhZGUgPSB5ZWFyU3RyLnN1YnN0cmluZygwLCB5ZWFyU3RyLmxlbmd0aCAtIDEpICsgMDtcblx0ICAgICAgdmFyIGxhc3RZZWFyT2ZEZWNhZGUgPSBwYXJzZUludChmaXJzdFllYXJPZkRlY2FkZSwgMTApICsgMTA7XG5cdCAgICAgIHJldHVybiBmaXJzdFllYXJPZkRlY2FkZSArICctJyArIGxhc3RZZWFyT2ZEZWNhZGU7XG5cdCAgICB9LFxuXHQgICAgc3RyaW5naWZ5RGF5SGVhZGVyOiBmdW5jdGlvbiBzdHJpbmdpZnlEYXlIZWFkZXIoZGF0ZSkge1xuXHQgICAgICByZXR1cm4gdGhpcy50ZXh0Lm1vbnRoc1tkYXRlLmdldE1vbnRoKCldICsgJyAnICsgZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHQgICAgfSxcblx0ICAgIHBhcnNlTW9udGg6IGZ1bmN0aW9uIHBhcnNlTW9udGgoZGF0ZSkge1xuXHQgICAgICByZXR1cm4gdGhpcy50ZXh0Lm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuXHQgICAgfSxcblx0ICAgIHN0cmluZ2lmeVllYXJIZWFkZXI6IGZ1bmN0aW9uIHN0cmluZ2lmeVllYXJIZWFkZXIoZGF0ZSkge1xuXHQgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHQgICAgfSxcblx0ICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGRhdGUpIHtcblx0ICAgICAgdmFyIGZvcm1hdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdGhpcy5mb3JtYXQ7XG5cdFxuXHQgICAgICBpZiAoIWRhdGUpIGRhdGUgPSB0aGlzLnBhcnNlKCk7XG5cdCAgICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xuXHQgICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0ICAgICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcblx0ICAgICAgdmFyIGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuXHQgICAgICB2YXIgbW9udGhOYW1lID0gdGhpcy5wYXJzZU1vbnRoKGRhdGUpO1xuXHRcblx0ICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC95eXl5L2csIHllYXIpLnJlcGxhY2UoL01NTU0vZywgbW9udGhOYW1lKS5yZXBsYWNlKC9NTU0vZywgbW9udGhOYW1lLnN1YnN0cmluZygwLCAzKSkucmVwbGFjZSgvTU0vZywgKCcwJyArIG1vbnRoKS5zbGljZSgtMikpLnJlcGxhY2UoL2RkL2csICgnMCcgKyBkYXkpLnNsaWNlKC0yKSkucmVwbGFjZSgveXkvZywgeWVhcikucmVwbGFjZSgvTSg/IWEpL2csIG1vbnRoKS5yZXBsYWNlKC9kL2csIGRheSk7XG5cdCAgICB9LFxuXHQgICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKCkge1xuXHQgICAgICB2YXIgc3RyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0aGlzLnZhbHVlO1xuXHRcblx0ICAgICAgdmFyIGRhdGUgPSB2b2lkIDA7XG5cdCAgICAgIGlmIChzdHIubGVuZ3RoID09PSAxMCAmJiAodGhpcy5mb3JtYXQgPT09ICdkZC1NTS15eXl5JyB8fCB0aGlzLmZvcm1hdCA9PT0gJ2RkL01NL3l5eXknKSkge1xuXHQgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShzdHIuc3Vic3RyaW5nKDYsIDEwKSwgc3RyLnN1YnN0cmluZygzLCA1KSAtIDEsIHN0ci5zdWJzdHJpbmcoMCwgMikpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShzdHIpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBpc05hTihkYXRlLmdldEZ1bGxZZWFyKCkpID8gbmV3IERhdGUoKSA6IGRhdGU7XG5cdCAgICB9LFxuXHQgICAgZ2V0RGF5Q291bnQ6IGZ1bmN0aW9uIGdldERheUNvdW50KHllYXIsIG1vbnRoKSB7XG5cdCAgICAgIHZhciBkaWN0ID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXHQgICAgICBpZiAobW9udGggPT09IDEpIHtcblx0ICAgICAgICBpZiAoeWVhciAlIDQwMCA9PT0gMCB8fCB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB7XG5cdCAgICAgICAgICByZXR1cm4gMjk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBkaWN0W21vbnRoXTtcblx0ICAgIH0sXG5cdCAgICBnZXREYXRlUmFuZ2U6IGZ1bmN0aW9uIGdldERhdGVSYW5nZSgpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICB0aGlzLmRhdGVSYW5nZSA9IFtdO1xuXHQgICAgICB0aGlzLmRlY2FkZVJhbmdlID0gW107XG5cdCAgICAgIHZhciB0aW1lID0ge1xuXHQgICAgICAgIHllYXI6IHRoaXMuY3VyckRhdGUuZ2V0RnVsbFllYXIoKSxcblx0ICAgICAgICBtb250aDogdGhpcy5jdXJyRGF0ZS5nZXRNb250aCgpLFxuXHQgICAgICAgIGRheTogdGhpcy5jdXJyRGF0ZS5nZXREYXRlKClcblx0ICAgICAgfTtcblx0ICAgICAgdmFyIHllYXJTdHIgPSB0aW1lLnllYXIudG9TdHJpbmcoKTtcblx0ICAgICAgdmFyIGZpcnN0WWVhck9mRGVjYWRlID0geWVhclN0ci5zdWJzdHJpbmcoMCwgeWVhclN0ci5sZW5ndGggLSAxKSArIDAgLSAxO1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcblx0ICAgICAgICB0aGlzLmRlY2FkZVJhbmdlLnB1c2goe1xuXHQgICAgICAgICAgdGV4dDogZmlyc3RZZWFyT2ZEZWNhZGUgKyBpXG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBjdXJyTW9udGhGaXJzdERheSA9IG5ldyBEYXRlKHRpbWUueWVhciwgdGltZS5tb250aCwgMSk7XG5cdCAgICAgIHZhciBmaXJzdERheVdlZWsgPSBjdXJyTW9udGhGaXJzdERheS5nZXREYXkoKSArIDE7XG5cdCAgICAgIGlmIChmaXJzdERheVdlZWsgPT09IDApIHtcblx0ICAgICAgICBmaXJzdERheVdlZWsgPSA3O1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBkYXlDb3VudCA9IHRoaXMuZ2V0RGF5Q291bnQodGltZS55ZWFyLCB0aW1lLm1vbnRoKTtcblx0ICAgICAgaWYgKGZpcnN0RGF5V2VlayA+IDEpIHtcblx0ICAgICAgICB2YXIgcHJlTW9udGggPSB0aGlzLmdldFllYXJNb250aCh0aW1lLnllYXIsIHRpbWUubW9udGggLSAxKTtcblx0ICAgICAgICB2YXIgcHJldk1vbnRoRGF5Q291bnQgPSB0aGlzLmdldERheUNvdW50KHByZU1vbnRoLnllYXIsIHByZU1vbnRoLm1vbnRoKTtcblx0ICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgZmlyc3REYXlXZWVrOyBfaSsrKSB7XG5cdCAgICAgICAgICB2YXIgZGF5VGV4dCA9IHByZXZNb250aERheUNvdW50IC0gZmlyc3REYXlXZWVrICsgX2kgKyAxO1xuXHQgICAgICAgICAgdGhpcy5kYXRlUmFuZ2UucHVzaCh7XG5cdCAgICAgICAgICAgIHRleHQ6IGRheVRleHQsXG5cdCAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKHByZU1vbnRoLnllYXIsIHByZU1vbnRoLm1vbnRoLCBkYXlUZXh0KSxcblx0ICAgICAgICAgICAgc2NsYXNzOiAnZGF0ZXBpY2tlci1pdGVtLWdyYXknXG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pMikge1xuXHQgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUodGltZS55ZWFyLCB0aW1lLm1vbnRoLCBfaTIpO1xuXHQgICAgICAgIHZhciB3ZWVrID0gZGF0ZS5nZXREYXkoKTtcblx0ICAgICAgICB2YXIgc2NsYXNzID0gJyc7XG5cdCAgICAgICAgX3RoaXMyLmRpc2FibGVkRGF5c09mV2Vlay5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgICAgaWYgKHdlZWsgPT09IHBhcnNlSW50KGVsLCAxMCkpIHNjbGFzcyA9ICdkYXRlcGlja2VyLWl0ZW0tZGlzYWJsZSc7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKF9pMiA9PT0gdGltZS5kYXkpIHtcblx0ICAgICAgICAgIGlmIChfdGhpczIudmFsdWUpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlRGF0ZSA9IF90aGlzMi5wYXJzZShfdGhpczIudmFsdWUpO1xuXHQgICAgICAgICAgICBpZiAodmFsdWVEYXRlKSB7XG5cdCAgICAgICAgICAgICAgaWYgKHZhbHVlRGF0ZS5nZXRGdWxsWWVhcigpID09PSB0aW1lLnllYXIgJiYgdmFsdWVEYXRlLmdldE1vbnRoKCkgPT09IHRpbWUubW9udGgpIHtcblx0ICAgICAgICAgICAgICAgIHNjbGFzcyA9ICdkYXRlcGlja2VyLWRhdGVSYW5nZS1pdGVtLWFjdGl2ZSc7XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIF90aGlzMi5kYXRlUmFuZ2UucHVzaCh7XG5cdCAgICAgICAgICB0ZXh0OiBfaTIsXG5cdCAgICAgICAgICBkYXRlOiBkYXRlLFxuXHQgICAgICAgICAgc2NsYXNzOiBzY2xhc3Ncblx0ICAgICAgICB9KTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIGZvciAodmFyIF9pMiA9IDE7IF9pMiA8PSBkYXlDb3VudDsgX2kyKyspIHtcblx0ICAgICAgICBfbG9vcChfaTIpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAodGhpcy5kYXRlUmFuZ2UubGVuZ3RoIDwgNDIpIHtcblx0ICAgICAgICB2YXIgbmV4dE1vbnRoTmVlZCA9IDQyIC0gdGhpcy5kYXRlUmFuZ2UubGVuZ3RoO1xuXHQgICAgICAgIHZhciBuZXh0TW9udGggPSB0aGlzLmdldFllYXJNb250aCh0aW1lLnllYXIsIHRpbWUubW9udGggKyAxKTtcblx0XG5cdCAgICAgICAgZm9yICh2YXIgX2kzID0gMTsgX2kzIDw9IG5leHRNb250aE5lZWQ7IF9pMysrKSB7XG5cdCAgICAgICAgICB0aGlzLmRhdGVSYW5nZS5wdXNoKHtcblx0ICAgICAgICAgICAgdGV4dDogX2kzLFxuXHQgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShuZXh0TW9udGgueWVhciwgbmV4dE1vbnRoLm1vbnRoLCBfaTMpLFxuXHQgICAgICAgICAgICBzY2xhc3M6ICdkYXRlcGlja2VyLWl0ZW0tZ3JheSdcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdFxuXHRcblx0Ly8gPHN0eWxlPlxuXHRcblx0Ly8gLmRhdGVwaWNrZXJ7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XG5cdC8vICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gaW5wdXQuZGF0ZXBpY2tlci1pbnB1dC53aXRoLXJlc2V0LWJ1dHRvbiB7XG5cdFxuXHQvLyAgIHBhZGRpbmctcmlnaHQ6IDI1cHg7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGF0ZXBpY2tlciA+IGJ1dHRvbi5jbG9zZSB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgdG9wOiAwO1xuXHRcblx0Ly8gICByaWdodDogMDtcblx0XG5cdC8vICAgb3V0bGluZTogbm9uZTtcblx0XG5cdC8vICAgei1pbmRleDogMjtcblx0XG5cdC8vICAgZGlzcGxheTogYmxvY2s7XG5cdFxuXHQvLyAgIHdpZHRoOiAzNHB4O1xuXHRcblx0Ly8gICBoZWlnaHQ6IDM0cHg7XG5cdFxuXHQvLyAgIGxpbmUtaGVpZ2h0OiAzNHB4O1xuXHRcblx0Ly8gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGF0ZXBpY2tlciA+IGJ1dHRvbi5jbG9zZTpmb2N1cyB7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IC4yO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItcG9wdXB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcblx0XG5cdC8vICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcblx0Ly8gICBtYXJnaW4tdG9wOiAycHg7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDEwMDA7XG5cdFxuXHQvLyAgIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLDAsMCwwLjE3NSk7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1pbm5lcntcblx0XG5cdC8vICAgd2lkdGg6IDIxOHB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItYm9keXtcblx0XG5cdC8vICAgcGFkZGluZzogMTBweCAxMHB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItY3RybCBwLFxuXHRcblx0Ly8gLmRhdGVwaWNrZXItY3RybCBzcGFuLFxuXHRcblx0Ly8gLmRhdGVwaWNrZXItYm9keSBzcGFue1xuXHRcblx0Ly8gICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFxuXHQvLyAgIHdpZHRoOiAyOHB4O1xuXHRcblx0Ly8gICBsaW5lLWhlaWdodDogMjhweDtcblx0XG5cdC8vICAgaGVpZ2h0OiAyOHB4O1xuXHRcblx0Ly8gICBib3JkZXItcmFkaXVzOiA0cHg7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1jdHJsIHAge1xuXHRcblx0Ly8gICB3aWR0aDogNjUlO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItY3RybCBzcGFuIHtcblx0XG5cdC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItYm9keSBzcGFuIHtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItbW9udGhSYW5nZSBzcGFue1xuXHRcblx0Ly8gICB3aWR0aDogNDhweDtcblx0XG5cdC8vICAgaGVpZ2h0OiA1MHB4O1xuXHRcblx0Ly8gICBsaW5lLWhlaWdodDogNDVweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLWl0ZW0tZGlzYWJsZSB7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlIWltcG9ydGFudDtcblx0XG5cdC8vICAgY3Vyc29yOiBub3QtYWxsb3dlZCFpbXBvcnRhbnQ7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGVjYWRlUmFuZ2Ugc3BhbjpmaXJzdC1jaGlsZCxcblx0XG5cdC8vIC5kZWNhZGVSYW5nZSBzcGFuOmxhc3QtY2hpbGQsXG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1pdGVtLWRpc2FibGUsXG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1pdGVtLWdyYXl7XG5cdFxuXHQvLyAgIGNvbG9yOiAjOTk5O1xuXHRcblx0Ly8gfVxuXHRcblx0XG5cdC8vIC5kYXRlcGlja2VyLWRhdGVSYW5nZS1pdGVtLWFjdGl2ZTpob3Zlcixcblx0XG5cdC8vIC5kYXRlcGlja2VyLWRhdGVSYW5nZS1pdGVtLWFjdGl2ZSB7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQ6IHJnYig1MCwgMTE4LCAxNzcpIWltcG9ydGFudDtcblx0XG5cdC8vICAgY29sb3I6IHdoaXRlIWltcG9ydGFudDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLW1vbnRoUmFuZ2Uge1xuXHRcblx0Ly8gICBtYXJnaW4tdG9wOiAxMHB4XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1tb250aFJhbmdlIHNwYW4sXG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1jdHJsIHNwYW4sXG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1jdHJsIHAsXG5cdFxuXHQvLyAuZGF0ZXBpY2tlci1kYXRlUmFuZ2Ugc3BhbiB7XG5cdFxuXHQvLyAgIGN1cnNvcjogcG9pbnRlcjtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLW1vbnRoUmFuZ2Ugc3Bhbjpob3Zlcixcblx0XG5cdC8vIC5kYXRlcGlja2VyLWN0cmwgcDpob3Zlcixcblx0XG5cdC8vIC5kYXRlcGlja2VyLWN0cmwgaTpob3Zlcixcblx0XG5cdC8vIC5kYXRlcGlja2VyLWRhdGVSYW5nZSBzcGFuOmhvdmVyLFxuXHRcblx0Ly8gLmRhdGVwaWNrZXItZGF0ZVJhbmdlLWl0ZW0taG92ZXIge1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLWNvbG9yIDogI2VlZWVlZTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLXdlZWtSYW5nZSBzcGFue1xuXHRcblx0Ly8gICBmb250LXdlaWdodDogYm9sZDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLWxhYmVse1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xuXHRcblx0Ly8gICBmb250LXdlaWdodDogNzAwO1xuXHRcblx0Ly8gICBwYWRkaW5nOiA3cHggMDtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItY3RybHtcblx0XG5cdC8vICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcblx0Ly8gICBoZWlnaHQ6IDMwcHg7XG5cdFxuXHQvLyAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuXHRcblx0Ly8gICBmb250LXdlaWdodDogYm9sZDtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLm1vbnRoLWJ0bntcblx0XG5cdC8vICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFxuXHQvLyAgIC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtcblx0XG5cdC8vICAgLW1vei11c2VyLXNlbGVjdDpub25lO1xuXHRcblx0Ly8gICAtbXMtdXNlci1zZWxlY3Q6bm9uZTtcblx0XG5cdC8vICAgdXNlci1zZWxlY3Q6bm9uZTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5kYXRlcGlja2VyLXByZUJ0bntcblx0XG5cdC8vICAgbGVmdDogMnB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmRhdGVwaWNrZXItbmV4dEJ0bntcblx0XG5cdC8vICAgcmlnaHQ6IDJweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cbi8qKiovIH0sXG4vKiAxMjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJkYXRlcGlja2VyXFxcIj5cXHJcXG4gICAgPGlucHV0IGNsYXNzPVxcXCJmb3JtLWNvbnRyb2wgZGF0ZXBpY2tlci1pbnB1dFxcXCIgOmNsYXNzPVxcXCJ7J3dpdGgtcmVzZXQtYnV0dG9uJzogY2xlYXJCdXR0b259XFxcIiB0eXBlPVxcXCJ0ZXh0XFxcIiA6cGxhY2Vob2xkZXI9XFxcInBsYWNlaG9sZGVyXFxcIlxcclxcbiAgICAgICAgOnN0eWxlPVxcXCJ7d2lkdGg6d2lkdGh9XFxcIlxcclxcbiAgICAgICAgQGNsaWNrPVxcXCJpbnB1dENsaWNrXFxcIlxcclxcbiAgICAgICAgdi1tb2RlbD1cXFwidmFsdWVcXFwiLz5cXHJcXG4gICAgPGJ1dHRvbiB2LWlmPVxcXCJjbGVhckJ1dHRvbiAmJiB2YWx1ZVxcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiY2xvc2VcXFwiIEBjbGljaz1cXFwidmFsdWUgPSAnJ1xcXCI+XFxyXFxuICAgICAgPHNwYW4+JnRpbWVzOzwvc3Bhbj5cXHJcXG4gICAgPC9idXR0b24+XFxyXFxuICAgIDxkaXYgY2xhc3M9XFxcImRhdGVwaWNrZXItcG9wdXBcXFwiIHYtc2hvdz1cXFwiZGlzcGxheURheVZpZXdcXFwiPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImRhdGVwaWNrZXItaW5uZXJcXFwiPlxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1ib2R5XFxcIj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1jdHJsXFxcIj5cXHJcXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1wcmVCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIiBAY2xpY2s9XFxcInByZU5leHRNb250aENsaWNrKDApXFxcIj48L3NwYW4+XFxyXFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImRhdGVwaWNrZXItbmV4dEJ0biBnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tcmlnaHRcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIiBAY2xpY2s9XFxcInByZU5leHRNb250aENsaWNrKDEpXFxcIj48L3NwYW4+XFxyXFxuICAgICAgICAgICAgPHAgQGNsaWNrPVxcXCJzd2l0Y2hNb250aFZpZXdcXFwiPnt7c3RyaW5naWZ5RGF5SGVhZGVyKGN1cnJEYXRlKX19PC9wPlxcclxcbiAgICAgICAgICA8L2Rpdj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci13ZWVrUmFuZ2VcXFwiPlxcclxcbiAgICAgICAgICAgIDxzcGFuIHYtZm9yPVxcXCJ3IGluIHRleHQuZGF5c09mV2Vla1xcXCI+e3t3fX08L3NwYW4+XFxyXFxuICAgICAgICAgIDwvZGl2PlxcclxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJkYXRlcGlja2VyLWRhdGVSYW5nZVxcXCI+XFxyXFxuICAgICAgICAgICAgPHNwYW4gdi1mb3I9XFxcImQgaW4gZGF0ZVJhbmdlXFxcIiA6Y2xhc3M9XFxcImQuc2NsYXNzXFxcIiBAY2xpY2s9XFxcImRheVNlbGVjdChkLmRhdGUsdGhpcylcXFwiPnt7ZC50ZXh0fX08L3NwYW4+XFxyXFxuICAgICAgICAgIDwvZGl2PlxcclxcbiAgICAgICAgPC9kaXY+XFxyXFxuICAgICAgPC9kaXY+XFxyXFxuICAgIDwvZGl2PlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJkYXRlcGlja2VyLXBvcHVwXFxcIiB2LXNob3c9XFxcImRpc3BsYXlNb250aFZpZXdcXFwiPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImRhdGVwaWNrZXItaW5uZXJcXFwiPlxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1ib2R5XFxcIj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1jdHJsXFxcIj5cXHJcXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1wcmVCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIiBAY2xpY2s9XFxcInByZU5leHRZZWFyQ2xpY2soMClcXFwiPjwvc3Bhbj5cXHJcXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1uZXh0QnRuIGdseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi1yaWdodFxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiIEBjbGljaz1cXFwicHJlTmV4dFllYXJDbGljaygxKVxcXCI+PC9zcGFuPlxcclxcbiAgICAgICAgICAgIDxwIEBjbGljaz1cXFwic3dpdGNoRGVjYWRlVmlld1xcXCI+e3tzdHJpbmdpZnlZZWFySGVhZGVyKGN1cnJEYXRlKX19PC9wPlxcclxcbiAgICAgICAgICA8L2Rpdj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1tb250aFJhbmdlXFxcIj5cXHJcXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XFxcIm0gaW4gdGV4dC5tb250aHNcXFwiPlxcclxcbiAgICAgICAgICAgICAgPHNwYW4gICA6Y2xhc3M9XFxcInsnZGF0ZXBpY2tlci1kYXRlUmFuZ2UtaXRlbS1hY3RpdmUnOlxcclxcbiAgICAgICAgICAgICAgICAgICh0ZXh0Lm1vbnRoc1twYXJzZSh2YWx1ZSkuZ2V0TW9udGgoKV0gID09PSBtKSAmJlxcclxcbiAgICAgICAgICAgICAgICAgIGN1cnJEYXRlLmdldEZ1bGxZZWFyKCkgPT09IHBhcnNlKHZhbHVlKS5nZXRGdWxsWWVhcigpfVxcXCJcXHJcXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcIm1vbnRoU2VsZWN0KCRpbmRleClcXFwiXFxyXFxuICAgICAgICAgICAgICAgID57e20uc3Vic3RyKDAsMyl9fTwvc3Bhbj5cXHJcXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxcclxcbiAgICAgICAgICA8L2Rpdj5cXHJcXG4gICAgICAgIDwvZGl2PlxcclxcbiAgICAgIDwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG4gICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1wb3B1cFxcXCIgdi1zaG93PVxcXCJkaXNwbGF5WWVhclZpZXdcXFwiPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImRhdGVwaWNrZXItaW5uZXJcXFwiPlxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1ib2R5XFxcIj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1jdHJsXFxcIj5cXHJcXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZGF0ZXBpY2tlci1wcmVCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIiBAY2xpY2s9XFxcInByZU5leHREZWNhZGVDbGljaygwKVxcXCI+PC9zcGFuPlxcclxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJkYXRlcGlja2VyLW5leHRCdG4gZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XFxcIiBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCIgQGNsaWNrPVxcXCJwcmVOZXh0RGVjYWRlQ2xpY2soMSlcXFwiPjwvc3Bhbj5cXHJcXG4gICAgICAgICAgICA8cD57e3N0cmluZ2lmeURlY2FkZUhlYWRlcihjdXJyRGF0ZSl9fTwvcD5cXHJcXG4gICAgICAgICAgPC9kaXY+XFxyXFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImRhdGVwaWNrZXItbW9udGhSYW5nZSBkZWNhZGVSYW5nZVxcXCI+XFxyXFxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVxcXCJkZWNhZGUgaW4gZGVjYWRlUmFuZ2VcXFwiPlxcclxcbiAgICAgICAgICAgICAgPHNwYW4gOmNsYXNzPVxcXCJ7J2RhdGVwaWNrZXItZGF0ZVJhbmdlLWl0ZW0tYWN0aXZlJzpcXHJcXG4gICAgICAgICAgICAgICAgICBwYXJzZSh0aGlzLnZhbHVlKS5nZXRGdWxsWWVhcigpID09PSBkZWNhZGUudGV4dH1cXFwiXFxyXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrLnN0b3A9XFxcInllYXJTZWxlY3QoZGVjYWRlLnRleHQpXFxcIlxcclxcbiAgICAgICAgICAgICAgICA+e3tkZWNhZGUudGV4dH19PC9zcGFuPlxcclxcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XFxyXFxuICAgICAgICAgIDwvZGl2PlxcclxcbiAgICAgICAgPC9kaXY+XFxyXFxuICAgICAgPC9kaXY+XFxyXFxuICAgIDwvZGl2PlxcclxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAxMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTI4KVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMwKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTMxKVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vRHJvcGRvd24udnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0Ryb3Bkb3duLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtcmV3cml0ZXIuanM/aWQ9X3YtNjI4ZWEyZGMmZmlsZT1Ecm9wZG93bi52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vRHJvcGRvd24udnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0Ryb3Bkb3duLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLXJld3JpdGVyLmpzP2lkPV92LTYyOGVhMmRjJmZpbGU9RHJvcGRvd24udnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0Ryb3Bkb3duLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxMjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOSk7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi02MjhlYTJkYyZmaWxlPURyb3Bkb3duLnZ1ZSZzY29wZWQ9dHJ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9Ecm9wZG93bi52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi02MjhlYTJkYyZmaWxlPURyb3Bkb3duLnZ1ZSZzY29wZWQ9dHJ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9Ecm9wZG93bi52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5zZWNyZXRbX3YtNjI4ZWEyZGNdIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgbWFyZ2luOiAtMXB4O1xcclxcbiAgaGVpZ2h0OiAxcHg7XFxyXFxuICB3aWR0aDogMXB4O1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG4gIGJvcmRlcjogMDtcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMTMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBfTm9kZUxpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBfTm9kZUxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTm9kZUxpc3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGxpIHYtaWY9XCJpc0xpXCIgdi1lbDpkcm9wZG93biA6Y2xhc3M9XCJjbGFzc2VzXCI+XG5cdFxuXHQvLyAgICAgPHNsb3QgbmFtZT1cImJ1dHRvblwiPlxuXHRcblx0Ly8gICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIiByb2xlPVwiYnV0dG9uXCIgOmNsYXNzPVwie2Rpc2FibGVkOiBkaXNhYmxlZH1cIiBAa2V5dXAuZXNjPVwic2hvdyA9IGZhbHNlXCI+XG5cdFxuXHQvLyAgICAgICAgIHt7IHRleHQgfX1cblx0XG5cdC8vICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldFwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgIDwvYT5cblx0XG5cdC8vICAgICA8L3Nsb3Q+XG5cdFxuXHQvLyAgICAgPHNsb3QgbmFtZT1cImRyb3Bkb3duLW1lbnVcIj5cblx0XG5cdC8vICAgICAgIDx1bCB2LWVsc2UgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICAgIDwvdWw+XG5cdFxuXHQvLyAgICAgPC9zbG90PlxuXHRcblx0Ly8gICA8L2xpPlxuXHRcblx0Ly8gICA8ZGl2IHYtZWxzZSB2LWVsOmRyb3Bkb3duIDpjbGFzcz1cImNsYXNzZXNcIj5cblx0XG5cdC8vICAgICA8c2xvdCBuYW1lPVwiYmVmb3JlXCI+PC9zbG90PlxuXHRcblx0Ly8gICAgIDxzbG90IG5hbWU9XCJidXR0b25cIj5cblx0XG5cdC8vICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi17e3R5cGV9fSBkcm9wZG93bi10b2dnbGVcIiBAa2V5dXAuZXNjPVwic2hvdyA9IGZhbHNlXCIgOmRpc2FibGVkPVwiZGlzYWJsZWRcIj5cblx0XG5cdC8vICAgICAgICAge3sgdGV4dCB9fVxuXHRcblx0Ly8gICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgPC9idXR0b24+XG5cdFxuXHQvLyAgICAgPC9zbG90PlxuXHRcblx0Ly8gICAgIDxzbG90IG5hbWU9XCJkcm9wZG93bi1tZW51XCI+XG5cdFxuXHQvLyAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICAgIDwvdWw+XG5cdFxuXHQvLyAgICAgPC9zbG90PlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHNob3c6IHtcblx0ICAgICAgdHdvV2F5OiB0cnVlLFxuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICAnY2xhc3MnOiBudWxsLFxuXHQgICAgZGlzYWJsZWQ6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgdGV4dDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0eXBlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG5cdCAgICB9XG5cdCAgfSxcblx0ICBjb21wdXRlZDoge1xuXHQgICAgY2xhc3NlczogZnVuY3Rpb24gY2xhc3NlcygpIHtcblx0ICAgICAgcmV0dXJuIFt7IG9wZW46IHRoaXMuc2hvdywgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgdGhpcy5jbGFzcywgdGhpcy5pc0xpID8gJ2Ryb3Bkb3duJyA6IHRoaXMuaW5JbnB1dCA/ICdpbnB1dC1ncm91cC1idG4nIDogJ2J0bi1ncm91cCddO1xuXHQgICAgfSxcblx0ICAgIGluSW5wdXQ6IGZ1bmN0aW9uIGluSW5wdXQoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuX2lucHV0O1xuXHQgICAgfSxcblx0ICAgIGlzTGk6IGZ1bmN0aW9uIGlzTGkoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuX25hdmJhciB8fCB0aGlzLiRwYXJlbnQubWVudSB8fCB0aGlzLiRwYXJlbnQuX3RhYnNldDtcblx0ICAgIH0sXG5cdCAgICBtZW51OiBmdW5jdGlvbiBtZW51KCkge1xuXHQgICAgICByZXR1cm4gIXRoaXMuJHBhcmVudCB8fCB0aGlzLiRwYXJlbnQubmF2YmFyO1xuXHQgICAgfSxcblx0ICAgIHN1Ym1lbnU6IGZ1bmN0aW9uIHN1Ym1lbnUoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQgJiYgKHRoaXMuJHBhcmVudC5tZW51IHx8IHRoaXMuJHBhcmVudC5zdWJtZW51KTtcblx0ICAgIH0sXG5cdCAgICBzbG90czogZnVuY3Rpb24gc2xvdHMoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLl9zbG90Q29udGVudHM7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBtZXRob2RzOiB7XG5cdCAgICBibHVyOiBmdW5jdGlvbiBibHVyKCkge1xuXHQgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgICAgdGhpcy51bmJsdXIoKTtcblx0ICAgICAgdGhpcy5faGlkZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIF90aGlzLl9oaWRlID0gbnVsbDtcblx0ICAgICAgICBfdGhpcy5zaG93ID0gZmFsc2U7XG5cdCAgICAgIH0sIDEwMCk7XG5cdCAgICB9LFxuXHQgICAgdW5ibHVyOiBmdW5jdGlvbiB1bmJsdXIoKSB7XG5cdCAgICAgIGlmICh0aGlzLl9oaWRlKSB7XG5cdCAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGUpO1xuXHQgICAgICAgIHRoaXMuX2hpZGUgPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0ICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7XG5cdCAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICB2YXIgJGVsID0gKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy4kZWxzLmRyb3Bkb3duKTtcblx0ICAgICRlbC5vbkJsdXIoZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgX3RoaXMyLnNob3cgPSBmYWxzZTtcblx0ICAgIH0pO1xuXHQgICAgJGVsLmZpbmRDaGlsZHJlbignYSxidXR0b24uZHJvcGRvd24tdG9nZ2xlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHQgICAgICBpZiAoX3RoaXMyLmRpc2FibGVkKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICB9XG5cdCAgICAgIF90aGlzMi5zaG93ID0gIV90aGlzMi5zaG93O1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9KTtcblx0ICAgICRlbC5maW5kQ2hpbGRyZW4oJ3VsJykub24oJ2NsaWNrJywgJ2xpPmEnLCBmdW5jdGlvbiAoZSkge1xuXHQgICAgICBfdGhpczIuc2hvdyA9IGZhbHNlO1xuXHQgICAgfSk7XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgdmFyICRlbCA9ICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRoaXMuJGVscy5kcm9wZG93bik7XG5cdCAgICAkZWwub2ZmQmx1cigpO1xuXHQgICAgJGVsLmZpbmRDaGlsZHJlbignYSxidXR0b24nKS5vZmYoKTtcblx0ICAgICRlbC5maW5kQ2hpbGRyZW4oJ3VsJykub2ZmKCk7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGUgc2NvcGVkPlxuXHRcblx0Ly8gLnNlY3JldCB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcblx0XG5cdC8vICAgb3ZlcmZsb3c6IGhpZGRlbjtcblx0XG5cdC8vICAgbWFyZ2luOiAtMXB4O1xuXHRcblx0Ly8gICBoZWlnaHQ6IDFweDtcblx0XG5cdC8vICAgd2lkdGg6IDFweDtcblx0XG5cdC8vICAgcGFkZGluZzogMDtcblx0XG5cdC8vICAgYm9yZGVyOiAwO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblxuLyoqKi8gfSxcbi8qIDEzMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxsaSB2LWlmPVxcXCJpc0xpXFxcIiB2LWVsOmRyb3Bkb3duPVxcXCJcXFwiIDpjbGFzcz1cXFwiY2xhc3Nlc1xcXCIgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+XFxuICAgIDxzbG90IG5hbWU9XFxcImJ1dHRvblxcXCIgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+XFxuICAgICAgPGEgY2xhc3M9XFxcImRyb3Bkb3duLXRvZ2dsZVxcXCIgcm9sZT1cXFwiYnV0dG9uXFxcIiA6Y2xhc3M9XFxcIntkaXNhYmxlZDogZGlzYWJsZWR9XFxcIiBAa2V5dXAuZXNjPVxcXCJzaG93ID0gZmFsc2VcXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPlxcbiAgICAgICAge3sgdGV4dCB9fVxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNhcmV0XFxcIiBfdi02MjhlYTJkYz1cXFwiXFxcIj48L3NwYW4+XFxuICAgICAgPC9hPlxcbiAgICA8L3Nsb3Q+XFxuICAgIDxzbG90IG5hbWU9XFxcImRyb3Bkb3duLW1lbnVcXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPlxcbiAgICAgIDx1bCB2LWVsc2U9XFxcIlxcXCIgY2xhc3M9XFxcImRyb3Bkb3duLW1lbnVcXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPlxcbiAgICAgICAgPHNsb3QgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+PC9zbG90PlxcbiAgICAgIDwvdWw+XFxuICAgIDwvc2xvdD5cXG4gIDwvbGk+XFxuICA8ZGl2IHYtZWxzZT1cXFwiXFxcIiB2LWVsOmRyb3Bkb3duPVxcXCJcXFwiIDpjbGFzcz1cXFwiY2xhc3Nlc1xcXCIgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+XFxuICAgIDxzbG90IG5hbWU9XFxcImJlZm9yZVxcXCIgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+PC9zbG90PlxcbiAgICA8c2xvdCBuYW1lPVxcXCJidXR0b25cXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPlxcbiAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi17e3R5cGV9fSBkcm9wZG93bi10b2dnbGVcXFwiIEBrZXl1cC5lc2M9XFxcInNob3cgPSBmYWxzZVxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+XFxuICAgICAgICB7eyB0ZXh0IH19XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY2FyZXRcXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPjwvc3Bhbj5cXG4gICAgICA8L2J1dHRvbj5cXG4gICAgPC9zbG90PlxcbiAgICA8c2xvdCBuYW1lPVxcXCJkcm9wZG93bi1tZW51XFxcIiBfdi02MjhlYTJkYz1cXFwiXFxcIj5cXG4gICAgICA8dWwgY2xhc3M9XFxcImRyb3Bkb3duLW1lbnVcXFwiIF92LTYyOGVhMmRjPVxcXCJcXFwiPlxcbiAgICAgICAgPHNsb3QgX3YtNjI4ZWEyZGM9XFxcIlxcXCI+PC9zbG90PlxcbiAgICAgIDwvdWw+XFxuICAgIDwvc2xvdD5cXG4gIDwvZGl2PlwiO1xuXG4vKioqLyB9LFxuLyogMTMyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMzKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTM0KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vRm9ybUdyb3VwLnZ1ZVwiXG5cdGhvdEFQSS5jcmVhdGVSZWNvcmQoaWQsIG1vZHVsZS5leHBvcnRzKVxuXHRtb2R1bGUuaG90LmFjY2VwdChbXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Gb3JtR3JvdXAudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Gb3JtR3JvdXAudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0Zvcm1Hcm91cC52dWVcIilcblx0aWYgKG5ld09wdGlvbnMgJiYgbmV3T3B0aW9ucy5fX2VzTW9kdWxlKSBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5kZWZhdWx0XG5cdHZhciBuZXdUZW1wbGF0ZSA9IHJlcXVpcmUoXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Gb3JtR3JvdXAudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDEzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHR2YXIgX05vZGVMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgX05vZGVMaXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX05vZGVMaXN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICB2YWxpZDoge1xuXHQgICAgICB0d29XYXk6IHRydWUsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICBlbnRlclN1Ym1pdDoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBpY29uOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGxhbmc6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBuYXZpZ2F0b3IubGFuZ3VhZ2Vcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBjaGlsZHJlbjogW10sXG5cdCAgICAgIHRpbWVvdXQ6IG51bGxcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgd2F0Y2g6IHtcblx0ICAgIHZhbGlkOiBmdW5jdGlvbiB2YWxpZCh2YWwsIG9sZCkge1xuXHQgICAgICBpZiAodmFsID09PSBvbGQpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC52YWxpZGF0ZSgpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuXHQgICAgICB0aGlzLiRlbHMuaW5wdXQuZm9jdXMoKTtcblx0ICAgIH0sXG5cdCAgICB2YWxpZGF0ZTogZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG5cdCAgICAgIHZhciB2YWxpZCA9IHRydWU7XG5cdCAgICAgIHRoaXMuY2hpbGRyZW4uc29tZShmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICB2YXIgdiA9IGVsLnZhbGlkYXRlID8gZWwudmFsaWRhdGUoKSA6IGVsLnZhbGlkICE9PSB1bmRlZmluZWQgPyBlbC52YWxpZCA6IGVsLnJlcXVpcmVkICYmICF+WycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YoZWwudmFsdWUpO1xuXHQgICAgICAgIGlmICghdikgdmFsaWQgPSBmYWxzZTtcblx0ICAgICAgICByZXR1cm4gIXZhbGlkO1xuXHQgICAgICB9KTtcblx0ICAgICAgdGhpcy52YWxpZCA9IHZhbGlkO1xuXHQgICAgICByZXR1cm4gdmFsaWQgPT09IHRydWU7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuXHQgICAgdGhpcy5fZm9ybUdyb3VwID0gdHJ1ZTtcblx0ICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG5cdCAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQuX2Zvcm1Hcm91cCkge1xuXHQgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcblx0ICAgIH1cblx0ICAgIGlmIChwYXJlbnQgJiYgcGFyZW50Ll9mb3JtR3JvdXApIHtcblx0ICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2godGhpcyk7XG5cdCAgICAgIHRoaXMuX3BhcmVudCA9IHBhcmVudDtcblx0ICAgIH1cblx0ICB9LFxuXHQgIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHtcblx0ICAgIHRoaXMudmFsaWRhdGUoKTtcblx0ICB9LFxuXHQgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG5cdCAgICBpZiAodGhpcy5fcGFyZW50KSB0aGlzLl9wYXJlbnQuY2hpbGRyZW4uJHJlbW92ZSh0aGlzKTtcblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXG4vKioqLyB9LFxuLyogMTM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPHNsb3Q+PC9zbG90PlwiO1xuXG4vKioqLyB9LFxuLyogMTM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNilcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOClcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOSlcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0lucHV0LnZ1ZVwiXG5cdGhvdEFQSS5jcmVhdGVSZWNvcmQoaWQsIG1vZHVsZS5leHBvcnRzKVxuXHRtb2R1bGUuaG90LmFjY2VwdChbXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9JbnB1dC52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLXJld3JpdGVyLmpzP2lkPV92LTQ2MTEyNGUyJmZpbGU9SW5wdXQudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL0lucHV0LnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9JbnB1dC52dWVcIilcblx0aWYgKG5ld09wdGlvbnMgJiYgbmV3T3B0aW9ucy5fX2VzTW9kdWxlKSBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5kZWZhdWx0XG5cdHZhciBuZXdUZW1wbGF0ZSA9IHJlcXVpcmUoXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1yZXdyaXRlci5qcz9pZD1fdi00NjExMjRlMiZmaWxlPUlucHV0LnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9JbnB1dC52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMTM2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXHRcblx0Ly8gbG9hZCB0aGUgc3R5bGVzXG5cdHZhciBjb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzcpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtNDYxMTI0ZTImZmlsZT1JbnB1dC52dWUmc2NvcGVkPXRydWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vSW5wdXQudnVlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtNDYxMTI0ZTImZmlsZT1JbnB1dC52dWUmc2NvcGVkPXRydWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vSW5wdXQudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTM3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIuZm9ybS1ncm91cFtfdi00NjExMjRlMl0ge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbn1cXHJcXG5sYWJlbH4uY2xvc2VbX3YtNDYxMTI0ZTJdIHtcXHJcXG4gIHRvcDogMjVweDtcXHJcXG59XFxyXFxuLmlucHV0LWdyb3VwPi5pY29uW192LTQ2MTEyNGUyXSB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xcclxcbiAgd2lkdGg6MDtcXHJcXG4gIHotaW5kZXg6IDM7XFxyXFxufVxcclxcbi5jbG9zZVtfdi00NjExMjRlMl0ge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICB6LWluZGV4OiAyO1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aWR0aDogMzRweDtcXHJcXG4gIGhlaWdodDogMzRweDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAzNHB4O1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbn1cXHJcXG4uaGFzLWZlZWRiYWNrIC5jbG9zZVtfdi00NjExMjRlMl0ge1xcclxcbiAgcmlnaHQ6IDIwcHg7XFxyXFxufVwiLCBcIlwiXSk7XG5cdFxuXHQvLyBleHBvcnRzXG5cblxuLyoqKi8gfSxcbi8qIDEzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHR2YXIgX05vZGVMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgX05vZGVMaXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX05vZGVMaXN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgOmNsYXNzPVwie3ZhbGlkYXRlOmNhblZhbGlkYXRlLCdoYXMtZmVlZGJhY2snOmljb24sJ2hhcy1lcnJvcic6Y2FuVmFsaWRhdGUmJnZhbGlkPT09ZmFsc2UsJ2hhcy1zdWNjZXNzJzpjYW5WYWxpZGF0ZSYmdmFsaWR9XCI+XG5cdFxuXHQvLyAgICAgPHNsb3QgbmFtZT1cImxhYmVsXCI+PGxhYmVsIHYtaWY9XCJsYWJlbFwiIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIEBjbGljaz1cImZvY3VzXCI+e3tsYWJlbH19PC9sYWJlbD48L3Nsb3Q+XG5cdFxuXHQvLyAgICAgPGRpdiB2LWlmPVwic2xvdHMuYmVmb3JlfHxzbG90cy5hZnRlclwiIGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cblx0XG5cdC8vICAgICAgIDxzbG90IG5hbWU9XCJiZWZvcmVcIj48L3Nsb3Q+XG5cdFxuXHQvLyAgICAgICA8dGV4dGFyZWEgdi1pZj1cInR5cGU9PSd0ZXh0YXJlYSdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHYtZWw6aW5wdXQgdi1tb2RlbD1cInZhbHVlXCJcblx0XG5cdC8vICAgICAgICAgOmNvbHM9XCJjb2xzXCJcblx0XG5cdC8vICAgICAgICAgOnJvd3M9XCJyb3dzXCJcblx0XG5cdC8vICAgICAgICAgOm5hbWU9XCJuYW1lXCJcblx0XG5cdC8vICAgICAgICAgOnRpdGxlPVwiYXR0cih0aXRsZSlcIlxuXHRcblx0Ly8gICAgICAgICA6cmVhZG9ubHk9XCJyZWFkb25seVwiXG5cdFxuXHQvLyAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcblx0XG5cdC8vICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuXHRcblx0Ly8gICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcblx0XG5cdC8vICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcIlxuXHRcblx0Ly8gICAgICAgICBAYmx1cj1cIm9uYmx1clwiIEBmb2N1cz1cIm9uZm9jdXNcIlxuXHRcblx0Ly8gICAgICAgPjwvdGV4dGFyZWE+XG5cdFxuXHQvLyAgICAgICA8aW5wdXQgdi1lbHNlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdi1lbDppbnB1dCB2LW1vZGVsPVwidmFsdWVcIlxuXHRcblx0Ly8gICAgICAgICA6bmFtZT1cIm5hbWVcIlxuXHRcblx0Ly8gICAgICAgICA6bWF4PVwiYXR0cihtYXgpXCJcblx0XG5cdC8vICAgICAgICAgOm1pbj1cImF0dHIobWluKVwiXG5cdFxuXHQvLyAgICAgICAgIDpzdGVwPVwic3RlcFwiXG5cdFxuXHQvLyAgICAgICAgIDp0eXBlPVwidHlwZVwiXG5cdFxuXHQvLyAgICAgICAgIDp0aXRsZT1cImF0dHIodGl0bGUpXCJcblx0XG5cdC8vICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuXHRcblx0Ly8gICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG5cdFxuXHQvLyAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XG5cdC8vICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG5cdFxuXHQvLyAgICAgICAgIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyXCJcblx0XG5cdC8vICAgICAgICAgQGtleXVwLmVudGVyPVwiZW50ZXJTdWJtaXQmJnN1Ym1pdCgpXCJcblx0XG5cdC8vICAgICAgICAgQGJsdXI9XCJvbmJsdXJcIiBAZm9jdXM9XCJvbmZvY3VzXCJcblx0XG5cdC8vICAgICAgIC8+XG5cdFxuXHQvLyAgICAgICA8ZGl2IHYtaWY9XCJzaG93Q2xlYXIgJiYgdmFsdWVcIiA6Y2xhc3M9XCJ7aWNvbjppY29ufVwiPlxuXHRcblx0Ly8gICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlXCIgQGNsaWNrPVwidmFsdWUgPSAnJ1wiPiZ0aW1lczs8L3NwYW4+XG5cdFxuXHQvLyAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgIDxkaXYgdi1pZj1cImljb25cIiBjbGFzcz1cImljb25cIj5cblx0XG5cdC8vICAgICAgICAgPHNwYW4gdi1pZj1cImljb24mJnZhbGlkIT09bnVsbFwiIDpjbGFzcz1cIlsnZm9ybS1jb250cm9sLWZlZWRiYWNrIGdseXBoaWNvbicsJ2dseXBoaWNvbi0nKyh2YWxpZD8nb2snOidyZW1vdmUnKV1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgIDxzbG90IG5hbWU9XCJhZnRlclwiPjwvc2xvdD5cblx0XG5cdC8vICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICA8dGVtcGxhdGUgdi1lbHNlPlxuXHRcblx0Ly8gICAgICAgPHRleHRhcmVhIHYtaWY9XCJ0eXBlPT0ndGV4dGFyZWEnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB2LWVsOmlucHV0IHYtbW9kZWw9XCJ2YWx1ZVwiXG5cdFxuXHQvLyAgICAgICAgIDpjb2xzPVwiY29sc1wiXG5cdFxuXHQvLyAgICAgICAgIDpyb3dzPVwicm93c1wiXG5cdFxuXHQvLyAgICAgICAgIDpuYW1lPVwibmFtZVwiXG5cdFxuXHQvLyAgICAgICAgIDp0aXRsZT1cImF0dHIodGl0bGUpXCJcblx0XG5cdC8vICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuXHRcblx0Ly8gICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG5cdFxuXHQvLyAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XG5cdC8vICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG5cdFxuXHQvLyAgICAgICAgIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyXCJcblx0XG5cdC8vICAgICAgICAgQGJsdXI9XCJvbmJsdXJcIiBAZm9jdXM9XCJvbmZvY3VzXCJcblx0XG5cdC8vICAgICAgID48L3RleHRhcmVhPlxuXHRcblx0Ly8gICAgICAgPGlucHV0IHYtZWxzZSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHYtZWw6aW5wdXQgdi1tb2RlbD1cInZhbHVlXCJcblx0XG5cdC8vICAgICAgICAgOm5hbWU9XCJuYW1lXCJcblx0XG5cdC8vICAgICAgICAgOm1heD1cImF0dHIobWF4KVwiXG5cdFxuXHQvLyAgICAgICAgIDptaW49XCJhdHRyKG1pbilcIlxuXHRcblx0Ly8gICAgICAgICA6c3RlcD1cInN0ZXBcIlxuXHRcblx0Ly8gICAgICAgICA6dHlwZT1cInR5cGVcIlxuXHRcblx0Ly8gICAgICAgICA6dGl0bGU9XCJhdHRyKHRpdGxlKVwiXG5cdFxuXHQvLyAgICAgICAgIDpyZWFkb25seT1cInJlYWRvbmx5XCJcblx0XG5cdC8vICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuXHRcblx0Ly8gICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG5cdFxuXHQvLyAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuXHRcblx0Ly8gICAgICAgICA6cGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclwiXG5cdFxuXHQvLyAgICAgICAgIEBrZXl1cC5lbnRlcj1cImVudGVyU3VibWl0JiZzdWJtaXQoKVwiXG5cdFxuXHQvLyAgICAgICAgIEBibHVyPVwib25ibHVyXCIgQGZvY3VzPVwib25mb2N1c1wiXG5cdFxuXHQvLyAgICAgICAvPlxuXHRcblx0Ly8gICAgICAgPHNwYW4gdi1pZj1cInNob3dDbGVhciAmJiB2YWx1ZVwiIGNsYXNzPVwiY2xvc2VcIiBAY2xpY2s9XCJ2YWx1ZSA9ICcnXCI+JnRpbWVzOzwvc3Bhbj5cblx0XG5cdC8vICAgICAgIDxzcGFuIHYtaWY9XCJpY29uJiZ2YWxpZCE9PW51bGxcIiA6Y2xhc3M9XCJbJ2Zvcm0tY29udHJvbC1mZWVkYmFjayBnbHlwaGljb24nLCdnbHlwaGljb24tJysodmFsaWQ/J29rJzoncmVtb3ZlJyldXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgIDwvdGVtcGxhdGU+XG5cdFxuXHQvLyAgICAgPGRpdiB2LWlmPVwic2hvd0hlbHBcIiBjbGFzcz1cImhlbHAtYmxvY2tcIiBAY2xpY2s9XCJmb2N1c1wiPnt7aGVscH19PC9kaXY+XG5cdFxuXHQvLyAgICAgPGRpdiB2LWlmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJoZWxwLWJsb2NrIHdpdGgtZXJyb3JzXCIgQGNsaWNrPVwiZm9jdXNcIj57e2Vycm9yVGV4dH19PC9kaXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHZhbHVlOiB7XG5cdCAgICAgIHR3b1dheTogdHJ1ZSxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIG1hdGNoOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIGNsZWFyQnV0dG9uOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGRpc2FibGVkOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGVudGVyU3VibWl0OiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGVycm9yOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIGhlbHA6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9LFxuXHQgICAgaGlkZUhlbHA6IHsgLy8gaGlkZSB3aGVuIGhhdmUgZXJyb3Jcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IHRydWVcblx0ICAgIH0sXG5cdCAgICBpY29uOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGxhYmVsOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIGxhbmc6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBuYXZpZ2F0b3IubGFuZ3VhZ2Vcblx0ICAgIH0sXG5cdCAgICBtYXNrOiBudWxsLFxuXHQgICAgbWFza0RlbGF5OiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMTAwXG5cdCAgICB9LFxuXHQgICAgbWF4OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLnN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIG1heGxlbmd0aDoge1xuXHQgICAgICB0eXBlOiBOdW1iZXIsXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5udW1iZXIsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICBtaW46IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2Uuc3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9LFxuXHQgICAgbWlubGVuZ3RoOiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMFxuXHQgICAgfSxcblx0ICAgIG5hbWU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9LFxuXHQgICAgcGF0dGVybjoge1xuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UucGF0dGVybixcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIHBsYWNlaG9sZGVyOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIHJlYWRvbmx5OiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIHJlcXVpcmVkOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIHJvd3M6IHtcblx0ICAgICAgdHlwZTogTnVtYmVyLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UubnVtYmVyLFxuXHQgICAgICBkZWZhdWx0OiAzXG5cdCAgICB9LFxuXHQgICAgc3RlcDoge1xuXHQgICAgICB0eXBlOiBOdW1iZXIsXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5udW1iZXIsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0eXBlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ3RleHQnXG5cdCAgICB9LFxuXHQgICAgdmFsaWRhdGlvbkRlbGF5OiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMjUwXG5cdCAgICB9XG5cdCAgfSxcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgdmFsaWQ6IG51bGwsXG5cdCAgICAgIHRpbWVvdXQ6IG51bGxcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgY29tcHV0ZWQ6IHtcblx0ICAgIGNhblZhbGlkYXRlOiBmdW5jdGlvbiBjYW5WYWxpZGF0ZSgpIHtcblx0ICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmICh0aGlzLnJlcXVpcmVkIHx8IHRoaXMucGF0dGVybiB8fCB0aGlzLm5hdGl2ZVZhbGlkYXRlIHx8IHRoaXMubWF0Y2ggIT09IG51bGwpO1xuXHQgICAgfSxcblx0ICAgIGVycm9yVGV4dDogZnVuY3Rpb24gZXJyb3JUZXh0KCkge1xuXHQgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXHQgICAgICB2YXIgZXJyb3IgPSBbdGhpcy5lcnJvcl07XG5cdCAgICAgIGlmICghdmFsdWUgJiYgdGhpcy5yZXF1aXJlZCkgZXJyb3IucHVzaCgnKCcgKyB0aGlzLnRleHQucmVxdWlyZWQudG9Mb3dlckNhc2UoKSArICcpJyk7XG5cdCAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbmxlbmd0aCkgZXJyb3IucHVzaCgnKCcgKyB0aGlzLnRleHQubWluTGVuZ3RoLnRvTG93ZXJDYXNlKCkgKyAnOiAnICsgdGhpcy5taW5sZW5ndGggKyAnKScpO1xuXHQgICAgICByZXR1cm4gZXJyb3Iuam9pbignICcpO1xuXHQgICAgfSxcblx0ICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dCgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuJGVscy5pbnB1dDtcblx0ICAgIH0sXG5cdCAgICBuYXRpdmVWYWxpZGF0ZTogZnVuY3Rpb24gbmF0aXZlVmFsaWRhdGUoKSB7XG5cdCAgICAgIHJldHVybiAodGhpcy5pbnB1dCB8fCB7fSkuY2hlY2tWYWxpZGl0eSAmJiAoflsndXJsJywgJ2VtYWlsJ10uaW5kZXhPZih0aGlzLnR5cGUudG9Mb3dlckNhc2UoKSkgfHwgdGhpcy5taW4gfHwgdGhpcy5tYXgpO1xuXHQgICAgfSxcblx0ICAgIHNob3dDbGVhcjogZnVuY3Rpb24gc2hvd0NsZWFyKCkge1xuXHQgICAgICAvLyBEaXNhYmxlIHRoZSBjbGVhci1idXR0b24gb24gRWRnZSBpZiBpcyBlbmFibGVkLiBFZGdlIGhhcyBhIG5hdGl2ZSBjbGVhciBidXR0b24uXG5cdCAgICAgIHJldHVybiAoL1xcYkVkZ2VcXC8vLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpID8gZmFsc2UgOiB0aGlzLmNsZWFyQnV0dG9uXG5cdCAgICAgICk7XG5cdCAgICB9LFxuXHQgICAgc2hvd0Vycm9yOiBmdW5jdGlvbiBzaG93RXJyb3IoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLmVycm9yICYmIHRoaXMudmFsaWQgPT09IGZhbHNlO1xuXHQgICAgfSxcblx0ICAgIHNob3dIZWxwOiBmdW5jdGlvbiBzaG93SGVscCgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuaGVscCAmJiAoIXRoaXMuc2hvd0Vycm9yIHx8ICF0aGlzLmhpZGVIZWxwKTtcblx0ICAgIH0sXG5cdCAgICBzbG90czogZnVuY3Rpb24gc2xvdHMoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLl9zbG90Q29udGVudHMgfHwge307XG5cdCAgICB9LFxuXHQgICAgdGV4dDogZnVuY3Rpb24gdGV4dCgpIHtcblx0ICAgICAgcmV0dXJuICgwLCBfdXRpbHMudHJhbnNsYXRpb25zKSh0aGlzLmxhbmcpO1xuXHQgICAgfSxcblx0ICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZSgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuZXJyb3JUZXh0IHx8IHRoaXMuaGVscCB8fCAnJztcblx0ICAgIH1cblx0ICB9LFxuXHQgIHdhdGNoOiB7XG5cdCAgICBtYXRjaDogZnVuY3Rpb24gbWF0Y2godmFsKSB7XG5cdCAgICAgIHRoaXMuZXZhbCgpO1xuXHQgICAgfSxcblx0ICAgIHZhbGlkOiBmdW5jdGlvbiB2YWxpZCh2YWwsIG9sZCkge1xuXHQgICAgICBpZiAodmFsICE9PSBvbGQpIHtcblx0ICAgICAgICB0aGlzLl9wYXJlbnQgJiYgdGhpcy5fcGFyZW50LnZhbGlkYXRlKCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGQpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIGlmICh2YWwgIT09IG9sZCkge1xuXHQgICAgICAgIGlmICh0aGlzLm1hc2sgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXHQgICAgICAgICAgdmFsID0gdGhpcy5tYXNrKHZhbCB8fCAnJyk7XG5cdCAgICAgICAgICBpZiAodGhpcy52YWx1ZSAhPT0gdmFsKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLl90aW1lb3V0Lm1hc2spIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0Lm1hc2spO1xuXHQgICAgICAgICAgICB0aGlzLl90aW1lb3V0Lm1hc2sgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICBfdGhpcy52YWx1ZSA9IHZhbDtcblx0ICAgICAgICAgICAgICBfdGhpcy4kZWxzLmlucHV0LnZhbHVlID0gdmFsO1xuXHQgICAgICAgICAgICB9LCB0aGlzLm1hc2tEZWxheSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuZXZhbCgpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0ICBtZXRob2RzOiB7XG5cdCAgICBhdHRyOiBmdW5jdGlvbiBhdHRyKHZhbHVlKSB7XG5cdCAgICAgIHJldHVybiB+WycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyB1bmRlZmluZWQgOiB2YWx1ZTtcblx0ICAgIH0sXG5cdCAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG5cdCAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcblx0ICAgIH0sXG5cdCAgICBldmFsOiBmdW5jdGlvbiBfZXZhbCgpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAodGhpcy5fdGltZW91dC5ldmFsKSBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dC5ldmFsKTtcblx0ICAgICAgaWYgKCF0aGlzLmNhblZhbGlkYXRlKSB7XG5cdCAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy5fdGltZW91dC5ldmFsID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBfdGhpczIudmFsaWQgPSBfdGhpczIudmFsaWRhdGUoKTtcblx0ICAgICAgICAgIF90aGlzMi5fdGltZW91dC5ldmFsID0gbnVsbDtcblx0ICAgICAgICB9LCB0aGlzLnZhbGlkYXRpb25EZWxheSk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBvbmJsdXI6IGZ1bmN0aW9uIG9uYmx1cihlKSB7XG5cdCAgICAgIGlmICh0aGlzLmNhblZhbGlkYXRlKSB7XG5cdCAgICAgICAgdGhpcy52YWxpZCA9IHRoaXMudmFsaWRhdGUoKTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLiRlbWl0KCdibHVyJywgZSk7XG5cdCAgICB9LFxuXHQgICAgb25mb2N1czogZnVuY3Rpb24gb25mb2N1cyhlKSB7XG5cdCAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgZSk7XG5cdCAgICB9LFxuXHQgICAgc3VibWl0OiBmdW5jdGlvbiBzdWJtaXQoKSB7XG5cdCAgICAgIGlmICh0aGlzLiRwYXJlbnQuX2Zvcm1Hcm91cCkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQudmFsaWRhdGUoKTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAodGhpcy5pbnB1dC5mb3JtKSB7XG5cdCAgICAgICAgdmFyIGludmFsaWRzID0gKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkoJy5mb3JtLWdyb3VwLnZhbGlkYXRlOm5vdCguaGFzLXN1Y2Nlc3MpJywgdGhpcy5pbnB1dC5mb3JtKTtcblx0ICAgICAgICBpZiAoaW52YWxpZHMubGVuZ3RoKSB7XG5cdCAgICAgICAgICBpbnZhbGlkcy5maW5kKCdpbnB1dCx0ZXh0YXJlYSxzZWxlY3QnKVswXS5mb2N1cygpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB0aGlzLmlucHV0LmZvcm0uc3VibWl0KCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuXHQgICAgICBpZiAoIXRoaXMuY2FuVmFsaWRhdGUpIHtcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgdmFsdWUgPSAodGhpcy52YWx1ZSB8fCAnJykudHJpbSgpO1xuXHQgICAgICBpZiAoIXZhbHVlKSB7XG5cdCAgICAgICAgcmV0dXJuICF0aGlzLnJlcXVpcmVkO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICh0aGlzLm1hdGNoICE9PSBudWxsKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMubWF0Y2ggPT09IHZhbHVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAodGhpcy5uYXRpdmVWYWxpZGF0ZSAmJiAhdGhpcy5pbnB1dC5jaGVja1ZhbGlkaXR5KCkpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHRoaXMucGF0dGVybikge1xuXHQgICAgICAgIHJldHVybiB0aGlzLnBhdHRlcm4gaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHRoaXMucGF0dGVybih0aGlzLnZhbHVlKSA6IHRoaXMucGF0dGVybi50ZXN0KHRoaXMudmFsdWUpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIHRoaXMuX2lucHV0ID0gdHJ1ZTtcblx0ICAgIHRoaXMuX3RpbWVvdXQgPSB7fTtcblx0ICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG5cdCAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQuX2Zvcm1Hcm91cCkge1xuXHQgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcblx0ICAgIH1cblx0ICAgIGlmIChwYXJlbnQgJiYgcGFyZW50Ll9mb3JtR3JvdXApIHtcblx0ICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cdFxuXHQgICAgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMpO1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy5pbnB1dCkub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzMy4kZW1pdCgnZm9jdXMnLCBlKTtcblx0ICAgIH0pLm9uKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgaWYgKF90aGlzMy5jYW5WYWxpZGF0ZSkge1xuXHQgICAgICAgIF90aGlzMy52YWxpZCA9IF90aGlzMy52YWxpZGF0ZSgpO1xuXHQgICAgICB9XG5cdCAgICAgIF90aGlzMy4kZW1pdCgnYmx1cicsIGUpO1xuXHQgICAgfSk7XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5jaGlsZHJlbi4kcmVtb3ZlKHRoaXMpO1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy5pbnB1dCkub2ZmKCk7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGUgc2NvcGVkPlxuXHRcblx0Ly8gLmZvcm0tZ3JvdXAge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBsYWJlbH4uY2xvc2Uge1xuXHRcblx0Ly8gICB0b3A6IDI1cHg7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuaW5wdXQtZ3JvdXA+Lmljb24ge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFxuXHQvLyAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cdFxuXHQvLyAgIHdpZHRoOjA7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDM7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuY2xvc2Uge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFxuXHQvLyAgIHRvcDogMDtcblx0XG5cdC8vICAgcmlnaHQ6IDA7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDI7XG5cdFxuXHQvLyAgIGRpc3BsYXk6IGJsb2NrO1xuXHRcblx0Ly8gICB3aWR0aDogMzRweDtcblx0XG5cdC8vICAgaGVpZ2h0OiAzNHB4O1xuXHRcblx0Ly8gICBsaW5lLWhlaWdodDogMzRweDtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmhhcy1mZWVkYmFjayAuY2xvc2Uge1xuXHRcblx0Ly8gICByaWdodDogMjBweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cbi8qKiovIH0sXG4vKiAxMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIiA6Y2xhc3M9XFxcInt2YWxpZGF0ZTpjYW5WYWxpZGF0ZSwnaGFzLWZlZWRiYWNrJzppY29uLCdoYXMtZXJyb3InOmNhblZhbGlkYXRlJmFtcDsmYW1wO3ZhbGlkPT09ZmFsc2UsJ2hhcy1zdWNjZXNzJzpjYW5WYWxpZGF0ZSZhbXA7JmFtcDt2YWxpZH1cXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPlxcbiAgICA8c2xvdCBuYW1lPVxcXCJsYWJlbFxcXCIgX3YtNDYxMTI0ZTI9XFxcIlxcXCI+PGxhYmVsIHYtaWY9XFxcImxhYmVsXFxcIiBjbGFzcz1cXFwiY29udHJvbC1sYWJlbFxcXCIgQGNsaWNrPVxcXCJmb2N1c1xcXCIgX3YtNDYxMTI0ZTI9XFxcIlxcXCI+e3tsYWJlbH19PC9sYWJlbD48L3Nsb3Q+XFxuICAgIDxkaXYgdi1pZj1cXFwic2xvdHMuYmVmb3JlfHxzbG90cy5hZnRlclxcXCIgY2xhc3M9XFxcImlucHV0LWdyb3VwXFxcIiBfdi00NjExMjRlMj1cXFwiXFxcIj5cXG4gICAgICA8c2xvdCBuYW1lPVxcXCJiZWZvcmVcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPjwvc2xvdD5cXG4gICAgICA8dGV4dGFyZWEgdi1pZj1cXFwidHlwZT09J3RleHRhcmVhJ1xcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgdi1lbDppbnB1dD1cXFwiXFxcIiB2LW1vZGVsPVxcXCJ2YWx1ZVxcXCIgOmNvbHM9XFxcImNvbHNcXFwiIDpyb3dzPVxcXCJyb3dzXFxcIiA6bmFtZT1cXFwibmFtZVxcXCIgOnRpdGxlPVxcXCJhdHRyKHRpdGxlKVxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOnJlcXVpcmVkPVxcXCJyZXF1aXJlZFxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgOm1heGxlbmd0aD1cXFwibWF4bGVuZ3RoXFxcIiA6cGxhY2Vob2xkZXI9XFxcInBsYWNlaG9sZGVyXFxcIiBAYmx1cj1cXFwib25ibHVyXFxcIiBAZm9jdXM9XFxcIm9uZm9jdXNcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPjwvdGV4dGFyZWE+XFxuICAgICAgPGlucHV0IHYtZWxzZT1cXFwiXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiB2LWVsOmlucHV0PVxcXCJcXFwiIHYtbW9kZWw9XFxcInZhbHVlXFxcIiA6bmFtZT1cXFwibmFtZVxcXCIgOm1heD1cXFwiYXR0cihtYXgpXFxcIiA6bWluPVxcXCJhdHRyKG1pbilcXFwiIDpzdGVwPVxcXCJzdGVwXFxcIiA6dHlwZT1cXFwidHlwZVxcXCIgOnRpdGxlPVxcXCJhdHRyKHRpdGxlKVxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOnJlcXVpcmVkPVxcXCJyZXF1aXJlZFxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgOm1heGxlbmd0aD1cXFwibWF4bGVuZ3RoXFxcIiA6cGxhY2Vob2xkZXI9XFxcInBsYWNlaG9sZGVyXFxcIiBAa2V5dXAuZW50ZXI9XFxcImVudGVyU3VibWl0JmFtcDsmYW1wO3N1Ym1pdCgpXFxcIiBAYmx1cj1cXFwib25ibHVyXFxcIiBAZm9jdXM9XFxcIm9uZm9jdXNcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPlxcbiAgICAgIDxkaXYgdi1pZj1cXFwic2hvd0NsZWFyICZhbXA7JmFtcDsgdmFsdWVcXFwiIDpjbGFzcz1cXFwie2ljb246aWNvbn1cXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNsb3NlXFxcIiBAY2xpY2s9XFxcInZhbHVlID0gJydcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPsOXPC9zcGFuPlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgdi1pZj1cXFwiaWNvblxcXCIgY2xhc3M9XFxcImljb25cXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPlxcbiAgICAgICAgPHNwYW4gdi1pZj1cXFwiaWNvbiZhbXA7JmFtcDt2YWxpZCE9PW51bGxcXFwiIDpjbGFzcz1cXFwiWydmb3JtLWNvbnRyb2wtZmVlZGJhY2sgZ2x5cGhpY29uJywnZ2x5cGhpY29uLScrKHZhbGlkPydvayc6J3JlbW92ZScpXVxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPjwvc3Bhbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8c2xvdCBuYW1lPVxcXCJhZnRlclxcXCIgX3YtNDYxMTI0ZTI9XFxcIlxcXCI+PC9zbG90PlxcbiAgICA8L2Rpdj5cXG4gICAgPHRlbXBsYXRlIHYtZWxzZT1cXFwiXFxcIiBfdi00NjExMjRlMj1cXFwiXFxcIj5cXG4gICAgICA8dGV4dGFyZWEgdi1pZj1cXFwidHlwZT09J3RleHRhcmVhJ1xcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgdi1lbDppbnB1dD1cXFwiXFxcIiB2LW1vZGVsPVxcXCJ2YWx1ZVxcXCIgOmNvbHM9XFxcImNvbHNcXFwiIDpyb3dzPVxcXCJyb3dzXFxcIiA6bmFtZT1cXFwibmFtZVxcXCIgOnRpdGxlPVxcXCJhdHRyKHRpdGxlKVxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOnJlcXVpcmVkPVxcXCJyZXF1aXJlZFxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgOm1heGxlbmd0aD1cXFwibWF4bGVuZ3RoXFxcIiA6cGxhY2Vob2xkZXI9XFxcInBsYWNlaG9sZGVyXFxcIiBAYmx1cj1cXFwib25ibHVyXFxcIiBAZm9jdXM9XFxcIm9uZm9jdXNcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPjwvdGV4dGFyZWE+XFxuICAgICAgPGlucHV0IHYtZWxzZT1cXFwiXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiB2LWVsOmlucHV0PVxcXCJcXFwiIHYtbW9kZWw9XFxcInZhbHVlXFxcIiA6bmFtZT1cXFwibmFtZVxcXCIgOm1heD1cXFwiYXR0cihtYXgpXFxcIiA6bWluPVxcXCJhdHRyKG1pbilcXFwiIDpzdGVwPVxcXCJzdGVwXFxcIiA6dHlwZT1cXFwidHlwZVxcXCIgOnRpdGxlPVxcXCJhdHRyKHRpdGxlKVxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOnJlcXVpcmVkPVxcXCJyZXF1aXJlZFxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgOm1heGxlbmd0aD1cXFwibWF4bGVuZ3RoXFxcIiA6cGxhY2Vob2xkZXI9XFxcInBsYWNlaG9sZGVyXFxcIiBAa2V5dXAuZW50ZXI9XFxcImVudGVyU3VibWl0JmFtcDsmYW1wO3N1Ym1pdCgpXFxcIiBAYmx1cj1cXFwib25ibHVyXFxcIiBAZm9jdXM9XFxcIm9uZm9jdXNcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPlxcbiAgICAgIDxzcGFuIHYtaWY9XFxcInNob3dDbGVhciAmYW1wOyZhbXA7IHZhbHVlXFxcIiBjbGFzcz1cXFwiY2xvc2VcXFwiIEBjbGljaz1cXFwidmFsdWUgPSAnJ1xcXCIgX3YtNDYxMTI0ZTI9XFxcIlxcXCI+w5c8L3NwYW4+XFxuICAgICAgPHNwYW4gdi1pZj1cXFwiaWNvbiZhbXA7JmFtcDt2YWxpZCE9PW51bGxcXFwiIDpjbGFzcz1cXFwiWydmb3JtLWNvbnRyb2wtZmVlZGJhY2sgZ2x5cGhpY29uJywnZ2x5cGhpY29uLScrKHZhbGlkPydvayc6J3JlbW92ZScpXVxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPjwvc3Bhbj5cXG4gICAgPC90ZW1wbGF0ZT5cXG4gICAgPGRpdiB2LWlmPVxcXCJzaG93SGVscFxcXCIgY2xhc3M9XFxcImhlbHAtYmxvY2tcXFwiIEBjbGljaz1cXFwiZm9jdXNcXFwiIF92LTQ2MTEyNGUyPVxcXCJcXFwiPnt7aGVscH19PC9kaXY+XFxuICAgIDxkaXYgdi1pZj1cXFwic2hvd0Vycm9yXFxcIiBjbGFzcz1cXFwiaGVscC1ibG9jayB3aXRoLWVycm9yc1xcXCIgQGNsaWNrPVxcXCJmb2N1c1xcXCIgX3YtNDYxMTI0ZTI9XFxcIlxcXCI+e3tlcnJvclRleHR9fTwvZGl2PlxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAxNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTQxKVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQzKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ4KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vTW9kYWwudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL01vZGFsLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vTW9kYWwudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL01vZGFsLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL01vZGFsLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0Mik7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0wZWU0MzIxYyZmaWxlPU1vZGFsLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9Nb2RhbC52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0wZWU0MzIxYyZmaWxlPU1vZGFsLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9Nb2RhbC52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxNDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5tb2RhbCB7XFxyXFxuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XFxyXFxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xcclxcbn1cXHJcXG4ubW9kYWwuaW4ge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjUpO1xcclxcbn1cXHJcXG4ubW9kYWwuem9vbSAubW9kYWwtZGlhbG9nIHtcXHJcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjEpO1xcclxcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjEpO1xcclxcbiAgdG9wOiAzMDBweDtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzO1xcclxcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XFxyXFxufVxcclxcbi5tb2RhbC56b29tLmluIC5tb2RhbC1kaWFsb2cge1xcclxcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xcclxcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXHJcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwcHgsIDApO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwcHgsIDApO1xcclxcbiAgb3BhY2l0eTogMTtcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMTQzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfaXNJbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDQpO1xuXHRcblx0dmFyIF9pc0ludGVnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJbnRlZ2VyKTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBfTm9kZUxpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBfTm9kZUxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTm9kZUxpc3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdiByb2xlPVwiZGlhbG9nXCJcblx0XG5cdC8vICAgICB2LWJpbmQ6Y2xhc3M9XCJ7XG5cdFxuXHQvLyAgICAgJ21vZGFsJzp0cnVlLFxuXHRcblx0Ly8gICAgICdmYWRlJzplZmZlY3QgPT09ICdmYWRlJyxcblx0XG5cdC8vICAgICAnem9vbSc6ZWZmZWN0ID09PSAnem9vbSdcblx0XG5cdC8vICAgICB9XCJcblx0XG5cdC8vICAgICA+XG5cdFxuXHQvLyAgICAgPGRpdiB2LWJpbmQ6Y2xhc3M9XCJ7J21vZGFsLWRpYWxvZyc6dHJ1ZSwnbW9kYWwtbGcnOmxhcmdlLCdtb2RhbC1zbSc6c21hbGx9XCIgcm9sZT1cImRvY3VtZW50XCJcblx0XG5cdC8vICAgICAgIHYtYmluZDpzdHlsZT1cInt3aWR0aDogb3B0aW9uYWxXaWR0aH1cIj5cblx0XG5cdC8vICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90IG5hbWU9XCJtb2RhbC1oZWFkZXJcIj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG5cdFxuXHQvLyAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgQGNsaWNrPVwiY2xvc2VcIj48c3Bhbj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPlxuXHRcblx0Ly8gICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cblx0XG5cdC8vICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+XG5cdFxuXHQvLyAgICAgICAgICAgICAgICAge3t0aXRsZX19XG5cdFxuXHQvLyAgICAgICAgICAgICAgIDwvc2xvdD5cblx0XG5cdC8vICAgICAgICAgICAgIDwvaDQ+XG5cdFxuXHQvLyAgICAgICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgICAgIDwvc2xvdD5cblx0XG5cdC8vICAgICAgICAgPHNsb3QgbmFtZT1cIm1vZGFsLWJvZHlcIj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPjwvZGl2PlxuXHRcblx0Ly8gICAgICAgICA8L3Nsb3Q+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90IG5hbWU9XCJtb2RhbC1mb290ZXJcIj5cblx0XG5cdC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG5cdFxuXHQvLyAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIEBjbGljaz1cImNsb3NlXCI+e3sgY2FuY2VsVGV4dCB9fTwvYnV0dG9uPlxuXHRcblx0Ly8gICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBAY2xpY2s9XCJjYWxsYmFja1wiPnt7IG9rVGV4dCB9fTwvYnV0dG9uPlxuXHRcblx0Ly8gICAgICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgICAgICA8L3Nsb3Q+XG5cdFxuXHQvLyAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICA8L2Rpdj5cblx0XG5cdC8vICAgPC9kaXY+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBwcm9wczoge1xuXHQgICAgb2tUZXh0OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ1NhdmUgY2hhbmdlcydcblx0ICAgIH0sXG5cdCAgICBjYW5jZWxUZXh0OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ0Nsb3NlJ1xuXHQgICAgfSxcblx0ICAgIHRpdGxlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJydcblx0ICAgIH0sXG5cdCAgICBzaG93OiB7XG5cdCAgICAgIHJlcXVpcmVkOiB0cnVlLFxuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgdHdvV2F5OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgd2lkdGg6IHtcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIGNhbGxiYWNrOiB7XG5cdCAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuXHQgICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHt9XG5cdCAgICB9LFxuXHQgICAgZWZmZWN0OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIGJhY2tkcm9wOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgbGFyZ2U6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgc21hbGw6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9XG5cdCAgfSxcblx0ICBjb21wdXRlZDoge1xuXHQgICAgb3B0aW9uYWxXaWR0aDogZnVuY3Rpb24gb3B0aW9uYWxXaWR0aCgpIHtcblx0ICAgICAgaWYgKHRoaXMud2lkdGggPT09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgfSBlbHNlIGlmICgoMCwgX2lzSW50ZWdlcjIuZGVmYXVsdCkodGhpcy53aWR0aCkpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy53aWR0aCArICdweCc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHRoaXMud2lkdGg7XG5cdCAgICB9XG5cdCAgfSxcblx0ICB3YXRjaDoge1xuXHQgICAgc2hvdzogZnVuY3Rpb24gc2hvdyh2YWwpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuXHQgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cdCAgICAgIHZhciBzY3JvbGxCYXJXaWR0aCA9ICgwLCBfdXRpbHMuZ2V0U2Nyb2xsQmFyV2lkdGgpKCk7XG5cdCAgICAgIGlmICh2YWwpIHtcblx0ICAgICAgICAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KShlbCkuZmluZCgnLm1vZGFsLWNvbnRlbnQnKS5mb2N1cygpO1xuXHQgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXHQgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgcmV0dXJuICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKGVsKS5hZGRDbGFzcygnaW4nKTtcblx0ICAgICAgICB9LCAwKTtcblx0ICAgICAgICAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KShib2R5KS5hZGRDbGFzcygnbW9kYWwtb3BlbicpO1xuXHQgICAgICAgIGlmIChzY3JvbGxCYXJXaWR0aCAhPT0gMCkge1xuXHQgICAgICAgICAgYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBzY3JvbGxCYXJXaWR0aCArICdweCc7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICh0aGlzLmJhY2tkcm9wKSB7XG5cdCAgICAgICAgICAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KShlbCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlbCkgX3RoaXMuc2hvdyA9IGZhbHNlO1xuXHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gbnVsbDtcblx0ICAgICAgICAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KShib2R5KS5yZW1vdmVDbGFzcygnbW9kYWwtb3BlbicpO1xuXHQgICAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKGVsKS5yZW1vdmVDbGFzcygnaW4nKS5vbigndHJhbnNpdGlvbmVuZCcsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKGVsKS5vZmYoJ2NsaWNrIHRyYW5zaXRpb25lbmQnKTtcblx0ICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHtcblx0ICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdC8vIDxzdHlsZT5cblx0XG5cdC8vIC5tb2RhbCB7XG5cdFxuXHQvLyAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAubW9kYWwuaW4ge1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuNSk7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAubW9kYWwuem9vbSAubW9kYWwtZGlhbG9nIHtcblx0XG5cdC8vICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMSk7XG5cdFxuXHQvLyAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjEpO1xuXHRcblx0Ly8gICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjEpO1xuXHRcblx0Ly8gICB0cmFuc2Zvcm06IHNjYWxlKDAuMSk7XG5cdFxuXHQvLyAgIHRvcDogMzAwcHg7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IDA7XG5cdFxuXHQvLyAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3M7XG5cdFxuXHQvLyAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3M7XG5cdFxuXHQvLyAgIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLm1vZGFsLnpvb20uaW4gLm1vZGFsLWRpYWxvZyB7XG5cdFxuXHQvLyAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XG5cdC8vICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHRcblx0Ly8gICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XG5cdC8vICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XG5cdC8vICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMDBweCwgMCk7XG5cdFxuXHQvLyAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTMwMHB4LCAwKTtcblx0XG5cdC8vICAgb3BhY2l0eTogMTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cbi8qKiovIH0sXG4vKiAxNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXygxNDUpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiAxNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKS5OdW1iZXIuaXNJbnRlZ2VyO1xuXG4vKioqLyB9LFxuLyogMTQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyAyMC4xLjIuMyBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcilcblx0dmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0XG5cdCRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge2lzSW50ZWdlcjogX193ZWJwYWNrX3JlcXVpcmVfXygxNDcpfSk7XG5cbi8qKiovIH0sXG4vKiAxNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KVxuXHQgICwgZmxvb3IgICAgPSBNYXRoLmZsb29yO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCl7XG5cdCAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IHJvbGU9XFxcImRpYWxvZ1xcXCJcXHJcXG4gICAgdi1iaW5kOmNsYXNzPVxcXCJ7XFxyXFxuICAgICdtb2RhbCc6dHJ1ZSxcXHJcXG4gICAgJ2ZhZGUnOmVmZmVjdCA9PT0gJ2ZhZGUnLFxcclxcbiAgICAnem9vbSc6ZWZmZWN0ID09PSAnem9vbSdcXHJcXG4gICAgfVxcXCJcXHJcXG4gICAgPlxcclxcbiAgICA8ZGl2IHYtYmluZDpjbGFzcz1cXFwieydtb2RhbC1kaWFsb2cnOnRydWUsJ21vZGFsLWxnJzpsYXJnZSwnbW9kYWwtc20nOnNtYWxsfVxcXCIgcm9sZT1cXFwiZG9jdW1lbnRcXFwiXFxyXFxuICAgICAgdi1iaW5kOnN0eWxlPVxcXCJ7d2lkdGg6IG9wdGlvbmFsV2lkdGh9XFxcIj5cXHJcXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1jb250ZW50XFxcIj5cXHJcXG4gICAgICAgIDxzbG90IG5hbWU9XFxcIm1vZGFsLWhlYWRlclxcXCI+XFxyXFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1vZGFsLWhlYWRlclxcXCI+XFxyXFxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCIgQGNsaWNrPVxcXCJjbG9zZVxcXCI+PHNwYW4+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj5cXHJcXG4gICAgICAgICAgICA8aDQgY2xhc3M9XFxcIm1vZGFsLXRpdGxlXFxcIj5cXHJcXG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XFxcInRpdGxlXFxcIj5cXHJcXG4gICAgICAgICAgICAgICAge3t0aXRsZX19XFxyXFxuICAgICAgICAgICAgICA8L3Nsb3Q+XFxyXFxuICAgICAgICAgICAgPC9oND5cXHJcXG4gICAgICAgICAgPC9kaXY+XFxyXFxuICAgICAgICA8L3Nsb3Q+XFxyXFxuICAgICAgICA8c2xvdCBuYW1lPVxcXCJtb2RhbC1ib2R5XFxcIj5cXHJcXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibW9kYWwtYm9keVxcXCI+PC9kaXY+XFxyXFxuICAgICAgICA8L3Nsb3Q+XFxyXFxuICAgICAgICA8c2xvdCBuYW1lPVxcXCJtb2RhbC1mb290ZXJcXFwiPlxcclxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtb2RhbC1mb290ZXJcXFwiPlxcclxcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1kZWZhdWx0XFxcIiBAY2xpY2s9XFxcImNsb3NlXFxcIj57eyBjYW5jZWxUZXh0IH19PC9idXR0b24+XFxyXFxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVxcXCJidXR0b25cXFwiIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiIEBjbGljaz1cXFwiY2FsbGJhY2tcXFwiPnt7IG9rVGV4dCB9fTwvYnV0dG9uPlxcclxcbiAgICAgICAgICA8L2Rpdj5cXHJcXG4gICAgICAgIDwvc2xvdD5cXHJcXG4gICAgICA8L2Rpdj5cXHJcXG4gICAgPC9kaXY+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDE0OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MClcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MSlcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL05hdmJhci52dWVcIlxuXHRob3RBUEkuY3JlYXRlUmVjb3JkKGlkLCBtb2R1bGUuZXhwb3J0cylcblx0bW9kdWxlLmhvdC5hY2NlcHQoW1wiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vTmF2YmFyLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vTmF2YmFyLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9OYXZiYXIudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vTmF2YmFyLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9Ob2RlTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ob2RlTGlzdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICB0eXBlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG5cdCAgICB9LFxuXHQgICAgcGxhY2VtZW50OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJydcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBpZDogJ2JzLWV4YW1wbGUtbmF2YmFyLWNvbGxhcHNlLTEnLFxuXHQgICAgICBjb2xsYXBzZWQ6IHRydWUsXG5cdCAgICAgIHN0eWxlczoge31cblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgY29tcHV0ZWQ6IHtcblx0ICAgIHNsb3RzOiBmdW5jdGlvbiBzbG90cygpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuX3Nsb3RDb250ZW50cztcblx0ICAgIH1cblx0ICB9LFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIHRvZ2dsZUNvbGxhcHNlOiBmdW5jdGlvbiB0b2dnbGVDb2xsYXBzZShlKSB7XG5cdCAgICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHQgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcblx0ICAgIH1cblx0ICB9LFxuXHQgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG5cdCAgICB0aGlzLl9uYXZiYXIgPSB0cnVlO1xuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICB2YXIgJGRyb3Bkb3duID0gKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkoJy5kcm9wZG93bj5bZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXScsIHRoaXMuJGVsKS5wYXJlbnQoKTtcblx0ICAgICRkcm9wZG93bi5vbignY2xpY2snLCAnLmRyb3Bkb3duLXRvZ2dsZScsIGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblx0ICAgICAgJGRyb3Bkb3duLmVhY2goZnVuY3Rpb24gKGNvbnRlbnQpIHtcblx0ICAgICAgICBpZiAoY29udGVudC5jb250YWlucyhlLnRhcmdldCkpIGNvbnRlbnQuY2xhc3NMaXN0LnRvZ2dsZSgnb3BlbicpO1xuXHQgICAgICB9KTtcblx0ICAgIH0pLm9uKCdjbGljaycsICcuZHJvcGRvd24tbWVudT5saT5hJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgJGRyb3Bkb3duLmVhY2goZnVuY3Rpb24gKGNvbnRlbnQpIHtcblx0ICAgICAgICBpZiAoY29udGVudC5jb250YWlucyhlLnRhcmdldCkpIGNvbnRlbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO1xuXHQgICAgICB9KTtcblx0ICAgIH0pLm9uQmx1cihmdW5jdGlvbiAoZSkge1xuXHQgICAgICAkZHJvcGRvd24uZWFjaChmdW5jdGlvbiAoY29udGVudCkge1xuXHQgICAgICAgIGlmICghY29udGVudC5jb250YWlucyhlLnRhcmdldCkpIGNvbnRlbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO1xuXHQgICAgICB9KTtcblx0ICAgIH0pO1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy4kZWwpLm9uKCdjbGljayB0b3VjaHN0YXJ0JywgJ2xpOm5vdCguZHJvcGRvd24pPmEnLCBmdW5jdGlvbiAoZSkge1xuXHQgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBfdGhpcy5jb2xsYXBzZWQgPSB0cnVlO1xuXHQgICAgICB9LCAyMDApO1xuXHQgICAgfSkub25CbHVyKGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIGlmICghX3RoaXMuJGVsLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuXHQgICAgICAgIF90aGlzLmNvbGxhcHNlZCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgdmFyIGhlaWdodCA9IHRoaXMuJGVsLm9mZnNldEhlaWdodDtcblx0ICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gJ3RvcCcpIHtcblx0ICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nVG9wID0gaGVpZ2h0ICsgJ3B4Jztcblx0ICAgIH1cblx0ICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcblx0ICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tID0gaGVpZ2h0ICsgJ3B4Jztcblx0ICAgIH1cblx0ICAgIGlmICh0aGlzLnNsb3RzLmNvbGxhcHNlKSAoMCwgX05vZGVMaXN0Mi5kZWZhdWx0KSgnW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl0nLCB0aGlzLiRlbCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgcmV0dXJuIF90aGlzLnRvZ2dsZUNvbGxhcHNlKGUpO1xuXHQgICAgfSk7XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkoJy5kcm9wZG93bicsIHRoaXMuJGVsKS5vZmYoJ2NsaWNrJykub2ZmQmx1cigpO1xuXHQgICAgaWYgKHRoaXMuc2xvdHMuY29sbGFwc2UpICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKCdbZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXScsIHRoaXMuJGVsKS5vZmYoJ2NsaWNrJyk7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8bmF2IHYtZWw6bmF2YmFyIDpjbGFzcz1cIlsnbmF2YmFyJyx7XG5cdFxuXHQvLyAgICAgJ25hdmJhci1pbnZlcnNlJzoodHlwZSA9PSAnaW52ZXJzZScpLFxuXHRcblx0Ly8gICAgICduYXZiYXItZGVmYXVsdCc6KHR5cGUgPT0gJ2RlZmF1bHQnKSxcblx0XG5cdC8vICAgICAnbmF2YmFyLWZpeGVkLXRvcCc6KHBsYWNlbWVudCA9PT0gJ3RvcCcpLFxuXHRcblx0Ly8gICAgICduYXZiYXItZml4ZWQtYm90dG9tJzoocGxhY2VtZW50ID09PSAnYm90dG9tJyksXG5cdFxuXHQvLyAgICAgJ25hdmJhci1zdGF0aWMtdG9wJzoocGxhY2VtZW50ID09PSAnc3RhdGljJylcblx0XG5cdC8vICAgfV1cIj5cblx0XG5cdC8vICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG5cdFxuXHQvLyAgICAgICA8ZGl2IGNsYXNzPVwibmF2YmFyLWhlYWRlclwiPlxuXHRcblx0Ly8gICAgICAgICA8YnV0dG9uIHYtaWY9XCIhc2xvdHMuY29sbGFwc2VcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJuYXZiYXItdG9nZ2xlIGNvbGxhcHNlZFwiICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBAY2xpY2s9XCJ0b2dnbGVDb2xsYXBzZVwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1iYXJcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWJhclwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tYmFyXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICA8L2J1dHRvbj5cblx0XG5cdC8vICAgICAgICAgPHNsb3QgbmFtZT1cImNvbGxhcHNlXCI+PC9zbG90PlxuXHRcblx0Ly8gICAgICAgICA8c2xvdCBuYW1lPVwiYnJhbmRcIj48L3Nsb3Q+XG5cdFxuXHQvLyAgICAgICA8L2Rpdj5cblx0XG5cdC8vICAgICAgIDxkaXYgOmNsYXNzPVwiWyduYXZiYXItY29sbGFwc2UnLHtjb2xsYXBzZTpjb2xsYXBzZWR9XVwiPlxuXHRcblx0Ly8gICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdlwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICAgICAgPC91bD5cblx0XG5cdC8vICAgICAgICAgPHVsIHYtaWY9XCJzbG90cy5yaWdodFwiIGNsYXNzPVwibmF2IG5hdmJhci1uYXYgbmF2YmFyLXJpZ2h0XCI+XG5cdFxuXHQvLyAgICAgICAgICAgPHNsb3QgbmFtZT1cInJpZ2h0XCI+PC9zbG90PlxuXHRcblx0Ly8gICAgICAgICA8L3VsPlxuXHRcblx0Ly8gICAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgPC9kaXY+XG5cdFxuXHQvLyAgIDwvbmF2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXG4vKioqLyB9LFxuLyogMTUxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPG5hdiB2LWVsOm5hdmJhciA6Y2xhc3M9XFxcIlsnbmF2YmFyJyx7XFxyXFxuICAgICduYXZiYXItaW52ZXJzZSc6KHR5cGUgPT0gJ2ludmVyc2UnKSxcXHJcXG4gICAgJ25hdmJhci1kZWZhdWx0JzoodHlwZSA9PSAnZGVmYXVsdCcpLFxcclxcbiAgICAnbmF2YmFyLWZpeGVkLXRvcCc6KHBsYWNlbWVudCA9PT0gJ3RvcCcpLFxcclxcbiAgICAnbmF2YmFyLWZpeGVkLWJvdHRvbSc6KHBsYWNlbWVudCA9PT0gJ2JvdHRvbScpLFxcclxcbiAgICAnbmF2YmFyLXN0YXRpYy10b3AnOihwbGFjZW1lbnQgPT09ICdzdGF0aWMnKVxcclxcbiAgfV1cXFwiPlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJjb250YWluZXItZmx1aWRcXFwiPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm5hdmJhci1oZWFkZXJcXFwiPlxcclxcbiAgICAgICAgPGJ1dHRvbiB2LWlmPVxcXCIhc2xvdHMuY29sbGFwc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgY2xhc3M9XFxcIm5hdmJhci10b2dnbGUgY29sbGFwc2VkXFxcIiAgYXJpYS1leHBhbmRlZD1cXFwiZmFsc2VcXFwiIEBjbGljaz1cXFwidG9nZ2xlQ29sbGFwc2VcXFwiPlxcclxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic3Itb25seVxcXCI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+XFxyXFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpY29uLWJhclxcXCI+PC9zcGFuPlxcclxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaWNvbi1iYXJcXFwiPjwvc3Bhbj5cXHJcXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImljb24tYmFyXFxcIj48L3NwYW4+XFxyXFxuICAgICAgICA8L2J1dHRvbj5cXHJcXG4gICAgICAgIDxzbG90IG5hbWU9XFxcImNvbGxhcHNlXFxcIj48L3Nsb3Q+XFxyXFxuICAgICAgICA8c2xvdCBuYW1lPVxcXCJicmFuZFxcXCI+PC9zbG90PlxcclxcbiAgICAgIDwvZGl2PlxcclxcbiAgICAgIDxkaXYgOmNsYXNzPVxcXCJbJ25hdmJhci1jb2xsYXBzZScse2NvbGxhcHNlOmNvbGxhcHNlZH1dXFxcIj5cXHJcXG4gICAgICAgIDx1bCBjbGFzcz1cXFwibmF2IG5hdmJhci1uYXZcXFwiPlxcclxcbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XFxyXFxuICAgICAgICA8L3VsPlxcclxcbiAgICAgICAgPHVsIHYtaWY9XFxcInNsb3RzLnJpZ2h0XFxcIiBjbGFzcz1cXFwibmF2IG5hdmJhci1uYXYgbmF2YmFyLXJpZ2h0XFxcIj5cXHJcXG4gICAgICAgICAgPHNsb3QgbmFtZT1cXFwicmlnaHRcXFwiPjwvc2xvdD5cXHJcXG4gICAgICAgIDwvdWw+XFxyXFxuICAgICAgPC9kaXY+XFxyXFxuICAgIDwvZGl2PlxcclxcbiAgPC9uYXY+XCI7XG5cbi8qKiovIH0sXG4vKiAxNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTMpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTQpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9PcHRpb24udnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09wdGlvbi52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL09wdGlvbi52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vT3B0aW9uLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL09wdGlvbi52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMTUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0Ly8gPHRlbXBsYXRlPjxsaSB2LWVsOnYgdi1pZj1cImxvYWRpbmdcIj48c2xvdD48L3Nsb3Q+PC9saT48L3RlbXBsYXRlPlxuXHRcblx0Ly8gPHNjcmlwdD5cblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7IHZhbHVlOiBudWxsIH0sXG5cdCAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcblx0ICAgIHJldHVybiB7IGxvYWRpbmc6IHRydWUgfTtcblx0ICB9LFxuXHQgIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHtcblx0ICAgIGlmICh0aGlzLiRwYXJlbnQuX3NlbGVjdCkge1xuXHQgICAgICBpZiAoIXRoaXMuJHBhcmVudC5vcHRpb25zKSB7XG5cdCAgICAgICAgdGhpcy4kcGFyZW50Lm9wdGlvbnMgPSBbXTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgZWwgPSB7fTtcblx0ICAgICAgZWxbdGhpcy4kcGFyZW50Lm9wdGlvbnNMYWJlbF0gPSB0aGlzLiRlbHMudi5pbm5lckhUTUw7XG5cdCAgICAgIGVsW3RoaXMuJHBhcmVudC5vcHRpb25zVmFsdWVdID0gdGhpcy52YWx1ZTtcblx0ICAgICAgdGhpcy4kcGFyZW50Lm9wdGlvbnMucHVzaChlbCk7XG5cdCAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgY29uc29sZS53YXJuKCdvcHRpb25zIG9ubHkgd29yayBpbnNpZGUgYSBzZWxlY3QgY29tcG9uZW50Jyk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDE1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxsaSB2LWVsOnYgdi1pZj1cXFwibG9hZGluZ1xcXCI+PHNsb3Q+PC9zbG90PjwvbGk+XCI7XG5cbi8qKiovIH0sXG4vKiAxNTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTU2KVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTU4KVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vUGFuZWwudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1BhbmVsLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vUGFuZWwudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1BhbmVsLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1BhbmVsLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Nyk7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0xZWRjNzJjOSZmaWxlPVBhbmVsLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9QYW5lbC52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0xZWRjNzJjOSZmaWxlPVBhbmVsLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9QYW5lbC52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxNTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5hY2NvcmRpb24tdG9nZ2xlIHtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG59XFxyXFxuLmNvbGxhcHNlLXRyYW5zaXRpb24ge1xcclxcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IC41cyBlYXNlO1xcclxcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuNXMgZWFzZTtcXHJcXG59XFxyXFxuLmNvbGxhcHNlLWVudGVyLCAuY29sbGFwc2UtbGVhdmUge1xcclxcbiAgbWF4LWhlaWdodDogMCFpbXBvcnRhbnQ7XFxyXFxufVwiLCBcIlwiXSk7XG5cdFxuXHQvLyBleHBvcnRzXG5cblxuLyoqKi8gfSxcbi8qIDE1OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIGhlYWRlcjoge1xuXHQgICAgICB0eXBlOiBTdHJpbmdcblx0ICAgIH0sXG5cdCAgICBpc09wZW46IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0eXBlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfVxuXHQgIH0sXG5cdCAgY29tcHV0ZWQ6IHtcblx0ICAgIGluQWNjb3JkaW9uOiBmdW5jdGlvbiBpbkFjY29yZGlvbigpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQuX2lzQWNjb3JkaW9uO1xuXHQgICAgfSxcblx0ICAgIHBhbmVsVHlwZTogZnVuY3Rpb24gcGFuZWxUeXBlKCkge1xuXHQgICAgICByZXR1cm4gJ3BhbmVsIHBhbmVsLScgKyAodGhpcy50eXBlIHx8IHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQudHlwZSB8fCAnZGVmYXVsdCcpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgbWV0aG9kczoge1xuXHQgICAgdG9nZ2xlOiBmdW5jdGlvbiB0b2dnbGUoKSB7XG5cdCAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuXHQgICAgICB0aGlzLiRkaXNwYXRjaCgnaXNPcGVuRXZlbnQnLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LFxuXHQgIHRyYW5zaXRpb25zOiB7XG5cdCAgICBjb2xsYXBzZToge1xuXHQgICAgICBhZnRlckVudGVyOiBmdW5jdGlvbiBhZnRlckVudGVyKGVsKSB7XG5cdCAgICAgICAgZWwuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XG5cdCAgICAgICAgZWwuc3R5bGUub3ZlcmZsb3cgPSAnJztcblx0ICAgICAgfSxcblx0ICAgICAgYmVmb3JlTGVhdmU6IGZ1bmN0aW9uIGJlZm9yZUxlYXZlKGVsKSB7XG5cdCAgICAgICAgZWwuc3R5bGUubWF4SGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0ICsgJ3B4Jztcblx0ICAgICAgICBlbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuXHQgICAgICAgIC8vIFJlY2FsY3VsYXRlIERPTSBiZWZvcmUgdGhlIGNsYXNzIGdldHMgYWRkZWQuXG5cdCAgICAgICAgcmV0dXJuIGVsLm9mZnNldEhlaWdodDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIGlmICh0aGlzLmlzT3BlbiA9PT0gbnVsbCkge1xuXHQgICAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmluQWNjb3JkaW9uO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdFxuXHRcblx0Ly8gPHN0eWxlPlxuXHRcblx0Ly8gLmFjY29yZGlvbi10b2dnbGUge1xuXHRcblx0Ly8gICBjdXJzb3I6IHBvaW50ZXI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuY29sbGFwc2UtdHJhbnNpdGlvbiB7XG5cdFxuXHQvLyAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgLjVzIGVhc2U7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuY29sbGFwc2UtZW50ZXIsIC5jb2xsYXBzZS1sZWF2ZSB7XG5cdFxuXHQvLyAgIG1heC1oZWlnaHQ6IDAhaW1wb3J0YW50O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2IDpjbGFzcz1cInBhbmVsVHlwZVwiPlxuXHRcblx0Ly8gICAgIDxkaXYgOmNsYXNzPVwiWydwYW5lbC1oZWFkaW5nJyx7J2FjY29yZGlvbi10b2dnbGUnOmluQWNjb3JkaW9ufV1cIiBAY2xpY2sucHJldmVudD1cImluQWNjb3JkaW9uJiZ0b2dnbGUoKVwiPlxuXHRcblx0Ly8gICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiPlxuXHRcblx0Ly8gICAgICAgICA8aDQgY2xhc3M9XCJwYW5lbC10aXRsZVwiPnt7IGhlYWRlciB9fTwvaDQ+XG5cdFxuXHQvLyAgICAgICA8L3Nsb3Q+XG5cdFxuXHQvLyAgICAgPC9kaXY+XG5cdFxuXHQvLyAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWNvbGxhcHNlXCJcblx0XG5cdC8vICAgICAgIHYtZWw6cGFuZWxcblx0XG5cdC8vICAgICAgIHYtc2hvdz1cImlzT3BlblwiXG5cdFxuXHQvLyAgICAgICB0cmFuc2l0aW9uPVwiY29sbGFwc2VcIlxuXHRcblx0Ly8gICAgID5cblx0XG5cdC8vICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgIDwvZGl2PlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDE1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgOmNsYXNzPVxcXCJwYW5lbFR5cGVcXFwiPlxcclxcbiAgICA8ZGl2IDpjbGFzcz1cXFwiWydwYW5lbC1oZWFkaW5nJyx7J2FjY29yZGlvbi10b2dnbGUnOmluQWNjb3JkaW9ufV1cXFwiIEBjbGljay5wcmV2ZW50PVxcXCJpbkFjY29yZGlvbiYmdG9nZ2xlKClcXFwiPlxcclxcbiAgICAgIDxzbG90IG5hbWU9XFxcImhlYWRlclxcXCI+XFxyXFxuICAgICAgICA8aDQgY2xhc3M9XFxcInBhbmVsLXRpdGxlXFxcIj57eyBoZWFkZXIgfX08L2g0PlxcclxcbiAgICAgIDwvc2xvdD5cXHJcXG4gICAgPC9kaXY+XFxyXFxuICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWNvbGxhcHNlXFxcIlxcclxcbiAgICAgIHYtZWw6cGFuZWxcXHJcXG4gICAgICB2LXNob3c9XFxcImlzT3BlblxcXCJcXHJcXG4gICAgICB0cmFuc2l0aW9uPVxcXCJjb2xsYXBzZVxcXCJcXHJcXG4gICAgPlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcclxcbiAgICAgICAgPHNsb3Q+PC9zbG90PlxcclxcbiAgICAgIDwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG4gIDwvZGl2PlwiO1xuXG4vKioqLyB9LFxuLyogMTYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MSlcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Mylcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NSlcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1BvcG92ZXIudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1BvcG92ZXIudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Qb3BvdmVyLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Qb3BvdmVyLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1BvcG92ZXIudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDE2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYyKTtcblx0aWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cdC8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cblx0dmFyIHVwZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKShjb250ZW50LCB7fSk7XG5cdGlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXHQvLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5cdGlmKGZhbHNlKSB7XG5cdFx0Ly8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTQ5Mzc5MGFjJmZpbGU9UG9wb3Zlci52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vUG9wb3Zlci52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi00OTM3OTBhYyZmaWxlPVBvcG92ZXIudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL1BvcG92ZXIudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIucG9wb3Zlci50b3AsXFxyXFxuLnBvcG92ZXIubGVmdCxcXHJcXG4ucG9wb3Zlci5yaWdodCxcXHJcXG4ucG9wb3Zlci5ib3R0b20ge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxufVxcclxcbi5zY2FsZS1lbnRlciB7XFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjpzY2FsZS1pbiAwLjE1cyBlYXNlLWluO1xcclxcbiAgICAgICAgICBhbmltYXRpb246c2NhbGUtaW4gMC4xNXMgZWFzZS1pbjtcXHJcXG59XFxyXFxuLnNjYWxlLWxlYXZlIHtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOnNjYWxlLW91dCAwLjE1cyBlYXNlLW91dDtcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uOnNjYWxlLW91dCAwLjE1cyBlYXNlLW91dDtcXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNjYWxlLWluIHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICB9XFxyXFxufVxcclxcbkBrZXlmcmFtZXMgc2NhbGUtaW4ge1xcclxcbiAgMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXHJcXG4gICAgb3BhY2l0eTogMTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNjYWxlLW91dCB7XFxyXFxuICAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIHNjYWxlLW91dCB7XFxyXFxuICAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAxNjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9wb3BvdmVyTWl4aW5zID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpO1xuXHRcblx0dmFyIF9wb3BvdmVyTWl4aW5zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvcG92ZXJNaXhpbnMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBtaXhpbnM6IFtfcG9wb3Zlck1peGluczIuZGVmYXVsdF0sXG5cdCAgcHJvcHM6IHtcblx0ICAgIHRyaWdnZXI6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAnY2xpY2snXG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGU+XG5cdFxuXHQvLyAucG9wb3Zlci50b3AsXG5cdFxuXHQvLyAucG9wb3Zlci5sZWZ0LFxuXHRcblx0Ly8gLnBvcG92ZXIucmlnaHQsXG5cdFxuXHQvLyAucG9wb3Zlci5ib3R0b20ge1xuXHRcblx0Ly8gICBkaXNwbGF5OiBibG9jaztcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5zY2FsZS1lbnRlciB7XG5cdFxuXHQvLyAgIGFuaW1hdGlvbjpzY2FsZS1pbiAwLjE1cyBlYXNlLWluO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnNjYWxlLWxlYXZlIHtcblx0XG5cdC8vICAgYW5pbWF0aW9uOnNjYWxlLW91dCAwLjE1cyBlYXNlLW91dDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIEBrZXlmcmFtZXMgc2NhbGUtaW4ge1xuXHRcblx0Ly8gICAwJSB7XG5cdFxuXHQvLyAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAwO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyAgIDEwMCUge1xuXHRcblx0Ly8gICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMTtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gQGtleWZyYW1lcyBzY2FsZS1vdXQge1xuXHRcblx0Ly8gICAwJSB7XG5cdFxuXHQvLyAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAxO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyAgIDEwMCUge1xuXHRcblx0Ly8gICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMDtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8c3BhbiB2LWVsOnRyaWdnZXI+XG5cdFxuXHQvLyAgICAgPHNsb3Q+PC9zbG90PlxuXHRcblx0Ly8gICAgIDxkaXYgdi1lbDpwb3BvdmVyIHYtaWY9XCJzaG93XCJcblx0XG5cdC8vICAgICAgIDpjbGFzcz1cIlsncG9wb3ZlcicscGxhY2VtZW50XVwiXG5cdFxuXHQvLyAgICAgICA6dHJhbnNpdGlvbj1cImVmZmVjdFwiXG5cdFxuXHQvLyAgICAgPlxuXHRcblx0Ly8gICAgICAgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG5cdFxuXHQvLyAgICAgICA8aDMgY2xhc3M9XCJwb3BvdmVyLXRpdGxlXCIgdi1pZj1cInRpdGxlXCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90IG5hbWU9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvc2xvdD5cblx0XG5cdC8vICAgICAgIDwvaDM+XG5cdFxuXHQvLyAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci1jb250ZW50XCI+XG5cdFxuXHQvLyAgICAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50XCI+e3t7Y29udGVudH19fTwvc2xvdD5cblx0XG5cdC8vICAgICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgIDwvZGl2PlxuXHRcblx0Ly8gICA8L3NwYW4+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cbi8qKiovIH0sXG4vKiAxNjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIF9Ob2RlTGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ob2RlTGlzdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICB0cmlnZ2VyOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfSxcblx0ICAgIGVmZmVjdDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICdmYWRlJ1xuXHQgICAgfSxcblx0ICAgIHRpdGxlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfSxcblx0ICAgIGNvbnRlbnQ6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9LFxuXHQgICAgaGVhZGVyOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgcGxhY2VtZW50OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ3RvcCdcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBwb3NpdGlvbjoge1xuXHQgICAgICAgIHRvcDogMCxcblx0ICAgICAgICBsZWZ0OiAwXG5cdCAgICAgIH0sXG5cdCAgICAgIHNob3c6IGZhbHNlXG5cdCAgICB9O1xuXHQgIH0sXG5cdFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIHRvZ2dsZTogZnVuY3Rpb24gdG9nZ2xlKGUpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIGlmIChlICYmIHRoaXMudHJpZ2dlciA9PT0gJ2NvbnRleHRtZW51JykgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHQgICAgICBpZiAoISh0aGlzLnNob3cgPSAhdGhpcy5zaG93KSkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgcG9wb3ZlciA9IF90aGlzLiRlbHMucG9wb3Zlcjtcblx0ICAgICAgICB2YXIgdHJpZ2dlciA9IF90aGlzLiRlbHMudHJpZ2dlci5jaGlsZHJlblswXTtcblx0ICAgICAgICBzd2l0Y2ggKF90aGlzLnBsYWNlbWVudCkge1xuXHQgICAgICAgICAgY2FzZSAndG9wJzpcblx0ICAgICAgICAgICAgX3RoaXMucG9zaXRpb24ubGVmdCA9IHRyaWdnZXIub2Zmc2V0TGVmdCAtIHBvcG92ZXIub2Zmc2V0V2lkdGggLyAyICsgdHJpZ2dlci5vZmZzZXRXaWR0aCAvIDI7XG5cdCAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uLnRvcCA9IHRyaWdnZXIub2Zmc2V0VG9wIC0gcG9wb3Zlci5vZmZzZXRIZWlnaHQ7XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgY2FzZSAnbGVmdCc6XG5cdCAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uLmxlZnQgPSB0cmlnZ2VyLm9mZnNldExlZnQgLSBwb3BvdmVyLm9mZnNldFdpZHRoO1xuXHQgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbi50b3AgPSB0cmlnZ2VyLm9mZnNldFRvcCArIHRyaWdnZXIub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcG92ZXIub2Zmc2V0SGVpZ2h0IC8gMjtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICBjYXNlICdyaWdodCc6XG5cdCAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uLmxlZnQgPSB0cmlnZ2VyLm9mZnNldExlZnQgKyB0cmlnZ2VyLm9mZnNldFdpZHRoO1xuXHQgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbi50b3AgPSB0cmlnZ2VyLm9mZnNldFRvcCArIHRyaWdnZXIub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcG92ZXIub2Zmc2V0SGVpZ2h0IC8gMjtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICBjYXNlICdib3R0b20nOlxuXHQgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbi5sZWZ0ID0gdHJpZ2dlci5vZmZzZXRMZWZ0IC0gcG9wb3Zlci5vZmZzZXRXaWR0aCAvIDIgKyB0cmlnZ2VyLm9mZnNldFdpZHRoIC8gMjtcblx0ICAgICAgICAgICAgX3RoaXMucG9zaXRpb24udG9wID0gdHJpZ2dlci5vZmZzZXRUb3AgKyB0cmlnZ2VyLm9mZnNldEhlaWdodDtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dyb25nIHBsYWNlbWVudCBwcm9wJyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gX3RoaXMucG9zaXRpb24udG9wICsgJ3B4Jztcblx0ICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBfdGhpcy5wb3NpdGlvbi5sZWZ0ICsgJ3B4Jztcblx0ICAgICAgfSwgMCk7XG5cdCAgICB9XG5cdCAgfSxcblx0ICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7XG5cdCAgICB2YXIgdHJpZ2dlciA9IHRoaXMuJGVscy50cmlnZ2VyO1xuXHQgICAgaWYgKCF0cmlnZ2VyKSByZXR1cm4gY29uc29sZS5lcnJvcignQ291bGQgbm90IGZpbmQgdHJpZ2dlciB2LWVsIGluIHlvdXIgY29tcG9uZW50IHRoYXQgdXNlcyBwb3BvdmVyTWl4aW4uJyk7XG5cdFxuXHQgICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2ZvY3VzJyAmJiAhfnRyaWdnZXIudGFiSW5kZXgpIHtcblx0ICAgICAgdHJpZ2dlciA9ICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKCdhLGlucHV0LHNlbGVjdCx0ZXh0YXJlYSxidXR0b24nLCB0cmlnZ2VyKTtcblx0ICAgICAgaWYgKCF0cmlnZ2VyLmxlbmd0aCkge1xuXHQgICAgICAgIHRyaWdnZXIgPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAodHJpZ2dlcikge1xuXHQgICAgICB2YXIgZXZlbnRzID0geyBjb250ZXh0bWVudTogJ2NvbnRleHRtZW51JywgaG92ZXI6ICdtb3VzZWxlYXZlIG1vdXNlZW50ZXInLCBmb2N1czogJ2JsdXIgZm9jdXMnIH07XG5cdCAgICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRyaWdnZXIpLm9uKGV2ZW50c1t0aGlzLnRyaWdnZXJdIHx8ICdjbGljaycsIHRoaXMudG9nZ2xlKTtcblx0ICAgICAgdGhpcy5fdHJpZ2dlciA9IHRyaWdnZXI7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgaWYgKHRoaXMuX3RyaWdnZXIpICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRoaXMuX3RyaWdnZXIpLm9mZigpO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDE2NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxzcGFuIHYtZWw6dHJpZ2dlcj5cXHJcXG4gICAgPHNsb3Q+PC9zbG90PlxcclxcbiAgICA8ZGl2IHYtZWw6cG9wb3ZlciB2LWlmPVxcXCJzaG93XFxcIlxcclxcbiAgICAgIDpjbGFzcz1cXFwiWydwb3BvdmVyJyxwbGFjZW1lbnRdXFxcIlxcclxcbiAgICAgIDp0cmFuc2l0aW9uPVxcXCJlZmZlY3RcXFwiXFxyXFxuICAgID5cXHJcXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJhcnJvd1xcXCI+PC9kaXY+XFxyXFxuICAgICAgPGgzIGNsYXNzPVxcXCJwb3BvdmVyLXRpdGxlXFxcIiB2LWlmPVxcXCJ0aXRsZVxcXCI+XFxyXFxuICAgICAgICA8c2xvdCBuYW1lPVxcXCJ0aXRsZVxcXCI+e3t0aXRsZX19PC9zbG90PlxcclxcbiAgICAgIDwvaDM+XFxyXFxuICAgICAgPGRpdiBjbGFzcz1cXFwicG9wb3Zlci1jb250ZW50XFxcIj5cXHJcXG4gICAgICAgIDxzbG90IG5hbWU9XFxcImNvbnRlbnRcXFwiPnt7e2NvbnRlbnR9fX08L3Nsb3Q+XFxyXFxuICAgICAgPC9kaXY+XFxyXFxuICAgIDwvZGl2PlxcclxcbiAgPC9zcGFuPlwiO1xuXG4vKioqLyB9LFxuLyogMTY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTY3KVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTY4KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vUHJvZ3Jlc3NiYXIudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1Byb2dyZXNzYmFyLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vUHJvZ3Jlc3NiYXIudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1Byb2dyZXNzYmFyLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1Byb2dyZXNzYmFyLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICBub3c6IHtcblx0ICAgICAgdHlwZTogTnVtYmVyLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UubnVtYmVyLFxuXHQgICAgICByZXF1aXJlZDogdHJ1ZVxuXHQgICAgfSxcblx0ICAgIGxhYmVsOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIHR5cGU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9LFxuXHQgICAgc3RyaXBlZDoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBhbmltYXRlZDoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxkaXYgcm9sZT1cInByb2dyZXNzYmFyXCIgXG5cdFxuXHQvLyAgICAgOmNsYXNzPVwiWydwcm9ncmVzcy1iYXInLHtcblx0XG5cdC8vICAgICAgICdwcm9ncmVzcy1iYXItc3VjY2Vzcyc6dHlwZSA9PSAnc3VjY2VzcycsXG5cdFxuXHQvLyAgICAgICAncHJvZ3Jlc3MtYmFyLXdhcm5pbmcnOnR5cGUgPT0gJ3dhcm5pbmcnLFxuXHRcblx0Ly8gICAgICAgJ3Byb2dyZXNzLWJhci1pbmZvJzp0eXBlID09ICdpbmZvJyxcblx0XG5cdC8vICAgICAgICdwcm9ncmVzcy1iYXItZGFuZ2VyJzp0eXBlID09ICdkYW5nZXInLFxuXHRcblx0Ly8gICAgICAgJ3Byb2dyZXNzLWJhci1zdHJpcGVkJzpzdHJpcGVkLFxuXHRcblx0Ly8gICAgICAgJ2FjdGl2ZSc6YW5pbWF0ZWRcblx0XG5cdC8vICAgICB9XVwiXG5cdFxuXHQvLyAgICAgOnN0eWxlPVwie3dpZHRoOiBub3cgKyAnJSd9XCJcblx0XG5cdC8vICAgPlxuXHRcblx0Ly8gICAgIHt7bGFiZWwgPyBub3cgKyAnJScgOiAnJ319XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXG4vKioqLyB9LFxuLyogMTY4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiByb2xlPVxcXCJwcm9ncmVzc2JhclxcXCIgXFxyXFxuICAgIDpjbGFzcz1cXFwiWydwcm9ncmVzcy1iYXInLHtcXHJcXG4gICAgICAncHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MnOnR5cGUgPT0gJ3N1Y2Nlc3MnLFxcclxcbiAgICAgICdwcm9ncmVzcy1iYXItd2FybmluZyc6dHlwZSA9PSAnd2FybmluZycsXFxyXFxuICAgICAgJ3Byb2dyZXNzLWJhci1pbmZvJzp0eXBlID09ICdpbmZvJyxcXHJcXG4gICAgICAncHJvZ3Jlc3MtYmFyLWRhbmdlcic6dHlwZSA9PSAnZGFuZ2VyJyxcXHJcXG4gICAgICAncHJvZ3Jlc3MtYmFyLXN0cmlwZWQnOnN0cmlwZWQsXFxyXFxuICAgICAgJ2FjdGl2ZSc6YW5pbWF0ZWRcXHJcXG4gICAgfV1cXFwiXFxyXFxuICAgIDpzdHlsZT1cXFwie3dpZHRoOiBub3cgKyAnJSd9XFxcIlxcclxcbiAgPlxcclxcbiAgICB7e2xhYmVsID8gbm93ICsgJyUnIDogJyd9fVxcclxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAxNjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTcwKVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcyKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTczKVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vUmFkaW8udnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1JhZGlvLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vUmFkaW8udnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1JhZGlvLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1JhZGlvLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MSk7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0zZDY0YTk0MCZmaWxlPVJhZGlvLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9SYWRpby52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0zZDY0YTk0MCZmaWxlPVJhZGlvLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9SYWRpby52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5yYWRpbyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxcclxcbi5yYWRpbyA+IGxhYmVsID4gaW5wdXQge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgbWFyZ2luOiAwO1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICB6LWluZGV4OiAtMTtcXHJcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxufVxcclxcbi5yYWRpbyA+IGxhYmVsID4gLmljb24ge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAuMTVyZW07XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aWR0aDogMS40cmVtO1xcclxcbiAgaGVpZ2h0OiAxLjRyZW07XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcclxcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXHJcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcclxcbiAgYm9yZGVyLXJhZGl1czogLjdyZW07XFxyXFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcclxcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcXHJcXG4gIGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTtcXHJcXG59XFxyXFxuLnJhZGlvOm5vdCguYWN0aXZlKSA+IGxhYmVsID4gLmljb24ge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7XFxyXFxufVxcclxcbi5yYWRpbyA+IGxhYmVsID4gaW5wdXQ6Zm9jdXMgfiAuaWNvbiB7XFxyXFxuICBvdXRsaW5lOiAwO1xcclxcbiAgYm9yZGVyOiAxcHggc29saWQgIzY2YWZlOTtcXHJcXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNik7XFxyXFxufVxcclxcbi5yYWRpby5hY3RpdmUgPiBsYWJlbCA+IC5pY29uIHtcXHJcXG4gIGJhY2tncm91bmQtc2l6ZTogMXJlbSAxcmVtO1xcclxcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0TkNqeHpkbWNnZG1WeWMybHZiajBpTVM0eElpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBqeGphWEpqYkdVZ1kzZzlJalVpSUdONVBTSTFJaUJ5UFNJMElpQm1hV3hzUFNJalptWm1JaTgrUEM5emRtYyspO1xcclxcbn1cXHJcXG4ucmFkaW8uYWN0aXZlIC5idG4tZGVmYXVsdCB7IC13ZWJraXQtZmlsdGVyOiBicmlnaHRuZXNzKDc1JSk7IGZpbHRlcjogYnJpZ2h0bmVzcyg3NSUpOyB9XFxyXFxuXFxyXFxuLnJhZGlvLmRpc2FibGVkID4gbGFiZWwgPiAuaWNvbixcXHJcXG4ucmFkaW8ucmVhZG9ubHkgPiBsYWJlbCA+IC5pY29uLFxcclxcbi5idG4ucmVhZG9ubHkge1xcclxcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTY1KTtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICBvcGFjaXR5OiAuNjU7XFxyXFxufVxcclxcbmxhYmVsLmJ0biA+IGlucHV0W3R5cGU9cmFkaW9dIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIGNsaXA6IHJlY3QoMCwwLDAsMCk7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMTcyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBwcm9wczoge1xuXHQgICAgdmFsdWU6IHtcblx0ICAgICAgZGVmYXVsdDogdHJ1ZVxuXHQgICAgfSxcblx0ICAgIGNoZWNrZWQ6IHtcblx0ICAgICAgdHdvV2F5OiB0cnVlXG5cdCAgICB9LFxuXHQgICAgYnV0dG9uOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGRpc2FibGVkOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIG5hbWU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9LFxuXHQgICAgcmVhZG9ubHk6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgdHlwZToge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH1cblx0ICB9LFxuXHQgIGNvbXB1dGVkOiB7XG5cdCAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZSgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB0aGlzLiRwYXJlbnQudmFsdWUgPT09IHRoaXMudmFsdWUgOiB0aGlzLnZhbHVlID09PSB0aGlzLmNoZWNrZWQ7XG5cdCAgICB9LFxuXHQgICAgYnV0dG9uU3R5bGU6IGZ1bmN0aW9uIGJ1dHRvblN0eWxlKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5idXR0b24gfHwgdGhpcy5ncm91cCAmJiB0aGlzLiRwYXJlbnQuYnV0dG9ucztcblx0ICAgIH0sXG5cdCAgICBncm91cDogZnVuY3Rpb24gZ3JvdXAoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50Ll9yYWRpb0dyb3VwO1xuXHQgICAgfSxcblx0ICAgIHR5cGVDb2xvcjogZnVuY3Rpb24gdHlwZUNvbG9yKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy50eXBlIHx8IHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQudHlwZSB8fCAnZGVmYXVsdCc7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuXHQgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcblx0ICAgIGlmICghcGFyZW50KSByZXR1cm47XG5cdCAgICBpZiAocGFyZW50Ll9idG5Hcm91cCAmJiAhcGFyZW50Ll9jaGVja2JveEdyb3VwKSB7XG5cdCAgICAgIHBhcmVudC5fcmFkaW9Hcm91cCA9IHRydWU7XG5cdCAgICB9XG5cdCAgfSxcblx0ICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7XG5cdCAgICBpZiAoIXRoaXMuJHBhcmVudC5fcmFkaW9Hcm91cCkgcmV0dXJuO1xuXHQgICAgaWYgKHRoaXMuJHBhcmVudC52YWx1ZSkge1xuXHQgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLiRwYXJlbnQudmFsdWUgPT09IHRoaXMudmFsdWU7XG5cdCAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tlZCkge1xuXHQgICAgICB0aGlzLiRwYXJlbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcblx0ICAgICAgdGhpcy4kZWxzLmlucHV0LmZvY3VzKCk7XG5cdCAgICB9LFxuXHQgICAgdG9nZ2xlOiBmdW5jdGlvbiB0b2dnbGUoKSB7XG5cdCAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMuZm9jdXMoKTtcblx0ICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy52YWx1ZTtcblx0ICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcblx0ICAgICAgICB0aGlzLiRwYXJlbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGUgc2NvcGU+XG5cdFxuXHQvLyAucmFkaW8geyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblx0XG5cdC8vIC5yYWRpbyA+IGxhYmVsID4gaW5wdXQge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFxuXHQvLyAgIG1hcmdpbjogMDtcblx0XG5cdC8vICAgcGFkZGluZzogMDtcblx0XG5cdC8vICAgb3BhY2l0eTogMDtcblx0XG5cdC8vICAgei1pbmRleDogLTE7XG5cdFxuXHQvLyAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAucmFkaW8gPiBsYWJlbCA+IC5pY29uIHtcblx0XG5cdC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcblx0Ly8gICB0b3A6IC4xNXJlbTtcblx0XG5cdC8vICAgbGVmdDogMDtcblx0XG5cdC8vICAgZGlzcGxheTogYmxvY2s7XG5cdFxuXHQvLyAgIHdpZHRoOiAxLjRyZW07XG5cdFxuXHQvLyAgIGhlaWdodDogMS40cmVtO1xuXHRcblx0Ly8gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFxuXHQvLyAgIHVzZXItc2VsZWN0OiBub25lO1xuXHRcblx0Ly8gICBib3JkZXItcmFkaXVzOiAuN3JlbTtcblx0XG5cdC8vICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XG5cdC8vICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0XG5cdC8vICAgYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnJhZGlvOm5vdCguYWN0aXZlKSA+IGxhYmVsID4gLmljb24ge1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuXHRcblx0Ly8gICBib3JkZXI6IDFweCBzb2xpZCAjYmJiO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnJhZGlvID4gbGFiZWwgPiBpbnB1dDpmb2N1cyB+IC5pY29uIHtcblx0XG5cdC8vICAgb3V0bGluZTogMDtcblx0XG5cdC8vICAgYm9yZGVyOiAxcHggc29saWQgIzY2YWZlOTtcblx0XG5cdC8vICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDhweCByZ2JhKDEwMiwxNzUsMjMzLC42KTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5yYWRpby5hY3RpdmUgPiBsYWJlbCA+IC5pY29uIHtcblx0XG5cdC8vICAgYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07XG5cdFxuXHQvLyAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NE5Danh6ZG1jZ2RtVnljMmx2YmowaU1TNHhJaUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lQanhqYVhKamJHVWdZM2c5SWpVaUlHTjVQU0kxSWlCeVBTSTBJaUJtYVd4c1BTSWpabVptSWk4K1BDOXpkbWMrKTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5yYWRpby5hY3RpdmUgLmJ0bi1kZWZhdWx0IHsgZmlsdGVyOiBicmlnaHRuZXNzKDc1JSk7IH1cblx0XG5cdFxuXHQvLyAucmFkaW8uZGlzYWJsZWQgPiBsYWJlbCA+IC5pY29uLFxuXHRcblx0Ly8gLnJhZGlvLnJlYWRvbmx5ID4gbGFiZWwgPiAuaWNvbixcblx0XG5cdC8vIC5idG4ucmVhZG9ubHkge1xuXHRcblx0Ly8gICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjUpO1xuXHRcblx0Ly8gICBib3gtc2hhZG93OiBub25lO1xuXHRcblx0Ly8gICBvcGFjaXR5OiAuNjU7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyBsYWJlbC5idG4gPiBpbnB1dFt0eXBlPXJhZGlvXSB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgY2xpcDogcmVjdCgwLDAsMCwwKTtcblx0XG5cdC8vICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyA8L3N0eWxlPlxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxsYWJlbCB2LWlmPVwiYnV0dG9uU3R5bGVcIiA6Y2xhc3M9XCJbJ2J0biBidG4tJyt0eXBlQ29sb3Ise2FjdGl2ZTphY3RpdmUsZGlzYWJsZWQ6ZGlzYWJsZWQscmVhZG9ubHk6cmVhZG9ubHl9XVwiIEBjbGljay5wcmV2ZW50PVwidG9nZ2xlXCI+XG5cdFxuXHQvLyAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFxuXHQvLyAgICAgICB2LWVsOmlucHV0XG5cdFxuXHQvLyAgICAgICB2LXNob3c9XCIhcmVhZG9ubHlcIlxuXHRcblx0Ly8gICAgICAgOmNoZWNrZWQ9XCJhY3RpdmVcIlxuXHRcblx0Ly8gICAgICAgOnZhbHVlPVwidmFsdWVcIlxuXHRcblx0Ly8gICAgICAgOm5hbWU9XCJuYW1lXCJcblx0XG5cdC8vICAgICAgIDpyZWFkb25seT1cInJlYWRvbmx5XCJcblx0XG5cdC8vICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XG5cdC8vICAgICAvPlxuXHRcblx0Ly8gICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgPC9sYWJlbD5cblx0XG5cdC8vICAgPGRpdiB2LWVsc2UgOmNsYXNzPVwiWydyYWRpbycsdHlwZUNvbG9yLHthY3RpdmU6YWN0aXZlLGRpc2FibGVkOmRpc2FibGVkLHJlYWRvbmx5OnJlYWRvbmx5fV1cIiBAY2xpY2sucHJldmVudD1cInRvZ2dsZVwiPlxuXHRcblx0Ly8gICAgIDxsYWJlbCBjbGFzcz1cIm9wZW5cIj5cblx0XG5cdC8vICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuXHRcblx0Ly8gICAgICAgICB2LWVsOmlucHV0XG5cdFxuXHQvLyAgICAgICAgIDpjaGVja2VkPVwiYWN0aXZlXCJcblx0XG5cdC8vICAgICAgICAgOnZhbHVlPVwidmFsdWVcIlxuXHRcblx0Ly8gICAgICAgICA6bmFtZT1cIm5hbWVcIlxuXHRcblx0Ly8gICAgICAgICA6cmVhZG9ubHk9XCJyZWFkb25seVwiXG5cdFxuXHQvLyAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XG5cdC8vICAgICAgIC8+XG5cdFxuXHQvLyAgICAgICA8c3BhbiBjbGFzcz1cImljb24gZHJvcGRvd24tdG9nZ2xlXCIgOmNsYXNzPVwiW2FjdGl2ZT8nYnRuLScrdHlwZUNvbG9yOicnLHtiZzp0eXBlQ29sb3I9PT0nZGVmYXVsdCd9XVwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgIDxzcGFuIHYtaWY9XCJhY3RpdmUmJnR5cGVDb2xvcj09PSdkZWZhdWx0J1wiIGNsYXNzPVwiaWNvblwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICA8L2xhYmVsPlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblxuLyoqKi8gfSxcbi8qIDE3MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxsYWJlbCB2LWlmPVxcXCJidXR0b25TdHlsZVxcXCIgOmNsYXNzPVxcXCJbJ2J0biBidG4tJyt0eXBlQ29sb3Ise2FjdGl2ZTphY3RpdmUsZGlzYWJsZWQ6ZGlzYWJsZWQscmVhZG9ubHk6cmVhZG9ubHl9XVxcXCIgQGNsaWNrLnByZXZlbnQ9XFxcInRvZ2dsZVxcXCI+XFxyXFxuICAgIDxpbnB1dCB0eXBlPVxcXCJyYWRpb1xcXCIgYXV0b2NvbXBsZXRlPVxcXCJvZmZcXFwiXFxyXFxuICAgICAgdi1lbDppbnB1dFxcclxcbiAgICAgIHYtc2hvdz1cXFwiIXJlYWRvbmx5XFxcIlxcclxcbiAgICAgIDpjaGVja2VkPVxcXCJhY3RpdmVcXFwiXFxyXFxuICAgICAgOnZhbHVlPVxcXCJ2YWx1ZVxcXCJcXHJcXG4gICAgICA6bmFtZT1cXFwibmFtZVxcXCJcXHJcXG4gICAgICA6cmVhZG9ubHk9XFxcInJlYWRvbmx5XFxcIlxcclxcbiAgICAgIDpkaXNhYmxlZD1cXFwiZGlzYWJsZWRcXFwiXFxyXFxuICAgIC8+XFxyXFxuICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gIDwvbGFiZWw+XFxyXFxuICA8ZGl2IHYtZWxzZSA6Y2xhc3M9XFxcIlsncmFkaW8nLHR5cGVDb2xvcix7YWN0aXZlOmFjdGl2ZSxkaXNhYmxlZDpkaXNhYmxlZCxyZWFkb25seTpyZWFkb25seX1dXFxcIiBAY2xpY2sucHJldmVudD1cXFwidG9nZ2xlXFxcIj5cXHJcXG4gICAgPGxhYmVsIGNsYXNzPVxcXCJvcGVuXFxcIj5cXHJcXG4gICAgICA8aW5wdXQgdHlwZT1cXFwicmFkaW9cXFwiIGF1dG9jb21wbGV0ZT1cXFwib2ZmXFxcIlxcclxcbiAgICAgICAgdi1lbDppbnB1dFxcclxcbiAgICAgICAgOmNoZWNrZWQ9XFxcImFjdGl2ZVxcXCJcXHJcXG4gICAgICAgIDp2YWx1ZT1cXFwidmFsdWVcXFwiXFxyXFxuICAgICAgICA6bmFtZT1cXFwibmFtZVxcXCJcXHJcXG4gICAgICAgIDpyZWFkb25seT1cXFwicmVhZG9ubHlcXFwiXFxyXFxuICAgICAgICA6ZGlzYWJsZWQ9XFxcImRpc2FibGVkXFxcIlxcclxcbiAgICAgIC8+XFxyXFxuICAgICAgPHNwYW4gY2xhc3M9XFxcImljb24gZHJvcGRvd24tdG9nZ2xlXFxcIiA6Y2xhc3M9XFxcIlthY3RpdmU/J2J0bi0nK3R5cGVDb2xvcjonJyx7Ymc6dHlwZUNvbG9yPT09J2RlZmF1bHQnfV1cXFwiPjwvc3Bhbj5cXHJcXG4gICAgICA8c3BhbiB2LWlmPVxcXCJhY3RpdmUmJnR5cGVDb2xvcj09PSdkZWZhdWx0J1xcXCIgY2xhc3M9XFxcImljb25cXFwiPjwvc3Bhbj5cXHJcXG4gICAgICA8c2xvdD48L3Nsb3Q+XFxyXFxuICAgIDwvbGFiZWw+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDE3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygxNzUpXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzcpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTMpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9TZWxlY3QudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1NlbGVjdC52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLXJld3JpdGVyLmpzP2lkPV92LTBmM2JiNzA3JmZpbGU9U2VsZWN0LnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9TZWxlY3QudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1NlbGVjdC52dWVcIilcblx0aWYgKG5ld09wdGlvbnMgJiYgbmV3T3B0aW9ucy5fX2VzTW9kdWxlKSBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5kZWZhdWx0XG5cdHZhciBuZXdUZW1wbGF0ZSA9IHJlcXVpcmUoXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1yZXdyaXRlci5qcz9pZD1fdi0wZjNiYjcwNyZmaWxlPVNlbGVjdC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vU2VsZWN0LnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Nik7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi0wZjNiYjcwNyZmaWxlPVNlbGVjdC52dWUmc2NvcGVkPXRydWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vU2VsZWN0LnZ1ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTBmM2JiNzA3JmZpbGU9U2VsZWN0LnZ1ZSZzY29wZWQ9dHJ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9TZWxlY3QudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJidXR0b24uZm9ybS1jb250cm9sLmRyb3Bkb3duLXRvZ2dsZVtfdi0wZjNiYjcwN117XFxyXFxuICBoZWlnaHQ6IGF1dG87XFxyXFxuICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xcclxcbn1cXHJcXG5idXR0b24uZm9ybS1jb250cm9sLmRyb3Bkb3duLXRvZ2dsZVtfdi0wZjNiYjcwN106YWZ0ZXJ7XFxyXFxuICBjb250ZW50OiAnICc7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICByaWdodDogMTNweDtcXHJcXG4gIHRvcDogNTAlO1xcclxcbiAgbWFyZ2luOiAtMXB4IDAgMDtcXHJcXG4gIGJvcmRlci10b3A6IDRweCBkYXNoZWQ7XFxyXFxuICBib3JkZXItdG9wOiA0cHggc29saWQgXFxcXDk7XFxyXFxuICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxufVxcclxcbi5icy1zZWFyY2hib3hbX3YtMGYzYmI3MDddIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIG1hcmdpbjogNHB4IDhweDtcXHJcXG59XFxyXFxuLmJzLXNlYXJjaGJveCAuY2xvc2VbX3YtMGYzYmI3MDddIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIHJpZ2h0OiAwO1xcclxcbiAgei1pbmRleDogMjtcXHJcXG4gIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgd2lkdGg6IDM0cHg7XFxyXFxuICBoZWlnaHQ6IDM0cHg7XFxyXFxuICBsaW5lLWhlaWdodDogMzRweDtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG59XFxyXFxuLmJzLXNlYXJjaGJveCBpbnB1dFtfdi0wZjNiYjcwN106Zm9jdXMsXFxyXFxuLnNlY3JldDpmb2N1cyArIGJ1dHRvbltfdi0wZjNiYjcwN10ge1xcclxcbiAgb3V0bGluZTogMDtcXHJcXG4gIGJvcmRlci1jb2xvcjogIzY2YWZlOSAhaW1wb3J0YW50O1xcclxcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDhweCByZ2JhKDEwMiwxNzUsMjMzLC42KTtcXHJcXG59XFxyXFxuLnNlY3JldFtfdi0wZjNiYjcwN10ge1xcclxcbiAgYm9yZGVyOiAwO1xcclxcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcXHJcXG4gIGhlaWdodDogMXB4O1xcclxcbiAgbWFyZ2luOiAtMXB4O1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIHBhZGRpbmc6IDA7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB3aWR0aDogMXB4O1xcclxcbn1cXHJcXG5idXR0b24+LmNsb3NlW192LTBmM2JiNzA3XSB7IG1hcmdpbi1sZWZ0OiA1cHg7fVxcclxcbi5ub3RpZnkub3V0W192LTBmM2JiNzA3XSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxcclxcbi5ub3RpZnkuaW5bX3YtMGYzYmI3MDddLFxcclxcbi5ub3RpZnk+ZGl2W192LTBmM2JiNzA3XSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB3aWR0aDogOTYlO1xcclxcbiAgbWFyZ2luOiAwIDIlO1xcclxcbiAgbWluLWhlaWdodDogMjZweDtcXHJcXG4gIHBhZGRpbmc6IDNweCA1cHg7XFxyXFxuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xcclxcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcXHJcXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSk7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG59XFxyXFxuLm5vdGlmeT5kaXZbX3YtMGYzYmI3MDddIHtcXHJcXG4gIHRvcDogNXB4O1xcclxcbiAgei1pbmRleDogMTtcXHJcXG59XFxyXFxuLm5vdGlmeS5pbltfdi0wZjNiYjcwN10ge1xcclxcbiAgb3BhY2l0eTogLjk7XFxyXFxuICBib3R0b206IDVweDtcXHJcXG59XFxyXFxuLmJ0bi1ncm91cC1qdXN0aWZpZWQgLmRyb3Bkb3duLXRvZ2dsZT5zcGFuW192LTBmM2JiNzA3XTpub3QoLmNsb3NlKSB7XFxyXFxuICB3aWR0aDogY2FsYygxMDAlIC0gMThweCk7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXHJcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcclxcbiAgbWFyZ2luLWJvdHRvbTogLTRweDtcXHJcXG59XFxyXFxuLmJ0bi1ncm91cC1qdXN0aWZpZWQgLmRyb3Bkb3duLW1lbnVbX3YtMGYzYmI3MDddIHsgd2lkdGg6IDEwMCU7IH1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAxNzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF90eXBlb2YyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzgpO1xuXHRcblx0dmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHR2YXIgX05vZGVMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgX05vZGVMaXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX05vZGVMaXN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxkaXYgdi1lbDpzZWxlY3QgOmNsYXNzPVwiY2xhc3Nlc1wiPlxuXHRcblx0Ly8gICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLXRvZ2dsZVwiXG5cdFxuXHQvLyAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZCB8fCAhaGFzUGFyZW50XCJcblx0XG5cdC8vICAgICAgIDpyZWFkb25seT1cInJlYWRvbmx5XCJcblx0XG5cdC8vICAgICAgIEBjbGljaz1cInRvZ2dsZSgpXCJcblx0XG5cdC8vICAgICAgIEBrZXl1cC5lc2M9XCJzaG93ID0gZmFsc2VcIlxuXHRcblx0Ly8gICAgID5cblx0XG5cdC8vICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWNvbnRlbnRcIiB2LWh0bWw9XCJsb2FkaW5nID8gdGV4dC5sb2FkaW5nIDogc2hvd1BsYWNlaG9sZGVyIHx8IHNlbGVjdGVkXCI+PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgPHNwYW4gdi1pZj1cImNsZWFyQnV0dG9uJiZ2YWx1ZXMubGVuZ3RoXCIgY2xhc3M9XCJjbG9zZVwiIEBjbGljaz1cImNsZWFyKClcIj4mdGltZXM7PC9zcGFuPlxuXHRcblx0Ly8gICAgIDwvYnV0dG9uPlxuXHRcblx0Ly8gICAgIDxzZWxlY3Qgdi1lbDpzZWwgdi1tb2RlbD1cInZhbHVlXCIgdi1zaG93PVwic2hvd1wiIG5hbWU9XCJ7e25hbWV9fVwiIGNsYXNzPVwic2VjcmV0XCIgOm11bHRpcGxlPVwibXVsdGlwbGVcIiA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiIDpyZWFkb25seT1cInJlYWRvbmx5XCIgOmRpc2FibGVkPVwiZGlzYWJsZWRcIj5cblx0XG5cdC8vICAgICAgIDxvcHRpb24gdi1pZj1cInJlcXVpcmVkXCIgdmFsdWU9XCJcIj48L29wdGlvbj5cblx0XG5cdC8vICAgICAgIDxvcHRpb24gdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiIDp2YWx1ZT1cIm9wdGlvbltvcHRpb25zVmFsdWVdfHxvcHRpb25cIj57eyBvcHRpb25bb3B0aW9uc0xhYmVsXXx8b3B0aW9uIH19PC9vcHRpb24+XG5cdFxuXHQvLyAgICAgPC9zZWxlY3Q+XG5cdFxuXHQvLyAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuXHRcblx0Ly8gICAgICAgPHRlbXBsYXRlIHYtaWY9XCJvcHRpb25zLmxlbmd0aFwiPlxuXHRcblx0Ly8gICAgICAgICA8bGkgdi1pZj1cImNhblNlYXJjaFwiIGNsYXNzPVwiYnMtc2VhcmNoYm94XCI+XG5cdFxuXHQvLyAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJ7e3NlYXJjaFRleHR8fHRleHQuc2VhcmNofX1cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFxuXHQvLyAgICAgICAgICAgICB2LWVsOnNlYXJjaFxuXHRcblx0Ly8gICAgICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFZhbHVlXCJcblx0XG5cdC8vICAgICAgICAgICAgIEBrZXl1cC5lc2M9XCJzaG93ID0gZmFsc2VcIlxuXHRcblx0Ly8gICAgICAgICAgIC8+XG5cdFxuXHQvLyAgICAgICAgICAgPHNwYW4gdi1zaG93PVwic2VhcmNoVmFsdWVcIiBjbGFzcz1cImNsb3NlXCIgQGNsaWNrPVwiY2xlYXJTZWFyY2hcIj4mdGltZXM7PC9zcGFuPlxuXHRcblx0Ly8gICAgICAgICA8L2xpPlxuXHRcblx0Ly8gICAgICAgICA8bGkgdi1pZj1cInJlcXVpcmVkJiYhY2xlYXJCdXR0b25cIj48YSBAbW91c2Vkb3duLnByZXZlbnQ9XCJjbGVhcigpICYmIGJsdXIoKVwiPnt7IHBsYWNlaG9sZGVyIHx8IHRleHQubm90U2VsZWN0ZWQgfX08L2E+PC9saT5cblx0XG5cdC8vICAgICAgICAgPGxpIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnMgfCBmaWx0ZXJCeSBzZWFyY2hWYWx1ZVwiIDppZD1cIm9wdGlvbltvcHRpb25zVmFsdWVdfHxvcHRpb25cIj5cblx0XG5cdC8vICAgICAgICAgICA8YSBAbW91c2Vkb3duLnByZXZlbnQ9XCJzZWxlY3Qob3B0aW9uW29wdGlvbnNWYWx1ZV0sb3B0aW9uKVwiPlxuXHRcblx0Ly8gICAgICAgICAgICAgPHNwYW4gdi1odG1sPVwib3B0aW9uW29wdGlvbnNMYWJlbF18fG9wdGlvblwiPjwvc3Bhbj5cblx0XG5cdC8vICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1vayBjaGVjay1tYXJrXCIgdi1zaG93PVwiaXNTZWxlY3RlZChvcHRpb25bb3B0aW9uc1ZhbHVlXSlcIj48L3NwYW4+XG5cdFxuXHQvLyAgICAgICAgICAgPC9hPlxuXHRcblx0Ly8gICAgICAgICA8L2xpPlxuXHRcblx0Ly8gICAgICAgPC90ZW1wbGF0ZT5cblx0XG5cdC8vICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICAgIDxkaXYgdi1pZj1cInNob3dOb3RpZnkgJiYgIWNsb3NlT25TZWxlY3RcIiBjbGFzcz1cIm5vdGlmeSBpblwiIHRyYW5zaXRpb249XCJmYWRlaW5cIj57e2xpbWl0VGV4dH19PC9kaXY+XG5cdFxuXHQvLyAgICAgPC91bD5cblx0XG5cdC8vICAgICA8ZGl2IHYtaWY9XCJzaG93Tm90aWZ5ICYmIGNsb3NlT25TZWxlY3RcIiBjbGFzcz1cIm5vdGlmeSBvdXRcIiB0cmFuc2l0aW9uPVwiZmFkZWluXCI+PGRpdj57e2xpbWl0VGV4dH19PC9kaXY+PC9kaXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHR2YXIgdGltZW91dCA9IHt9O1xuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHZhbHVlOiB7XG5cdCAgICAgIHR3b1dheTogdHJ1ZVxuXHQgICAgfSxcblx0ICAgIG9wdGlvbnM6IHtcblx0ICAgICAgdHlwZTogQXJyYXksXG5cdCAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuXHQgICAgICAgIHJldHVybiBbXTtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIG11bHRpcGxlOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGNsZWFyQnV0dG9uOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGNsb3NlT25TZWxlY3Q6IHsgLy8gb25seSB3b3JrcyB3aGVuIG11bHRpcGxlXG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGRpc2FibGVkOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBmYWxzZVxuXHQgICAgfSxcblx0ICAgIGxhbmc6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBuYXZpZ2F0b3IubGFuZ3VhZ2Vcblx0ICAgIH0sXG5cdCAgICBsaW1pdDoge1xuXHQgICAgICB0eXBlOiBOdW1iZXIsXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5udW1iZXIsXG5cdCAgICAgIGRlZmF1bHQ6IDEwMjRcblx0ICAgIH0sXG5cdCAgICBuYW1lOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIG9wdGlvbnNMYWJlbDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICdsYWJlbCdcblx0ICAgIH0sXG5cdCAgICBvcHRpb25zVmFsdWU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAndmFsdWUnXG5cdCAgICB9LFxuXHQgICAgcGFyZW50OiB7XG5cdCAgICAgIGRlZmF1bHQ6IHRydWVcblx0ICAgIH0sXG5cdCAgICBwbGFjZWhvbGRlcjoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICByZWFkb25seToge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogbnVsbFxuXHQgICAgfSxcblx0ICAgIHJlcXVpcmVkOiB7XG5cdCAgICAgIHR5cGU6IEJvb2xlYW4sXG5cdCAgICAgIGNvZXJjZTogX3V0aWxzLmNvZXJjZS5ib29sZWFuLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9LFxuXHQgICAgbWluU2VhcmNoOiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMFxuXHQgICAgfSxcblx0ICAgIHNlYXJjaDogeyAvLyBBbGxvdyBzZWFyY2hpbmcgKG9ubHkgd29ya3Mgd2hlbiBvcHRpb25zIGFyZSBwcm92aWRlZClcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgc2VhcmNoVGV4dDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB1cmw6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiBudWxsXG5cdCAgICB9XG5cdCAgfSxcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgbG9hZGluZzogbnVsbCxcblx0ICAgICAgc2VhcmNoVmFsdWU6IG51bGwsXG5cdCAgICAgIHNob3c6IGZhbHNlLFxuXHQgICAgICBzaG93Tm90aWZ5OiBmYWxzZSxcblx0ICAgICAgdmFsaWQ6IG51bGxcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgY29tcHV0ZWQ6IHtcblx0ICAgIHNlbGVjdGVkOiBmdW5jdGlvbiBzZWxlY3RlZCgpIHtcblx0ICAgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICAgIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG5cdCAgICAgICAgcmV0dXJuICcnO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBmb3VuZEl0ZW1zID0gW107XG5cdCAgICAgIHRoaXMudmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgICBpZiAoflsnbnVtYmVyJywgJ3N0cmluZyddLmluZGV4T2YodHlwZW9mIGl0ZW0gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoaXRlbSkpKSB7XG5cdCAgICAgICAgICB2YXIgb3B0aW9uID0gbnVsbDtcblx0ICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLnNvbWUoZnVuY3Rpb24gKG8pIHtcblx0ICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBPYmplY3QgPyBvW190aGlzLm9wdGlvbnNWYWx1ZV0gPT09IGl0ZW0gOiBvID09PSBpdGVtKSB7XG5cdCAgICAgICAgICAgICAgb3B0aW9uID0gbztcblx0ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSkpIHtcblx0ICAgICAgICAgICAgZm91bmRJdGVtcy5wdXNoKG9wdGlvbltfdGhpcy5vcHRpb25zTGFiZWxdIHx8IG9wdGlvbik7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgICAgcmV0dXJuIGZvdW5kSXRlbXMuam9pbignLCAnKTtcblx0ICAgIH0sXG5cdCAgICBjbGFzc2VzOiBmdW5jdGlvbiBjbGFzc2VzKCkge1xuXHQgICAgICByZXR1cm4gW3sgb3BlbjogdGhpcy5zaG93LCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCB0aGlzLmNsYXNzLCB0aGlzLmlzTGkgPyAnZHJvcGRvd24nIDogdGhpcy5pbklucHV0ID8gJ2lucHV0LWdyb3VwLWJ0bicgOiAnYnRuLWdyb3VwJ107XG5cdCAgICB9LFxuXHQgICAgaW5JbnB1dDogZnVuY3Rpb24gaW5JbnB1dCgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5faW5wdXQ7XG5cdCAgICB9LFxuXHQgICAgaXNMaTogZnVuY3Rpb24gaXNMaSgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5fbmF2YmFyIHx8IHRoaXMuJHBhcmVudC5tZW51IHx8IHRoaXMuJHBhcmVudC5fdGFic2V0O1xuXHQgICAgfSxcblx0ICAgIGNhblNlYXJjaDogZnVuY3Rpb24gY2FuU2VhcmNoKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5taW5TZWFyY2ggPyB0aGlzLm9wdGlvbnMubGVuZ3RoID49IHRoaXMubWluU2VhcmNoIDogdGhpcy5zZWFyY2g7XG5cdCAgICB9LFxuXHQgICAgbGltaXRUZXh0OiBmdW5jdGlvbiBsaW1pdFRleHQoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLnRleHQubGltaXQucmVwbGFjZSgne3tsaW1pdH19JywgdGhpcy5saW1pdCk7XG5cdCAgICB9LFxuXHQgICAgc2hvd1BsYWNlaG9sZGVyOiBmdW5jdGlvbiBzaG93UGxhY2Vob2xkZXIoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPT09IDAgfHwgIXRoaXMuaGFzUGFyZW50ID8gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLnRleHQubm90U2VsZWN0ZWQgOiBudWxsO1xuXHQgICAgfSxcblx0ICAgIHRleHQ6IGZ1bmN0aW9uIHRleHQoKSB7XG5cdCAgICAgIHJldHVybiAoMCwgX3V0aWxzLnRyYW5zbGF0aW9ucykodGhpcy5sYW5nKTtcblx0ICAgIH0sXG5cdCAgICBoYXNQYXJlbnQ6IGZ1bmN0aW9uIGhhc1BhcmVudCgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMucGFyZW50IGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLnBhcmVudC5sZW5ndGggOiB0aGlzLnBhcmVudDtcblx0ICAgIH0sXG5cdCAgICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcygpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHRoaXMudmFsdWUgOiB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IFt0aGlzLnZhbHVlXSA6IFtdO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgd2F0Y2g6IHtcblx0ICAgIG9wdGlvbnM6IGZ1bmN0aW9uIG9wdGlvbnMoX29wdGlvbnMpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlO1xuXHQgICAgICBpZiAoX29wdGlvbnMgaW5zdGFuY2VvZiBBcnJheSAmJiBfb3B0aW9ucy5sZW5ndGgpIHtcblx0ICAgICAgICBfb3B0aW9ucy5tYXAoZnVuY3Rpb24gKGVsKSB7XG5cdCAgICAgICAgICBpZiAoIShlbCBpbnN0YW5jZW9mIE9iamVjdCkpIHtcblx0ICAgICAgICAgICAgdmFyIG9iaiA9IHt9O1xuXHQgICAgICAgICAgICBvYmpbX3RoaXMyLm9wdGlvbnNMYWJlbF0gPSBlbDtcblx0ICAgICAgICAgICAgb2JqW190aGlzMi5vcHRpb25zVmFsdWVdID0gZWw7XG5cdCAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuXHQgICAgICAgICAgICByZXR1cm4gb2JqO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIGVsO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChjaGFuZ2VkKSB7XG5cdCAgICAgICAgdGhpcy5vcHRpb25zID0gX29wdGlvbnM7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBzaG93OiBmdW5jdGlvbiBzaG93KHZhbCkge1xuXHQgICAgICBpZiAodmFsKSB7XG5cdCAgICAgICAgdGhpcy4kZWxzLnNlbC5mb2N1cygpO1xuXHQgICAgICAgIHRoaXMuJGVscy5zZWFyY2ggJiYgdGhpcy4kZWxzLnNlYXJjaC5mb2N1cygpO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgdXJsOiBmdW5jdGlvbiB1cmwoKSB7XG5cdCAgICAgIHRoaXMudXBkYXRlKCk7XG5cdCAgICB9LFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHZhbCkge1xuXHQgICAgICB2YXIgX3RoaXMzID0gdGhpcztcblx0XG5cdCAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbCk7XG5cdCAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdGVkJywgdGhpcy5zZWxlY3RlZCk7XG5cdCAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdmFsLmxlbmd0aCA+IHRoaXMubGltaXQpIHtcblx0ICAgICAgICB0aGlzLnNob3dOb3RpZnkgPSB0cnVlO1xuXHQgICAgICAgIGlmICh0aW1lb3V0LmxpbWl0KSBjbGVhclRpbWVvdXQodGltZW91dC5saW1pdCk7XG5cdCAgICAgICAgdGltZW91dC5saW1pdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgdGltZW91dC5saW1pdCA9IGZhbHNlO1xuXHQgICAgICAgICAgX3RoaXMzLnNob3dOb3RpZnkgPSBmYWxzZTtcblx0ICAgICAgICB9LCAxNTAwKTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLmNoZWNrVmFsdWUoKTtcblx0ICAgICAgdGhpcy52YWxpZCA9IHRoaXMudmFsaWRhdGUoKTtcblx0ICAgIH0sXG5cdCAgICB2YWxpZDogZnVuY3Rpb24gdmFsaWQodmFsLCBvbGQpIHtcblx0ICAgICAgaWYgKHZhbCA9PT0gb2xkKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMuX3BhcmVudCAmJiB0aGlzLl9wYXJlbnQudmFsaWRhdGUoKTtcblx0ICAgIH1cblx0ICB9LFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG5cdCAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuXHQgICAgfSxcblx0ICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcblx0ICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gW10gOiBudWxsO1xuXHQgICAgICB0aGlzLnRvZ2dsZSgpO1xuXHQgICAgfSxcblx0ICAgIGNsZWFyU2VhcmNoOiBmdW5jdGlvbiBjbGVhclNlYXJjaCgpIHtcblx0ICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXHQgICAgICB0aGlzLiRlbHMuc2VhcmNoLmZvY3VzKCk7XG5cdCAgICB9LFxuXHQgICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24gY2hlY2tWYWx1ZSgpIHtcblx0ICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgISh0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkID8gW10gOiBbdGhpcy52YWx1ZV07XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuXHQgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWUucG9wKCkgOiBudWxsO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICh0aGlzLmxpbWl0IDwgMSkge1xuXHQgICAgICAgIHRoaXMubGltaXQgPSAxO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICh0aGlzLnZhbHVlcy5sZW5ndGggPiB0aGlzLmxpbWl0KSB7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5saW1pdCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBpc1NlbGVjdGVkOiBmdW5jdGlvbiBpc1NlbGVjdGVkKHYpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmluZGV4T2YodikgPiAtMTtcblx0ICAgIH0sXG5cdCAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCh2LCBhbHQpIHtcblx0ICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuXHQgICAgICAgIGlmICh+dGhpcy52YWx1ZS5pbmRleE9mKHYpKSB7XG5cdCAgICAgICAgICB0aGlzLnZhbHVlLiRyZW1vdmUodik7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHRoaXMudmFsdWUucHVzaCh2KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuXHQgICAgICAgICAgdGhpcy50b2dnbGUoKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9ICF+WycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YodikgPyB2IDogYWx0O1xuXHQgICAgICAgIHRoaXMudG9nZ2xlKCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICB0b2dnbGU6IGZ1bmN0aW9uIHRvZ2dsZSgpIHtcblx0ICAgICAgdGhpcy5zaG93ID0gIXRoaXMuc2hvdztcblx0ICAgIH0sXG5cdCAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcblx0ICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAoIXRoaXMudXJsKSByZXR1cm47XG5cdCAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cdCAgICAgICgwLCBfdXRpbHMuZ2V0SlNPTikodGhpcy51cmwpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICB2YXIgb3B0aW9ucyA9IFtdO1xuXHQgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAob3BjKSB7XG5cdCAgICAgICAgICBpZiAob3BjW190aGlzNC5vcHRpb25zVmFsdWVdICE9PSB1bmRlZmluZWQgJiYgb3BjW190aGlzNC5vcHRpb25zTGFiZWxdICE9PSB1bmRlZmluZWQpIG9wdGlvbnMucHVzaChvcGMpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIF90aGlzNC5vcHRpb25zID0gb3B0aW9ucztcblx0ICAgICAgICBpZiAoIW9wdGlvbnMubGVuZ3RoKSB7XG5cdCAgICAgICAgICBfdGhpczQudmFsdWUgPSBfdGhpczQudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IFtdIDogbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pLmFsd2F5cyhmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTtcblx0ICAgICAgICBfdGhpczQuY2hlY2tWYWx1ZSgpO1xuXHQgICAgICB9KTtcblx0ICAgIH0sXG5cdCAgICB2YWxpZGF0ZTogZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG5cdCAgICAgIHJldHVybiAhdGhpcy5yZXF1aXJlZCA/IHRydWUgOiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLnZhbHVlLmxlbmd0aCA+IDAgOiB0aGlzLnZhbHVlICE9PSBudWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIHRoaXMuX3NlbGVjdCA9IHRydWU7XG5cdCAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLnBhcmVudCkge1xuXHQgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcblx0ICAgIH1cblx0ICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcblx0ICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc2hpZnQoKTtcblx0ICAgIH1cblx0ICAgIHRoaXMuY2hlY2tWYWx1ZSgpO1xuXHQgICAgaWYgKHRoaXMudXJsKSB0aGlzLnVwZGF0ZSgpO1xuXHQgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcblx0ICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC5fZm9ybUdyb3VwKSB7XG5cdCAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuXHQgICAgfVxuXHQgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQuX2Zvcm1Hcm91cCkge1xuXHQgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaCh0aGlzKTtcblx0ICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cdFxuXHQgICAgKDAsIF9Ob2RlTGlzdDIuZGVmYXVsdCkodGhpcy4kZWxzLnNlbGVjdCkub25CbHVyKGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIF90aGlzNS5zaG93ID0gZmFsc2U7XG5cdCAgICB9KTtcblx0ICB9LFxuXHQgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG5cdCAgICBpZiAodGhpcy5fcGFyZW50KSB0aGlzLl9wYXJlbnQuY2hpbGRyZW4uJHJlbW92ZSh0aGlzKTtcblx0ICAgICgwLCBfTm9kZUxpc3QyLmRlZmF1bHQpKHRoaXMuJGVscy5zZWxlY3QpLm9mZkJsdXIoKTtcblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXHRcblx0XG5cdC8vIDxzdHlsZSBzY29wZWQ+XG5cdFxuXHQvLyBidXR0b24uZm9ybS1jb250cm9sLmRyb3Bkb3duLXRvZ2dsZXtcblx0XG5cdC8vICAgaGVpZ2h0OiBhdXRvO1xuXHRcblx0Ly8gICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gYnV0dG9uLmZvcm0tY29udHJvbC5kcm9wZG93bi10b2dnbGU6YWZ0ZXJ7XG5cdFxuXHQvLyAgIGNvbnRlbnQ6ICcgJztcblx0XG5cdC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcblx0Ly8gICByaWdodDogMTNweDtcblx0XG5cdC8vICAgdG9wOiA1MCU7XG5cdFxuXHQvLyAgIG1hcmdpbjogLTFweCAwIDA7XG5cdFxuXHQvLyAgIGJvcmRlci10b3A6IDRweCBkYXNoZWQ7XG5cdFxuXHQvLyAgIGJvcmRlci10b3A6IDRweCBzb2xpZCBcXDk7XG5cdFxuXHQvLyAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcblx0Ly8gICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmJzLXNlYXJjaGJveCB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XG5cdC8vICAgbWFyZ2luOiA0cHggOHB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmJzLXNlYXJjaGJveCAuY2xvc2Uge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFxuXHQvLyAgIHRvcDogMDtcblx0XG5cdC8vICAgcmlnaHQ6IDA7XG5cdFxuXHQvLyAgIHotaW5kZXg6IDI7XG5cdFxuXHQvLyAgIGRpc3BsYXk6IGJsb2NrO1xuXHRcblx0Ly8gICB3aWR0aDogMzRweDtcblx0XG5cdC8vICAgaGVpZ2h0OiAzNHB4O1xuXHRcblx0Ly8gICBsaW5lLWhlaWdodDogMzRweDtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLmJzLXNlYXJjaGJveCBpbnB1dDpmb2N1cyxcblx0XG5cdC8vIC5zZWNyZXQ6Zm9jdXMgKyBidXR0b24ge1xuXHRcblx0Ly8gICBvdXRsaW5lOiAwO1xuXHRcblx0Ly8gICBib3JkZXItY29sb3I6ICM2NmFmZTkgIWltcG9ydGFudDtcblx0XG5cdC8vICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDhweCByZ2JhKDEwMiwxNzUsMjMzLC42KTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5zZWNyZXQge1xuXHRcblx0Ly8gICBib3JkZXI6IDA7XG5cdFxuXHQvLyAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdFxuXHQvLyAgIGhlaWdodDogMXB4O1xuXHRcblx0Ly8gICBtYXJnaW46IC0xcHg7XG5cdFxuXHQvLyAgIG92ZXJmbG93OiBoaWRkZW47XG5cdFxuXHQvLyAgIHBhZGRpbmc6IDA7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgd2lkdGg6IDFweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIGJ1dHRvbj4uY2xvc2UgeyBtYXJnaW4tbGVmdDogNXB4O31cblx0XG5cdC8vIC5ub3RpZnkub3V0IHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cdFxuXHQvLyAubm90aWZ5LmluLFxuXHRcblx0Ly8gLm5vdGlmeT5kaXYge1xuXHRcblx0Ly8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFxuXHQvLyAgIHdpZHRoOiA5NiU7XG5cdFxuXHQvLyAgIG1hcmdpbjogMCAyJTtcblx0XG5cdC8vICAgbWluLWhlaWdodDogMjZweDtcblx0XG5cdC8vICAgcGFkZGluZzogM3B4IDVweDtcblx0XG5cdC8vICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcblx0XG5cdC8vICAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcblx0XG5cdC8vICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtcblx0XG5cdC8vICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAubm90aWZ5PmRpdiB7XG5cdFxuXHQvLyAgIHRvcDogNXB4O1xuXHRcblx0Ly8gICB6LWluZGV4OiAxO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLm5vdGlmeS5pbiB7XG5cdFxuXHQvLyAgIG9wYWNpdHk6IC45O1xuXHRcblx0Ly8gICBib3R0b206IDVweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5idG4tZ3JvdXAtanVzdGlmaWVkIC5kcm9wZG93bi10b2dnbGU+c3Bhbjpub3QoLmNsb3NlKSB7XG5cdFxuXHQvLyAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxOHB4KTtcblx0XG5cdC8vICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcblx0Ly8gICBvdmVyZmxvdzogaGlkZGVuO1xuXHRcblx0Ly8gICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcblx0Ly8gICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XG5cdC8vICAgbWFyZ2luLWJvdHRvbTogLTRweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5idG4tZ3JvdXAtanVzdGlmaWVkIC5kcm9wZG93bi1tZW51IHsgd2lkdGg6IDEwMCU7IH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cbi8qKiovIH0sXG4vKiAxNzggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZhciBfaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0XG5cdHZhciBfaXRlcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXRlcmF0b3IpO1xuXHRcblx0dmFyIF9zeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OSk7XG5cdFxuXHR2YXIgX3N5bWJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2wpO1xuXHRcblx0dmFyIF90eXBlb2YgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBfaXRlcmF0b3IyLmRlZmF1bHQgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcblx0ICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG5cdH0gOiBmdW5jdGlvbiAob2JqKSB7XG5cdCAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTc5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oMTgwKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogMTgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMTkwKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXygxOTEpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Mik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuU3ltYm9sO1xuXG4vKioqLyB9LFxuLyogMTgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdC8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cblx0dmFyIGdsb2JhbCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGhhcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSlcblx0ICAsIERFU0NSSVBUT1JTICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSlcblx0ICAsICRleHBvcnQgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHJlZGVmaW5lICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClcblx0ICAsIE1FVEEgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODIpLktFWVxuXHQgICwgJGZhaWxzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKVxuXHQgICwgc2hhcmVkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KVxuXHQgICwgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKVxuXHQgICwgdWlkICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgd2tzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KVxuXHQgICwgd2tzRXh0ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKVxuXHQgICwgd2tzRGVmaW5lICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4Mylcblx0ICAsIGtleU9mICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODQpXG5cdCAgLCBlbnVtS2V5cyAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTg1KVxuXHQgICwgaXNBcnJheSAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4OClcblx0ICAsIGFuT2JqZWN0ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOClcblx0ICAsIHRvSU9iamVjdCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Milcblx0ICAsIHRvUHJpbWl0aXZlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NClcblx0ICAsIGNyZWF0ZURlc2MgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIF9jcmVhdGUgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OClcblx0ICAsIGdPUE5FeHQgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nilcblx0ICAsICRHT1BEICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODkpXG5cdCAgLCAkRFAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG5cdCAgLCAka2V5cyAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjApXG5cdCAgLCBnT1BEICAgICAgICAgICA9ICRHT1BELmZcblx0ICAsIGRQICAgICAgICAgICAgID0gJERQLmZcblx0ICAsIGdPUE4gICAgICAgICAgID0gZ09QTkV4dC5mXG5cdCAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcblx0ICAsICRKU09OICAgICAgICAgID0gZ2xvYmFsLkpTT05cblx0ICAsIF9zdHJpbmdpZnkgICAgID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5XG5cdCAgLCBQUk9UT1RZUEUgICAgICA9ICdwcm90b3R5cGUnXG5cdCAgLCBISURERU4gICAgICAgICA9IHdrcygnX2hpZGRlbicpXG5cdCAgLCBUT19QUklNSVRJVkUgICA9IHdrcygndG9QcmltaXRpdmUnKVxuXHQgICwgaXNFbnVtICAgICAgICAgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZVxuXHQgICwgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpXG5cdCAgLCBBbGxTeW1ib2xzICAgICA9IHNoYXJlZCgnc3ltYm9scycpXG5cdCAgLCBPUFN5bWJvbHMgICAgICA9IHNoYXJlZCgnb3Atc3ltYm9scycpXG5cdCAgLCBPYmplY3RQcm90byAgICA9IE9iamVjdFtQUk9UT1RZUEVdXG5cdCAgLCBVU0VfTkFUSVZFICAgICA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbidcblx0ICAsIFFPYmplY3QgICAgICAgID0gZ2xvYmFsLlFPYmplY3Q7XG5cdC8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xuXHR2YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblx0XG5cdC8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xuXHR2YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbigpe1xuXHQgIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcblx0ICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGRQKHRoaXMsICdhJywge3ZhbHVlOiA3fSkuYTsgfVxuXHQgIH0pKS5hICE9IDc7XG5cdH0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG5cdCAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG5cdCAgaWYocHJvdG9EZXNjKWRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuXHQgIGRQKGl0LCBrZXksIEQpO1xuXHQgIGlmKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcblx0fSA6IGRQO1xuXHRcblx0dmFyIHdyYXAgPSBmdW5jdGlvbih0YWcpe1xuXHQgIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG5cdCAgc3ltLl9rID0gdGFnO1xuXHQgIHJldHVybiBzeW07XG5cdH07XG5cdFxuXHR2YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG5cdH0gOiBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcblx0fTtcblx0XG5cdHZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKXtcblx0ICBpZihpdCA9PT0gT2JqZWN0UHJvdG8pJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcblx0ICBhbk9iamVjdChpdCk7XG5cdCAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcblx0ICBhbk9iamVjdChEKTtcblx0ICBpZihoYXMoQWxsU3ltYm9scywga2V5KSl7XG5cdCAgICBpZighRC5lbnVtZXJhYmxlKXtcblx0ICAgICAgaWYoIWhhcyhpdCwgSElEREVOKSlkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG5cdCAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZihoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKWl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuXHQgICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcblx0ICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG5cdCAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG5cdH07XG5cdHZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApe1xuXHQgIGFuT2JqZWN0KGl0KTtcblx0ICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG5cdCAgICAsIGkgICAgPSAwXG5cdCAgICAsIGwgPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobCA+IGkpJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXHR2YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCl7XG5cdCAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xuXHR9O1xuXHR2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KXtcblx0ICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuXHQgIGlmKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKXJldHVybiBmYWxzZTtcblx0ICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG5cdH07XG5cdHZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuXHQgIGl0ICA9IHRvSU9iamVjdChpdCk7XG5cdCAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcblx0ICBpZihpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpcmV0dXJuO1xuXHQgIHZhciBEID0gZ09QRChpdCwga2V5KTtcblx0ICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpRC5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0ICByZXR1cm4gRDtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdPUE4odG9JT2JqZWN0KGl0KSlcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSl7XG5cdCAgICBpZighaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpcmVzdWx0LnB1c2goa2V5KTtcblx0ICB9IHJldHVybiByZXN1bHQ7XG5cdH07XG5cdHZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KXtcblx0ICB2YXIgSVNfT1AgID0gaXQgPT09IE9iamVjdFByb3RvXG5cdCAgICAsIG5hbWVzICA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKVxuXHQgICAgLCByZXN1bHQgPSBbXVxuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKXtcblx0ICAgIGlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuXHQgIH0gcmV0dXJuIHJlc3VsdDtcblx0fTtcblx0XG5cdC8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuXHRpZighVVNFX05BVElWRSl7XG5cdCAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuXHQgICAgaWYodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG5cdCAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcblx0ICAgIHZhciAkc2V0ID0gZnVuY3Rpb24odmFsdWUpe1xuXHQgICAgICBpZih0aGlzID09PSBPYmplY3RQcm90bykkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG5cdCAgICAgIGlmKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcblx0ICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0ICAgIH07XG5cdCAgICBpZihERVNDUklQVE9SUyAmJiBzZXR0ZXIpc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7Y29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXR9KTtcblx0ICAgIHJldHVybiB3cmFwKHRhZyk7XG5cdCAgfTtcblx0ICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG5cdCAgICByZXR1cm4gdGhpcy5faztcblx0ICB9KTtcblx0XG5cdCAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cdCAgJERQLmYgICA9ICRkZWZpbmVQcm9wZXJ0eTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygxODcpLmYgID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTg2KS5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblx0XG5cdCAgaWYoREVTQ1JJUFRPUlMgJiYgIV9fd2VicGFja19yZXF1aXJlX18oNTMpKXtcblx0ICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuXHQgIH1cblx0XG5cdCAgd2tzRXh0LmYgPSBmdW5jdGlvbihuYW1lKXtcblx0ICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG5cdCAgfVxuXHR9XG5cdFxuXHQkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7U3ltYm9sOiAkU3ltYm9sfSk7XG5cdFxuXHRmb3IodmFyIHN5bWJvbHMgPSAoXG5cdCAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcblx0ICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG5cdCkuc3BsaXQoJywnKSwgaSA9IDA7IHN5bWJvbHMubGVuZ3RoID4gaTsgKXdrcyhzeW1ib2xzW2krK10pO1xuXHRcblx0Zm9yKHZhciBzeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgaSA9IDA7IHN5bWJvbHMubGVuZ3RoID4gaTsgKXdrc0RlZmluZShzeW1ib2xzW2krK10pO1xuXHRcblx0JGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcblx0ICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcblx0ICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcblx0ICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcblx0ICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG5cdCAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcblx0ICB9LFxuXHQgIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuXHQgIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG5cdCAgICBpZihpc1N5bWJvbChrZXkpKXJldHVybiBrZXlPZihTeW1ib2xSZWdpc3RyeSwga2V5KTtcblx0ICAgIHRocm93IFR5cGVFcnJvcihrZXkgKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcblx0ICB9LFxuXHQgIHVzZVNldHRlcjogZnVuY3Rpb24oKXsgc2V0dGVyID0gdHJ1ZTsgfSxcblx0ICB1c2VTaW1wbGU6IGZ1bmN0aW9uKCl7IHNldHRlciA9IGZhbHNlOyB9XG5cdH0pO1xuXHRcblx0JGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcblx0ICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG5cdCAgY3JlYXRlOiAkY3JlYXRlLFxuXHQgIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuXHQgIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG5cdCAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcblx0ICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcblx0ICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG5cdCAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuXHQgIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xuXHR9KTtcblx0XG5cdC8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuXHQkSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24oKXtcblx0ICB2YXIgUyA9ICRTeW1ib2woKTtcblx0ICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuXHQgIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuXHQgIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG5cdCAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHthOiBTfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcblx0fSkpLCAnSlNPTicsIHtcblx0ICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCl7XG5cdCAgICBpZihpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSlyZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcblx0ICAgIHZhciBhcmdzID0gW2l0XVxuXHQgICAgICAsIGkgICAgPSAxXG5cdCAgICAgICwgcmVwbGFjZXIsICRyZXBsYWNlcjtcblx0ICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG5cdCAgICByZXBsYWNlciA9IGFyZ3NbMV07XG5cdCAgICBpZih0eXBlb2YgcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykkcmVwbGFjZXIgPSByZXBsYWNlcjtcblx0ICAgIGlmKCRyZXBsYWNlciB8fCAhaXNBcnJheShyZXBsYWNlcikpcmVwbGFjZXIgPSBmdW5jdGlvbihrZXksIHZhbHVlKXtcblx0ICAgICAgaWYoJHJlcGxhY2VyKXZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG5cdCAgICAgIGlmKCFpc1N5bWJvbCh2YWx1ZSkpcmV0dXJuIHZhbHVlO1xuXHQgICAgfTtcblx0ICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcblx0ICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0Ly8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuXHQkU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuXHQvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5cdHNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcblx0Ly8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuXHRzZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuXHQvLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuXHRzZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcblxuLyoqKi8gfSxcbi8qIDE4MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIE1FVEEgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MCkoJ21ldGEnKVxuXHQgICwgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KVxuXHQgICwgaGFzICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KVxuXHQgICwgc2V0RGVzYyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KS5mXG5cdCAgLCBpZCAgICAgICA9IDA7XG5cdHZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIHRydWU7XG5cdH07XG5cdHZhciBGUkVFWkUgPSAhX193ZWJwYWNrX3JlcXVpcmVfXyg0MikoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xuXHR9KTtcblx0dmFyIHNldE1ldGEgPSBmdW5jdGlvbihpdCl7XG5cdCAgc2V0RGVzYyhpdCwgTUVUQSwge3ZhbHVlOiB7XG5cdCAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcblx0ICAgIHc6IHt9ICAgICAgICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgSURzXG5cdCAgfX0pO1xuXHR9O1xuXHR2YXIgZmFzdEtleSA9IGZ1bmN0aW9uKGl0LCBjcmVhdGUpe1xuXHQgIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcblx0ICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG5cdCAgaWYoIWhhcyhpdCwgTUVUQSkpe1xuXHQgICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3Rcblx0ICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiAnRic7XG5cdCAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuXHQgICAgaWYoIWNyZWF0ZSlyZXR1cm4gJ0UnO1xuXHQgICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcblx0ICAgIHNldE1ldGEoaXQpO1xuXHQgIC8vIHJldHVybiBvYmplY3QgSURcblx0ICB9IHJldHVybiBpdFtNRVRBXS5pO1xuXHR9O1xuXHR2YXIgZ2V0V2VhayA9IGZ1bmN0aW9uKGl0LCBjcmVhdGUpe1xuXHQgIGlmKCFoYXMoaXQsIE1FVEEpKXtcblx0ICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG5cdCAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gdHJ1ZTtcblx0ICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG5cdCAgICBpZighY3JlYXRlKXJldHVybiBmYWxzZTtcblx0ICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG5cdCAgICBzZXRNZXRhKGl0KTtcblx0ICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuXHQgIH0gcmV0dXJuIGl0W01FVEFdLnc7XG5cdH07XG5cdC8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xuXHR2YXIgb25GcmVlemUgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKXNldE1ldGEoaXQpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblx0dmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBLRVk6ICAgICAgTUVUQSxcblx0ICBORUVEOiAgICAgZmFsc2UsXG5cdCAgZmFzdEtleTogIGZhc3RLZXksXG5cdCAgZ2V0V2VhazogIGdldFdlYWssXG5cdCAgb25GcmVlemU6IG9uRnJlZXplXG5cdH07XG5cbi8qKiovIH0sXG4vKiAxODMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBjb3JlICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpXG5cdCAgLCBMSUJSQVJZICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTMpXG5cdCAgLCB3a3NFeHQgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oODEpXG5cdCAgLCBkZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpLmY7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG5cdCAgdmFyICRTeW1ib2wgPSBjb3JlLlN5bWJvbCB8fCAoY29yZS5TeW1ib2wgPSBMSUJSQVJZID8ge30gOiBnbG9iYWwuU3ltYm9sIHx8IHt9KTtcblx0ICBpZihuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKWRlZmluZVByb3BlcnR5KCRTeW1ib2wsIG5hbWUsIHt2YWx1ZTogd2tzRXh0LmYobmFtZSl9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE4NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdldEtleXMgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjApXG5cdCAgLCB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGVsKXtcblx0ICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcblx0ICAgICwga2V5cyAgID0gZ2V0S2V5cyhPKVxuXHQgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xuXHR2YXIgZ2V0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oNjApXG5cdCAgLCBnT1BTICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODYpXG5cdCAgLCBwSUUgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgcmVzdWx0ICAgICA9IGdldEtleXMoaXQpXG5cdCAgICAsIGdldFN5bWJvbHMgPSBnT1BTLmY7XG5cdCAgaWYoZ2V0U3ltYm9scyl7XG5cdCAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG5cdCAgICAgICwgaXNFbnVtICA9IHBJRS5mXG5cdCAgICAgICwgaSAgICAgICA9IDBcblx0ICAgICAgLCBrZXk7XG5cdCAgICB3aGlsZShzeW1ib2xzLmxlbmd0aCA+IGkpaWYoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpcmVzdWx0LnB1c2goa2V5KTtcblx0ICB9IHJldHVybiByZXN1bHQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdGV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKiovIH0sXG4vKiAxODcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdGV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKioqLyB9LFxuLyogMTg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxuXHR2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCk7XG5cdG1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZyl7XG5cdCAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBwSUUgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTg3KVxuXHQgICwgY3JlYXRlRGVzYyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ1KVxuXHQgICwgdG9JT2JqZWN0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgdG9QcmltaXRpdmUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KVxuXHQgICwgaGFzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KVxuXHQgICwgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVxuXHQgICwgZ09QRCAgICAgICAgICAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXHRcblx0ZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSkgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApe1xuXHQgIE8gPSB0b0lPYmplY3QoTyk7XG5cdCAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuXHQgIGlmKElFOF9ET01fREVGSU5FKXRyeSB7XG5cdCAgICByZXR1cm4gZ09QRChPLCBQKTtcblx0ICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG5cdCAgaWYoaGFzKE8sIFApKXJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblxuXG4vKioqLyB9LFxuLyogMTkxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MykoJ2FzeW5jSXRlcmF0b3InKTtcblxuLyoqKi8gfSxcbi8qIDE5MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygxODMpKCdvYnNlcnZhYmxlJyk7XG5cbi8qKiovIH0sXG4vKiAxOTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IHYtZWw6c2VsZWN0PVxcXCJcXFwiIDpjbGFzcz1cXFwiY2xhc3Nlc1xcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+XFxuICAgIDxidXR0b24gdHlwZT1cXFwiYnV0dG9uXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sIGRyb3Bkb3duLXRvZ2dsZVxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZCB8fCAhaGFzUGFyZW50XFxcIiA6cmVhZG9ubHk9XFxcInJlYWRvbmx5XFxcIiBAY2xpY2s9XFxcInRvZ2dsZSgpXFxcIiBAa2V5dXAuZXNjPVxcXCJzaG93ID0gZmFsc2VcXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJidG4tY29udGVudFxcXCIgdi1odG1sPVxcXCJsb2FkaW5nID8gdGV4dC5sb2FkaW5nIDogc2hvd1BsYWNlaG9sZGVyIHx8IHNlbGVjdGVkXFxcIiBfdi0wZjNiYjcwNz1cXFwiXFxcIj48L3NwYW4+XFxuICAgICAgPHNwYW4gdi1pZj1cXFwiY2xlYXJCdXR0b24mYW1wOyZhbXA7dmFsdWVzLmxlbmd0aFxcXCIgY2xhc3M9XFxcImNsb3NlXFxcIiBAY2xpY2s9XFxcImNsZWFyKClcXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPsOXPC9zcGFuPlxcbiAgICA8L2J1dHRvbj5cXG4gICAgPHNlbGVjdCB2LWVsOnNlbD1cXFwiXFxcIiB2LW1vZGVsPVxcXCJ2YWx1ZVxcXCIgdi1zaG93PVxcXCJzaG93XFxcIiBuYW1lPVxcXCJ7e25hbWV9fVxcXCIgY2xhc3M9XFxcInNlY3JldFxcXCIgOm11bHRpcGxlPVxcXCJtdWx0aXBsZVxcXCIgOnJlcXVpcmVkPVxcXCJyZXF1aXJlZFxcXCIgOnJlYWRvbmx5PVxcXCJyZWFkb25seVxcXCIgOmRpc2FibGVkPVxcXCJkaXNhYmxlZFxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+XFxuICAgICAgPG9wdGlvbiB2LWlmPVxcXCJyZXF1aXJlZFxcXCIgdmFsdWU9XFxcIlxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+PC9vcHRpb24+XFxuICAgICAgPG9wdGlvbiB2LWZvcj1cXFwib3B0aW9uIGluIG9wdGlvbnNcXFwiIDp2YWx1ZT1cXFwib3B0aW9uW29wdGlvbnNWYWx1ZV18fG9wdGlvblxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+e3sgb3B0aW9uW29wdGlvbnNMYWJlbF18fG9wdGlvbiB9fTwvb3B0aW9uPlxcbiAgICA8L3NlbGVjdD5cXG4gICAgPHVsIGNsYXNzPVxcXCJkcm9wZG93bi1tZW51XFxcIiBfdi0wZjNiYjcwNz1cXFwiXFxcIj5cXG4gICAgICA8dGVtcGxhdGUgdi1pZj1cXFwib3B0aW9ucy5sZW5ndGhcXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPlxcbiAgICAgICAgPGxpIHYtaWY9XFxcImNhblNlYXJjaFxcXCIgY2xhc3M9XFxcImJzLXNlYXJjaGJveFxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+XFxuICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJ0ZXh0XFxcIiBwbGFjZWhvbGRlcj1cXFwie3tzZWFyY2hUZXh0fHx0ZXh0LnNlYXJjaH19XFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBhdXRvY29tcGxldGU9XFxcIm9mZlxcXCIgdi1lbDpzZWFyY2g9XFxcIlxcXCIgdi1tb2RlbD1cXFwic2VhcmNoVmFsdWVcXFwiIEBrZXl1cC5lc2M9XFxcInNob3cgPSBmYWxzZVxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+XFxuICAgICAgICAgIDxzcGFuIHYtc2hvdz1cXFwic2VhcmNoVmFsdWVcXFwiIGNsYXNzPVxcXCJjbG9zZVxcXCIgQGNsaWNrPVxcXCJjbGVhclNlYXJjaFxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+w5c8L3NwYW4+XFxuICAgICAgICA8L2xpPlxcbiAgICAgICAgPGxpIHYtaWY9XFxcInJlcXVpcmVkJmFtcDsmYW1wOyFjbGVhckJ1dHRvblxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+PGEgQG1vdXNlZG93bi5wcmV2ZW50PVxcXCJjbGVhcigpICZhbXA7JmFtcDsgYmx1cigpXFxcIiBfdi0wZjNiYjcwNz1cXFwiXFxcIj57eyBwbGFjZWhvbGRlciB8fCB0ZXh0Lm5vdFNlbGVjdGVkIH19PC9hPjwvbGk+XFxuICAgICAgICA8bGkgdi1mb3I9XFxcIm9wdGlvbiBpbiBvcHRpb25zIHwgZmlsdGVyQnkgc2VhcmNoVmFsdWVcXFwiIDppZD1cXFwib3B0aW9uW29wdGlvbnNWYWx1ZV18fG9wdGlvblxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+XFxuICAgICAgICAgIDxhIEBtb3VzZWRvd24ucHJldmVudD1cXFwic2VsZWN0KG9wdGlvbltvcHRpb25zVmFsdWVdLG9wdGlvbilcXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIHYtaHRtbD1cXFwib3B0aW9uW29wdGlvbnNMYWJlbF18fG9wdGlvblxcXCIgX3YtMGYzYmI3MDc9XFxcIlxcXCI+PC9zcGFuPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJnbHlwaGljb24gZ2x5cGhpY29uLW9rIGNoZWNrLW1hcmtcXFwiIHYtc2hvdz1cXFwiaXNTZWxlY3RlZChvcHRpb25bb3B0aW9uc1ZhbHVlXSlcXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPjwvc3Bhbj5cXG4gICAgICAgICAgPC9hPlxcbiAgICAgICAgPC9saT5cXG4gICAgICA8L3RlbXBsYXRlPlxcbiAgICAgIDxzbG90IF92LTBmM2JiNzA3PVxcXCJcXFwiPjwvc2xvdD5cXG4gICAgICA8ZGl2IHYtaWY9XFxcInNob3dOb3RpZnkgJmFtcDsmYW1wOyAhY2xvc2VPblNlbGVjdFxcXCIgY2xhc3M9XFxcIm5vdGlmeSBpblxcXCIgdHJhbnNpdGlvbj1cXFwiZmFkZWluXFxcIiBfdi0wZjNiYjcwNz1cXFwiXFxcIj57e2xpbWl0VGV4dH19PC9kaXY+XFxuICAgIDwvdWw+XFxuICAgIDxkaXYgdi1pZj1cXFwic2hvd05vdGlmeSAmYW1wOyZhbXA7IGNsb3NlT25TZWxlY3RcXFwiIGNsYXNzPVxcXCJub3RpZnkgb3V0XFxcIiB0cmFuc2l0aW9uPVxcXCJmYWRlaW5cXFwiIF92LTBmM2JiNzA3PVxcXCJcXFwiPjxkaXYgX3YtMGYzYmI3MDc9XFxcIlxcXCI+e3tsaW1pdFRleHR9fTwvZGl2PjwvZGl2PlxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAxOTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTUpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTYpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9TbGlkZXIudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1NsaWRlci52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1NsaWRlci52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vU2xpZGVyLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1NsaWRlci52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMTk1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0Ly8gPHRlbXBsYXRlPlxuXHRcblx0Ly8gICA8ZGl2IGNsYXNzPVwiaXRlbVwiPlxuXHRcblx0Ly8gICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgPC9kaXY+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgaW5kZXg6IDAsXG5cdCAgICAgIHNob3c6IGZhbHNlXG5cdCAgICB9O1xuXHQgIH0sXG5cdFxuXHQgIGNvbXB1dGVkOiB7XG5cdCAgICBzaG93OiBmdW5jdGlvbiBzaG93KCkge1xuXHQgICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmluZGV4ID09PSB0aGlzLmluZGV4O1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge1xuXHQgICAgZm9yICh2YXIgYyBpbiB0aGlzLiRwYXJlbnQuJGNoaWxkcmVuKSB7XG5cdCAgICAgIGlmICh0aGlzLiRwYXJlbnQuJGNoaWxkcmVuW2NdID09PSB0aGlzKSB7XG5cdCAgICAgICAgdGhpcy5pbmRleCA9IHBhcnNlSW50KGMsIDEwKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgLy90aGlzLmluZGV4ID0gWy4uLnRoaXMuJGVsLnBhcmVudE5vZGUuY2hpbGRyZW5dLmluZGV4T2YodGhpcy4kZWwpXG5cdCAgICB0aGlzLiRwYXJlbnQuaW5kaWNhdG9yLnB1c2godGhpcy5pbmRleCk7XG5cdCAgICBpZiAodGhpcy5pbmRleCA9PT0gMCkge1xuXHQgICAgICB0aGlzLiRlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXG4vKioqLyB9LFxuLyogMTk2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiaXRlbVxcXCI+XFxyXFxuICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gIDwvZGl2PlwiO1xuXG4vKioqLyB9LFxuLyogMTk3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE5OClcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMClcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMSlcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1NwaW5uZXIudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1NwaW5uZXIudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9TcGlubmVyLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9TcGlubmVyLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1NwaW5uZXIudnVlXCIpXG5cdGhvdEFQSS51cGRhdGUoaWQsIG5ld09wdGlvbnMsIG5ld1RlbXBsYXRlKVxuXHR9KVxuXHR9KSgpXG5cdH1cblxuLyoqKi8gfSxcbi8qIDE5OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblx0XG5cdC8vIGxvYWQgdGhlIHN0eWxlc1xuXHR2YXIgY29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTk5KTtcblx0aWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cdC8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cblx0dmFyIHVwZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKShjb250ZW50LCB7fSk7XG5cdGlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXHQvLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5cdGlmKGZhbHNlKSB7XG5cdFx0Ly8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTcxNjliMTFlJmZpbGU9U3Bpbm5lci52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vU3Bpbm5lci52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi03MTY5YjExZSZmaWxlPVNwaW5uZXIudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL1NwaW5uZXIudnVlXCIpO1xuXHRcdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0XHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTk5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCkoKTtcblx0Ly8gaW1wb3J0c1xuXHRcblx0XG5cdC8vIG1vZHVsZVxuXHRleHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxyXFxuICB9XFxyXFxufVxcclxcbkBrZXlmcmFtZXMgc3BpbiB7XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zcGlubmVyLWdyaXRjb2RlIHtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBib3R0b206IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIHotaW5kZXg6IDk5OTg7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcXHJcXG59XFxyXFxuLnNwaW5uZXItZ3JpdGNvZGUuc3Bpbm5lci1maXhlZCB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxufVxcclxcbi5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLXdyYXBwZXIge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiA1MCU7XFxyXFxuICBsZWZ0OiA1MCU7XFxyXFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcclxcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXHJcXG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXHJcXG59XFxyXFxuLnNwaW5uZXItZ3JpdGNvZGUgLnNwaW5uZXItY2lyY2xlIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGJvcmRlcjogNHB4IHNvbGlkICNjY2M7XFxyXFxuICBib3JkZXItcmlnaHQtY29sb3I6ICMzMzdhYjc7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhcjtcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuNnMgbGluZWFyO1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxyXFxuICB3aWR0aDogM2VtO1xcclxcbiAgaGVpZ2h0OiAzZW07XFxyXFxuICB6LWluZGV4OiAyO1xcclxcbn1cXHJcXG4uc3Bpbm5lci1ncml0Y29kZSAuc3Bpbm5lci10ZXh0IHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xcclxcbiAgei1pbmRleDogMjtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgZm9udC1zaXplOiA5NSU7XFxyXFxuICBjb2xvcjogIzMzN2FiNztcXHJcXG59XFxyXFxuLnNwaW5uZXItZ3JpdGNvZGUuc3Bpbm5lci1zbSAuc3Bpbm5lci1jaXJjbGUge1xcclxcbiAgd2lkdGg6IDEuNWVtO1xcclxcbiAgaGVpZ2h0OiAxLjVlbTtcXHJcXG59XFxyXFxuLnNwaW5uZXItZ3JpdGNvZGUuc3Bpbm5lci1tZCAuc3Bpbm5lci1jaXJjbGUge1xcclxcbiAgd2lkdGg6IDJlbTtcXHJcXG4gIGhlaWdodDogMmVtO1xcclxcbn1cXHJcXG4uc3Bpbm5lci1ncml0Y29kZS5zcGlubmVyLWxnIC5zcGlubmVyLWNpcmNsZSB7XFxyXFxuICB3aWR0aDogMi41ZW07XFxyXFxuICBoZWlnaHQ6IDIuNWVtO1xcclxcbn1cXHJcXG4uc3Bpbm5lci1ncml0Y29kZS5zcGlubmVyLXhsIC5zcGlubmVyLWNpcmNsZSB7XFxyXFxuICB3aWR0aDogMy41ZW07XFxyXFxuICBoZWlnaHQ6IDMuNWVtO1xcclxcbn1cXHJcXG4ubHQtaWUxMCAuc3Bpbm5lci1ncml0Y29kZSAuc3Bpbm5lci1jaXJjbGUsXFxyXFxuLmllOSAuc3Bpbm5lci1ncml0Y29kZSAuc3Bpbm5lci1jaXJjbGUsXFxyXFxuLm9sZGllIC5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLWNpcmNsZSxcXHJcXG4ubm8tY3NzdHJhbnNpdGlvbnMgLnNwaW5uZXItZ3JpdGNvZGUgLnNwaW5uZXItY2lyY2xlLFxcclxcbi5uby1jc3N0cmFuc2Zvcm1zM2QgLnNwaW5uZXItZ3JpdGNvZGUgLnNwaW5uZXItY2lyY2xlIHtcXHJcXG4gIGJhY2tncm91bmQ6IHVybChcXFwiaHR0cDovL2kyLndwLmNvbS93d3cudGhlZ3JlYXRub3ZlbGluZ2FkdmVudHVyZS5jb20vd3AtY29udGVudC9wbHVnaW5zL3dwLXBvbGxzL2ltYWdlcy9sb2FkaW5nLmdpZlxcXCIpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7XFxyXFxuICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAwO1xcclxcbiAgbWFyZ2luLXRvcDogNXB4O1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbiAgd2lkdGg6IDMycHg7XFxyXFxuICBoZWlnaHQ6IDMycHg7XFxyXFxufVwiLCBcIlwiXSk7XG5cdFxuXHQvLyBleHBvcnRzXG5cblxuLyoqKi8gfSxcbi8qIDIwMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7XG5cdFxuXHR2YXIgTUlOX1dBSVQgPSA1MDA7IC8vIGluIG1zXG5cdFxuXHQvLyA8dGVtcGxhdGU+XG5cdFxuXHQvLyAgIDxkaXYgOmNsYXNzPVwiWydzcGlubmVyIHNwaW5uZXItZ3JpdGNvZGUnLHNwaW5uZXJTaXplLHsnc3Bpbm5lci1maXhlZCc6Zml4ZWR9XVwiIHYtc2hvdz1cImFjdGl2ZVwiPlxuXHRcblx0Ly8gICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLXdyYXBwZXJcIj5cblx0XG5cdC8vICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNpcmNsZVwiPjwvZGl2PlxuXHRcblx0Ly8gICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItdGV4dFwiPnt7dGV4dH19PC9kaXY+XG5cdFxuXHQvLyAgICAgPC9kaXY+XG5cdFxuXHQvLyAgIDwvZGl2PlxuXHRcblx0Ly8gPC90ZW1wbGF0ZT5cblx0XG5cdFxuXHQvLyA8c2NyaXB0PlxuXHRleHBvcnRzLmRlZmF1bHQgPSB7XG5cdCAgcHJvcHM6IHtcblx0ICAgIHNpemU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAnbWQnXG5cdCAgICB9LFxuXHQgICAgdGV4dDoge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICcnXG5cdCAgICB9LFxuXHQgICAgZml4ZWQ6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9XG5cdCAgfSxcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgYWN0aXZlOiBmYWxzZVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICBjb21wdXRlZDoge1xuXHQgICAgc3Bpbm5lclNpemU6IGZ1bmN0aW9uIHNwaW5uZXJTaXplKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5zaXplID8gJ3NwaW5uZXItJyArIHRoaXMuc2l6ZSA6ICdzcGlubmVyLXNtJztcblx0ICAgIH1cblx0ICB9LFxuXHQgIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHtcblx0ICAgIHRoaXMuX2JvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG5cdCAgICB0aGlzLl9ib2R5T3ZlcmZsb3cgPSB0aGlzLl9ib2R5LnN0eWxlLm92ZXJmbG93WSB8fCAnJztcblx0ICB9LFxuXHRcblx0ICBtZXRob2RzOiB7XG5cdCAgICBnZXRNaW5XYWl0OiBmdW5jdGlvbiBnZXRNaW5XYWl0KGRlbGF5KSB7XG5cdCAgICAgIGRlbGF5ID0gZGVsYXkgfHwgMDtcblx0ICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5fc3RhcnRlZC5nZXRUaW1lKCkgPCBNSU5fV0FJVCA/IE1JTl9XQUlUIC0gcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLl9zdGFydGVkLmdldFRpbWUoKSwgMTApICsgZGVsYXkgOiAwICsgZGVsYXk7XG5cdCAgICB9LFxuXHQgICAgc2hvdzogZnVuY3Rpb24gc2hvdyhvcHRpb25zKSB7XG5cdCAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudGV4dCkge1xuXHQgICAgICAgIHRoaXMudGV4dCA9IG9wdGlvbnMudGV4dDtcblx0ICAgICAgfVxuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNpemUpIHtcblx0ICAgICAgICB0aGlzLnNpemUgPSBvcHRpb25zLnNpemU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5maXhlZCkge1xuXHQgICAgICAgIHRoaXMuZml4ZWQgPSBvcHRpb25zLmZpeGVkO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICAvLyBibG9jayBzY3JvbGxpbmcgd2hlbiBzcGlubmVyIGlzIG9uXG5cdCAgICAgIHRoaXMuX2JvZHkuc3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7XG5cdFxuXHQgICAgICAvLyBhY3RpdmF0ZSBzcGlubmVyXG5cdCAgICAgIHRoaXMuX3N0YXJ0ZWQgPSBuZXcgRGF0ZSgpO1xuXHQgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cdCAgICAgIHRoaXMuJHJvb3QuJGJyb2FkY2FzdCgnc2hvd246OnNwaW5uZXInKTtcblx0ICAgIH0sXG5cdCAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuXHQgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgICAgdmFyIGRlbGF5ID0gMDtcblx0ICAgICAgdGhpcy5fc3Bpbm5lckFuaW1hdGlvbiA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIF90aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXHQgICAgICAgIF90aGlzLl9ib2R5LnN0eWxlLm92ZXJmbG93WSA9IF90aGlzLl9ib2R5T3ZlcmZsb3c7XG5cdCAgICAgICAgX3RoaXMuJHJvb3QuJGJyb2FkY2FzdCgnaGlkZGVuOjpzcGlubmVyJyk7XG5cdCAgICAgIH0sIHRoaXMuZ2V0TWluV2FpdChkZWxheSkpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgZXZlbnRzOiB7XG5cdCAgICAnc2hvdzo6c3Bpbm5lcic6IGZ1bmN0aW9uIHNob3dTcGlubmVyKG9wdGlvbnMpIHtcblx0ICAgICAgdGhpcy5zaG93KG9wdGlvbnMpO1xuXHQgICAgfSxcblx0ICAgICdoaWRlOjpzcGlubmVyJzogZnVuY3Rpb24gaGlkZVNwaW5uZXIoKSB7XG5cdCAgICAgIHRoaXMuaGlkZSgpO1xuXHQgICAgfSxcblx0ICAgICdzdGFydDo6YWpheCc6IGZ1bmN0aW9uIHN0YXJ0QWpheChvcHRpb25zKSB7XG5cdCAgICAgIHRoaXMuc2hvdyhvcHRpb25zKTtcblx0ICAgIH0sXG5cdCAgICAnZW5kOjphamF4JzogZnVuY3Rpb24gZW5kQWpheCgpIHtcblx0ICAgICAgdGhpcy5oaWRlKCk7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuXHQgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NwaW5uZXJBbmltYXRpb24pO1xuXHQgICAgdGhpcy5fYm9keS5zdHlsZS5vdmVyZmxvd1kgPSB0aGlzLl9ib2R5T3ZlcmZsb3c7XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGU+XG5cdFxuXHQvLyBAa2V5ZnJhbWVzIHNwaW4ge1xuXHRcblx0Ly8gICAxMDAlIHtcblx0XG5cdC8vICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc3Bpbm5lci1ncml0Y29kZSB7XG5cdFxuXHQvLyAgIHRvcDogMDtcblx0XG5cdC8vICAgbGVmdDogMDtcblx0XG5cdC8vICAgYm90dG9tOiAwO1xuXHRcblx0Ly8gICByaWdodDogMDtcblx0XG5cdC8vICAgei1pbmRleDogOTk5ODtcblx0XG5cdC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcblx0Ly8gICB3aWR0aDogMTAwJTtcblx0XG5cdC8vICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0Ly8gICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc3Bpbm5lci1ncml0Y29kZS5zcGlubmVyLWZpeGVkIHtcblx0XG5cdC8vICAgcG9zaXRpb246IGZpeGVkO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnNwaW5uZXItZ3JpdGNvZGUgLnNwaW5uZXItd3JhcHBlciB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XG5cdC8vICAgdG9wOiA1MCU7XG5cdFxuXHQvLyAgIGxlZnQ6IDUwJTtcblx0XG5cdC8vICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdFxuXHQvLyAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLWNpcmNsZSB7XG5cdFxuXHQvLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XG5cdC8vICAgYm9yZGVyOiA0cHggc29saWQgI2NjYztcblx0XG5cdC8vICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMzM3YWI3O1xuXHRcblx0Ly8gICBib3JkZXItcmFkaXVzOiA1MCU7XG5cdFxuXHQvLyAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XG5cdC8vICAgYW5pbWF0aW9uOiBzcGluIDAuNnMgbGluZWFyO1xuXHRcblx0Ly8gICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcblx0XG5cdC8vICAgd2lkdGg6IDNlbTtcblx0XG5cdC8vICAgaGVpZ2h0OiAzZW07XG5cdFxuXHQvLyAgIHotaW5kZXg6IDI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc3Bpbm5lci1ncml0Y29kZSAuc3Bpbm5lci10ZXh0IHtcblx0XG5cdC8vICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcblx0Ly8gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFxuXHQvLyAgIG1hcmdpbi10b3A6IDAuNWVtO1xuXHRcblx0Ly8gICB6LWluZGV4OiAyO1xuXHRcblx0Ly8gICB3aWR0aDogMTAwJTtcblx0XG5cdC8vICAgZm9udC1zaXplOiA5NSU7XG5cdFxuXHQvLyAgIGNvbG9yOiAjMzM3YWI3O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnNwaW5uZXItZ3JpdGNvZGUuc3Bpbm5lci1zbSAuc3Bpbm5lci1jaXJjbGUge1xuXHRcblx0Ly8gICB3aWR0aDogMS41ZW07XG5cdFxuXHQvLyAgIGhlaWdodDogMS41ZW07XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc3Bpbm5lci1ncml0Y29kZS5zcGlubmVyLW1kIC5zcGlubmVyLWNpcmNsZSB7XG5cdFxuXHQvLyAgIHdpZHRoOiAyZW07XG5cdFxuXHQvLyAgIGhlaWdodDogMmVtO1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gLnNwaW5uZXItZ3JpdGNvZGUuc3Bpbm5lci1sZyAuc3Bpbm5lci1jaXJjbGUge1xuXHRcblx0Ly8gICB3aWR0aDogMi41ZW07XG5cdFxuXHQvLyAgIGhlaWdodDogMi41ZW07XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyAuc3Bpbm5lci1ncml0Y29kZS5zcGlubmVyLXhsIC5zcGlubmVyLWNpcmNsZSB7XG5cdFxuXHQvLyAgIHdpZHRoOiAzLjVlbTtcblx0XG5cdC8vICAgaGVpZ2h0OiAzLjVlbTtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5sdC1pZTEwIC5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLWNpcmNsZSxcblx0XG5cdC8vIC5pZTkgLnNwaW5uZXItZ3JpdGNvZGUgLnNwaW5uZXItY2lyY2xlLFxuXHRcblx0Ly8gLm9sZGllIC5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLWNpcmNsZSxcblx0XG5cdC8vIC5uby1jc3N0cmFuc2l0aW9ucyAuc3Bpbm5lci1ncml0Y29kZSAuc3Bpbm5lci1jaXJjbGUsXG5cdFxuXHQvLyAubm8tY3NzdHJhbnNmb3JtczNkIC5zcGlubmVyLWdyaXRjb2RlIC5zcGlubmVyLWNpcmNsZSB7XG5cdFxuXHQvLyAgIGJhY2tncm91bmQ6IHVybChcImh0dHA6Ly9pMi53cC5jb20vd3d3LnRoZWdyZWF0bm92ZWxpbmdhZHZlbnR1cmUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy93cC1wb2xscy9pbWFnZXMvbG9hZGluZy5naWZcIikgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7XG5cdFxuXHQvLyAgIGFuaW1hdGlvbjogbm9uZTtcblx0XG5cdC8vICAgbWFyZ2luLWxlZnQ6IDA7XG5cdFxuXHQvLyAgIG1hcmdpbi10b3A6IDVweDtcblx0XG5cdC8vICAgYm9yZGVyOiBub25lO1xuXHRcblx0Ly8gICB3aWR0aDogMzJweDtcblx0XG5cdC8vICAgaGVpZ2h0OiAzMnB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblxuLyoqKi8gfSxcbi8qIDIwMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgOmNsYXNzPVxcXCJbJ3NwaW5uZXIgc3Bpbm5lci1ncml0Y29kZScsc3Bpbm5lclNpemUseydzcGlubmVyLWZpeGVkJzpmaXhlZH1dXFxcIiB2LXNob3c9XFxcImFjdGl2ZVxcXCI+XFxyXFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItd3JhcHBlclxcXCI+XFxyXFxuICAgICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1jaXJjbGVcXFwiPjwvZGl2PlxcclxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItdGV4dFxcXCI+e3t0ZXh0fX08L2Rpdj5cXHJcXG4gICAgPC9kaXY+XFxyXFxuICA8L2Rpdj5cIjtcblxuLyoqKi8gfSxcbi8qIDIwMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMylcblx0XG5cdGlmIChtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlKSBtb2R1bGUuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzLmRlZmF1bHRcblx0Oyh0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwiZnVuY3Rpb25cIiA/IG1vZHVsZS5leHBvcnRzLm9wdGlvbnMgOiBtb2R1bGUuZXhwb3J0cykudGVtcGxhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNClcblx0aWYgKGZhbHNlKSB7XG5cdChmdW5jdGlvbiAoKSB7XG5cdHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG5cdGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIikpXG5cdGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuXHR2YXIgaWQgPSBcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1RhYi52dWVcIlxuXHRob3RBUEkuY3JlYXRlUmVjb3JkKGlkLCBtb2R1bGUuZXhwb3J0cylcblx0bW9kdWxlLmhvdC5hY2NlcHQoW1wiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVGFiLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vVGFiLnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9UYWIudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vVGFiLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAyMDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIHByb3BzOiB7XG5cdCAgICBoZWFkZXI6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9LFxuXHQgICAgZGlzYWJsZWQ6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9XG5cdCAgfSxcblx0ICBjb21wdXRlZDoge1xuXHQgICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLl90YWJzZXQuc2hvdyA9PT0gdGhpcztcblx0ICAgIH0sXG5cdCAgICBpbmRleDogZnVuY3Rpb24gaW5kZXgoKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLl90YWJzZXQudGFicy5pbmRleE9mKHRoaXMpO1xuXHQgICAgfSxcblx0ICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG5cdCAgICAgIHJldHVybiB0aGlzLl90YWJzZXQgJiYgdGhpcy5fdGFic2V0LnNob3cgPT09IHRoaXM7XG5cdCAgICB9LFxuXHQgICAgdHJhbnNpdGlvbjogZnVuY3Rpb24gdHJhbnNpdGlvbigpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuX3RhYnNldCA/IHRoaXMuX3RhYnNldC5lZmZlY3QgOiBudWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIHRoaXMuX2luZ3JvdXAgPSB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50Ll90YWJncm91cDtcblx0ICAgIHZhciB0YWJzZXQgPSB0aGlzO1xuXHQgICAgd2hpbGUgKHRhYnNldCAmJiB0YWJzZXQuX3RhYnNldCAhPT0gdHJ1ZSAmJiB0YWJzZXQuJHBhcmVudCkge1xuXHQgICAgICB0YWJzZXQgPSB0YWJzZXQuJHBhcmVudDtcblx0ICAgIH1cblx0ICAgIGlmICghdGFic2V0Ll90YWJzZXQpIHtcblx0ICAgICAgdGhpcy5fdGFic2V0ID0ge307XG5cdCAgICAgIGNvbnNvbGUud2FybignV2FybmluZzogXCJ0YWJcIiBkZXBlbmQgb24gXCJ0YWJzZXRcIiB0byB3b3JrIHByb3Blcmx5LicpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGFic2V0LnRhYnMucHVzaCh0aGlzKTtcblx0ICAgICAgaWYgKCF0aGlzLl9pbmdyb3VwKSB7XG5cdCAgICAgICAgdGFic2V0LmhlYWRlcnMucHVzaCh0aGlzKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAoIX50YWJzZXQuaGVhZGVycy5pbmRleE9mKHRoaXMuJHBhcmVudCkpIHtcblx0ICAgICAgICAgIHRhYnNldC5oZWFkZXJzLnB1c2godGhpcy4kcGFyZW50KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fdGFic2V0ID0gdGFic2V0O1xuXHQgICAgfVxuXHQgICAgaWYgKHRoaXMuX2luZ3JvdXApIHtcblx0ICAgICAgdGhpcy4kcGFyZW50LnRhYnMucHVzaCh0aGlzKTtcblx0ICAgIH1cblx0ICB9LFxuXHQgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG5cdCAgICBpZiAodGhpcy5fdGFic2V0LmFjdGl2ZSA9PT0gdGhpcy5pbmRleCkge1xuXHQgICAgICB0aGlzLl90YWJzZXQuYWN0aXZlID0gMDtcblx0ICAgIH1cblx0ICAgIGlmICh0aGlzLl9pbmdyb3VwKSB7XG5cdCAgICAgIHRoaXMuJHBhcmVudC50YWJzLiRyZW1vdmUodGhpcyk7XG5cdCAgICB9XG5cdCAgICB0aGlzLl90YWJzZXQudGFicy4kcmVtb3ZlKHRoaXMpO1xuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdiByb2xlPVwidGFicGFuZWxcIiBjbGFzcz1cInRhYi1wYW5lIGFjdGl2ZVwiIHYtc2hvdz1cInNob3dcIlxuXHRcblx0Ly8gICAgIDpjbGFzcz1cIntoaWRlOiFzaG93fVwiXG5cdFxuXHQvLyAgICAgOnRyYW5zaXRpb249XCJ0cmFuc2l0aW9uXCJcblx0XG5cdC8vICAgPlxuXHRcblx0Ly8gICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgPC9kaXY+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cbi8qKiovIH0sXG4vKiAyMDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IHJvbGU9XFxcInRhYnBhbmVsXFxcIiBjbGFzcz1cXFwidGFiLXBhbmUgYWN0aXZlXFxcIiB2LXNob3c9XFxcInNob3dcXFwiXFxyXFxuICAgIDpjbGFzcz1cXFwie2hpZGU6IXNob3d9XFxcIlxcclxcbiAgICA6dHJhbnNpdGlvbj1cXFwidHJhbnNpdGlvblxcXCJcXHJcXG4gID5cXHJcXG4gICAgPHNsb3Q+PC9zbG90PlxcclxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAyMDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMjA2KVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjA4KVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjA5KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVGFiR3JvdXAudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1RhYkdyb3VwLnZ1ZVwiLFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtcmV3cml0ZXIuanM/aWQ9X3YtN2VjYjg2MzUmZmlsZT1UYWJHcm91cC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vVGFiR3JvdXAudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1RhYkdyb3VwLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLXJld3JpdGVyLmpzP2lkPV92LTdlY2I4NjM1JmZpbGU9VGFiR3JvdXAudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1RhYkdyb3VwLnZ1ZVwiKVxuXHRob3RBUEkudXBkYXRlKGlkLCBuZXdPcHRpb25zLCBuZXdUZW1wbGF0ZSlcblx0fSlcblx0fSkoKVxuXHR9XG5cbi8qKiovIH0sXG4vKiAyMDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cdFxuXHQvLyBsb2FkIHRoZSBzdHlsZXNcblx0dmFyIGNvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNyk7XG5cdGlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXHQvLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG5cdHZhciB1cGRhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSkoY29udGVudCwge30pO1xuXHRpZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcblx0Ly8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuXHRpZihmYWxzZSkge1xuXHRcdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0aWYoIWNvbnRlbnQubG9jYWxzKSB7XG5cdFx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi03ZWNiODYzNSZmaWxlPVRhYkdyb3VwLnZ1ZSZzY29wZWQ9dHJ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9UYWJHcm91cC52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi03ZWNiODYzNSZmaWxlPVRhYkdyb3VwLnZ1ZSZzY29wZWQ9dHJ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9UYWJHcm91cC52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5uYXYtdGFic1tfdi03ZWNiODYzNV0ge1xcclxcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcXHJcXG59XCIsIFwiXCJdKTtcblx0XG5cdC8vIGV4cG9ydHNcblxuXG4vKioqLyB9LFxuLyogMjA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBwcm9wczoge1xuXHQgICAgZGlzYWJsZWQ6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgaGVhZGVyOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHRhYnM6IFtdLFxuXHQgICAgICBzaG93OiBmYWxzZVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICBjb21wdXRlZDoge1xuXHQgICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG5cdCAgICAgIHJldHVybiB+dGhpcy50YWJzLmluZGV4T2YodGhpcy5fdGFic2V0LnNob3cpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcblx0ICAgIHRoaXMuX3RhYmdyb3VwID0gdHJ1ZTtcblx0ICAgIHZhciB0YWJzZXQgPSB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50Ll90YWJzZXQgPT09IHRydWUgPyB0aGlzLiRwYXJlbnQgOiB7fTtcblx0ICAgIGlmICh0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50Ll90YWJncm91cCkge1xuXHQgICAgICBjb25zb2xlLmVycm9yKCdDYW5cXCd0IG5lc3QgdGFiZ3JvdXBzLicpO1xuXHQgICAgfVxuXHQgICAgd2hpbGUgKHRhYnNldCAmJiAhdGFic2V0Ll90YWJzZXQgJiYgdGFic2V0LiRwYXJlbnQpIHtcblx0ICAgICAgdGFic2V0ID0gdGFic2V0LiRwYXJlbnQ7XG5cdCAgICB9XG5cdCAgICBpZiAoIXRhYnNldC5fdGFic2V0KSB7XG5cdCAgICAgIHRoaXMuX3RhYnNldCA9IHt9O1xuXHQgICAgICB0aGlzLnNob3cgPSB0cnVlO1xuXHQgICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHRhYmdyb3VwIGRlcGVuZCBvbiB0YWJzZXQgdG8gd29yayBwcm9wZXJseS4nKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMuX3RhYnNldCA9IHRhYnNldDtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBtZXRob2RzOiB7XG5cdCAgICBibHVyOiBmdW5jdGlvbiBibHVyKCkge1xuXHQgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcblx0ICAgIH0sXG5cdCAgICB0b2dnbGU6IGZ1bmN0aW9uIHRvZ2dsZSgpIHtcblx0ICAgICAgdGhpcy5zaG93ID0gIXRoaXMuc2hvdztcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdC8vIDwvc2NyaXB0PlxuXHRcblx0XG5cdC8vIDxzdHlsZSBzY29wZWQ+XG5cdFxuXHQvLyAubmF2LXRhYnMge1xuXHRcblx0Ly8gICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gPC9zdHlsZT5cblx0Ly8gPHRlbXBsYXRlPjxzbG90Pjwvc2xvdD48L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cbi8qKiovIH0sXG4vKiAyMDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8c2xvdCBfdi03ZWNiODYzNT1cXFwiXFxcIj48L3Nsb3Q+XCI7XG5cbi8qKiovIH0sXG4vKiAyMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMjExKVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEzKVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjE0KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVGFic2V0LnZ1ZVwiXG5cdGhvdEFQSS5jcmVhdGVSZWNvcmQoaWQsIG1vZHVsZS5leHBvcnRzKVxuXHRtb2R1bGUuaG90LmFjY2VwdChbXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9UYWJzZXQudnVlXCIsXCItIXZ1ZS1odG1sLWxvYWRlciEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1yZXdyaXRlci5qcz9pZD1fdi1lOGFlY2I5MCZmaWxlPVRhYnNldC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vVGFic2V0LnZ1ZVwiXSwgZnVuY3Rpb24gKCkge1xuXHR2YXIgbmV3T3B0aW9ucyA9IHJlcXVpcmUoXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9UYWJzZXQudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtcmV3cml0ZXIuanM/aWQ9X3YtZThhZWNiOTAmZmlsZT1UYWJzZXQudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1RhYnNldC52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMjExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXHRcblx0Ly8gbG9hZCB0aGUgc3R5bGVzXG5cdHZhciBjb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTIpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtZThhZWNiOTAmZmlsZT1UYWJzZXQudnVlJnNjb3BlZD10cnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL1RhYnNldC52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi1lOGFlY2I5MCZmaWxlPVRhYnNldC52dWUmc2NvcGVkPXRydWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vVGFic2V0LnZ1ZVwiKTtcblx0XHRcdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cdFx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDIxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApKCk7XG5cdC8vIGltcG9ydHNcblx0XG5cdFxuXHQvLyBtb2R1bGVcblx0ZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLm5hdi10YWJzW192LWU4YWVjYjkwXSB7XFxyXFxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAyMTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIF9Ecm9wZG93biA9IF9fd2VicGFja19yZXF1aXJlX18oMTI3KTtcblx0XG5cdHZhciBfRHJvcGRvd24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfRHJvcGRvd24pO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdj5cblx0XG5cdC8vICAgICA8IS0tIE5hdiB0YWJzIC0tPlxuXHRcblx0Ly8gICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYte3tuYXZTdHlsZX19XCIgcm9sZT1cInRhYmxpc3RcIj5cblx0XG5cdC8vICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cInQgaW4gaGVhZGVyc1wiPlxuXHRcblx0Ly8gICAgICAgICA8bGkgdi1pZj1cIiF0Ll90YWJncm91cFwiIDpjbGFzcz1cInthY3RpdmU6dC5hY3RpdmUsIGRpc2FibGVkOnQuZGlzYWJsZWR9XCIgQGNsaWNrLnByZXZlbnQ9XCJzZWxlY3QodClcIj5cblx0XG5cdC8vICAgICAgICAgICA8YSBocmVmPVwiI1wiPjxzbG90IG5hbWU9XCJoZWFkZXJcIj57e3t0LmhlYWRlcn19fTwvc2xvdD48L2E+XG5cdFxuXHQvLyAgICAgICAgIDwvbGk+XG5cdFxuXHQvLyAgICAgICAgIDxkcm9wZG93biB2LWVsc2UgOnRleHQ9XCJ0LmhlYWRlclwiIDpjbGFzcz1cInthY3RpdmU6dC5hY3RpdmV9XCIgOmRpc2FibGVkPVwidC5kaXNhYmxlZFwiPlxuXHRcblx0Ly8gICAgICAgICAgIDxsaSB2LWZvcj1cInRhYiBpbiB0LnRhYnNcIiA6Y2xhc3M9XCJ7ZGlzYWJsZWQ6dGFiLmRpc2FibGVkfVwiPjxhIGhyZWY9XCIjXCIgQGNsaWNrLnByZXZlbnQ9XCJzZWxlY3QodGFiKVwiPnt7dGFiLmhlYWRlcn19PC9hPjwvbGk+XG5cdFxuXHQvLyAgICAgICAgIDwvZHJvcGRvd24+XG5cdFxuXHQvLyAgICAgICA8L3RlbXBsYXRlPlxuXHRcblx0Ly8gICAgIDwvdWw+XG5cdFxuXHQvLyAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgdi1lbDp0YWItY29udGVudD5cblx0XG5cdC8vICAgICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICA8L2Rpdj5cblx0XG5cdC8vICAgPC9kaXY+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBjb21wb25lbnRzOiB7XG5cdCAgICBkcm9wZG93bjogX0Ryb3Bkb3duMi5kZWZhdWx0XG5cdCAgfSxcblx0ICBwcm9wczoge1xuXHQgICAgbmF2U3R5bGU6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAndGFicydcblx0ICAgIH0sXG5cdCAgICBlZmZlY3Q6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAnZmFkZWluJ1xuXHQgICAgfSxcblx0ICAgIGFjdGl2ZToge1xuXHQgICAgICB0d29XYXk6IHRydWUsXG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLm51bWJlcixcblx0ICAgICAgZGVmYXVsdDogMFxuXHQgICAgfVxuXHQgIH0sXG5cdCAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHNob3c6IG51bGwsXG5cdCAgICAgIGhlYWRlcnM6IFtdLFxuXHQgICAgICB0YWJzOiBbXVxuXHQgICAgfTtcblx0ICB9LFxuXHQgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG5cdCAgICB0aGlzLl90YWJzZXQgPSB0cnVlO1xuXHQgIH0sXG5cdFxuXHQgIHdhdGNoOiB7XG5cdCAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZSh2YWwpIHtcblx0ICAgICAgdGhpcy5zaG93ID0gdGhpcy50YWJzW3ZhbF07XG5cdCAgICB9XG5cdCAgfSxcblx0ICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7XG5cdCAgICB0aGlzLnNob3cgPSB0aGlzLnRhYnNbdGhpcy5hY3RpdmVdO1xuXHQgIH0sXG5cdFxuXHQgIG1ldGhvZHM6IHtcblx0ICAgIHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KHRhYikge1xuXHQgICAgICBpZiAoIXRhYi5kaXNhYmxlZCkge1xuXHQgICAgICAgIHRoaXMuYWN0aXZlID0gdGFiLmluZGV4O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHQvLyA8L3NjcmlwdD5cblx0XG5cdFxuXHQvLyA8c3R5bGUgc2NvcGVkPlxuXHRcblx0Ly8gLm5hdi10YWJzIHtcblx0XG5cdC8vICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cbi8qKiovIH0sXG4vKiAyMTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IF92LWU4YWVjYjkwPVxcXCJcXFwiPlxcbiAgICA8IS0tIE5hdiB0YWJzIC0tPlxcbiAgICA8dWwgY2xhc3M9XFxcIm5hdiBuYXYte3tuYXZTdHlsZX19XFxcIiByb2xlPVxcXCJ0YWJsaXN0XFxcIiBfdi1lOGFlY2I5MD1cXFwiXFxcIj5cXG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XFxcInQgaW4gaGVhZGVyc1xcXCIgX3YtZThhZWNiOTA9XFxcIlxcXCI+XFxuICAgICAgICA8bGkgdi1pZj1cXFwiIXQuX3RhYmdyb3VwXFxcIiA6Y2xhc3M9XFxcInthY3RpdmU6dC5hY3RpdmUsIGRpc2FibGVkOnQuZGlzYWJsZWR9XFxcIiBAY2xpY2sucHJldmVudD1cXFwic2VsZWN0KHQpXFxcIiBfdi1lOGFlY2I5MD1cXFwiXFxcIj5cXG4gICAgICAgICAgPGEgaHJlZj1cXFwiI1xcXCIgX3YtZThhZWNiOTA9XFxcIlxcXCI+PHNsb3QgbmFtZT1cXFwiaGVhZGVyXFxcIiBfdi1lOGFlY2I5MD1cXFwiXFxcIj57e3t0LmhlYWRlcn19fTwvc2xvdD48L2E+XFxuICAgICAgICA8L2xpPlxcbiAgICAgICAgPGRyb3Bkb3duIHYtZWxzZT1cXFwiXFxcIiA6dGV4dD1cXFwidC5oZWFkZXJcXFwiIDpjbGFzcz1cXFwie2FjdGl2ZTp0LmFjdGl2ZX1cXFwiIDpkaXNhYmxlZD1cXFwidC5kaXNhYmxlZFxcXCIgX3YtZThhZWNiOTA9XFxcIlxcXCI+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwidGFiIGluIHQudGFic1xcXCIgOmNsYXNzPVxcXCJ7ZGlzYWJsZWQ6dGFiLmRpc2FibGVkfVxcXCIgX3YtZThhZWNiOTA9XFxcIlxcXCI+PGEgaHJlZj1cXFwiI1xcXCIgQGNsaWNrLnByZXZlbnQ9XFxcInNlbGVjdCh0YWIpXFxcIiBfdi1lOGFlY2I5MD1cXFwiXFxcIj57e3RhYi5oZWFkZXJ9fTwvYT48L2xpPlxcbiAgICAgICAgPC9kcm9wZG93bj5cXG4gICAgICA8L3RlbXBsYXRlPlxcbiAgICA8L3VsPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJ0YWItY29udGVudFxcXCIgdi1lbDp0YWItY29udGVudD1cXFwiXFxcIiBfdi1lOGFlY2I5MD1cXFwiXFxcIj5cXG4gICAgICA8c2xvdCBfdi1lOGFlY2I5MD1cXFwiXFxcIj48L3Nsb3Q+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH0sXG4vKiAyMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMjE2KVxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjE4KVxuXHRcblx0aWYgKG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMuZGVmYXVsdFxuXHQ7KHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJmdW5jdGlvblwiID8gbW9kdWxlLmV4cG9ydHMub3B0aW9ucyA6IG1vZHVsZS5leHBvcnRzKS50ZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjE5KVxuXHRpZiAoZmFsc2UpIHtcblx0KGZ1bmN0aW9uICgpIHtcblx0dmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcblx0aG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSlcblx0aWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG5cdHZhciBpZCA9IFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVG9vbHRpcC52dWVcIlxuXHRob3RBUEkuY3JlYXRlUmVjb3JkKGlkLCBtb2R1bGUuZXhwb3J0cylcblx0bW9kdWxlLmhvdC5hY2NlcHQoW1wiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVG9vbHRpcC52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1Rvb2x0aXAudnVlXCJdLCBmdW5jdGlvbiAoKSB7XG5cdHZhciBuZXdPcHRpb25zID0gcmVxdWlyZShcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1Rvb2x0aXAudnVlXCIpXG5cdGlmIChuZXdPcHRpb25zICYmIG5ld09wdGlvbnMuX19lc01vZHVsZSkgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZGVmYXVsdFxuXHR2YXIgbmV3VGVtcGxhdGUgPSByZXF1aXJlKFwiLSF2dWUtaHRtbC1sb2FkZXIhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vVG9vbHRpcC52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMjE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXHRcblx0Ly8gbG9hZCB0aGUgc3R5bGVzXG5cdHZhciBjb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTcpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtMDAwYzZiZjAmZmlsZT1Ub29sdGlwLnZ1ZSEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlJmluZGV4PTAhLi9Ub29sdGlwLnZ1ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPV92LTAwMGM2YmYwJmZpbGU9VG9vbHRpcC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vVG9vbHRpcC52dWVcIik7XG5cdFx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAwKSgpO1xuXHQvLyBpbXBvcnRzXG5cdFxuXHRcblx0Ly8gbW9kdWxlXG5cdGV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi50b29sdGlwLnRvcCxcXHJcXG4udG9vbHRpcC5sZWZ0LFxcclxcbi50b29sdGlwLnJpZ2h0LFxcclxcbi50b29sdGlwLmJvdHRvbSB7XFxyXFxuICBvcGFjaXR5OiAuOVxcclxcbn1cXHJcXG4uZmFkZWluLWVudGVyIHtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOmZhZGVpbi1pbiAwLjNzIGVhc2UtaW47XFxyXFxuICAgICAgICAgIGFuaW1hdGlvbjpmYWRlaW4taW4gMC4zcyBlYXNlLWluO1xcclxcbn1cXHJcXG4uZmFkZWluLWxlYXZlIHtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOmZhZGVpbi1vdXQgMC4zcyBlYXNlLW91dDtcXHJcXG4gICAgICAgICAgYW5pbWF0aW9uOmZhZGVpbi1vdXQgMC4zcyBlYXNlLW91dDtcXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVpbi1pbiB7XFxyXFxuICAwJSB7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgb3BhY2l0eTogLjk7XFxyXFxuICB9XFxyXFxufVxcclxcbkBrZXlmcmFtZXMgZmFkZWluLWluIHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICBvcGFjaXR5OiAuOTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVpbi1vdXQge1xcclxcbiAgMCUge1xcclxcbiAgICBvcGFjaXR5OiAuOTtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIGZhZGVpbi1vdXQge1xcclxcbiAgMCUge1xcclxcbiAgICBvcGFjaXR5OiAuOTtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgfVxcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAyMTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9wb3BvdmVyTWl4aW5zID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpO1xuXHRcblx0dmFyIF9wb3BvdmVyTWl4aW5zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvcG92ZXJNaXhpbnMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICBtaXhpbnM6IFtfcG9wb3Zlck1peGluczIuZGVmYXVsdF0sXG5cdCAgcHJvcHM6IHtcblx0ICAgIHRyaWdnZXI6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nLFxuXHQgICAgICBkZWZhdWx0OiAnaG92ZXInXG5cdCAgICB9LFxuXHQgICAgZWZmZWN0OiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZyxcblx0ICAgICAgZGVmYXVsdDogJ3NjYWxlJ1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdFxuXHRcblx0Ly8gPHN0eWxlPlxuXHRcblx0Ly8gLnRvb2x0aXAudG9wLFxuXHRcblx0Ly8gLnRvb2x0aXAubGVmdCxcblx0XG5cdC8vIC50b29sdGlwLnJpZ2h0LFxuXHRcblx0Ly8gLnRvb2x0aXAuYm90dG9tIHtcblx0XG5cdC8vICAgb3BhY2l0eTogLjlcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5mYWRlaW4tZW50ZXIge1xuXHRcblx0Ly8gICBhbmltYXRpb246ZmFkZWluLWluIDAuM3MgZWFzZS1pbjtcblx0XG5cdC8vIH1cblx0XG5cdC8vIC5mYWRlaW4tbGVhdmUge1xuXHRcblx0Ly8gICBhbmltYXRpb246ZmFkZWluLW91dCAwLjNzIGVhc2Utb3V0O1xuXHRcblx0Ly8gfVxuXHRcblx0Ly8gQGtleWZyYW1lcyBmYWRlaW4taW4ge1xuXHRcblx0Ly8gICAwJSB7XG5cdFxuXHQvLyAgICAgb3BhY2l0eTogMDtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gICAxMDAlIHtcblx0XG5cdC8vICAgICBvcGFjaXR5OiAuOTtcblx0XG5cdC8vICAgfVxuXHRcblx0Ly8gfVxuXHRcblx0Ly8gQGtleWZyYW1lcyBmYWRlaW4tb3V0IHtcblx0XG5cdC8vICAgMCUge1xuXHRcblx0Ly8gICAgIG9wYWNpdHk6IC45O1xuXHRcblx0Ly8gICB9XG5cdFxuXHQvLyAgIDEwMCUge1xuXHRcblx0Ly8gICAgIG9wYWNpdHk6IDA7XG5cdFxuXHQvLyAgIH1cblx0XG5cdC8vIH1cblx0XG5cdC8vIDwvc3R5bGU+XG5cdC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPHNwYW4gdi1lbDp0cmlnZ2VyPlxuXHRcblx0Ly8gICAgIDxzbG90Pjwvc2xvdD5cblx0XG5cdC8vICAgICA8ZGl2IHYtZWw6cG9wb3ZlciB2LWlmPVwic2hvd1wiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIlxuXHRcblx0Ly8gICAgICAgOmNsYXNzPVwiWyd0b29sdGlwJyxwbGFjZW1lbnRdXCJcblx0XG5cdC8vICAgICAgIDp0cmFuc2l0aW9uPVwiZWZmZWN0XCJcblx0XG5cdC8vICAgICA+XG5cdFxuXHQvLyAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PlxuXHRcblx0Ly8gICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj5cblx0XG5cdC8vICAgICAgICAgPHNsb3QgbmFtZT1cImNvbnRlbnRcIj57e3tjb250ZW50fX19PC9zbG90PlxuXHRcblx0Ly8gICAgIDwvZGl2PlxuXHRcblx0Ly8gICAgIDwvZGl2PlxuXHRcblx0Ly8gICA8L3NwYW4+XG5cdFxuXHQvLyA8L3RlbXBsYXRlPlxuXHRcblx0XG5cdC8vIDxzY3JpcHQ+XG5cbi8qKiovIH0sXG4vKiAyMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8c3BhbiB2LWVsOnRyaWdnZXI+XFxyXFxuICAgIDxzbG90Pjwvc2xvdD5cXHJcXG4gICAgPGRpdiB2LWVsOnBvcG92ZXIgdi1pZj1cXFwic2hvd1xcXCIgc3R5bGU9XFxcImRpc3BsYXk6YmxvY2s7XFxcIlxcclxcbiAgICAgIDpjbGFzcz1cXFwiWyd0b29sdGlwJyxwbGFjZW1lbnRdXFxcIlxcclxcbiAgICAgIDp0cmFuc2l0aW9uPVxcXCJlZmZlY3RcXFwiXFxyXFxuICAgID5cXHJcXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJ0b29sdGlwLWFycm93XFxcIj48L2Rpdj5cXHJcXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJ0b29sdGlwLWlubmVyXFxcIj5cXHJcXG4gICAgICAgIDxzbG90IG5hbWU9XFxcImNvbnRlbnRcXFwiPnt7e2NvbnRlbnR9fX08L3Nsb3Q+XFxyXFxuICAgIDwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG4gIDwvc3Bhbj5cIjtcblxuLyoqKi8gfSxcbi8qIDIyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygyMjEpXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjMpXG5cdFxuXHRpZiAobW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSkgbW9kdWxlLmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cy5kZWZhdWx0XG5cdDsodHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcImZ1bmN0aW9uXCIgPyBtb2R1bGUuZXhwb3J0cy5vcHRpb25zIDogbW9kdWxlLmV4cG9ydHMpLnRlbXBsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjQpXG5cdGlmIChmYWxzZSkge1xuXHQoZnVuY3Rpb24gKCkge1xuXHR2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuXHRob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpKVxuXHRpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cblx0dmFyIGlkID0gXCItIWJhYmVsIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9UeXBlYWhlYWQudnVlXCJcblx0aG90QVBJLmNyZWF0ZVJlY29yZChpZCwgbW9kdWxlLmV4cG9ydHMpXG5cdG1vZHVsZS5ob3QuYWNjZXB0KFtcIi0hYmFiZWwhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1R5cGVhaGVhZC52dWVcIixcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1R5cGVhaGVhZC52dWVcIl0sIGZ1bmN0aW9uICgpIHtcblx0dmFyIG5ld09wdGlvbnMgPSByZXF1aXJlKFwiLSFiYWJlbCEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vVHlwZWFoZWFkLnZ1ZVwiKVxuXHRpZiAobmV3T3B0aW9ucyAmJiBuZXdPcHRpb25zLl9fZXNNb2R1bGUpIG5ld09wdGlvbnMgPSBuZXdPcHRpb25zLmRlZmF1bHRcblx0dmFyIG5ld1RlbXBsYXRlID0gcmVxdWlyZShcIi0hdnVlLWh0bWwtbG9hZGVyIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1R5cGVhaGVhZC52dWVcIilcblx0aG90QVBJLnVwZGF0ZShpZCwgbmV3T3B0aW9ucywgbmV3VGVtcGxhdGUpXG5cdH0pXG5cdH0pKClcblx0fVxuXG4vKioqLyB9LFxuLyogMjIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXHRcblx0Ly8gbG9hZCB0aGUgc3R5bGVzXG5cdHZhciBjb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjIpO1xuXHRpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblx0Ly8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxuXHR2YXIgdXBkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpKGNvbnRlbnQsIHt9KTtcblx0aWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cdC8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcblx0aWYoZmFsc2UpIHtcblx0XHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRcdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdFx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtcmV3cml0ZXIuanM/aWQ9X3YtNzhkYmU4ZTgmZmlsZT1UeXBlYWhlYWQudnVlIS4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGUmaW5kZXg9MCEuL1R5cGVhaGVhZC52dWVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1yZXdyaXRlci5qcz9pZD1fdi03OGRiZThlOCZmaWxlPVR5cGVhaGVhZC52dWUhLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZSZpbmRleD0wIS4vVHlwZWFoZWFkLnZ1ZVwiKTtcblx0XHRcdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cdFx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdFx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDIyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApKCk7XG5cdC8vIGltcG9ydHNcblx0XG5cdFxuXHQvLyBtb2R1bGVcblx0ZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEge1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cIiwgXCJcIl0pO1xuXHRcblx0Ly8gZXhwb3J0c1xuXG5cbi8qKiovIH0sXG4vKiAyMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIFZ1ZSA9IHdpbmRvdy5WdWU7IC8vIDx0ZW1wbGF0ZT5cblx0XG5cdC8vICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiXG5cdFxuXHQvLyAgICAgICAgdi1iaW5kOmNsYXNzPVwieydvcGVuJzpzaG93RHJvcGRvd259XCJcblx0XG5cdC8vICAgPlxuXHRcblx0Ly8gICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcblx0XG5cdC8vICAgICAgIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyXCJcblx0XG5cdC8vICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFxuXHQvLyAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuXHRcblx0Ly8gICAgICAgQGlucHV0PVwidXBkYXRlXCJcblx0XG5cdC8vICAgICAgIEBrZXlkb3duLnVwPVwidXBcIlxuXHRcblx0Ly8gICAgICAgQGtleWRvd24uZG93bj1cImRvd25cIlxuXHRcblx0Ly8gICAgICAgQGtleWRvd24uZW50ZXI9IFwiaGl0XCJcblx0XG5cdC8vICAgICAgIEBrZXlkb3duLmVzYz1cInJlc2V0XCJcblx0XG5cdC8vICAgICAgIEBibHVyPVwic2hvd0Ryb3Bkb3duID0gZmFsc2VcIlxuXHRcblx0Ly8gICAgIC8+XG5cdFxuXHQvLyAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHYtZWw6ZHJvcGRvd24+XG5cdFxuXHQvLyAgICAgICA8bGkgdi1mb3I9XCJpdGVtIGluIGl0ZW1zXCIgdi1iaW5kOmNsYXNzPVwieydhY3RpdmUnOiBpc0FjdGl2ZSgkaW5kZXgpfVwiPlxuXHRcblx0Ly8gICAgICAgICA8YSBAbW91c2Vkb3duLnByZXZlbnQ9XCJoaXRcIiBAbW91c2Vtb3ZlPVwic2V0QWN0aXZlKCRpbmRleClcIj5cblx0XG5cdC8vICAgICAgICAgICA8cGFydGlhbCA6bmFtZT1cInRlbXBsYXRlTmFtZVwiPjwvcGFydGlhbD5cblx0XG5cdC8vICAgICAgICAgPC9hPlxuXHRcblx0Ly8gICAgICAgPC9saT5cblx0XG5cdC8vICAgICA8L3VsPlxuXHRcblx0Ly8gICA8L2Rpdj5cblx0XG5cdC8vIDwvdGVtcGxhdGU+XG5cdFxuXHRcblx0Ly8gPHNjcmlwdD5cblx0XG5cdHZhciBfREVMQVlfID0gMjAwO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0ge1xuXHQgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG5cdCAgICB0aGlzLml0ZW1zID0gdGhpcy5wcmltaXRpdmVEYXRhO1xuXHQgIH0sXG5cdFxuXHQgIHBhcnRpYWxzOiB7XG5cdCAgICBkZWZhdWx0OiAnPHNwYW4gdi1odG1sPVwiaXRlbSB8IGhpZ2hsaWdodCB2YWx1ZVwiPjwvc3Bhbj4nXG5cdCAgfSxcblx0ICBwcm9wczoge1xuXHQgICAgdmFsdWU6IHtcblx0ICAgICAgdHdvV2F5OiB0cnVlLFxuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICcnXG5cdCAgICB9LFxuXHQgICAgZGF0YToge1xuXHQgICAgICB0eXBlOiBBcnJheVxuXHQgICAgfSxcblx0ICAgIGxpbWl0OiB7XG5cdCAgICAgIHR5cGU6IE51bWJlcixcblx0ICAgICAgZGVmYXVsdDogOFxuXHQgICAgfSxcblx0ICAgIGFzeW5jOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfSxcblx0ICAgIHRlbXBsYXRlOiB7XG5cdCAgICAgIHR5cGU6IFN0cmluZ1xuXHQgICAgfSxcblx0ICAgIHRlbXBsYXRlTmFtZToge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6ICdkZWZhdWx0J1xuXHQgICAgfSxcblx0ICAgIGtleToge1xuXHQgICAgICB0eXBlOiBTdHJpbmcsXG5cdCAgICAgIGRlZmF1bHQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICBtYXRjaENhc2U6IHtcblx0ICAgICAgdHlwZTogQm9vbGVhbixcblx0ICAgICAgY29lcmNlOiBfdXRpbHMuY29lcmNlLmJvb2xlYW4sXG5cdCAgICAgIGRlZmF1bHQ6IGZhbHNlXG5cdCAgICB9LFxuXHQgICAgbWF0Y2hTdGFydDoge1xuXHQgICAgICB0eXBlOiBCb29sZWFuLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UuYm9vbGVhbixcblx0ICAgICAgZGVmYXVsdDogZmFsc2Vcblx0ICAgIH0sXG5cdCAgICBvbkhpdDoge1xuXHQgICAgICB0eXBlOiBGdW5jdGlvbixcblx0ICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoaXRlbXMpIHtcblx0ICAgICAgICB0aGlzLnJlc2V0KCk7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW1zO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgcGxhY2Vob2xkZXI6IHtcblx0ICAgICAgdHlwZTogU3RyaW5nXG5cdCAgICB9LFxuXHQgICAgZGVsYXk6IHtcblx0ICAgICAgdHlwZTogTnVtYmVyLFxuXHQgICAgICBkZWZhdWx0OiBfREVMQVlfLFxuXHQgICAgICBjb2VyY2U6IF91dGlscy5jb2VyY2UubnVtYmVyXG5cdCAgICB9XG5cdCAgfSxcblx0ICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgc2hvd0Ryb3Bkb3duOiBmYWxzZSxcblx0ICAgICAgbm9SZXN1bHRzOiB0cnVlLFxuXHQgICAgICBjdXJyZW50OiAwLFxuXHQgICAgICBpdGVtczogW11cblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgY29tcHV0ZWQ6IHtcblx0ICAgIHByaW1pdGl2ZURhdGE6IGZ1bmN0aW9uIHByaW1pdGl2ZURhdGEoKSB7XG5cdCAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAodGhpcy5kYXRhKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICAgICAgICB2YWx1ZSA9IF90aGlzLm1hdGNoQ2FzZSA/IHZhbHVlIDogdmFsdWUudG9Mb3dlckNhc2UoKTtcblx0ICAgICAgICAgIHZhciBxdWVyeSA9IF90aGlzLm1hdGNoQ2FzZSA/IF90aGlzLnZhbHVlIDogX3RoaXMudmFsdWUudG9Mb3dlckNhc2UoKTtcblx0ICAgICAgICAgIHJldHVybiBfdGhpcy5tYXRjaFN0YXJ0ID8gdmFsdWUuaW5kZXhPZihxdWVyeSkgPT09IDAgOiB2YWx1ZS5pbmRleE9mKHF1ZXJ5KSAhPT0gLTE7XG5cdCAgICAgICAgfSkuc2xpY2UoMCwgdGhpcy5saW1pdCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHQgIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHtcblx0ICAgIC8vIHJlZ2lzdGVyIGEgcGFydGlhbDpcblx0ICAgIGlmICh0aGlzLnRlbXBsYXRlTmFtZSAmJiB0aGlzLnRlbXBsYXRlTmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG5cdCAgICAgIFZ1ZS5wYXJ0aWFsKHRoaXMudGVtcGxhdGVOYW1lLCB0aGlzLnRlbXBsYXRlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBtZXRob2RzOiB7XG5cdCAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcblx0ICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG5cdCAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAodGhpcy5kYXRhKSB7XG5cdCAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMucHJpbWl0aXZlRGF0YTtcblx0ICAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IHRoaXMuaXRlbXMubGVuZ3RoID4gMDtcblx0ICAgICAgfVxuXHQgICAgICBpZiAodGhpcy5hc3luYykgdGhpcy5xdWVyeSgpO1xuXHQgICAgfSxcblx0XG5cdCAgICBxdWVyeTogKDAsIF91dGlscy5kZWxheWVyKShmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXHRcblx0ICAgICAgKDAsIF91dGlscy5nZXRKU09OKSh0aGlzLmFzeW5jICsgdGhpcy52YWx1ZSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIF90aGlzMi5pdGVtcyA9IChfdGhpczIua2V5ID8gZGF0YVtfdGhpczIua2V5XSA6IGRhdGEpLnNsaWNlKDAsIF90aGlzMi5saW1pdCk7XG5cdCAgICAgICAgX3RoaXMyLnNob3dEcm9wZG93biA9IF90aGlzMi5pdGVtcy5sZW5ndGg7XG5cdCAgICAgIH0pO1xuXHQgICAgfSwgJ2RlbGF5JywgX0RFTEFZXyksXG5cdCAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7XG5cdCAgICAgIHRoaXMuaXRlbXMgPSBbXTtcblx0ICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuXHQgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblx0ICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcblx0ICAgIH0sXG5cdCAgICBzZXRBY3RpdmU6IGZ1bmN0aW9uIHNldEFjdGl2ZShpbmRleCkge1xuXHQgICAgICB0aGlzLmN1cnJlbnQgPSBpbmRleDtcblx0ICAgIH0sXG5cdCAgICBpc0FjdGl2ZTogZnVuY3Rpb24gaXNBY3RpdmUoaW5kZXgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuY3VycmVudCA9PT0gaW5kZXg7XG5cdCAgICB9LFxuXHQgICAgaGl0OiBmdW5jdGlvbiBoaXQoZSkge1xuXHQgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cdCAgICAgIHRoaXMub25IaXQodGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRdLCB0aGlzKTtcblx0ICAgIH0sXG5cdCAgICB1cDogZnVuY3Rpb24gdXAoKSB7XG5cdCAgICAgIGlmICh0aGlzLmN1cnJlbnQgPiAwKSB0aGlzLmN1cnJlbnQtLTtcblx0ICAgIH0sXG5cdCAgICBkb3duOiBmdW5jdGlvbiBkb3duKCkge1xuXHQgICAgICBpZiAodGhpcy5jdXJyZW50IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxKSB0aGlzLmN1cnJlbnQrKztcblx0ICAgIH1cblx0ICB9LFxuXHQgIGZpbHRlcnM6IHtcblx0ICAgIGhpZ2hsaWdodDogZnVuY3Rpb24gaGlnaGxpZ2h0KHZhbHVlLCBwaHJhc2UpIHtcblx0ICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgnKCcgKyBwaHJhc2UgKyAnKScsICdnaScpLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0Ly8gPC9zY3JpcHQ+XG5cdFxuXHRcblx0Ly8gPHN0eWxlPlxuXHRcblx0Ly8gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEge1xuXHRcblx0Ly8gICBjdXJzb3I6IHBvaW50ZXI7XG5cdFxuXHQvLyB9XG5cdFxuXHQvLyA8L3N0eWxlPlxuXG4vKioqLyB9LFxuLyogMjI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBzdHlsZT1cXFwicG9zaXRpb246IHJlbGF0aXZlXFxcIlxcclxcbiAgICAgICB2LWJpbmQ6Y2xhc3M9XFxcInsnb3Blbic6c2hvd0Ryb3Bkb3dufVxcXCJcXHJcXG4gID5cXHJcXG4gICAgPGlucHV0IHR5cGU9XFxcInRleHRcXFwiIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxyXFxuICAgICAgOnBsYWNlaG9sZGVyPVxcXCJwbGFjZWhvbGRlclxcXCJcXHJcXG4gICAgICBhdXRvY29tcGxldGU9XFxcIm9mZlxcXCJcXHJcXG4gICAgICB2LW1vZGVsPVxcXCJ2YWx1ZVxcXCJcXHJcXG4gICAgICBAaW5wdXQ9XFxcInVwZGF0ZVxcXCJcXHJcXG4gICAgICBAa2V5ZG93bi51cD1cXFwidXBcXFwiXFxyXFxuICAgICAgQGtleWRvd24uZG93bj1cXFwiZG93blxcXCJcXHJcXG4gICAgICBAa2V5ZG93bi5lbnRlcj0gXFxcImhpdFxcXCJcXHJcXG4gICAgICBAa2V5ZG93bi5lc2M9XFxcInJlc2V0XFxcIlxcclxcbiAgICAgIEBibHVyPVxcXCJzaG93RHJvcGRvd24gPSBmYWxzZVxcXCJcXHJcXG4gICAgLz5cXHJcXG4gICAgPHVsIGNsYXNzPVxcXCJkcm9wZG93bi1tZW51XFxcIiB2LWVsOmRyb3Bkb3duPlxcclxcbiAgICAgIDxsaSB2LWZvcj1cXFwiaXRlbSBpbiBpdGVtc1xcXCIgdi1iaW5kOmNsYXNzPVxcXCJ7J2FjdGl2ZSc6IGlzQWN0aXZlKCRpbmRleCl9XFxcIj5cXHJcXG4gICAgICAgIDxhIEBtb3VzZWRvd24ucHJldmVudD1cXFwiaGl0XFxcIiBAbW91c2Vtb3ZlPVxcXCJzZXRBY3RpdmUoJGluZGV4KVxcXCI+XFxyXFxuICAgICAgICAgIDxwYXJ0aWFsIDpuYW1lPVxcXCJ0ZW1wbGF0ZU5hbWVcXFwiPjwvcGFydGlhbD5cXHJcXG4gICAgICAgIDwvYT5cXHJcXG4gICAgICA8L2xpPlxcclxcbiAgICA8L3VsPlxcclxcbiAgPC9kaXY+XCI7XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZ1ZS1zdHJhcC5qcy5tYXBcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0cmFwL2Rpc3QvdnVlLXN0cmFwLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(20);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"225f5372\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-225778c2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./PersonalAccessTokens.vue\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-225778c2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./PersonalAccessTokens.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlPzI3YTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0yMjU3NzhjMlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL1BlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMjI1ZjUzNzJcIiwgY29udGVudCwgZmFsc2UpO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LTIyNTc3OGMyXFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0yMjU3NzhjMlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL1BlcnNvbmFsQWNjZXNzVG9rZW5zLnZ1ZVwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIhLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTIyNTc3OGMyXCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvUGVyc29uYWxBY2Nlc3NUb2tlbnMudnVlXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(21);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"5aef64b0\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/index.js?sourceMap!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-3edef3ba\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./alert.vue\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/index.js?sourceMap!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-3edef3ba\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./alert.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYWxlcnQudnVlPzJkZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0zZWRlZjNiYVxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL2FsZXJ0LnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiNWFlZjY0YjBcIiwgY29udGVudCwgZmFsc2UpO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LTNlZGVmM2JhXFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vYWxlcnQudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi0zZWRlZjNiYVxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL2FsZXJ0LnZ1ZVwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIhLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTNlZGVmM2JhXCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYWxlcnQudnVlXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(22);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"cb2f6746\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-5301a236\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./importer.vue\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-5301a236\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./importer.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlP2RkZWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi01MzAxYTIzNlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL2ltcG9ydGVyLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiY2IyZjY3NDZcIiwgY29udGVudCwgZmFsc2UpO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LTUzMDFhMjM2XFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vaW1wb3J0ZXIudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi01MzAxYTIzNlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL2ltcG9ydGVyLnZ1ZVwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIhLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTUzMDFhMjM2XCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXIudnVlXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(23);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"39d58d3f\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-5667c312\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./importer-errors.vue\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-5667c312\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./importer-errors.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvaW1wb3J0ZXIvaW1wb3J0ZXItZXJyb3JzLnZ1ZT9lNTA2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtNTY2N2MzMTJcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9pbXBvcnRlci1lcnJvcnMudnVlXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikoXCIzOWQ1OGQzZlwiLCBjb250ZW50LCBmYWxzZSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtNTY2N2MzMTJcXFwiLFxcXCJzY29wZWRcXFwiOnRydWUsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6dHJ1ZX0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9pbXBvcnRlci1lcnJvcnMudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi01NjY3YzMxMlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL2ltcG9ydGVyLWVycm9ycy52dWVcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtc3R5bGUtbG9hZGVyIS4vfi9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL34vdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi01NjY3YzMxMlwiLFwic2NvcGVkXCI6dHJ1ZSxcImhhc0lubGluZUNvbmZpZ1wiOnRydWV9IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2ltcG9ydGVyL2ltcG9ydGVyLWVycm9ycy52dWVcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9"); + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(24);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"26e83ac0\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-de0d0e4e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./AuthorizedClients.vue\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-de0d0e4e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./AuthorizedClients.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlPzRiYzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1kZTBkMGU0ZVxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL0F1dGhvcml6ZWRDbGllbnRzLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMjZlODNhYzBcIiwgY29udGVudCwgZmFsc2UpO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LWRlMGQwZTRlXFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vQXV0aG9yaXplZENsaWVudHMudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1kZTBkMGU0ZVxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL0F1dGhvcml6ZWRDbGllbnRzLnZ1ZVwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIhLi9+L2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vfi92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LWRlMGQwZTRlXCIsXCJzY29wZWRcIjp0cnVlLFwiaGFzSW5saW5lQ29uZmlnXCI6dHJ1ZX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQXV0aG9yaXplZENsaWVudHMudnVlXG4vLyBtb2R1bGUgaWQgPSA1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(25);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"3fc34386\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-e9c80318\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Clients.vue\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/index.js?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-e9c80318\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Clients.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvcGFzc3BvcnQvQ2xpZW50cy52dWU/ZGM4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LWU5YzgwMzE4XFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vQ2xpZW50cy52dWVcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKShcIjNmYzM0Mzg2XCIsIGNvbnRlbnQsIGZhbHNlKTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1lOWM4MDMxOFxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL0NsaWVudHMudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1lOWM4MDMxOFxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL0NsaWVudHMudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0eWxlLWxvYWRlciEuL34vY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtZTljODAzMThcIixcInNjb3BlZFwiOnRydWUsXCJoYXNJbmxpbmVDb25maWdcIjp0cnVlfSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9wYXNzcG9ydC9DbGllbnRzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(26);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(2)(\"f4f6f56e\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/index.js?sourceMap!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-ff564a86\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./select2.vue\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/index.js?sourceMap!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"id\\\":\\\"data-v-ff564a86\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./select2.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VsZWN0Mi52dWU/NzE4MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanM/c291cmNlTWFwIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcImlkXFxcIjpcXFwiZGF0YS12LWZmNTY0YTg2XFxcIixcXFwic2NvcGVkXFxcIjp0cnVlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOnRydWV9IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc2VsZWN0Mi52dWVcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKShcImY0ZjZmNTZlXCIsIGNvbnRlbnQsIGZhbHNlKTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1mZjU2NGE4NlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NlbGVjdDIudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1mZjU2NGE4NlxcXCIsXFxcInNjb3BlZFxcXCI6dHJ1ZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjp0cnVlfSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NlbGVjdDIudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0eWxlLWxvYWRlciEuL34vY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtZmY1NjRhODZcIixcInNjb3BlZFwiOnRydWUsXCJoYXNJbmxpbmVDb25maWdcIjp0cnVlfSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWxlY3QyLnZ1ZVxuLy8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 54 */ +/***/ (function(module, exports) { + +eval("/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2xpc3RUb1N0eWxlcy5qcz9lNmFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNsYXRlcyB0aGUgbGlzdCBmb3JtYXQgcHJvZHVjZWQgYnkgY3NzLWxvYWRlciBpbnRvIHNvbWV0aGluZ1xuICogZWFzaWVyIHRvIG1hbmlwdWxhdGUuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGlzdFRvU3R5bGVzIChwYXJlbnRJZCwgbGlzdCkge1xuICB2YXIgc3R5bGVzID0gW11cbiAgdmFyIG5ld1N0eWxlcyA9IHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXVxuICAgIHZhciBpZCA9IGl0ZW1bMF1cbiAgICB2YXIgY3NzID0gaXRlbVsxXVxuICAgIHZhciBtZWRpYSA9IGl0ZW1bMl1cbiAgICB2YXIgc291cmNlTWFwID0gaXRlbVszXVxuICAgIHZhciBwYXJ0ID0ge1xuICAgICAgaWQ6IHBhcmVudElkICsgJzonICsgaSxcbiAgICAgIGNzczogY3NzLFxuICAgICAgbWVkaWE6IG1lZGlhLFxuICAgICAgc291cmNlTWFwOiBzb3VyY2VNYXBcbiAgICB9XG4gICAgaWYgKCFuZXdTdHlsZXNbaWRdKSB7XG4gICAgICBzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0geyBpZDogaWQsIHBhcnRzOiBbcGFydF0gfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpXG4gICAgfVxuICB9XG4gIHJldHVybiBzdHlsZXNcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHlsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * Vue.js v2.3.3\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n\n\n/* */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return typeof value === 'string' || typeof value === 'number'\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nvar _toString = Object.prototype.toString;\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /([^-])([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str\n .replace(hyphenateRE, '$1-$2')\n .replace(hyphenateRE, '$1-$2')\n .toLowerCase()\n});\n\n/**\n * Simple bind, faster than native\n */\nfunction bind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n // record original fn length\n boundFn._length = fn.length;\n return boundFn\n}\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n */\nfunction noop () {}\n\n/**\n * Always return false.\n */\nvar no = function () { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n return JSON.stringify(a) === JSON.stringify(b)\n } catch (e) {\n // possible circular reference\n return a === b\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: \"development\" !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: \"development\" !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\nvar emptyObject = Object.freeze({});\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar formatComponentName = (null); // work around flow check\n\nif (true) {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.error(\"[Vue warn]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var name = typeof vm === 'string'\n ? vm\n : typeof vm === 'function' && vm.options\n ? vm.options.name\n : vm._isVue\n ? vm.$options.name || vm.$options._componentTag\n : vm.name;\n\n var file = vm._isVue && vm.$options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n var generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (config.errorHandler) {\n config.errorHandler.call(null, err, vm, info);\n } else {\n if (true) {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if (inBrowser && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n }\n}\n\n/* */\n/* globals MutationObserver */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n } )); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\n/**\n * Defer a task to execute it asynchronously.\n */\nvar nextTick = (function () {\n var callbacks = [];\n var pending = false;\n var timerFunc;\n\n function nextTickHandler () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n\n // the nextTick behavior leverages the microtask queue, which can be accessed\n // via either native Promise.then or MutationObserver.\n // MutationObserver has wider support, however it is seriously bugged in\n // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n // completely stops working after triggering a few times... so, if native\n // Promise is available, we will use it:\n /* istanbul ignore if */\n if (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n var logError = function (err) { console.error(err); };\n timerFunc = function () {\n p.then(nextTickHandler).catch(logError);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n } else if (typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n )) {\n // use MutationObserver where native Promise is not available,\n // e.g. PhantomJS IE11, iOS7, Android 4.4\n var counter = 1;\n var observer = new MutationObserver(nextTickHandler);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n } else {\n // fallback to setTimeout\n /* istanbul ignore next */\n timerFunc = function () {\n setTimeout(nextTickHandler, 0);\n };\n }\n\n return function queueNextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n _resolve = resolve;\n })\n }\n }\n})();\n\nvar _Set;\n/* istanbul ignore if */\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);[\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n]\n.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var arguments$1 = arguments;\n\n // avoid leaking arguments:\n // http://jsperf.com/closure-with-arguments\n var i = arguments.length;\n var args = new Array(i);\n while (i--) {\n args[i] = arguments$1[i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n inserted = args;\n break\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\nvar observerState = {\n shouldConvert: true,\n isSettingProps: false\n};\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value)) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n observerState.shouldConvert &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n }\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (\"development\" !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (Array.isArray(target) && typeof key === 'number') {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (hasOwn(target, key)) {\n target[key] = val;\n return val\n }\n var ob = (target ).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n \"development\" !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (Array.isArray(target) && typeof key === 'number') {\n target.splice(key, 1);\n return\n }\n var ob = (target ).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n \"development\" !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (true) {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (typeof childVal !== 'function') {\n \"development\" !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n childVal.call(this),\n parentVal.call(this)\n )\n }\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm)\n : undefined;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (parentVal, childVal) {\n var res = Object.create(parentVal || null);\n return childVal\n ? extend(res, childVal)\n : res\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (parentVal, childVal) {\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key in childVal) {\n var parent = ret[key];\n var child = childVal[key];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key] = parent\n ? parent.concat(child)\n : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.computed = function (parentVal, childVal) {\n if (!childVal) { return Object.create(parentVal || null) }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n extend(ret, childVal);\n return ret\n};\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n var lower = key.toLowerCase();\n if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + key\n );\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (true) {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n }\n options.props = res;\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (true) {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (\"development\" !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // handle boolean props\n if (isType(Boolean, prop.type)) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldConvert = observerState.shouldConvert;\n observerState.shouldConvert = true;\n observe(value);\n observerState.shouldConvert = prevShouldConvert;\n }\n if (true) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (\"development\" !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n 'Invalid prop: type check failed for prop \"' + name + '\".' +\n ' Expected ' + expectedTypes.map(capitalize).join(', ') +\n ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n valid = typeof value === expectedType.toLowerCase();\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isType (type, fn) {\n if (!Array.isArray(fn)) {\n return getType(fn) === getType(type)\n }\n for (var i = 0, len = fn.length; i < len; i++) {\n if (getType(fn[i]) === getType(type)) {\n return true\n }\n }\n /* istanbul ignore next */\n return false\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (true) {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (true) {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n \"referenced during render. Make sure to declare reactive data \" +\n \"properties in the data option.\",\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' &&\n Proxy.toString().match(/native code/);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.functionalContext = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n};\n\nvar prototypeAccessors = { child: {} };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function () {\n var node = new VNode();\n node.text = '';\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.isCloned = true;\n return cloned\n}\n\nfunction cloneVNodes (vnodes) {\n var len = vnodes.length;\n var res = new Array(len);\n for (var i = 0; i < len; i++) {\n res[i] = cloneVNode(vnodes[i]);\n }\n return res\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n for (var i = 0; i < fns.length; i++) {\n fns[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n \"development\" !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (true) {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n last = res[res.length - 1];\n // nested\n if (Array.isArray(c)) {\n res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i)));\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n (last).text += String(c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[res.length - 1] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n \"development\" !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n true\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && isDef(c.componentOptions)) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once$$1) {\n if (once$$1) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n this$1.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (arguments.length === 1) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (true) {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n cbs[i].apply(vm, args);\n }\n }\n return vm\n };\n}\n\n/* */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n var defaultSlot = [];\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.functionalContext === context) &&\n child.data && child.data.slot != null\n ) {\n var name = child.data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children);\n } else {\n slot.push(child);\n }\n } else {\n defaultSlot.push(child);\n }\n }\n // ignore whitespace\n if (!defaultSlot.every(isWhitespace)) {\n slots.default = defaultSlot;\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return node.isComment || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // remove reference to DOM nodes (prevents leak)\n vm.$options._parentElm = vm.$options._refElm = null;\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (true) {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (\"development\" !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n vm._watcher = new Watcher(vm, updateComponent, noop);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update props\n if (propsData && vm.$options.props) {\n observerState.shouldConvert = false;\n if (true) {\n observerState.isSettingProps = true;\n }\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n props[key] = validateProp(key, vm.$options.props, propsData, vm);\n }\n observerState.shouldConvert = true;\n if (true) {\n observerState.isSettingProps = false;\n }\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n // update listeners\n if (listeners) {\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n }\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (true) {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (\"development\" !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdateHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdateHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options\n) {\n this.vm = vm;\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = true\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n \"development\" !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n if (this.user) {\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n value = this.getter.call(vm, vm);\n }\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nvar seenObjects = new _Set();\nfunction traverse (val) {\n seenObjects.clear();\n _traverse(val, seenObjects);\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch) { initWatch(vm, opts.watch); }\n}\n\nvar isReservedProp = {\n key: 1,\n ref: 1,\n slot: 1\n};\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n observerState.shouldConvert = isRoot;\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (true) {\n if (isReservedProp[key] || config.isReservedAttr(key)) {\n warn(\n (\"\\\"\" + key + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (vm.$parent && !observerState.isSettingProps) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n observerState.shouldConvert = true;\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n \"development\" !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var i = keys.length;\n while (i--) {\n if (props && hasOwn(props, keys[i])) {\n \"development\" !== 'production' && warn(\n \"The data property \\\"\" + (keys[i]) + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(keys[i])) {\n proxy(vm, \"_data\", keys[i]);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n try {\n return data.call(vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n var watchers = vm._computedWatchers = Object.create(null);\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (true) {\n if (getter === undefined) {\n warn(\n (\"No getter function has been defined for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n getter = noop;\n }\n }\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(vm, getter, noop, computedWatcherOptions);\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (true) {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (target, key, userDef) {\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = createComputedGetter(key);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n if (true) {\n if (methods[key] == null) {\n warn(\n \"method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n }\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (vm, key, handler) {\n var options;\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n vm.$watch(key, handler, options);\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (true) {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (true) {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n // isArray here\n var isArray = Array.isArray(inject);\n var result = Object.create(null);\n var keys = isArray\n ? inject\n : hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = isArray ? key : inject[key];\n var source = vm;\n while (source) {\n if (source._provided && provideKey in source._provided) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n }\n return result\n }\n}\n\n/* */\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n context,\n children\n) {\n var props = {};\n var propOptions = Ctor.options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || {});\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var _context = Object.create(context);\n var h = function (a, b, c, d) { return createElement(_context, a, b, c, d, true); };\n var vnode = Ctor.options.render.call(null, h, {\n data: data,\n props: props,\n children: children,\n parent: context,\n listeners: data.on || {},\n injections: resolveInject(Ctor.options.inject, context),\n slots: function () { return resolveSlots(children, context); }\n });\n if (vnode instanceof VNode) {\n vnode.functionalContext = context;\n vnode.functionalOptions = Ctor.options;\n if (data.slot) {\n (vnode.data || (vnode.data = {})).slot = data.slot;\n }\n }\n return vnode\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n// hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n } else if (vnode.data.keepAlive) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (true) {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n if (isUndef(Ctor.cid)) {\n Ctor = resolveAsyncComponent(Ctor, baseCtor, context);\n if (Ctor === undefined) {\n // return nothing if this is indeed an async component\n // wait for the callback to trigger parent update.\n return\n }\n }\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n data = data || {};\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners\n data = {};\n }\n\n // merge component management hooks onto the placeholder node\n mergeHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }\n );\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var vnodeComponentOptions = vnode.componentOptions;\n var options = {\n _isComponent: true,\n parent: parent,\n propsData: vnodeComponentOptions.propsData,\n _componentTag: vnodeComponentOptions.tag,\n _parentVnode: vnode,\n _parentListeners: vnodeComponentOptions.listeners,\n _renderChildren: vnodeComponentOptions.children,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnodeComponentOptions.Ctor(options)\n}\n\nfunction mergeHooks (data) {\n if (!data.hook) {\n data.hook = {};\n }\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var fromParent = data.hook[key];\n var ours = componentVNodeHooks[key];\n data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n }\n}\n\nfunction mergeHook$1 (one, two) {\n return function (a, b, c, d) {\n one(a, b, c, d);\n two(a, b, c, d);\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n \"development\" !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (isDef(vnode)) {\n if (ns) { applyNS(vnode, ns); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n return\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && isUndef(child.ns)) {\n applyNS(child, ns);\n }\n }\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n extend(props, bindObject);\n }\n return scopedSlotFn(props) || fallback\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes && \"development\" !== 'production') {\n slotNodes._rendered && warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n slotNodes._rendered = true;\n }\n return slotNodes || fallback\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\n/**\n * Runtime helper for checking keyCodes from config.\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInAlias\n) {\n var keyCodes = config.keyCodes[key] || builtInAlias;\n if (Array.isArray(keyCodes)) {\n return keyCodes.indexOf(eventKeyCode) === -1\n } else {\n return keyCodes !== eventKeyCode\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp\n) {\n if (value) {\n if (!isObject(value)) {\n \"development\" !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n for (var key in value) {\n if (key === 'class' || key === 'style') {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n }\n }\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var tree = this._staticTrees[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree by doing a shallow clone.\n if (tree && !isInFor) {\n return Array.isArray(tree)\n ? cloneVNodes(tree)\n : cloneVNode(tree)\n }\n // otherwise, render a fresh tree.\n tree = this._staticTrees[index] =\n this.$options.staticRenderFns[index].call(this._renderProxy);\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null;\n var parentVnode = vm.$vnode = vm.$options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n}\n\nfunction renderMixin (Vue) {\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n var _parentVnode = ref._parentVnode;\n\n if (vm._isMounted) {\n // clone slot nodes on re-renders\n for (var key in vm.$slots) {\n vm.$slots[key] = cloneVNodes(vm.$slots[key]);\n }\n }\n\n vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n if (staticRenderFns && !vm._staticTrees) {\n vm._staticTrees = [];\n }\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render function\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (true) {\n vnode = vm.$options.renderError\n ? vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e)\n : vm._vnode;\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (\"development\" !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n\n // internal render helpers.\n // these are exposed on the instance prototype to reduce generated render\n // code size.\n Vue.prototype._o = markOnce;\n Vue.prototype._n = toNumber;\n Vue.prototype._s = toString;\n Vue.prototype._l = renderList;\n Vue.prototype._t = renderSlot;\n Vue.prototype._q = looseEqual;\n Vue.prototype._i = looseIndexOf;\n Vue.prototype._m = renderStatic;\n Vue.prototype._f = resolveFilter;\n Vue.prototype._k = checkKeyCodes;\n Vue.prototype._b = bindObjectProps;\n Vue.prototype._v = createTextVNode;\n Vue.prototype._e = createEmptyVNode;\n Vue.prototype._u = resolveScopedSlots;\n}\n\n/* */\n\nvar uid$1 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$1++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (\"development\" !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-init:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (true) {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (\"development\" !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure(((vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n opts.parent = options.parent;\n opts.propsData = options.propsData;\n opts._parentVnode = options._parentVnode;\n opts._parentListeners = options._parentListeners;\n opts._renderChildren = options._renderChildren;\n opts._componentTag = options._componentTag;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue$3 (options) {\n if (\"development\" !== 'production' &&\n !(this instanceof Vue$3)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue$3);\nstateMixin(Vue$3);\neventsMixin(Vue$3);\nlifecycleMixin(Vue$3);\nrenderMixin(Vue$3);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n /* istanbul ignore if */\n if (plugin.installed) {\n return this\n }\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n plugin.installed = true;\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (true) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (true) {\n if (type === 'component' && config.isReservedTag(id)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + id\n );\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nvar patternTypes = [String, RegExp];\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (cache, current, filter) {\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n if (cachedNode !== current) {\n pruneCacheEntry(cachedNode);\n }\n cache[key] = null;\n }\n }\n }\n}\n\nfunction pruneCacheEntry (vnode) {\n if (vnode) {\n vnode.componentInstance.$destroy();\n }\n}\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes\n },\n\n created: function created () {\n this.cache = Object.create(null);\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache[key]);\n }\n },\n\n watch: {\n include: function include (val) {\n pruneCache(this.cache, this._vnode, function (name) { return matches(val, name); });\n },\n exclude: function exclude (val) {\n pruneCache(this.cache, this._vnode, function (name) { return !matches(val, name); });\n }\n },\n\n render: function render () {\n var vnode = getFirstComponentChild(this.$slots.default);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n if (name && (\n (this.include && !matches(this.include, name)) ||\n (this.exclude && matches(this.exclude, name))\n )) {\n return vnode\n }\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (this.cache[key]) {\n vnode.componentInstance = this.cache[key].componentInstance;\n } else {\n this.cache[key] = vnode;\n }\n vnode.data.keepAlive = true;\n }\n return vnode\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (true) {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue$3);\n\nObject.defineProperty(Vue$3.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue$3.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode.ssrContext\n }\n});\n\nVue$3.version = '2.3.3';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return genClassFromData(data)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction genClassFromData (data) {\n var dynamicClass = data.class;\n var staticClass = data.staticClass;\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (isUndef(value)) {\n return ''\n }\n if (typeof value === 'string') {\n return value\n }\n var res = '';\n if (Array.isArray(value)) {\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(value[i])) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n res += stringified + ' ';\n }\n }\n }\n return res.slice(0, -1)\n }\n if (isObject(value)) {\n for (var key in value) {\n if (value[key]) { res += key + ' '; }\n }\n return res.slice(0, -1)\n }\n /* istanbul ignore next */\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n \"development\" !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setAttribute (node, key, val) {\n node.setAttribute(key, val);\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetAttribute: setAttribute\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!key) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (Array.isArray(refs[key]) && refs[key].indexOf(ref) < 0) {\n refs[key].push(ref);\n } else {\n refs[key] = [ref];\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n\n/*\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key &&\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n )\n}\n\n// Some browsers do not support dynamically changing type for <input>\n// so they need to be treated as different nodes\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n var inPre = 0;\n function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (true) {\n if (data && data.pre) {\n inPre++;\n }\n if (\n !inPre &&\n !vnode.ns &&\n !(config.ignoredElements.length && config.ignoredElements.indexOf(tag) > -1) &&\n config.isUnknownElement(tag)\n ) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (\"development\" !== 'production' && data && data.pre) {\n inPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref) {\n if (isDef(parent)) {\n if (isDef(ref)) {\n if (ref.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n ancestor = ancestor.parent;\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, elmToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n } else {\n elmToMove = oldCh[idxInOld];\n /* istanbul ignore if */\n if (\"development\" !== 'production' && !elmToMove) {\n warn(\n 'It seems there are duplicate keys that is causing an update error. ' +\n 'Make sure each v-for item has a unique key.'\n );\n }\n if (sameVnode(elmToMove, newStartVnode)) {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.elm = oldVnode.elm;\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var bailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue) {\n if (true) {\n if (!assertNodeMatch(elm, vnode)) {\n return false\n }\n }\n vnode.elm = elm;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n if (\"development\" !== 'production' &&\n typeof console !== 'undefined' &&\n !bailed\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n if (isDef(data)) {\n for (var key in data) {\n if (!isRenderedModule(key)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode) {\n if (isDef(vnode.tag)) {\n return (\n vnode.tag.indexOf('vue-component') === 0 ||\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (true) {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n if (isDef(vnode.parent)) {\n // component root element replaced.\n // update parent placeholder node element, recursively\n var ancestor = vnode.parent;\n while (ancestor) {\n ancestor.elm = vnode.elm;\n ancestor = ancestor.parent;\n }\n if (isPatchable(vnode)) {\n for (var i = 0; i < cbs.create.length; ++i) {\n cbs.create[i](emptyNode, vnode.parent);\n }\n }\n }\n\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n /* istanbul ignore if */\n if (isIE9 && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, key);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n \"development\" !== 'production' && warn &&\n modifiers && modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n // check capture modifier\n if (modifiers && modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers && modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers && modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n var events;\n if (modifiers && modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n var newHandler = { value: value, modifiers: modifiers };\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\nfunction getAndRemoveAttr (el, name) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var modelRs = parseModel(value);\n if (modelRs.idx === null) {\n return (value + \"=\" + assignment)\n } else {\n return \"var $$exp = \" + (modelRs.exp) + \", $$idx = \" + (modelRs.idx) + \";\" +\n \"if (!Array.isArray($$exp)){\" +\n value + \"=\" + assignment + \"}\" +\n \"else{$$exp.splice($$idx, 1, \" + assignment + \")}\"\n }\n}\n\n/**\n * parse directive model to do the array update transform. a[idx] = val => $$a.splice($$idx, 1, val)\n *\n * for loop possible cases:\n *\n * - test\n * - test[idx]\n * - test[test1[idx]]\n * - test[\"a\"][idx]\n * - xxx.test[a[a].test1[idx]]\n * - test.xxx.a[\"asa\"][test1[idx]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\nfunction parseModel (val) {\n str = val;\n len = str.length;\n index$1 = expressionPos = expressionEndPos = 0;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n return {\n exp: val,\n idx: null\n }\n }\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.substring(0, expressionPos),\n idx: val.substring(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (true) {\n var dynamicType = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (tag === 'input' && dynamicType) {\n warn$1(\n \"<input :type=\\\"\" + dynamicType + \"\\\" v-model=\\\"\" + value + \"\\\">:\\n\" +\n \"v-model does not support dynamic input types. Use v-if branches instead.\"\n );\n }\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (true) {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, CHECKBOX_RADIO_TOKEN,\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$c){$$i<0&&(\" + value + \"=$$a.concat($$v))}\" +\n \"else{$$i>-1&&(\" + value + \"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, CHECKBOX_RADIO_TOKEN, genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number || type === 'number') {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n var event;\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n // Chrome fires microtasks in between click/change, leads to #4521\n event = isChrome ? 'click' : 'change';\n on[event] = [].concat(on[CHECKBOX_RADIO_TOKEN], on[event] || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n if (once$$1) {\n var oldHandler = handler;\n var _target = target$1; // save current target element in closure\n handler = function (ev) {\n var res = arguments.length === 1\n ? oldHandler(ev)\n : oldHandler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, handler, capture, _target);\n }\n };\n }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(event, handler, capture);\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, vnode, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (\n elm,\n vnode,\n checkVal\n) {\n return (!elm.composing && (\n vnode.tag === 'option' ||\n isDirty(elm, checkVal) ||\n isInputChanged(elm, checkVal)\n ))\n}\n\nfunction isDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is not equal to the updated value\n return document.activeElement !== elm && elm.value !== checkVal\n}\n\nfunction isInputChanged (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if ((isDef(modifiers) && modifiers.number) || elm.type === 'number') {\n return toNumber(value) !== toNumber(newVal)\n }\n if (isDef(modifiers) && modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar prefixes = ['Webkit', 'Moz', 'ms'];\n\nvar testEl;\nvar normalize = cached(function (prop) {\n testEl = testEl || document.createElement('div');\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in testEl.style)) {\n return prop\n }\n var upper = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < prefixes.length; i++) {\n var prefixed = prefixes[i] + upper;\n if (prefixed in testEl.style) {\n return prefixed\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likley wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n el.setAttribute('class', cur.trim());\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n (el._transitionClasses || (el._transitionClasses = [])).push(cls);\n addClass(el, cls);\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (\"development\" !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n addTransitionClass(el, toClass);\n removeTransitionClass(el, startClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (\"development\" !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n addTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar model$1 = {\n inserted: function inserted (el, binding, vnode) {\n if (vnode.tag === 'select') {\n var cb = function () {\n setSelected(el, binding, vnode.context);\n };\n cb();\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(cb, 0);\n }\n } else if (vnode.tag === 'textarea' || el.type === 'text' || el.type === 'password') {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n if (!isAndroid) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n }\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, el.options); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, el.options);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n \"development\" !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n for (var i = 0, l = options.length; i < l; i++) {\n if (looseEqual(getValue(options[i]), value)) {\n return false\n }\n }\n return true\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition && !isIE9) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (value === oldValue) { return }\n vnode = locateNode(vnode);\n var transition = vnode.data && vnode.data.transition;\n if (transition && !isIE9) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: model$1,\n show: show\n};\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag; });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (\"development\" !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (\"development\" !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (oldChild && oldChild.data && !isSameChild(child, oldChild)) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild && (oldChild.data.transition = extend({}, data));\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (true) {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n var body = document.body;\n var f = body.offsetHeight; // eslint-disable-line\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n if (this._hasMove != null) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue$3.config.mustUseProp = mustUseProp;\nVue$3.config.isReservedTag = isReservedTag;\nVue$3.config.isReservedAttr = isReservedAttr;\nVue$3.config.getTagNamespace = getTagNamespace;\nVue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue$3.options.directives, platformDirectives);\nextend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\nVue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nsetTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue$3);\n } else if (\"development\" !== 'production' && isChrome) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (\"development\" !== 'production' &&\n config.productionTip !== false &&\n inBrowser && typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n}, 0);\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nfunction shouldDecode (content, encoded) {\n var div = document.createElement('div');\n div.innerHTML = \"<div a=\\\"\" + content + \"\\\">\";\n return div.innerHTML.indexOf(encoded) > 0\n}\n\n// #3663\n// IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? shouldDecode('\\n', ' ') : false;\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/* */\n\nvar decoder;\n\nfunction decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n}\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar singleAttrIdentifier = /([^\\s\"'<>/=]+)/;\nvar singleAttrAssign = /(?:=)/;\nvar singleAttrValues = [\n // attr value double quotes\n /\"([^\"]*)\"+/.source,\n // attr value, single quotes\n /'([^']*)'+/.source,\n // attr value, no quotes\n /([^\\s\"'=<>`]+)/.source\n];\nvar attribute = new RegExp(\n '^\\\\s*' + singleAttrIdentifier.source +\n '(?:\\\\s*(' + singleAttrAssign.source + ')' +\n '\\\\s*(?:' + singleAttrValues.join('|') + '))?'\n);\n\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = '((?:' + ncname + '\\\\:)?' + ncname + ')';\nvar startTagOpen = new RegExp('^<' + qnameCapture);\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp('^<\\\\/' + qnameCapture + '[^>]*>');\nvar doctype = /^<!DOCTYPE [^>]+>/i;\nvar comment = /^<!--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10);/g;\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n continue\n }\n }\n\n var text = (void 0), rest$1 = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest$1 = html.slice(textEnd);\n while (\n !endTag.test(rest$1) &&\n !startTagOpen.test(rest$1) &&\n !comment.test(rest$1) &&\n !conditionalComment.test(rest$1)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest$1.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest$1 = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var endTagLength = 0;\n var rest = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!--([\\s\\S]*?)-->/g, '$1')\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest.length;\n html = rest;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (\"development\" !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || tagName === 'html' && lastTag === 'head' || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n attrs[i] = {\n name: args[1],\n value: decodeAttr(\n value,\n options.shouldDecodeNewlines\n )\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (\"development\" !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push(JSON.stringify(text.slice(lastIndex)));\n }\n return tokens.join('+')\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /(.*?)\\s+(?:in|of)\\s+(.*)/;\nvar forIteratorRE = /\\((\\{[^}]*\\}|[^,]*),([^,]*)(?:,([^,]*))?\\)/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n platformGetTagNamespace = options.getTagNamespace || no;\n platformMustUseProp = options.mustUseProp || no;\n platformIsPreTag = options.isPreTag || no;\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function endPre (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: currentParent,\n children: []\n };\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n \"development\" !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n preTransforms[i](element, options);\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else {\n processFor(element);\n processIf(element);\n processOnce(element);\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !attrs.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i$1 = 0; i$1 < transforms.length; i$1++) {\n transforms[i$1](element, options);\n }\n processAttrs(element);\n }\n\n function checkRootConstraints (el) {\n if (true) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (true) {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n endPre(element);\n }\n // apply post-transforms\n for (var i$2 = 0; i$2 < postTransforms.length; i$2++) {\n postTransforms[i$2](element, options);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n endPre(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (true) {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var expression;\n if (!inVPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: expression,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (\"development\" !== 'production' && el.tag === 'template') {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) {\n \"development\" !== 'production' && warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n return\n }\n el.for = inMatch[2].trim();\n var alias = inMatch[1].trim();\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n el.alias = iteratorMatch[1].trim();\n el.iterator1 = iteratorMatch[2].trim();\n if (iteratorMatch[3]) {\n el.iterator2 = iteratorMatch[3].trim();\n }\n } else {\n el.alias = alias;\n }\n }\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (true) {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (\"development\" !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (\"development\" !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n }\n if (el.tag === 'template') {\n el.slotScope = getAndRemoveAttr(el, 'scope');\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (\"development\" !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (true) {\n var expression = parseText(value, delimiters);\n if (expression) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n \"development\" !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n walkThroughConditionsBlocks(node.ifConditions, isInFor);\n }\n }\n}\n\nfunction walkThroughConditionsBlocks (conditionBlocks, isInFor) {\n for (var i = 1, len = conditionBlocks.length; i < len; i++) {\n markStaticRoots(conditionBlocks[i].block, isInFor);\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/;\n\n// keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n var handler = events[name];\n // #5330: warn click.right, since right clicks do not actually fire click events.\n if (\"development\" !== 'production' &&\n name === 'click' &&\n handler && handler.modifiers && handler.modifiers.right\n ) {\n warn(\n \"Use \\\"contextmenu\\\" instead of \\\"click.right\\\" since right clicks \" +\n \"do not actually fire \\\"click\\\" events.\"\n );\n }\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, handler)) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n return isMethodPath || isFunctionExpression\n ? handler.value\n : (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? handler.value + '($event)'\n : isFunctionExpression\n ? (\"(\" + (handler.value) + \")($event)\")\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var alias = keyCodes[key];\n return (\"_k($event.keyCode,\" + (JSON.stringify(key)) + (alias ? ',' + JSON.stringify(alias) : '') + \")\")\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + (dir.modifiers && dir.modifiers.prop ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n// configurable state\nvar warn$3;\nvar transforms$1;\nvar dataGenFns;\nvar platformDirectives$1;\nvar isPlatformReservedTag$1;\nvar staticRenderFns;\nvar onceCount;\nvar currentOptions;\n\nfunction generate (\n ast,\n options\n) {\n // save previous staticRenderFns so generate calls can be nested\n var prevStaticRenderFns = staticRenderFns;\n var currentStaticRenderFns = staticRenderFns = [];\n var prevOnceCount = onceCount;\n onceCount = 0;\n currentOptions = options;\n warn$3 = options.warn || baseWarn;\n transforms$1 = pluckModuleFunction(options.modules, 'transformCode');\n dataGenFns = pluckModuleFunction(options.modules, 'genData');\n platformDirectives$1 = options.directives || {};\n isPlatformReservedTag$1 = options.isReservedTag || no;\n var code = ast ? genElement(ast) : '_c(\"div\")';\n staticRenderFns = prevStaticRenderFns;\n onceCount = prevOnceCount;\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: currentStaticRenderFns\n }\n}\n\nfunction genElement (el) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el)\n } else if (el.for && !el.forProcessed) {\n return genFor(el)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el);\n } else {\n var data = el.plain ? undefined : genData(el);\n\n var children = el.inlineTemplate ? null : genChildren(el, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < transforms$1.length; i++) {\n code = transforms$1[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el) {\n el.staticProcessed = true;\n staticRenderFns.push((\"with(this){return \" + (genElement(el)) + \"}\"));\n return (\"_m(\" + (staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n \"development\" !== 'production' && warn$3(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el)\n }\n return (\"_o(\" + (genElement(el)) + \",\" + (onceCount++) + (key ? (\",\" + key) : \"\") + \")\")\n } else {\n return genStatic(el)\n }\n}\n\nfunction genIf (el) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice())\n}\n\nfunction genIfConditions (conditions) {\n if (!conditions.length) {\n return '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return el.once ? genOnce(el) : genElement(el)\n }\n}\n\nfunction genFor (el) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (\n \"development\" !== 'production' &&\n maybeComponent(el) && el.tag !== 'slot' && el.tag !== 'template' && !el.key\n ) {\n warn$3(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genElement(el)) +\n '})'\n}\n\nfunction genData (el) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < dataGenFns.length; i++) {\n data += dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, warn$3)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, warn$3)) + \",\";\n }\n // slot target\n if (el.slotTarget) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n return data\n}\n\nfunction genDirectives (el) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = platformDirectives$1[dir.name] || baseDirectives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, warn$3);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el) {\n var ast = el.children[0];\n if (\"development\" !== 'production' && (\n el.children.length > 1 || ast.type !== 1\n )) {\n warn$3('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, currentOptions);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (slots) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) { return genScopedSlot(key, slots[key]); }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (key, el) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el)\n }\n return \"{key:\" + key + \",fn:function(\" + (String(el.attrsMap.scope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? genChildren(el) || 'void 0'\n : genElement(el)) + \"}}\"\n}\n\nfunction genForScopedSlot (key, el) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el)) +\n '})'\n}\n\nfunction genChildren (el, checkSkip) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return genElement(el$1)\n }\n var normalizationType = checkSkip ? getNormalizationType(children) : 0;\n return (\"[\" + (children.map(genNode).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (children) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction maybeComponent (el) {\n return !isPlatformReservedTag$1(el.tag)\n}\n\nfunction genNode (node) {\n if (node.type === 1) {\n return genElement(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genSlot (el) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (componentName, el) {\n var children = el.inlineTemplate ? null : genChildren(el, true);\n return (\"_c(\" + componentName + \",\" + (genData(el)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// check valid identifier for v-for\nvar identRE = /[A-Za-z_$][\\w$]*/;\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (ident, type, text, errors) {\n if (typeof ident === 'string' && !identRE.test(ident)) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n } else {\n errors.push((\"invalid expression: \" + (text.trim())));\n }\n }\n}\n\n/* */\n\nfunction baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n optimize(ast, options);\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n}\n\nfunction makeFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompiler (baseOptions) {\n var functionCompileCache = Object.create(null);\n\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip$$1) {\n (tip$$1 ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules = (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (true) {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = options || {};\n\n /* istanbul ignore if */\n if (true) {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (functionCompileCache[key]) {\n return functionCompileCache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (true) {\n if (compiled.errors && compiled.errors.length) {\n warn(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = makeFunction(compiled.render, fnGenErrors);\n var l = compiled.staticRenderFns.length;\n res.staticRenderFns = new Array(l);\n for (var i = 0; i < l; i++) {\n res.staticRenderFns[i] = makeFunction(compiled.staticRenderFns[i], fnGenErrors);\n }\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (true) {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (functionCompileCache[key] = res)\n }\n\n return {\n compile: compile,\n compileToFunctions: compileToFunctions\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (\"development\" !== 'production' && staticClass) {\n var expression = parseText(staticClass, options.delimiters);\n if (expression) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData$1\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (true) {\n var expression = parseText(staticStyle, options.delimiters);\n if (expression) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$2 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$2\n};\n\nvar modules$1 = [\n klass$1,\n style$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue$3.prototype.$mount;\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n \"development\" !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (\"development\" !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (true) {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (\"development\" !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n delimiters: options.delimiters\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (\"development\" !== 'production' && config.performance && mark) {\n mark('compile end');\n measure(((this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue$3.compile = compileToFunctions;\n\nmodule.exports = Vue$3;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Z1ZS9kaXN0L3Z1ZS5jb21tb24uanM/ZTg4MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFZ1ZS5qcyB2Mi4zLjNcbiAqIChjKSAyMDE0LTIwMTcgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgaGVscGVycyBwcm9kdWNlcyBiZXR0ZXIgdm0gY29kZSBpbiBKUyBlbmdpbmVzIGR1ZSB0byB0aGVpclxuLy8gZXhwbGljaXRuZXNzIGFuZCBmdW5jdGlvbiBpbmxpbmluZ1xuZnVuY3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxufVxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBpcyBwcmltaXRpdmVcbiAqL1xuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbn1cblxuLyoqXG4gKiBRdWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAqIE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAqIGlzIGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIFN0cmljdCBvYmplY3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVcbiAqIGZvciBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAgKHYpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHYpID09PSAnW29iamVjdCBSZWdFeHBdJ1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIHN0cmluZyB0aGF0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiB0b1N0cmluZyAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbFxuICAgID8gJydcbiAgICA6IHR5cGVvZiB2YWwgPT09ICdvYmplY3QnXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgaW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvKFteLV0pKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAudG9Mb3dlckNhc2UoKVxufSk7XG5cbi8qKlxuICogU2ltcGxlIGJpbmQsIGZhc3RlciB0aGFuIG5hdGl2ZVxuICovXG5mdW5jdGlvbiBiaW5kIChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIGZuIGxlbmd0aFxuICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKipcbiAqIFJldHVybiBzYW1lIHZhbHVlXG4gKi9cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RhdGljIGtleXMgc3RyaW5nIGZyb20gY29tcGlsZXIgbW9kdWxlcy5cbiAqL1xuZnVuY3Rpb24gZ2VuU3RhdGljS2V5cyAobW9kdWxlcykge1xuICByZXR1cm4gbW9kdWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGtleXMsIG0pIHtcbiAgICByZXR1cm4ga2V5cy5jb25jYXQobS5zdGF0aWNLZXlzIHx8IFtdKVxuICB9LCBbXSkuam9pbignLCcpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIHZhbHVlcyBhcmUgbG9vc2VseSBlcXVhbCAtIHRoYXQgaXMsXG4gKiBpZiB0aGV5IGFyZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/XG4gKi9cbmZ1bmN0aW9uIGxvb3NlRXF1YWwgKGEsIGIpIHtcbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYilcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBwb3NzaWJsZSBjaXJjdWxhciByZWZlcmVuY2VcbiAgICAgIHJldHVybiBhID09PSBiXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBTU1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZhciBBU1NFVF9UWVBFUyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxudmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxcbiAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3VwZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVkJyxcbiAgJ2RlYWN0aXZhdGVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSByZWdpc3RlcmVkIGFzIGFcbiAgICogY29tcG9uZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgY29tcG9uZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkQXR0cjogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24gZWxlbWVudC5cbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxlbWVudDogbm8sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIGdldFRhZ05hbWVzcGFjZTogbm9vcCxcblxuICAvKipcbiAgICogUGFyc2UgdGhlIHJlYWwgdGFnIG5hbWUgZm9yIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNlUGxhdGZvcm1UYWdOYW1lOiBpZGVudGl0eSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIG11c3QgYmUgYm91bmQgdXNpbmcgcHJvcGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgbXVzdFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciBsZWdhY3kgcmVhc29uc1xuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBMSUZFQ1lDTEVfSE9PS1Ncbn0pO1xuXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7XG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChudWxsKTsgLy8gd29yayBhcm91bmQgZmxvdyBjaGVja1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaGFzQ29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XG4gIHZhciBjbGFzc2lmeSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGNsYXNzaWZ5UkUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pXG4gICAgLnJlcGxhY2UoL1stX10vZywgJycpOyB9O1xuXG4gIHdhcm4gPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVnVlIHdhcm5dOiBcIiArIG1zZyArIChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnXG4gICAgICApKTtcbiAgICB9XG4gIH07XG5cbiAgdGlwID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbVnVlIHRpcF06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICBmb3JtYXRDb21wb25lbnROYW1lID0gZnVuY3Rpb24gKHZtLCBpbmNsdWRlRmlsZSkge1xuICAgIGlmICh2bS4kcm9vdCA9PT0gdm0pIHtcbiAgICAgIHJldHVybiAnPFJvb3Q+J1xuICAgIH1cbiAgICB2YXIgbmFtZSA9IHR5cGVvZiB2bSA9PT0gJ3N0cmluZydcbiAgICAgID8gdm1cbiAgICAgIDogdHlwZW9mIHZtID09PSAnZnVuY3Rpb24nICYmIHZtLm9wdGlvbnNcbiAgICAgICAgPyB2bS5vcHRpb25zLm5hbWVcbiAgICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLm5hbWUgfHwgdm0uJG9wdGlvbnMuX2NvbXBvbmVudFRhZ1xuICAgICAgICAgIDogdm0ubmFtZTtcblxuICAgIHZhciBmaWxlID0gdm0uX2lzVnVlICYmIHZtLiRvcHRpb25zLl9fZmlsZTtcbiAgICBpZiAoIW5hbWUgJiYgZmlsZSkge1xuICAgICAgdmFyIG1hdGNoID0gZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7XG4gICAgICBuYW1lID0gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChuYW1lID8gKFwiPFwiICsgKGNsYXNzaWZ5KG5hbWUpKSArIFwiPlwiKSA6IFwiPEFub255bW91cz5cIikgK1xuICAgICAgKGZpbGUgJiYgaW5jbHVkZUZpbGUgIT09IGZhbHNlID8gKFwiIGF0IFwiICsgZmlsZSkgOiAnJylcbiAgICApXG4gIH07XG5cbiAgdmFyIHJlcGVhdCA9IGZ1bmN0aW9uIChzdHIsIG4pIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAgIGlmIChuICUgMiA9PT0gMSkgeyByZXMgKz0gc3RyOyB9XG4gICAgICBpZiAobiA+IDEpIHsgc3RyICs9IHN0cjsgfVxuICAgICAgbiA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9O1xuXG4gIHZhciBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYgKHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0pIHtcbiAgICAgICAgaWYgKHRyZWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gdHJlZVt0cmVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0LmNvbnN0cnVjdG9yID09PSB2bS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlKys7XG4gICAgICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID4gMCkge1xuICAgICAgICAgICAgdHJlZVt0cmVlLmxlbmd0aCAtIDFdID0gW2xhc3QsIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZV07XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlLnB1c2godm0pO1xuICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ1xcblxcbmZvdW5kIGluXFxuXFxuJyArIHRyZWVcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodm0sIGkpIHsgcmV0dXJuIChcIlwiICsgKGkgPT09IDAgPyAnLS0tPiAnIDogcmVwZWF0KCcgJywgNSArIGkgKiAyKSkgKyAoQXJyYXkuaXNBcnJheSh2bSlcbiAgICAgICAgICAgID8gKChmb3JtYXRDb21wb25lbnROYW1lKHZtWzBdKSkgKyBcIi4uLiAoXCIgKyAodm1bMV0pICsgXCIgcmVjdXJzaXZlIGNhbGxzKVwiKVxuICAgICAgICAgICAgOiBmb3JtYXRDb21wb25lbnROYW1lKHZtKSkpOyB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcIlxcblxcbihmb3VuZCBpbiBcIiArIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIilcIilcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBoYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIGNvbmZpZy5lcnJvckhhbmRsZXIuY2FsbChudWxsLCBlcnIsIHZtLCBpbmZvKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRpb25PYnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9ICdfX3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xuXG52YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gKSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbi8vIHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2dWUgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0IFZVRV9FTlZcbnZhciBfaXNTZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfaXNTZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghaW5Ccm93c2VyICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG4vKipcbiAqIERlZmVyIGEgdGFzayB0byBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5LlxuICovXG52YXIgbmV4dFRpY2sgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwZW5kaW5nID0gZmFsc2U7XG4gIHZhciB0aW1lckZ1bmM7XG5cbiAgZnVuY3Rpb24gbmV4dFRpY2tIYW5kbGVyICgpIHtcbiAgICBwZW5kaW5nID0gZmFsc2U7XG4gICAgdmFyIGNvcGllcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcbiAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29waWVzW2ldKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhlIG5leHRUaWNrIGJlaGF2aW9yIGxldmVyYWdlcyB0aGUgbWljcm90YXNrIHF1ZXVlLCB3aGljaCBjYW4gYmUgYWNjZXNzZWRcbiAgLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlzZS50aGVuIG9yIE11dGF0aW9uT2JzZXJ2ZXIuXG4gIC8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuICAvLyBVSVdlYlZpZXcgaW4gaU9TID49IDkuMy4zIHdoZW4gdHJpZ2dlcmVkIGluIHRvdWNoIGV2ZW50IGhhbmRsZXJzLiBJdFxuICAvLyBjb21wbGV0ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBhIGZldyB0aW1lcy4uLiBzbywgaWYgbmF0aXZlXG4gIC8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgICB2YXIgcCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHZhciBsb2dFcnJvciA9IGZ1bmN0aW9uIChlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB9O1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHAudGhlbihuZXh0VGlja0hhbmRsZXIpLmNhdGNoKGxvZ0Vycm9yKTtcbiAgICAgIC8vIGluIHByb2JsZW1hdGljIFVJV2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRlbHkgYnJlYWssIGJ1dFxuICAgICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRoZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgICAgLy8gbmVlZHMgdG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRpbWVyLiBUaGVyZWZvcmUgd2UgY2FuXG4gICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICAgIGlmIChpc0lPUykgeyBzZXRUaW1lb3V0KG5vb3ApOyB9XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIpIHx8XG4gICAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gICAgTXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdJ1xuICApKSB7XG4gICAgLy8gdXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMgbm90IGF2YWlsYWJsZSxcbiAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBpT1M3LCBBbmRyb2lkIDQuNFxuICAgIHZhciBjb3VudGVyID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihuZXh0VGlja0hhbmRsZXIpO1xuICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0ZXh0Tm9kZSwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH0pO1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtcbiAgICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsYmFjayB0byBzZXRUaW1lb3V0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KG5leHRUaWNrSGFuZGxlciwgMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBxdWV1ZU5leHRUaWNrIChjYiwgY3R4KSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjYikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNiLmNhbGwoY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIGN0eCwgJ25leHRUaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgICAgX3Jlc29sdmUoY3R4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSB0cnVlO1xuICAgICAgdGltZXJGdW5jKCk7XG4gICAgfVxuICAgIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkoKTtcblxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRba2V5XSA9PT0gdHJ1ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGtleSkge1xuICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9KCkpO1xufVxuXG4vKiAgKi9cblxuXG52YXIgdWlkID0gMDtcblxuLyoqXG4gKiBBIGRlcCBpcyBhbiBvYnNlcnZhYmxlIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGVcbiAqIGRpcmVjdGl2ZXMgc3Vic2NyaWJpbmcgdG8gaXQuXG4gKi9cbnZhciBEZXAgPSBmdW5jdGlvbiBEZXAgKCkge1xuICB0aGlzLmlkID0gdWlkKys7XG4gIHRoaXMuc3VicyA9IFtdO1xufTtcblxuRGVwLnByb3RvdHlwZS5hZGRTdWIgPSBmdW5jdGlvbiBhZGRTdWIgKHN1Yikge1xuICB0aGlzLnN1YnMucHVzaChzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5yZW1vdmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xuICByZW1vdmUodGhpcy5zdWJzLCBzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICBpZiAoRGVwLnRhcmdldCkge1xuICAgIERlcC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZhciBzdWJzID0gdGhpcy5zdWJzLnNsaWNlKCk7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBzdWJzW2ldLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4vLyB0aGUgY3VycmVudCB0YXJnZXQgd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQuXG4vLyB0aGlzIGlzIGdsb2JhbGx5IHVuaXF1ZSBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG9ubHkgb25lXG4vLyB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZCBhdCBhbnkgdGltZS5cbkRlcC50YXJnZXQgPSBudWxsO1xudmFyIHRhcmdldFN0YWNrID0gW107XG5cbmZ1bmN0aW9uIHB1c2hUYXJnZXQgKF90YXJnZXQpIHtcbiAgaWYgKERlcC50YXJnZXQpIHsgdGFyZ2V0U3RhY2sucHVzaChEZXAudGFyZ2V0KTsgfVxuICBEZXAudGFyZ2V0ID0gX3RhcmdldDtcbn1cblxuZnVuY3Rpb24gcG9wVGFyZ2V0ICgpIHtcbiAgRGVwLnRhcmdldCA9IHRhcmdldFN0YWNrLnBvcCgpO1xufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWljYWxseSBhY2Nlc3NpbmcgbWV0aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3JlYXRlKGFycmF5UHJvdG8pO1tcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl1cbi5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBvcmlnaW5hbCA9IGFycmF5UHJvdG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9kLCBmdW5jdGlvbiBtdXRhdG9yICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICAvLyBhdm9pZCBsZWFraW5nIGFyZ3VtZW50czpcbiAgICAvLyBodHRwOi8vanNwZXJmLmNvbS9jbG9zdXJlLXdpdGgtYXJndW1lbnRzXG4gICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGkpO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHMkMVtpXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIHZhciBvYiA9IHRoaXMuX19vYl9fO1xuICAgIHZhciBpbnNlcnRlZDtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncHVzaCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Vuc2hpZnQnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzcGxpY2UnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQpOyB9XG4gICAgLy8gbm90aWZ5IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBCeSBkZWZhdWx0LCB3aGVuIGEgcmVhY3RpdmUgcHJvcGVydHkgaXMgc2V0LCB0aGUgbmV3IHZhbHVlIGlzXG4gKiBhbHNvIGNvbnZlcnRlZCB0byBiZWNvbWUgcmVhY3RpdmUuIEhvd2V2ZXIgd2hlbiBwYXNzaW5nIGRvd24gcHJvcHMsXG4gKiB3ZSBkb24ndCB3YW50IHRvIGZvcmNlIGNvbnZlcnNpb24gYmVjYXVzZSB0aGUgdmFsdWUgbWF5IGJlIGEgbmVzdGVkIHZhbHVlXG4gKiB1bmRlciBhIGZyb3plbiBkYXRhIHN0cnVjdHVyZS4gQ29udmVydGluZyBpdCB3b3VsZCBkZWZlYXQgdGhlIG9wdGltaXphdGlvbi5cbiAqL1xudmFyIG9ic2VydmVyU3RhdGUgPSB7XG4gIHNob3VsZENvbnZlcnQ6IHRydWUsXG4gIGlzU2V0dGluZ1Byb3BzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBlYWNoIG9ic2VydmVkXG4gKiBvYmplY3QuIE9uY2UgYXR0YWNoZWQsIHRoZSBvYnNlcnZlciBjb252ZXJ0cyB0YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2hlcyB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhciBhdWdtZW50ID0gaGFzUHJvdG9cbiAgICAgID8gcHJvdG9BdWdtZW50XG4gICAgICA6IGNvcHlBdWdtZW50O1xuICAgIGF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBhbmQgY29udmVydCB0aGVtIGludG9cbiAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlblxuICogdmFsdWUgdHlwZSBpcyBPYmplY3QuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5c1tpXV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGludGVyY2VwdGluZ1xuICogdGhlIHByb3RvdHlwZSBjaGFpbiB1c2luZyBfX3Byb3RvX19cbiAqL1xuZnVuY3Rpb24gcHJvdG9BdWdtZW50ICh0YXJnZXQsIHNyYykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuICB0YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXByb3RvICovXG59XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlclxuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcblxuICB2YXIgY2hpbGRPYiA9IG9ic2VydmUodmFsKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdldHRlciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGN1c3RvbVNldHRlcikge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRPYiA9IG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgdHlwZW9mIGtleSA9PT0gJ251bWJlcicpIHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0Lmxlbmd0aCwga2V5KTtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKGhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCApLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0ICkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQgZGVsZXRpbmcgcHJvcGVydGllcyBvbiBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICctIGp1c3Qgc2V0IGl0IHRvIG51bGwuJ1xuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZGVsZXRlIHRhcmdldFtrZXldO1xuICBpZiAoIW9iKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgb2IuZGVwLm5vdGlmeSgpO1xufVxuXG4vKipcbiAqIENvbGxlY3QgZGVwZW5kZW5jaWVzIG9uIGFycmF5IGVsZW1lbnRzIHdoZW4gdGhlIGFycmF5IGlzIHRvdWNoZWQsIHNpbmNlXG4gKiB3ZSBjYW5ub3QgaW50ZXJjZXB0IGFycmF5IGVsZW1lbnQgYWNjZXNzIGxpa2UgcHJvcGVydHkgZ2V0dGVycy5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kQXJyYXkgKHZhbHVlKSB7XG4gIGZvciAodmFyIGUgPSAodm9pZCAwKSwgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlID0gdmFsdWVbaV07XG4gICAgZSAmJiBlLl9fb2JfXyAmJiBlLl9fb2JfXy5kZXAuZGVwZW5kKCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgIGRlcGVuZEFycmF5KGUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBPcHRpb24gb3ZlcndyaXRpbmcgc3RyYXRlZ2llcyBhcmUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlXG4gKiBob3cgdG8gbWVyZ2UgYSBwYXJlbnQgb3B0aW9uIHZhbHVlIGFuZCBhIGNoaWxkIG9wdGlvblxuICogdmFsdWUgaW50byB0aGUgZmluYWwgdmFsdWUuXG4gKi9cbnZhciBzdHJhdHMgPSBjb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuXG4vKipcbiAqIE9wdGlvbnMgd2l0aCByZXN0cmljdGlvbnNcbiAqL1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgc3RyYXRzLmVsID0gc3RyYXRzLnByb3BzRGF0YSA9IGZ1bmN0aW9uIChwYXJlbnQsIGNoaWxkLCB2bSwga2V5KSB7XG4gICAgaWYgKCF2bSkge1xuICAgICAgd2FybihcbiAgICAgICAgXCJvcHRpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGluc3RhbmNlIFwiICtcbiAgICAgICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxkKVxuICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0aGF0IHJlY3Vyc2l2ZWx5IG1lcmdlcyB0d28gZGF0YSBvYmplY3RzIHRvZ2V0aGVyLlxuICovXG5mdW5jdGlvbiBtZXJnZURhdGEgKHRvLCBmcm9tKSB7XG4gIGlmICghZnJvbSkgeyByZXR1cm4gdG8gfVxuICB2YXIga2V5LCB0b1ZhbCwgZnJvbVZhbDtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmcm9tKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICB0b1ZhbCA9IHRvW2tleV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh0b1ZhbCkgJiYgaXNQbGFpbk9iamVjdChmcm9tVmFsKSkge1xuICAgICAgbWVyZ2VEYXRhKHRvVmFsLCBmcm9tVmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogRGF0YVxuICovXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgLy8gaW4gYSBWdWUuZXh0ZW5kIG1lcmdlLCBib3RoIHNob3VsZCBiZSBmdW5jdGlvbnNcbiAgICBpZiAoIWNoaWxkVmFsKSB7XG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2hpbGRWYWwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ1RoZSBcImRhdGFcIiBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24gJyArXG4gICAgICAgICd0aGF0IHJldHVybnMgYSBwZXItaW5zdGFuY2UgdmFsdWUgaW4gY29tcG9uZW50ICcgK1xuICAgICAgICAnZGVmaW5pdGlvbnMuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICB9XG4gICAgLy8gd2hlbiBwYXJlbnRWYWwgJiBjaGlsZFZhbCBhcmUgYm90aCBwcmVzZW50LFxuICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAgIC8vIG1lcmdlZCByZXN1bHQgb2YgYm90aCBmdW5jdGlvbnMuLi4gbm8gbmVlZCB0b1xuICAgIC8vIGNoZWNrIGlmIHBhcmVudFZhbCBpcyBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZVxuICAgIC8vIGl0IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlvdXMgbWVyZ2VzLlxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4gKCkge1xuICAgICAgcmV0dXJuIG1lcmdlRGF0YShcbiAgICAgICAgY2hpbGRWYWwuY2FsbCh0aGlzKSxcbiAgICAgICAgcGFyZW50VmFsLmNhbGwodGhpcylcbiAgICAgIClcbiAgICB9XG4gIH0gZWxzZSBpZiAocGFyZW50VmFsIHx8IGNoaWxkVmFsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZEluc3RhbmNlRGF0YUZuICgpIHtcbiAgICAgIC8vIGluc3RhbmNlIG1lcmdlXG4gICAgICB2YXIgaW5zdGFuY2VEYXRhID0gdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY2hpbGRWYWwuY2FsbCh2bSlcbiAgICAgICAgOiBjaGlsZFZhbDtcbiAgICAgIHZhciBkZWZhdWx0RGF0YSA9IHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBIb29rcyBhbmQgcHJvcHMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSG9vayAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWxcbikge1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IHBhcmVudFZhbFxuICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgIDogW2NoaWxkVmFsXVxuICAgIDogcGFyZW50VmFsXG59XG5cbkxJRkVDWUNMRV9IT09LUy5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gIHN0cmF0c1tob29rXSA9IG1lcmdlSG9vaztcbn0pO1xuXG4vKipcbiAqIEFzc2V0c1xuICpcbiAqIFdoZW4gYSB2bSBpcyBwcmVzZW50IChpbnN0YW5jZSBjcmVhdGlvbiksIHdlIG5lZWQgdG8gZG9cbiAqIGEgdGhyZWUtd2F5IG1lcmdlIGJldHdlZW4gY29uc3RydWN0b3Igb3B0aW9ucywgaW5zdGFuY2VcbiAqIG9wdGlvbnMgYW5kIHBhcmVudCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBtZXJnZUFzc2V0cyAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCk7XG4gIHJldHVybiBjaGlsZFZhbFxuICAgID8gZXh0ZW5kKHJlcywgY2hpbGRWYWwpXG4gICAgOiByZXNcbn1cblxuQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlwZSArICdzJ10gPSBtZXJnZUFzc2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAqIFdhdGNoZXJzIGhhc2hlcyBzaG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMgYXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0ge307XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGZvciAodmFyIGtleSBpbiBjaGlsZFZhbCkge1xuICAgIHZhciBwYXJlbnQgPSByZXRba2V5XTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXldO1xuICAgIGlmIChwYXJlbnQgJiYgIUFycmF5LmlzQXJyYXkocGFyZW50KSkge1xuICAgICAgcGFyZW50ID0gW3BhcmVudF07XG4gICAgfVxuICAgIHJldFtrZXldID0gcGFyZW50XG4gICAgICA/IHBhcmVudC5jb25jYXQoY2hpbGQpXG4gICAgICA6IFtjaGlsZF07XG4gIH1cbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBPdGhlciBvYmplY3QgaGFzaGVzLlxuICovXG5zdHJhdHMucHJvcHMgPVxuc3RyYXRzLm1ldGhvZHMgPVxuc3RyYXRzLmNvbXB1dGVkID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZXh0ZW5kKHJldCwgY2hpbGRWYWwpO1xuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIERlZmF1bHQgc3RyYXRlZ3kuXG4gKi9cbnZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICByZXR1cm4gY2hpbGRWYWwgPT09IHVuZGVmaW5lZFxuICAgID8gcGFyZW50VmFsXG4gICAgOiBjaGlsZFZhbFxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBjb21wb25lbnQgbmFtZXNcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLmNvbXBvbmVudHMpIHtcbiAgICB2YXIgbG93ZXIgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoaXNCdWlsdEluVGFnKGxvd2VyKSB8fCBjb25maWcuaXNSZXNlcnZlZFRhZyhsb3dlcikpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgICAnaWQ6ICcgKyBrZXlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIGFsbCBwcm9wcyBvcHRpb24gc3ludGF4IGFyZSBub3JtYWxpemVkIGludG8gdGhlXG4gKiBPYmplY3QtYmFzZWQgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyAob3B0aW9ucykge1xuICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0geyB0eXBlOiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH1cbiAgb3B0aW9ucy5wcm9wcyA9IHJlcztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2YXIgZGVmID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYsIHVwZGF0ZTogZGVmIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdvIG9wdGlvbiBvYmplY3RzIGludG8gYSBuZXcgb25lLlxuICogQ29yZSB1dGlsaXR5IHVzZWQgaW4gYm90aCBpbnN0YW50aWF0aW9uIGFuZCBpbmhlcml0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VPcHRpb25zIChcbiAgcGFyZW50LFxuICBjaGlsZCxcbiAgdm1cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNoZWNrQ29tcG9uZW50cyhjaGlsZCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGNoaWxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICB9XG5cbiAgbm9ybWFsaXplUHJvcHMoY2hpbGQpO1xuICBub3JtYWxpemVEaXJlY3RpdmVzKGNoaWxkKTtcbiAgdmFyIGV4dGVuZHNGcm9tID0gY2hpbGQuZXh0ZW5kcztcbiAgaWYgKGV4dGVuZHNGcm9tKSB7XG4gICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtcbiAgfVxuICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtcbiAgICB9XG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xuICB9XG4gIGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG4gICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdlRmllbGQgKGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdDtcbiAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0sIGtleSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFzc2V0LlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5lZWQgYWNjZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxuICB3YXJuTWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBvcHRpb25zW3R5cGVdO1xuICAvLyBjaGVjayBsb2NhbCByZWdpc3RyYXRpb24gdmFyaWF0aW9ucyBmaXJzdFxuICBpZiAoaGFzT3duKGFzc2V0cywgaWQpKSB7IHJldHVybiBhc3NldHNbaWRdIH1cbiAgdmFyIGNhbWVsaXplZElkID0gY2FtZWxpemUoaWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgY2FtZWxpemVkSWQpKSB7IHJldHVybiBhc3NldHNbY2FtZWxpemVkSWRdIH1cbiAgdmFyIFBhc2NhbENhc2VJZCA9IGNhcGl0YWxpemUoY2FtZWxpemVkSWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgUGFzY2FsQ2FzZUlkKSkgeyByZXR1cm4gYXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxuICAvLyBmYWxsYmFjayB0byBwcm90b3R5cGUgY2hhaW5cbiAgdmFyIHJlcyA9IGFzc2V0c1tpZF0gfHwgYXNzZXRzW2NhbWVsaXplZElkXSB8fCBhc3NldHNbUGFzY2FsQ2FzZUlkXTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJlc29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24ocHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gaGFuZGxlIGJvb2xlYW4gcHJvcHNcbiAgaWYgKGlzVHlwZShCb29sZWFuLCBwcm9wLnR5cGUpKSB7XG4gICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNUeXBlKFN0cmluZywgcHJvcC50eXBlKSAmJiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2bSwgcHJvcCwga2V5KTtcbiAgICAvLyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNoIGNvcHksXG4gICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91bGRDb252ZXJ0ID0gb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0O1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gcHJldlNob3VsZENvbnZlcnQ7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRQcm9wKHByb3AsIGtleSwgdmFsdWUsIHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3BEZWZhdWx0VmFsdWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tZmFjdG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNPYmplY3QoZGVmKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBwcm9wIFwiJyArIGtleSArICdcIjogJyArXG4gICAgICAnUHJvcHMgd2l0aCB0eXBlIE9iamVjdC9BcnJheSBtdXN0IHVzZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4gICAgICAndG8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlLicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gdGhlIHJhdyBwcm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRlcixcbiAgLy8gcmV0dXJuIHByZXZpb3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2F0Y2hlciB0cmlnZ2VyXG4gIGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgJiZcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG4gICAgdm0uX3Byb3BzW2tleV0gIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0uX3Byb3BzW2tleV1cbiAgfVxuICAvLyBjYWxsIGZhY3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5jdGlvbiB0eXBlc1xuICAvLyBhIHZhbHVlIGlzIEZ1bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMgZnVuY3Rpb24gZXZlbiBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYmIGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1bmN0aW9uJ1xuICAgID8gZGVmLmNhbGwodm0pXG4gICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3NlcnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxuICBwcm9wLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgdm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChwcm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuICAgIHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8fCB0eXBlID09PSB0cnVlO1xuICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkrKykge1xuICAgICAgdmFyIGFzc2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0pO1xuICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGFzc2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwgJycpO1xuICAgICAgdmFsaWQgPSBhc3NlcnRlZFR5cGUudmFsaWQ7XG4gICAgfVxuICB9XG4gIGlmICghdmFsaWQpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nICtcbiAgICAgICcgRXhwZWN0ZWQgJyArIGV4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUpLmpvaW4oJywgJykgK1xuICAgICAgJywgZ290ICcgKyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSArICcuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdmFsaWRhdG9yID0gcHJvcC52YWxpZGF0b3I7XG4gIGlmICh2YWxpZGF0b3IpIHtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWx1ZSkpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnZhciBzaW1wbGVDaGVja1JFID0gL14oU3RyaW5nfE51bWJlcnxCb29sZWFufEZ1bmN0aW9ufFN5bWJvbCkkLztcblxuZnVuY3Rpb24gYXNzZXJ0VHlwZSAodmFsdWUsIHR5cGUpIHtcbiAgdmFyIHZhbGlkO1xuICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcbiAgaWYgKHNpbXBsZUNoZWNrUkUudGVzdChleHBlY3RlZFR5cGUpKSB7XG4gICAgdmFsaWQgPSB0eXBlb2YgdmFsdWUgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xuICAgIHZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogdmFsaWQsXG4gICAgZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBlcyxcbiAqIGJlY2F1c2UgYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVubmluZ1xuICogYWNyb3NzIGRpZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlIChmbikge1xuICB2YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59XG5cbmZ1bmN0aW9uIGlzVHlwZSAodHlwZSwgZm4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZuKSkge1xuICAgIHJldHVybiBnZXRUeXBlKGZuKSA9PT0gZ2V0VHlwZSh0eXBlKVxuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBmbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChnZXRUeXBlKGZuW2ldKSA9PT0gZ2V0VHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgbWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSk7XG4gICAgfTtcbiAgfVxufVxuXG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFrZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXksT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAncmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3NlcmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9uUHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24gdGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICBcInJlZmVyZW5jZWQgZHVyaW5nIHJlbmRlci4gTWFrZSBzdXJlIHRvIGRlY2xhcmUgcmVhY3RpdmUgZGF0YSBcIiArXG4gICAgICBcInByb3BlcnRpZXMgaW4gdGhlIGRhdGEgb3B0aW9uLlwiLFxuICAgICAgdGFyZ2V0XG4gICAgKTtcbiAgfTtcblxuICB2YXIgaGFzUHJveHkgPVxuICAgIHR5cGVvZiBQcm94eSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICBQcm94eS50b1N0cmluZygpLm1hdGNoKC9uYXRpdmUgY29kZS8pO1xuXG4gIGlmIChoYXNQcm94eSkge1xuICAgIHZhciBpc0J1aWx0SW5Nb2RpZmllciA9IG1ha2VNYXAoJ3N0b3AscHJldmVudCxzZWxmLGN0cmwsc2hpZnQsYWx0LG1ldGEnKTtcbiAgICBjb25maWcua2V5Q29kZXMgPSBuZXcgUHJveHkoY29uZmlnLmtleUNvZGVzLCB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCAodGFyZ2V0LCBrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0J1aWx0SW5Nb2RpZmllcihrZXkpKSB7XG4gICAgICAgICAgd2FybigoXCJBdm9pZCBvdmVyd3JpdGluZyBidWlsdC1pbiBtb2RpZmllciBpbiBjb25maWcua2V5Q29kZXM6IC5cIiArIGtleSkpO1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIGhhc0hhbmRsZXIgPSB7XG4gICAgaGFzOiBmdW5jdGlvbiBoYXMgKHRhcmdldCwga2V5KSB7XG4gICAgICB2YXIgaGFzID0ga2V5IGluIHRhcmdldDtcbiAgICAgIHZhciBpc0FsbG93ZWQgPSBhbGxvd2VkR2xvYmFscyhrZXkpIHx8IGtleS5jaGFyQXQoMCkgPT09ICdfJztcbiAgICAgIGlmICghaGFzICYmICFpc0FsbG93ZWQpIHtcbiAgICAgICAgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhcyB8fCAhaXNBbGxvd2VkXG4gICAgfVxuICB9O1xuXG4gIHZhciBnZXRIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICh0YXJnZXQsIGtleSkge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmICEoa2V5IGluIHRhcmdldCkpIHtcbiAgICAgICAgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG4gICAgfVxuICB9O1xuXG4gIGluaXRQcm94eSA9IGZ1bmN0aW9uIGluaXRQcm94eSAodm0pIHtcbiAgICBpZiAoaGFzUHJveHkpIHtcbiAgICAgIC8vIGRldGVybWluZSB3aGljaCBwcm94eSBoYW5kbGVyIHRvIHVzZVxuICAgICAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcbiAgICAgIHZhciBoYW5kbGVycyA9IG9wdGlvbnMucmVuZGVyICYmIG9wdGlvbnMucmVuZGVyLl93aXRoU3RyaXBwZWRcbiAgICAgICAgPyBnZXRIYW5kbGVyXG4gICAgICAgIDogaGFzSGFuZGxlcjtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IG5ldyBQcm94eSh2bSwgaGFuZGxlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgVk5vZGUgPSBmdW5jdGlvbiBWTm9kZSAoXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIHRleHQsXG4gIGVsbSxcbiAgY29udGV4dCxcbiAgY29tcG9uZW50T3B0aW9uc1xuKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5zID0gdW5kZWZpbmVkO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZ1bmN0aW9uYWxDb250ZXh0ID0gdW5kZWZpbmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4gIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0aGlzLnJhdyA9IGZhbHNlO1xuICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290SW5zZXJ0ID0gdHJ1ZTtcbiAgdGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25lZCA9IGZhbHNlO1xuICB0aGlzLmlzT25jZSA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6IHt9IH07XG5cbi8vIERFUFJFQ0FURUQ6IGFsaWFzIGZvciBjb21wb25lbnRJbnN0YW5jZSBmb3IgYmFja3dhcmRzIGNvbXBhdC5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5wcm90b3R5cGVBY2Nlc3NvcnMuY2hpbGQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFZOb2RlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBjcmVhdGVFbXB0eVZOb2RlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSAnJztcbiAgbm9kZS5pc0NvbW1lbnQgPSB0cnVlO1xuICByZXR1cm4gbm9kZVxufTtcblxuZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBWTm9kZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBTdHJpbmcodmFsKSlcbn1cblxuLy8gb3B0aW1pemVkIHNoYWxsb3cgY2xvbmVcbi8vIHVzZWQgZm9yIHN0YXRpYyBub2RlcyBhbmQgc2xvdCBub2RlcyBiZWNhdXNlIHRoZXkgbWF5IGJlIHJldXNlZCBhY3Jvc3Ncbi8vIG11bHRpcGxlIHJlbmRlcnMsIGNsb25pbmcgdGhlbSBhdm9pZHMgZXJyb3JzIHdoZW4gRE9NIG1hbmlwdWxhdGlvbnMgcmVseVxuLy8gb24gdGhlaXIgZWxtIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIGNsb25lVk5vZGUgKHZub2RlKSB7XG4gIHZhciBjbG9uZWQgPSBuZXcgVk5vZGUoXG4gICAgdm5vZGUudGFnLFxuICAgIHZub2RlLmRhdGEsXG4gICAgdm5vZGUuY2hpbGRyZW4sXG4gICAgdm5vZGUudGV4dCxcbiAgICB2bm9kZS5lbG0sXG4gICAgdm5vZGUuY29udGV4dCxcbiAgICB2bm9kZS5jb21wb25lbnRPcHRpb25zXG4gICk7XG4gIGNsb25lZC5ucyA9IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVudCA9IHZub2RlLmlzQ29tbWVudDtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGNsb25lZFxufVxuXG5mdW5jdGlvbiBjbG9uZVZOb2RlcyAodm5vZGVzKSB7XG4gIHZhciBsZW4gPSB2bm9kZXMubGVuZ3RoO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXNbaV0gPSBjbG9uZVZOb2RlKHZub2Rlc1tpXSk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIG5vcm1hbGl6ZUV2ZW50ID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBwYXNzaXZlID0gbmFtZS5jaGFyQXQoMCkgPT09ICcmJztcbiAgbmFtZSA9IHBhc3NpdmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIG9uY2UkJDEgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJ34nOyAvLyBQcmVmaXhlZCBsYXN0LCBjaGVja2VkIGZpcnN0XG4gIG5hbWUgPSBvbmNlJCQxID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBjYXB0dXJlID0gbmFtZS5jaGFyQXQoMCkgPT09ICchJztcbiAgbmFtZSA9IGNhcHR1cmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIG9uY2U6IG9uY2UkJDEsXG4gICAgY2FwdHVyZTogY2FwdHVyZSxcbiAgICBwYXNzaXZlOiBwYXNzaXZlXG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVGbkludm9rZXIgKGZucykge1xuICBmdW5jdGlvbiBpbnZva2VyICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICB2YXIgZm5zID0gaW52b2tlci5mbnM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm5zW2ldLmFwcGx5KG51bGwsIGFyZ3VtZW50cyQxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmV0dXJuIGhhbmRsZXIgcmV0dXJuIHZhbHVlIGZvciBzaW5nbGUgaGFuZGxlcnNcbiAgICAgIHJldHVybiBmbnMuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuICBpbnZva2VyLmZucyA9IGZucztcbiAgcmV0dXJuIGludm9rZXJcbn1cblxuZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcbiAgb24sXG4gIG9sZE9uLFxuICBhZGQsXG4gIHJlbW92ZSQkMSxcbiAgdm1cbikge1xuICB2YXIgbmFtZSwgY3VyLCBvbGQsIGV2ZW50O1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBjdXIgPSBvbltuYW1lXTtcbiAgICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgIGlmIChpc1VuZGVmKGN1cikpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJJbnZhbGlkIGhhbmRsZXIgZm9yIGV2ZW50IFxcXCJcIiArIChldmVudC5uYW1lKSArIFwiXFxcIjogZ290IFwiICsgU3RyaW5nKGN1ciksXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGQpKSB7XG4gICAgICBpZiAoaXNVbmRlZihjdXIuZm5zKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNyZWF0ZUZuSW52b2tlcihjdXIpO1xuICAgICAgfVxuICAgICAgYWRkKGV2ZW50Lm5hbWUsIGN1ciwgZXZlbnQub25jZSwgZXZlbnQuY2FwdHVyZSwgZXZlbnQucGFzc2l2ZSk7XG4gICAgfSBlbHNlIGlmIChjdXIgIT09IG9sZCkge1xuICAgICAgb2xkLmZucyA9IGN1cjtcbiAgICAgIG9uW25hbWVdID0gb2xkO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoaXNVbmRlZihvbltuYW1lXSkpIHtcbiAgICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgICByZW1vdmUkJDEoZXZlbnQubmFtZSwgb2xkT25bbmFtZV0sIGV2ZW50LmNhcHR1cmUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gbWVyZ2VWTm9kZUhvb2sgKGRlZiwgaG9va0tleSwgaG9vaykge1xuICB2YXIgaW52b2tlcjtcbiAgdmFyIG9sZEhvb2sgPSBkZWZbaG9va0tleV07XG5cbiAgZnVuY3Rpb24gd3JhcHBlZEhvb2sgKCkge1xuICAgIGhvb2suYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAvLyBpbXBvcnRhbnQ6IHJlbW92ZSBtZXJnZWQgaG9vayB0byBlbnN1cmUgaXQncyBjYWxsZWQgb25seSBvbmNlXG4gICAgLy8gYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtcbiAgICByZW1vdmUoaW52b2tlci5mbnMsIHdyYXBwZWRIb29rKTtcbiAgfVxuXG4gIGlmIChpc1VuZGVmKG9sZEhvb2spKSB7XG4gICAgLy8gbm8gZXhpc3RpbmcgaG9va1xuICAgIGludm9rZXIgPSBjcmVhdGVGbkludm9rZXIoW3dyYXBwZWRIb29rXSk7XG4gIH0gZWxzZSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzRGVmKG9sZEhvb2suZm5zKSAmJiBpc1RydWUob2xkSG9vay5tZXJnZWQpKSB7XG4gICAgICAvLyBhbHJlYWR5IGEgbWVyZ2VkIGludm9rZXJcbiAgICAgIGludm9rZXIgPSBvbGRIb29rO1xuICAgICAgaW52b2tlci5mbnMucHVzaCh3cmFwcGVkSG9vayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIHBsYWluIGhvb2tcbiAgICAgIGludm9rZXIgPSBjcmVhdGVGbkludm9rZXIoW29sZEhvb2ssIHdyYXBwZWRIb29rXSk7XG4gICAgfVxuICB9XG5cbiAgaW52b2tlci5tZXJnZWQgPSB0cnVlO1xuICBkZWZbaG9va0tleV0gPSBpbnZva2VyO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YSAoXG4gIGRhdGEsXG4gIEN0b3IsXG4gIHRhZ1xuKSB7XG4gIC8vIHdlIGFyZSBvbmx5IGV4dHJhY3RpbmcgcmF3IHZhbHVlcyBoZXJlLlxuICAvLyB2YWxpZGF0aW9uIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgaGFuZGxlZCBpbiB0aGUgY2hpbGRcbiAgLy8gY29tcG9uZW50IGl0c2VsZi5cbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNVbmRlZihwcm9wT3B0aW9ucykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG4gIHZhciBwcm9wcyA9IGRhdGEucHJvcHM7XG4gIGlmIChpc0RlZihhdHRycykgfHwgaXNEZWYocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICB2YXIgYWx0S2V5ID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIga2V5SW5Mb3dlckNhc2UgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSAhPT0ga2V5SW5Mb3dlckNhc2UgJiZcbiAgICAgICAgICBhdHRycyAmJiBoYXNPd24oYXR0cnMsIGtleUluTG93ZXJDYXNlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aXAoXG4gICAgICAgICAgICBcIlByb3AgXFxcIlwiICsga2V5SW5Mb3dlckNhc2UgKyBcIlxcXCIgaXMgcGFzc2VkIHRvIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh0YWcgfHwgQ3RvcikpICsgXCIsIGJ1dCB0aGUgZGVjbGFyZWQgcHJvcCBuYW1lIGlzXCIgK1xuICAgICAgICAgICAgXCIgXFxcIlwiICsga2V5ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIGNhbWVsQ2FzZWQgXCIgK1xuICAgICAgICAgICAgXCJwcm9wcyBuZWVkIHRvIHVzZSB0aGVpciBrZWJhYi1jYXNlIGVxdWl2YWxlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIFwiICtcbiAgICAgICAgICAgIFwidGVtcGxhdGVzLiBZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyBhbHRLZXkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaGVja1Byb3AocmVzLCBwcm9wcywga2V5LCBhbHRLZXksIHRydWUpIHx8XG4gICAgICBjaGVja1Byb3AocmVzLCBhdHRycywga2V5LCBhbHRLZXksIGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBjaGVja1Byb3AgKFxuICByZXMsXG4gIGhhc2gsXG4gIGtleSxcbiAgYWx0S2V5LFxuICBwcmVzZXJ2ZVxuKSB7XG4gIGlmIChpc0RlZihoYXNoKSkge1xuICAgIGlmIChoYXNPd24oaGFzaCwga2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2tleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoaGFzT3duKGhhc2gsIGFsdEtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFthbHRLZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFthbHRLZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG4vLyBUaGUgdGVtcGxhdGUgY29tcGlsZXIgYXR0ZW1wdHMgdG8gbWluaW1pemUgdGhlIG5lZWQgZm9yIG5vcm1hbGl6YXRpb24gYnlcbi8vIHN0YXRpY2FsbHkgYW5hbHl6aW5nIHRoZSB0ZW1wbGF0ZSBhdCBjb21waWxlIHRpbWUuXG4vL1xuLy8gRm9yIHBsYWluIEhUTUwgbWFya3VwLCBub3JtYWxpemF0aW9uIGNhbiBiZSBjb21wbGV0ZWx5IHNraXBwZWQgYmVjYXVzZSB0aGVcbi8vIGdlbmVyYXRlZCByZW5kZXIgZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gQXJyYXk8Vk5vZGU+LiBUaGVyZSBhcmVcbi8vIHR3byBjYXNlcyB3aGVyZSBleHRyYSBub3JtYWxpemF0aW9uIGlzIG5lZWRlZDpcblxuLy8gMS4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29tcG9uZW50cyAtIGJlY2F1c2UgYSBmdW5jdGlvbmFsIGNvbXBvbmVudFxuLy8gbWF5IHJldHVybiBhbiBBcnJheSBpbnN0ZWFkIG9mIGEgc2luZ2xlIHJvb3QuIEluIHRoaXMgY2FzZSwganVzdCBhIHNpbXBsZVxuLy8gbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQgLSBpZiBhbnkgY2hpbGQgaXMgYW4gQXJyYXksIHdlIGZsYXR0ZW4gdGhlIHdob2xlXG4vLyB0aGluZyB3aXRoIEFycmF5LnByb3RvdHlwZS5jb25jYXQuIEl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb25seSAxLWxldmVsIGRlZXBcbi8vIGJlY2F1c2UgZnVuY3Rpb25hbCBjb21wb25lbnRzIGFscmVhZHkgbm9ybWFsaXplIHRoZWlyIG93biBjaGlsZHJlbi5cbmZ1bmN0aW9uIHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuIChjaGlsZHJlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW5baV0pKSB7XG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgY2hpbGRyZW4pXG4gICAgfVxuICB9XG4gIHJldHVybiBjaGlsZHJlblxufVxuXG4vLyAyLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb25zdHJ1Y3RzIHRoYXQgYWx3YXlzIGdlbmVyYXRlZCBuZXN0ZWQgQXJyYXlzLFxuLy8gZS5nLiA8dGVtcGxhdGU+LCA8c2xvdD4sIHYtZm9yLCBvciB3aGVuIHRoZSBjaGlsZHJlbiBpcyBwcm92aWRlZCBieSB1c2VyXG4vLyB3aXRoIGhhbmQtd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zIC8gSlNYLiBJbiBzdWNoIGNhc2VzIGEgZnVsbCBub3JtYWxpemF0aW9uXG4vLyBpcyBuZWVkZWQgdG8gY2F0ZXIgdG8gYWxsIHBvc3NpYmxlIHR5cGVzIG9mIGNoaWxkcmVuIHZhbHVlcy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuIChjaGlsZHJlbikge1xuICByZXR1cm4gaXNQcmltaXRpdmUoY2hpbGRyZW4pXG4gICAgPyBbY3JlYXRlVGV4dFZOb2RlKGNoaWxkcmVuKV1cbiAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG4gICAgICA/IG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oY2hpbGRyZW4pXG4gICAgICA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBpc1RleHROb2RlIChub2RlKSB7XG4gIHJldHVybiBpc0RlZihub2RlKSAmJiBpc0RlZihub2RlLnRleHQpICYmIGlzRmFsc2Uobm9kZS5pc0NvbW1lbnQpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4gKGNoaWxkcmVuLCBuZXN0ZWRJbmRleCkge1xuICB2YXIgcmVzID0gW107XG4gIHZhciBpLCBjLCBsYXN0O1xuICBmb3IgKGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGlzVW5kZWYoYykgfHwgdHlwZW9mIGMgPT09ICdib29sZWFuJykgeyBjb250aW51ZSB9XG4gICAgbGFzdCA9IHJlc1tyZXMubGVuZ3RoIC0gMV07XG4gICAgLy8gIG5lc3RlZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGMpKSB7XG4gICAgICByZXMucHVzaC5hcHBseShyZXMsIG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oYywgKChuZXN0ZWRJbmRleCB8fCAnJykgKyBcIl9cIiArIGkpKSk7XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xuICAgICAgaWYgKGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICAvLyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgU1NSIGh5ZHJhdGlvbiBiZWNhdXNlIHRleHQgbm9kZXMgYXJlXG4gICAgICAgIC8vIGVzc2VudGlhbGx5IG1lcmdlZCB3aGVuIHJlbmRlcmVkIHRvIEhUTUwgc3RyaW5nc1xuICAgICAgICAobGFzdCkudGV4dCArPSBTdHJpbmcoYyk7XG4gICAgICB9IGVsc2UgaWYgKGMgIT09ICcnKSB7XG4gICAgICAgIC8vIGNvbnZlcnQgcHJpbWl0aXZlIHRvIHZub2RlXG4gICAgICAgIHJlcy5wdXNoKGNyZWF0ZVRleHRWTm9kZShjKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGMpICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICByZXNbcmVzLmxlbmd0aCAtIDFdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMudGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkZWZhdWx0IGtleSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtlbHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxuICAgICAgICBpZiAoaXNUcnVlKGNoaWxkcmVuLl9pc1ZMaXN0KSAmJlxuICAgICAgICAgIGlzRGVmKGMudGFnKSAmJlxuICAgICAgICAgIGlzVW5kZWYoYy5rZXkpICYmXG4gICAgICAgICAgaXNEZWYobmVzdGVkSW5kZXgpKSB7XG4gICAgICAgICAgYy5rZXkgPSBcIl9fdmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnN1cmVDdG9yIChjb21wLCBiYXNlKSB7XG4gIHJldHVybiBpc09iamVjdChjb21wKVxuICAgID8gYmFzZS5leHRlbmQoY29tcClcbiAgICA6IGNvbXBcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcbiAgZmFjdG9yeSxcbiAgYmFzZUN0b3IsXG4gIGNvbnRleHRcbikge1xuICBpZiAoaXNUcnVlKGZhY3RvcnkuZXJyb3IpICYmIGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmVycm9yQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxuXG4gIGlmIChpc1RydWUoZmFjdG9yeS5sb2FkaW5nKSAmJiBpc0RlZihmYWN0b3J5LmxvYWRpbmdDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdDb21wXG4gIH1cblxuICBpZiAoaXNEZWYoZmFjdG9yeS5jb250ZXh0cykpIHtcbiAgICAvLyBhbHJlYWR5IHBlbmRpbmdcbiAgICBmYWN0b3J5LmNvbnRleHRzLnB1c2goY29udGV4dCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRleHRzID0gZmFjdG9yeS5jb250ZXh0cyA9IFtjb250ZXh0XTtcbiAgICB2YXIgc3luYyA9IHRydWU7XG5cbiAgICB2YXIgZm9yY2VSZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNvbnRleHRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb250ZXh0c1tpXS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIC8vIGNhY2hlIHJlc29sdmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gZW5zdXJlQ3RvcihyZXMsIGJhc2VDdG9yKTtcbiAgICAgIC8vIGludm9rZSBjYWxsYmFja3Mgb25seSBpZiB0aGlzIGlzIG5vdCBhIHN5bmNocm9ub3VzIHJlc29sdmVcbiAgICAgIC8vIChhc3luYyByZXNvbHZlcyBhcmUgc2hpbW1lZCBhcyBzeW5jaHJvbm91cyBkdXJpbmcgU1NSKVxuICAgICAgaWYgKCFzeW5jKSB7XG4gICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVqZWN0ID0gb25jZShmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgYXN5bmMgY29tcG9uZW50OiBcIiArIChTdHJpbmcoZmFjdG9yeSkpICtcbiAgICAgICAgKHJlYXNvbiA/IChcIlxcblJlYXNvbjogXCIgKyByZWFzb24pIDogJycpXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgICAgICBmYWN0b3J5LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZXMgPSBmYWN0b3J5KHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICBpZiAoaXNPYmplY3QocmVzKSkge1xuICAgICAgaWYgKHR5cGVvZiByZXMudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyAoKSA9PiBQcm9taXNlXG4gICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihyZXMuY29tcG9uZW50KSAmJiB0eXBlb2YgcmVzLmNvbXBvbmVudC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcy5jb21wb25lbnQudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgICAgIGlmIChpc0RlZihyZXMuZXJyb3IpKSB7XG4gICAgICAgICAgZmFjdG9yeS5lcnJvckNvbXAgPSBlbnN1cmVDdG9yKHJlcy5lcnJvciwgYmFzZUN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5sb2FkaW5nKSkge1xuICAgICAgICAgIGZhY3RvcnkubG9hZGluZ0NvbXAgPSBlbnN1cmVDdG9yKHJlcy5sb2FkaW5nLCBiYXNlQ3Rvcik7XG4gICAgICAgICAgaWYgKHJlcy5kZWxheSA9PT0gMCkge1xuICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpICYmIGlzVW5kZWYoZmFjdG9yeS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHJlcy5kZWxheSB8fCAyMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihyZXMudGltZW91dCkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICAgICAgICA/IChcInRpbWVvdXQgKFwiICsgKHJlcy50aW1lb3V0KSArIFwibXMpXCIpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCByZXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzeW5jID0gZmFsc2U7XG4gICAgLy8gcmV0dXJuIGluIGNhc2UgcmVzb2x2ZWQgc3luY2hyb25vdXNseVxuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdcbiAgICAgID8gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICAgICAgOiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGdldEZpcnN0Q29tcG9uZW50Q2hpbGQgKGNoaWxkcmVuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gY1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFdmVudHMgKHZtKSB7XG4gIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2bS5faGFzSG9va0V2ZW50ID0gZmFsc2U7XG4gIC8vIGluaXQgcGFyZW50IGF0dGFjaGVkIGV2ZW50c1xuICB2YXIgbGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzKTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0O1xuXG5mdW5jdGlvbiBhZGQgKGV2ZW50LCBmbiwgb25jZSQkMSkge1xuICBpZiAob25jZSQkMSkge1xuICAgIHRhcmdldC4kb25jZShldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC4kb24oZXZlbnQsIGZuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUkMSAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4kb2ZmKGV2ZW50LCBmbik7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyAoXG4gIHZtLFxuICBsaXN0ZW5lcnMsXG4gIG9sZExpc3RlbmVyc1xuKSB7XG4gIHRhcmdldCA9IHZtO1xuICB1cGRhdGVMaXN0ZW5lcnMobGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMgfHwge30sIGFkZCwgcmVtb3ZlJDEsIHZtKTtcbn1cblxuZnVuY3Rpb24gZXZlbnRzTWl4aW4gKFZ1ZSkge1xuICB2YXIgaG9va1JFID0gL15ob29rOi87XG4gIFZ1ZS5wcm90b3R5cGUuJG9uID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb24oZXZlbnRbaV0sIGZuKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgKHZtLl9ldmVudHNbZXZlbnRdIHx8ICh2bS5fZXZlbnRzW2V2ZW50XSA9IFtdKSkucHVzaChmbik7XG4gICAgICAvLyBvcHRpbWl6ZSBob29rOmV2ZW50IGNvc3QgYnkgdXNpbmcgYSBib29sZWFuIGZsYWcgbWFya2VkIGF0IHJlZ2lzdHJhdGlvblxuICAgICAgLy8gaW5zdGVhZCBvZiBhIGhhc2ggbG9va3VwXG4gICAgICBpZiAoaG9va1JFLnRlc3QoZXZlbnQpKSB7XG4gICAgICAgIHZtLl9oYXNIb29rRXZlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvbmNlID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgZnVuY3Rpb24gb24gKCkge1xuICAgICAgdm0uJG9mZihldmVudCwgb24pO1xuICAgICAgZm4uYXBwbHkodm0sIGFyZ3VtZW50cyk7XG4gICAgfVxuICAgIG9uLmZuID0gZm47XG4gICAgdm0uJG9uKGV2ZW50LCBvbik7XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb2ZmID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhbGxcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIGFycmF5IG9mIGV2ZW50c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSQxID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSQxIDwgbDsgaSQxKyspIHtcbiAgICAgICAgdGhpcyQxLiRvZmYoZXZlbnRbaSQxXSwgZm4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIHNwZWNpZmljIGV2ZW50XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmICghY2JzKSB7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRdID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVyXG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbG93ZXJDYXNlRXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiB2bS5fZXZlbnRzW2xvd2VyQ2FzZUV2ZW50XSkge1xuICAgICAgICB0aXAoXG4gICAgICAgICAgXCJFdmVudCBcXFwiXCIgKyBsb3dlckNhc2VFdmVudCArIFwiXFxcIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiIGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgXCIgK1xuICAgICAgICAgIFwidi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIFwiICtcbiAgICAgICAgICBcIllvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIChoeXBoZW5hdGUoZXZlbnQpKSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4gMSA/IHRvQXJyYXkoY2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNic1tpXS5hcHBseSh2bSwgYXJncyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIHJhdyBjaGlsZHJlbiBWTm9kZXMgaW50byBhIHNsb3Qgb2JqZWN0LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU2xvdHMgKFxuICBjaGlsZHJlbixcbiAgY29udGV4dFxuKSB7XG4gIHZhciBzbG90cyA9IHt9O1xuICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHNsb3RzXG4gIH1cbiAgdmFyIGRlZmF1bHRTbG90ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgLy8gbmFtZWQgc2xvdHMgc2hvdWxkIG9ubHkgYmUgcmVzcGVjdGVkIGlmIHRoZSB2bm9kZSB3YXMgcmVuZGVyZWQgaW4gdGhlXG4gICAgLy8gc2FtZSBjb250ZXh0LlxuICAgIGlmICgoY2hpbGQuY29udGV4dCA9PT0gY29udGV4dCB8fCBjaGlsZC5mdW5jdGlvbmFsQ29udGV4dCA9PT0gY29udGV4dCkgJiZcbiAgICAgIGNoaWxkLmRhdGEgJiYgY2hpbGQuZGF0YS5zbG90ICE9IG51bGxcbiAgICApIHtcbiAgICAgIHZhciBuYW1lID0gY2hpbGQuZGF0YS5zbG90O1xuICAgICAgdmFyIHNsb3QgPSAoc2xvdHNbbmFtZV0gfHwgKHNsb3RzW25hbWVdID0gW10pKTtcbiAgICAgIGlmIChjaGlsZC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgc2xvdC5wdXNoLmFwcGx5KHNsb3QsIGNoaWxkLmNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsb3QucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmF1bHRTbG90LnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfVxuICAvLyBpZ25vcmUgd2hpdGVzcGFjZVxuICBpZiAoIWRlZmF1bHRTbG90LmV2ZXJ5KGlzV2hpdGVzcGFjZSkpIHtcbiAgICBzbG90cy5kZWZhdWx0ID0gZGVmYXVsdFNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5pc0NvbW1lbnQgfHwgbm9kZS50ZXh0ID09PSAnICdcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlZFNsb3RzIChcbiAgZm5zLCAvLyBzZWUgZmxvdy92bm9kZVxuICByZXNcbikge1xuICByZXMgPSByZXMgfHwge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zW2ldKSkge1xuICAgICAgcmVzb2x2ZVNjb3BlZFNsb3RzKGZuc1tpXSwgcmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2Zuc1tpXS5rZXldID0gZm5zW2ldLmZuO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgYWN0aXZlSW5zdGFuY2UgPSBudWxsO1xuXG5mdW5jdGlvbiBpbml0TGlmZWN5Y2xlICh2bSkge1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXG4gIC8vIGxvY2F0ZSBmaXJzdCBub24tYWJzdHJhY3QgcGFyZW50XG4gIHZhciBwYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgaWYgKHBhcmVudCAmJiAhb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHdoaWxlIChwYXJlbnQuJG9wdGlvbnMuYWJzdHJhY3QgJiYgcGFyZW50LiRwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLnB1c2godm0pO1xuICB9XG5cbiAgdm0uJHBhcmVudCA9IHBhcmVudDtcbiAgdm0uJHJvb3QgPSBwYXJlbnQgPyBwYXJlbnQuJHJvb3QgOiB2bTtcblxuICB2bS4kY2hpbGRyZW4gPSBbXTtcbiAgdm0uJHJlZnMgPSB7fTtcblxuICB2bS5fd2F0Y2hlciA9IG51bGw7XG4gIHZtLl9pbmFjdGl2ZSA9IG51bGw7XG4gIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICB2bS5faXNNb3VudGVkID0gZmFsc2U7XG4gIHZtLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsaWZlY3ljbGVNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICdiZWZvcmVVcGRhdGUnKTtcbiAgICB9XG4gICAgdmFyIHByZXZFbCA9IHZtLiRlbDtcbiAgICB2YXIgcHJldlZub2RlID0gdm0uX3Zub2RlO1xuICAgIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5jZTtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHZtO1xuICAgIHZtLl92bm9kZSA9IHZub2RlO1xuICAgIC8vIFZ1ZS5wcm90b3R5cGUuX19wYXRjaF9fIGlzIGluamVjdGVkIGluIGVudHJ5IHBvaW50c1xuICAgIC8vIGJhc2VkIG9uIHRoZSByZW5kZXJpbmcgYmFja2VuZCB1c2VkLlxuICAgIGlmICghcHJldlZub2RlKSB7XG4gICAgICAvLyBpbml0aWFsIHJlbmRlclxuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKFxuICAgICAgICB2bS4kZWwsIHZub2RlLCBoeWRyYXRpbmcsIGZhbHNlIC8qIHJlbW92ZU9ubHkgKi8sXG4gICAgICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0sXG4gICAgICAgIHZtLiRvcHRpb25zLl9yZWZFbG1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVwZGF0ZXNcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhwcmV2Vm5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgYWN0aXZlSW5zdGFuY2UgPSBwcmV2QWN0aXZlSW5zdGFuY2U7XG4gICAgLy8gdXBkYXRlIF9fdnVlX18gcmVmZXJlbmNlXG4gICAgaWYgKHByZXZFbCkge1xuICAgICAgcHJldkVsLl9fdnVlX18gPSBudWxsO1xuICAgIH1cbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IHZtO1xuICAgIH1cbiAgICAvLyBpZiBwYXJlbnQgaXMgYW4gSE9DLCB1cGRhdGUgaXRzICRlbCBhcyB3ZWxsXG4gICAgaWYgKHZtLiR2bm9kZSAmJiB2bS4kcGFyZW50ICYmIHZtLiR2bm9kZSA9PT0gdm0uJHBhcmVudC5fdm5vZGUpIHtcbiAgICAgIHZtLiRwYXJlbnQuJGVsID0gdm0uJGVsO1xuICAgIH1cbiAgICAvLyB1cGRhdGVkIGhvb2sgaXMgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIgdG8gZW5zdXJlIHRoYXQgY2hpbGRyZW4gYXJlXG4gICAgLy8gdXBkYXRlZCBpbiBhIHBhcmVudCdzIHVwZGF0ZWQgaG9vay5cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRmb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5fd2F0Y2hlcikge1xuICAgICAgdm0uX3dhdGNoZXIudXBkYXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZURlc3Ryb3knKTtcbiAgICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSBwYXJlbnRcbiAgICB2YXIgcGFyZW50ID0gdm0uJHBhcmVudDtcbiAgICBpZiAocGFyZW50ICYmICFwYXJlbnQuX2lzQmVpbmdEZXN0cm95ZWQgJiYgIXZtLiRvcHRpb25zLmFic3RyYWN0KSB7XG4gICAgICByZW1vdmUocGFyZW50LiRjaGlsZHJlbiwgdm0pO1xuICAgIH1cbiAgICAvLyB0ZWFyZG93biB3YXRjaGVyc1xuICAgIGlmICh2bS5fd2F0Y2hlcikge1xuICAgICAgdm0uX3dhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gICAgdmFyIGkgPSB2bS5fd2F0Y2hlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZtLl93YXRjaGVyc1tpXS50ZWFyZG93bigpO1xuICAgIH1cbiAgICAvLyByZW1vdmUgcmVmZXJlbmNlIGZyb20gZGF0YSBvYlxuICAgIC8vIGZyb3plbiBvYmplY3QgbWF5IG5vdCBoYXZlIG9ic2VydmVyLlxuICAgIGlmICh2bS5fZGF0YS5fX29iX18pIHtcbiAgICAgIHZtLl9kYXRhLl9fb2JfXy52bUNvdW50LS07XG4gICAgfVxuICAgIC8vIGNhbGwgdGhlIGxhc3QgaG9vay4uLlxuICAgIHZtLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgLy8gaW52b2tlIGRlc3Ryb3kgaG9va3Mgb24gY3VycmVudCByZW5kZXJlZCB0cmVlXG4gICAgdm0uX19wYXRjaF9fKHZtLl92bm9kZSwgbnVsbCk7XG4gICAgLy8gZmlyZSBkZXN0cm95ZWQgaG9va1xuICAgIGNhbGxIb29rKHZtLCAnZGVzdHJveWVkJyk7XG4gICAgLy8gdHVybiBvZmYgYWxsIGluc3RhbmNlIGxpc3RlbmVycy5cbiAgICB2bS4kb2ZmKCk7XG4gICAgLy8gcmVtb3ZlIF9fdnVlX18gcmVmZXJlbmNlXG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSBudWxsO1xuICAgIH1cbiAgICAvLyByZW1vdmUgcmVmZXJlbmNlIHRvIERPTSBub2RlcyAocHJldmVudHMgbGVhaylcbiAgICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtID0gdm0uJG9wdGlvbnMuX3JlZkVsbSA9IG51bGw7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50IChcbiAgdm0sXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICB2bS4kZWwgPSBlbDtcbiAgaWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICgodm0uJG9wdGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVtcGxhdGUuY2hhckF0KDApICE9PSAnIycpIHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUgd2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21waWxlciBpcyBub3QgYXZhaWxhYmxlLiBFaXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBpbnRvICcgK1xuICAgICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6IHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbGxIb29rKHZtLCAnYmVmb3JlTW91bnQnKTtcblxuICB2YXIgdXBkYXRlQ29tcG9uZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbmFtZSA9IHZtLl9uYW1lO1xuICAgICAgdmFyIGlkID0gdm0uX3VpZDtcbiAgICAgIHZhciBzdGFydFRhZyA9IFwidnVlLXBlcmYtc3RhcnQ6XCIgKyBpZDtcbiAgICAgIHZhciBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArIGlkO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZhciB2bm9kZSA9IHZtLl9yZW5kZXIoKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKG5hbWUgKyBcIiByZW5kZXJcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZtLl91cGRhdGUodm5vZGUsIGh5ZHJhdGluZyk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKChuYW1lICsgXCIgcGF0Y2hcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gICAgfTtcbiAgfVxuXG4gIHZtLl93YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9vcCk7XG4gIGh5ZHJhdGluZyA9IGZhbHNlO1xuXG4gIC8vIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UsIGNhbGwgbW91bnRlZCBvbiBzZWxmXG4gIC8vIG1vdW50ZWQgaXMgY2FsbGVkIGZvciByZW5kZXItY3JlYXRlZCBjaGlsZCBjb21wb25lbnRzIGluIGl0cyBpbnNlcnRlZCBob29rXG4gIGlmICh2bS4kdm5vZGUgPT0gbnVsbCkge1xuICAgIHZtLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgIGNhbGxIb29rKHZtLCAnbW91bnRlZCcpO1xuICB9XG4gIHJldHVybiB2bVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDaGlsZENvbXBvbmVudCAoXG4gIHZtLFxuICBwcm9wc0RhdGEsXG4gIGxpc3RlbmVycyxcbiAgcGFyZW50Vm5vZGUsXG4gIHJlbmRlckNoaWxkcmVuXG4pIHtcbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IGhhcyBzbG90IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgb3ZlcndyaXRpbmcgJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuXG4gIHZhciBoYXNDaGlsZHJlbiA9ICEhKFxuICAgIHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4gICAgcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyB8fCAvLyBoYXMgbmV3IHNjb3BlZCBzbG90c1xuICAgIHZtLiRzY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgLy8gaGFzIG9sZCBzY29wZWQgc2xvdHNcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcbiAgaWYgKHZtLl92bm9kZSkgeyAvLyB1cGRhdGUgY2hpbGQgdHJlZSdzIHBhcmVudFxuICAgIHZtLl92bm9kZS5wYXJlbnQgPSBwYXJlbnRWbm9kZTtcbiAgfVxuICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gPSByZW5kZXJDaGlsZHJlbjtcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBvYnNlcnZlclN0YXRlLmlzU2V0dGluZ1Byb3BzID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BzID0gdm0uX3Byb3BzO1xuICAgIHZhciBwcm9wS2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcEtleXNbaV07XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgdm0uJG9wdGlvbnMucHJvcHMsIHByb3BzRGF0YSwgdm0pO1xuICAgIH1cbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBvYnNlcnZlclN0YXRlLmlzU2V0dGluZ1Byb3BzID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIGtlZXAgYSBjb3B5IG9mIHJhdyBwcm9wc0RhdGFcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgPSBwcm9wc0RhdGE7XG4gIH1cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyByZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSW5JbmFjdGl2ZVRyZWUgKHZtKSB7XG4gIHdoaWxlICh2bSAmJiAodm0gPSB2bS4kcGFyZW50KSkge1xuICAgIGlmICh2bS5faW5hY3RpdmUpIHsgcmV0dXJuIHRydWUgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50ICh2bSwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAgICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBlbHNlIGlmICh2bS5fZGlyZWN0SW5hY3RpdmUpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodm0uX2luYWN0aXZlIHx8IHZtLl9pbmFjdGl2ZSA9PT0gbnVsbCkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHZtLiRjaGlsZHJlbltpXSk7XG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50ICh2bSwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAgICB2bS5fZGlyZWN0SW5hY3RpdmUgPSB0cnVlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIGlmICghdm0uX2luYWN0aXZlKSB7XG4gICAgdm0uX2luYWN0aXZlID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHZtLiRjaGlsZHJlbltpXSk7XG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnZGVhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayAodm0sIGhvb2spIHtcbiAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107XG4gIGlmIChoYW5kbGVycykge1xuICAgIGZvciAodmFyIGkgPSAwLCBqID0gaGFuZGxlcnMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGVyc1tpXS5jYWxsKHZtKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChob29rICsgXCIgaG9va1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2spO1xuICB9XG59XG5cbi8qICAqL1xuXG5cbnZhciBNQVhfVVBEQVRFX0NPVU5UID0gMTAwO1xuXG52YXIgcXVldWUgPSBbXTtcbnZhciBhY3RpdmF0ZWRDaGlsZHJlbiA9IFtdO1xudmFyIGhhcyA9IHt9O1xudmFyIGNpcmN1bGFyID0ge307XG52YXIgd2FpdGluZyA9IGZhbHNlO1xudmFyIGZsdXNoaW5nID0gZmFsc2U7XG52YXIgaW5kZXggPSAwO1xuXG4vKipcbiAqIFJlc2V0IHRoZSBzY2hlZHVsZXIncyBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gcmVzZXRTY2hlZHVsZXJTdGF0ZSAoKSB7XG4gIGluZGV4ID0gcXVldWUubGVuZ3RoID0gYWN0aXZhdGVkQ2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgaGFzID0ge307XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2lyY3VsYXIgPSB7fTtcbiAgfVxuICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBGbHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGZsdXNoaW5nID0gdHJ1ZTtcbiAgdmFyIHdhdGNoZXIsIGlkO1xuXG4gIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdDpcbiAgLy8gMS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0byBjaGlsZC4gKGJlY2F1c2UgcGFyZW50IGlzIGFsd2F5c1xuICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUgY2hpbGQpXG4gIC8vIDIuIEEgY29tcG9uZW50J3MgdXNlciB3YXRjaGVycyBhcmUgcnVuIGJlZm9yZSBpdHMgcmVuZGVyIHdhdGNoZXIgKGJlY2F1c2VcbiAgLy8gICAgdXNlciB3YXRjaGVycyBhcmUgY3JlYXRlZCBiZWZvcmUgdGhlIHJlbmRlciB3YXRjaGVyKVxuICAvLyAzLiBJZiBhIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHdhdGNoZXIgcnVuLFxuICAvLyAgICBpdHMgd2F0Y2hlcnMgY2FuIGJlIHNraXBwZWQuXG4gIHF1ZXVlLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuaWQgLSBiLmlkOyB9KTtcblxuICAvLyBkbyBub3QgY2FjaGUgbGVuZ3RoIGJlY2F1c2UgbW9yZSB3YXRjaGVycyBtaWdodCBiZSBwdXNoZWRcbiAgLy8gYXMgd2UgcnVuIGV4aXN0aW5nIHdhdGNoZXJzXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHF1ZXVlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07XG4gICAgaWQgPSB3YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGhhc1tpZF0gIT0gbnVsbCkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNoZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgpO1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRhdGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1ZXVlKTtcbiAgY2FsbFVwZGF0ZUhvb2tzKHVwZGF0ZWRRdWV1ZSk7XG5cbiAgLy8gZGV2dG9vbCBob29rXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZGV2dG9vbHMgJiYgY29uZmlnLmRldnRvb2xzKSB7XG4gICAgZGV2dG9vbHMuZW1pdCgnZmx1c2gnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0gPSB3YXRjaGVyLnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ3VwZGF0ZWQnKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBRdWV1ZSBhIGtlcHQtYWxpdmUgY29tcG9uZW50IHRoYXQgd2FzIGFjdGl2YXRlZCBkdXJpbmcgcGF0Y2guXG4gKiBUaGUgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIGVudGlyZSB0cmVlIGhhcyBiZWVuIHBhdGNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50ICh2bSkge1xuICAvLyBzZXR0aW5nIF9pbmFjdGl2ZSB0byBmYWxzZSBoZXJlIHNvIHRoYXQgYSByZW5kZXIgZnVuY3Rpb24gY2FuXG4gIC8vIHJlbHkgb24gY2hlY2tpbmcgd2hldGhlciBpdCdzIGluIGFuIGluYWN0aXZlIHRyZWUgKGUuZy4gcm91dGVyLXZpZXcpXG4gIHZtLl9pbmFjdGl2ZSA9IGZhbHNlO1xuICBhY3RpdmF0ZWRDaGlsZHJlbi5wdXNoKHZtKTtcbn1cblxuZnVuY3Rpb24gY2FsbEFjdGl2YXRlZEhvb2tzIChxdWV1ZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgcXVldWVbaV0uX2luYWN0aXZlID0gdHJ1ZTtcbiAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHF1ZXVlW2ldLCB0cnVlIC8qIHRydWUgKi8pO1xuICB9XG59XG5cbi8qKlxuICogUHVzaCBhIHdhdGNoZXIgaW50byB0aGUgd2F0Y2hlciBxdWV1ZS5cbiAqIEpvYnMgd2l0aCBkdXBsaWNhdGUgSURzIHdpbGwgYmUgc2tpcHBlZCB1bmxlc3MgaXQnc1xuICogcHVzaGVkIHdoZW4gdGhlIHF1ZXVlIGlzIGJlaW5nIGZsdXNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlV2F0Y2hlciAod2F0Y2hlcikge1xuICB2YXIgaWQgPSB3YXRjaGVyLmlkO1xuICBpZiAoaGFzW2lkXSA9PSBudWxsKSB7XG4gICAgaGFzW2lkXSA9IHRydWU7XG4gICAgaWYgKCFmbHVzaGluZykge1xuICAgICAgcXVldWUucHVzaCh3YXRjaGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgYWxyZWFkeSBmbHVzaGluZywgc3BsaWNlIHRoZSB3YXRjaGVyIGJhc2VkIG9uIGl0cyBpZFxuICAgICAgLy8gaWYgYWxyZWFkeSBwYXN0IGl0cyBpZCwgaXQgd2lsbCBiZSBydW4gbmV4dCBpbW1lZGlhdGVseS5cbiAgICAgIHZhciBpID0gcXVldWUubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpID4gaW5kZXggJiYgcXVldWVbaV0uaWQgPiB3YXRjaGVyLmlkKSB7XG4gICAgICAgIGktLTtcbiAgICAgIH1cbiAgICAgIHF1ZXVlLnNwbGljZShpICsgMSwgMCwgd2F0Y2hlcik7XG4gICAgfVxuICAgIC8vIHF1ZXVlIHRoZSBmbHVzaFxuICAgIGlmICghd2FpdGluZykge1xuICAgICAgd2FpdGluZyA9IHRydWU7XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB1aWQkMiA9IDA7XG5cbi8qKlxuICogQSB3YXRjaGVyIHBhcnNlcyBhbiBleHByZXNzaW9uLCBjb2xsZWN0cyBkZXBlbmRlbmNpZXMsXG4gKiBhbmQgZmlyZXMgY2FsbGJhY2sgd2hlbiB0aGUgZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuICogVGhpcyBpcyB1c2VkIGZvciBib3RoIHRoZSAkd2F0Y2goKSBhcGkgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbnZhciBXYXRjaGVyID0gZnVuY3Rpb24gV2F0Y2hlciAoXG4gIHZtLFxuICBleHBPckZuLFxuICBjYixcbiAgb3B0aW9uc1xuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVlcDtcbiAgICB0aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9wdGlvbnMubGF6eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmRlZXAgPSB0aGlzLnVzZXIgPSB0aGlzLmxhenkgPSB0aGlzLnN5bmMgPSBmYWxzZTtcbiAgfVxuICB0aGlzLmNiID0gY2I7XG4gIHRoaXMuaWQgPSArK3VpZCQyOyAvLyB1aWQgZm9yIGJhdGNoaW5nXG4gIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgdGhpcy5kaXJ0eSA9IHRoaXMubGF6eTsgLy8gZm9yIGxhenkgd2F0Y2hlcnNcbiAgdGhpcy5kZXBzID0gW107XG4gIHRoaXMubmV3RGVwcyA9IFtdO1xuICB0aGlzLmRlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMubmV3RGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5leHByZXNzaW9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgID8gZXhwT3JGbi50b1N0cmluZygpXG4gICAgOiAnJztcbiAgLy8gcGFyc2UgZXhwcmVzc2lvbiBmb3IgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuZ2V0dGVyID0gZXhwT3JGbjtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmdldHRlciA9IHBhcnNlUGF0aChleHBPckZuKTtcbiAgICBpZiAoIXRoaXMuZ2V0dGVyKSB7XG4gICAgICB0aGlzLmdldHRlciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICB0cnkge1xuICAgICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9XG4gIC8vIFwidG91Y2hcIiBldmVyeSBwcm9wZXJ0eSBzbyB0aGV5IGFyZSBhbGwgdHJhY2tlZCBhc1xuICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdcbiAgaWYgKHRoaXMuZGVlcCkge1xuICAgIHRyYXZlcnNlKHZhbHVlKTtcbiAgfVxuICBwb3BUYXJnZXQoKTtcbiAgdGhpcy5jbGVhbnVwRGVwcygpO1xuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07XG4gICAgaWYgKCF0aGlzJDEubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICB9XG4gIHZhciB0bXAgPSB0aGlzLmRlcElkcztcbiAgdGhpcy5kZXBJZHMgPSB0aGlzLm5ld0RlcElkcztcbiAgdGhpcy5uZXdEZXBJZHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwSWRzLmNsZWFyKCk7XG4gIHRtcCA9IHRoaXMuZGVwcztcbiAgdGhpcy5kZXBzID0gdGhpcy5uZXdEZXBzO1xuICB0aGlzLm5ld0RlcHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwcy5sZW5ndGggPSAwO1xufTtcblxuLyoqXG4gKiBTdWJzY3JpYmVyIGludGVyZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIHdoZW4gYSBkZXBlbmRlbmN5IGNoYW5nZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0aGlzLmxhenkpIHtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0aGlzLnN5bmMpIHtcbiAgICB0aGlzLnJ1bigpO1xuICB9IGVsc2Uge1xuICAgIHF1ZXVlV2F0Y2hlcih0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXIgam9iIGludGVyZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIHJ1biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMudmFsdWUgfHxcbiAgICAgIC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVjdC9BcnJheXMgc2hvdWxkIGZpcmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUsIGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAgICAgaXNPYmplY3QodmFsdWUpIHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8vIHNldCBuZXcgdmFsdWVcbiAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCB0aGlzLnZtLCAoXCJjYWxsYmFjayBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBFdmFsdWF0ZSB0aGUgdmFsdWUgb2YgdGhlIHdhdGNoZXIuXG4gKiBUaGlzIG9ubHkgZ2V0cyBjYWxsZWQgZm9yIGxhenkgd2F0Y2hlcnMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmV2YWx1YXRlID0gZnVuY3Rpb24gZXZhbHVhdGUgKCkge1xuICB0aGlzLnZhbHVlID0gdGhpcy5nZXQoKTtcbiAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXBlbmQgb24gYWxsIGRlcHMgY29sbGVjdGVkIGJ5IHRoaXMgd2F0Y2hlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzJDEuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSB2bSdzIHdhdGNoZXIgbGlzdFxuICAgIC8vIHRoaXMgaXMgYSBzb21ld2hhdCBleHBlbnNpdmUgb3BlcmF0aW9uIHNvIHdlIHNraXAgaXRcbiAgICAvLyBpZiB0aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICghdGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmVtb3ZlKHRoaXMudm0uX3dhdGNoZXJzLCB0aGlzKTtcbiAgICB9XG4gICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMkMS5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgc2Vlbk9iamVjdHMuY2xlYXIoKTtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWwpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCkgeyBpbml0V2F0Y2godm0sIG9wdHMud2F0Y2gpOyB9XG59XG5cbnZhciBpc1Jlc2VydmVkUHJvcCA9IHtcbiAga2V5OiAxLFxuICByZWY6IDEsXG4gIHNsb3Q6IDFcbn07XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyAodm0sIHByb3BzT3B0aW9ucykge1xuICB2YXIgcHJvcHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bS5fcHJvcHMgPSB7fTtcbiAgLy8gY2FjaGUgcHJvcCBrZXlzIHNvIHRoYXQgZnV0dXJlIHByb3BzIHVwZGF0ZXMgY2FuIGl0ZXJhdGUgdXNpbmcgQXJyYXlcbiAgLy8gaW5zdGVhZCBvZiBkeW5hbWljIG9iamVjdCBrZXkgZW51bWVyYXRpb24uXG4gIHZhciBrZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzID0gW107XG4gIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAgLy8gcm9vdCBpbnN0YW5jZSBwcm9wcyBzaG91bGQgYmUgY29udmVydGVkXG4gIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGlzUm9vdDtcbiAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGtleSApIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB2YXIgdmFsdWUgPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wc09wdGlvbnMsIHByb3BzRGF0YSwgdm0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpc1Jlc2VydmVkUHJvcFtrZXldIHx8IGNvbmZpZy5pc1Jlc2VydmVkQXR0cihrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh2bS4kcGFyZW50ICYmICFvYnNlcnZlclN0YXRlLmlzU2V0dGluZ1Byb3BzKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYSBwcm9wIGRpcmVjdGx5IHNpbmNlIHRoZSB2YWx1ZSB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHBhcmVudCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJJbnN0ZWFkLCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwcm9wJ3MgXCIgK1xuICAgICAgICAgICAgXCJ2YWx1ZS4gUHJvcCBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgLy8gc3RhdGljIHByb3BzIGFyZSBhbHJlYWR5IHByb3hpZWQgb24gdGhlIGNvbXBvbmVudCdzIHByb3RvdHlwZVxuICAgIC8vIGR1cmluZyBWdWUuZXh0ZW5kKCkuIFdlIG9ubHkgbmVlZCB0byBwcm94eSBwcm9wcyBkZWZpbmVkIGF0XG4gICAgLy8gaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9wcm9wc1wiLCBrZXkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHNPcHRpb25zKSBsb29wKCBrZXkgKTtcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEgKHZtKSB7XG4gIHZhciBkYXRhID0gdm0uJG9wdGlvbnMuZGF0YTtcbiAgZGF0YSA9IHZtLl9kYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidcbiAgICA/IGdldERhdGEoZGF0YSwgdm0pXG4gICAgOiBkYXRhIHx8IHt9O1xuICBpZiAoIWlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICBkYXRhID0ge307XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ2RhdGEgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0OlxcbicgK1xuICAgICAgJ2h0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL2NvbXBvbmVudHMuaHRtbCNkYXRhLU11c3QtQmUtYS1GdW5jdGlvbicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleXNbaV0pKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiVGhlIGRhdGEgcHJvcGVydHkgXFxcIlwiICsgKGtleXNbaV0pICsgXCJcXFwiIGlzIGFscmVhZHkgZGVjbGFyZWQgYXMgYSBwcm9wLiBcIiArXG4gICAgICAgIFwiVXNlIHByb3AgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLlwiLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkKGtleXNbaV0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfZGF0YVwiLCBrZXlzW2ldKTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4gIG9ic2VydmUoZGF0YSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YSAoZGF0YSwgdm0pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0cnVlIH07XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIHZhciB3YXRjaGVycyA9IHZtLl9jb21wdXRlZFdhdGNoZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG4gICAgdmFyIGdldHRlciA9IHR5cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nID8gdXNlckRlZiA6IHVzZXJEZWYuZ2V0O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJObyBnZXR0ZXIgZnVuY3Rpb24gaGFzIGJlZW4gZGVmaW5lZCBmb3IgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgICBnZXR0ZXIgPSBub29wO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBjcmVhdGUgaW50ZXJuYWwgd2F0Y2hlciBmb3IgdGhlIGNvbXB1dGVkIHByb3BlcnR5LlxuICAgIHdhdGNoZXJzW2tleV0gPSBuZXcgV2F0Y2hlcih2bSwgZ2V0dGVyLCBub29wLCBjb21wdXRlZFdhdGNoZXJPcHRpb25zKTtcblxuICAgIC8vIGNvbXBvbmVudC1kZWZpbmVkIGNvbXB1dGVkIHByb3BlcnRpZXMgYXJlIGFscmVhZHkgZGVmaW5lZCBvbiB0aGVcbiAgICAvLyBjb21wb25lbnQgcHJvdG90eXBlLiBXZSBvbmx5IG5lZWQgdG8gZGVmaW5lIGNvbXB1dGVkIHByb3BlcnRpZXMgZGVmaW5lZFxuICAgIC8vIGF0IGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4gICAgICBkZWZpbmVDb21wdXRlZCh2bSwga2V5LCB1c2VyRGVmKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChrZXkgaW4gdm0uJGRhdGEpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBkYXRhLlwiKSwgdm0pO1xuICAgICAgfSBlbHNlIGlmICh2bS4kb3B0aW9ucy5wcm9wcyAmJiBrZXkgaW4gdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBhcyBhIHByb3AuXCIpLCB2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUNvbXB1dGVkICh0YXJnZXQsIGtleSwgdXNlckRlZikge1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KTtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gbm9vcDtcbiAgfSBlbHNlIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gdXNlckRlZi5nZXRcbiAgICAgID8gdXNlckRlZi5jYWNoZSAhPT0gZmFsc2VcbiAgICAgICAgPyBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpXG4gICAgICAgIDogdXNlckRlZi5nZXRcbiAgICAgIDogbm9vcDtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gdXNlckRlZi5zZXRcbiAgICAgID8gdXNlckRlZi5zZXRcbiAgICAgIDogbm9vcDtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkR2V0dGVyIChrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICB2YXIgd2F0Y2hlciA9IHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMgJiYgdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1trZXldO1xuICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICBpZiAod2F0Y2hlci5kaXJ0eSkge1xuICAgICAgICB3YXRjaGVyLmV2YWx1YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAgICAgICB3YXRjaGVyLmRlcGVuZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdhdGNoZXIudmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdE1ldGhvZHMgKHZtLCBtZXRob2RzKSB7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgIHZtW2tleV0gPSBtZXRob2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAobWV0aG9kc1trZXldID09IG51bGwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIm1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFuIHVuZGVmaW5lZCB2YWx1ZSBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZvciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKHZtLCBrZXksIGhhbmRsZXIpIHtcbiAgdmFyIG9wdGlvbnM7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHZtLiR3YXRjaChrZXksIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBzdGF0ZU1peGluIChWdWUpIHtcbiAgLy8gZmxvdyBzb21laG93IGhhcyBwcm9ibGVtcyB3aXRoIGRpcmVjdGx5IGRlY2xhcmVkIGRlZmluaXRpb24gb2JqZWN0XG4gIC8vIHdoZW4gdXNpbmcgT2JqZWN0LmRlZmluZVByb3BlcnR5LCBzbyB3ZSBoYXZlIHRvIHByb2NlZHVyYWxseSBidWlsZCB1cFxuICAvLyB0aGUgb2JqZWN0IGhlcmUuXG4gIHZhciBkYXRhRGVmID0ge307XG4gIGRhdGFEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZGF0YSB9O1xuICB2YXIgcHJvcHNEZWYgPSB7fTtcbiAgcHJvcHNEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fcHJvcHMgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBkYXRhRGVmLnNldCA9IGZ1bmN0aW9uIChuZXdEYXRhKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgcmVwbGFjaW5nIGluc3RhbmNlIHJvb3QgJGRhdGEuICcgK1xuICAgICAgICAnVXNlIG5lc3RlZCBkYXRhIHByb3BlcnRpZXMgaW5zdGVhZC4nLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gICAgcHJvcHNEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcIiRwcm9wcyBpcyByZWFkb25seS5cIiwgdGhpcyk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHByb3BzJywgcHJvcHNEZWYpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcbiAgVnVlLnByb3RvdHlwZS4kZGVsZXRlID0gZGVsO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuICAgIGV4cE9yRm4sXG4gICAgY2IsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIG9wdGlvbnMudXNlciA9IHRydWU7XG4gICAgdmFyIHdhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgZXhwT3JGbiwgY2IsIG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zLmltbWVkaWF0ZSkge1xuICAgICAgY2IuY2FsbCh2bSwgd2F0Y2hlci52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiB1bndhdGNoRm4gKCkge1xuICAgICAgd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRQcm92aWRlICh2bSkge1xuICB2YXIgcHJvdmlkZSA9IHZtLiRvcHRpb25zLnByb3ZpZGU7XG4gIGlmIChwcm92aWRlKSB7XG4gICAgdm0uX3Byb3ZpZGVkID0gdHlwZW9mIHByb3ZpZGUgPT09ICdmdW5jdGlvbidcbiAgICAgID8gcHJvdmlkZS5jYWxsKHZtKVxuICAgICAgOiBwcm92aWRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRJbmplY3Rpb25zICh2bSkge1xuICB2YXIgcmVzdWx0ID0gcmVzb2x2ZUluamVjdCh2bS4kb3B0aW9ucy5pbmplY3QsIHZtKTtcbiAgaWYgKHJlc3VsdCkge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhbiBpbmplY3RlZCB2YWx1ZSBkaXJlY3RseSBzaW5jZSB0aGUgY2hhbmdlcyB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHByb3ZpZGVkIGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcImluamVjdGlvbiBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdCAoaW5qZWN0LCB2bSkge1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDphbnkgYmVjYXVzZSBmbG93IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRcbiAgICAvLyBpc0FycmF5IGhlcmVcbiAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaW5qZWN0KTtcbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGlzQXJyYXlcbiAgICAgID8gaW5qZWN0XG4gICAgICA6IGhhc1N5bWJvbFxuICAgICAgICA/IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGlzQXJyYXkgPyBrZXkgOiBpbmplY3Rba2V5XTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxlIChzb3VyY2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgcHJvdmlkZUtleSBpbiBzb3VyY2UuX3Byb3ZpZGVkKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3Byb3ZpZGVkW3Byb3ZpZGVLZXldO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gc291cmNlLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNEZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSB8fCB7fSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0RlZihkYXRhLmF0dHJzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLmF0dHJzKTsgfVxuICAgIGlmIChpc0RlZihkYXRhLnByb3BzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLnByb3BzKTsgfVxuICB9XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgX2NvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQpO1xuICB2YXIgaCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KF9jb250ZXh0LCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbiAgdmFyIHZub2RlID0gQ3Rvci5vcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIGgsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgcGFyZW50OiBjb250ZXh0LFxuICAgIGxpc3RlbmVyczogZGF0YS5vbiB8fCB7fSxcbiAgICBpbmplY3Rpb25zOiByZXNvbHZlSW5qZWN0KEN0b3Iub3B0aW9ucy5pbmplY3QsIGNvbnRleHQpLFxuICAgIHNsb3RzOiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIGNvbnRleHQpOyB9XG4gIH0pO1xuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ID0gY29udGV4dDtcbiAgICB2bm9kZS5mdW5jdGlvbmFsT3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgICBpZiAoZGF0YS5zbG90KSB7XG4gICAgICAodm5vZGUuZGF0YSB8fCAodm5vZGUuZGF0YSA9IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIG1lcmdlUHJvcHMgKHRvLCBmcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG4gICAgdG9bY2FtZWxpemUoa2V5KV0gPSBmcm9tW2tleV07XG4gIH1cbn1cblxuLyogICovXG5cbi8vIGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZhciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0IChcbiAgICB2bm9kZSxcbiAgICBoeWRyYXRpbmcsXG4gICAgcGFyZW50RWxtLFxuICAgIHJlZkVsbVxuICApIHtcbiAgICBpZiAoIXZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2UsXG4gICAgICAgIHBhcmVudEVsbSxcbiAgICAgICAgcmVmRWxtXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9IGVsc2UgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hcbiAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93XG4gICAgICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG4gICAgfVxuICB9LFxuXG4gIHByZXBhdGNoOiBmdW5jdGlvbiBwcmVwYXRjaCAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgdXBkYXRlQ2hpbGRDb21wb25lbnQoXG4gICAgICBjaGlsZCxcbiAgICAgIG9wdGlvbnMucHJvcHNEYXRhLCAvLyB1cGRhdGVkIHByb3BzXG4gICAgICBvcHRpb25zLmxpc3RlbmVycywgLy8gdXBkYXRlZCBsaXN0ZW5lcnNcbiAgICAgIHZub2RlLCAvLyBuZXcgcGFyZW50IHZub2RlXG4gICAgICBvcHRpb25zLmNoaWxkcmVuIC8vIG5ldyBjaGlsZHJlblxuICAgICk7XG4gIH0sXG5cbiAgaW5zZXJ0OiBmdW5jdGlvbiBpbnNlcnQgKHZub2RlKSB7XG4gICAgdmFyIGNvbnRleHQgPSB2bm9kZS5jb250ZXh0O1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCkge1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCA9IHRydWU7XG4gICAgICBjYWxsSG9vayhjb21wb25lbnRJbnN0YW5jZSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICBpZiAoY29udGV4dC5faXNNb3VudGVkKSB7XG4gICAgICAgIC8vIHZ1ZS1yb3V0ZXIjMTIxMlxuICAgICAgICAvLyBEdXJpbmcgdXBkYXRlcywgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCdzIGNoaWxkIGNvbXBvbmVudHMgbWF5XG4gICAgICAgIC8vIGNoYW5nZSwgc28gZGlyZWN0bHkgd2Fsa2luZyB0aGUgdHJlZSBoZXJlIG1heSBjYWxsIGFjdGl2YXRlZCBob29rc1xuICAgICAgICAvLyBvbiBpbmNvcnJlY3QgY2hpbGRyZW4uIEluc3RlYWQgd2UgcHVzaCB0aGVtIGludG8gYSBxdWV1ZSB3aGljaCB3aWxsXG4gICAgICAgIC8vIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgd2hvbGUgcGF0Y2ggcHJvY2VzcyBlbmRlZC5cbiAgICAgICAgcXVldWVBY3RpdmF0ZWRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAgICBpZiAoIXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBob29rc1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhjb21wb25lbnRWTm9kZUhvb2tzKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIGlmIChpc1VuZGVmKEN0b3IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRvcHRpb25zLl9iYXNlO1xuXG4gIC8vIHBsYWluIG9wdGlvbnMgb2JqZWN0OiB0dXJuIGl0IGludG8gYSBjb25zdHJ1Y3RvclxuICBpZiAoaXNPYmplY3QoQ3RvcikpIHtcbiAgICBDdG9yID0gYmFzZUN0b3IuZXh0ZW5kKEN0b3IpO1xuICB9XG5cbiAgLy8gaWYgYXQgdGhpcyBzdGFnZSBpdCdzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIGFuIGFzeW5jIGNvbXBvbmVudCBmYWN0b3J5LFxuICAvLyByZWplY3QuXG4gIGlmICh0eXBlb2YgQ3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKChcIkludmFsaWQgQ29tcG9uZW50IGRlZmluaXRpb246IFwiICsgKFN0cmluZyhDdG9yKSkpLCBjb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBhc3luYyBjb21wb25lbnRcbiAgaWYgKGlzVW5kZWYoQ3Rvci5jaWQpKSB7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChDdG9yLCBiYXNlQ3RvciwgY29udGV4dCk7XG4gICAgaWYgKEN0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gcmV0dXJuIG5vdGhpbmcgaWYgdGhpcyBpcyBpbmRlZWQgYW4gYXN5bmMgY29tcG9uZW50XG4gICAgICAvLyB3YWl0IGZvciB0aGUgY2FsbGJhY2sgdG8gdHJpZ2dlciBwYXJlbnQgdXBkYXRlLlxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLy8gcmVzb2x2ZSBjb25zdHJ1Y3RvciBvcHRpb25zIGluIGNhc2UgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZCBhZnRlclxuICAvLyBjb21wb25lbnQgY29uc3RydWN0b3IgY3JlYXRpb25cbiAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyhDdG9yKTtcblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgZGF0YSBpbnRvIHByb3BzICYgZXZlbnRzXG4gIGlmIChpc0RlZihkYXRhLm1vZGVsKSkge1xuICAgIHRyYW5zZm9ybU1vZGVsKEN0b3Iub3B0aW9ucywgZGF0YSk7XG4gIH1cblxuICAvLyBleHRyYWN0IHByb3BzXG4gIHZhciBwcm9wc0RhdGEgPSBleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhKGRhdGEsIEN0b3IsIHRhZyk7XG5cbiAgLy8gZnVuY3Rpb25hbCBjb21wb25lbnRcbiAgaWYgKGlzVHJ1ZShDdG9yLm9wdGlvbnMuZnVuY3Rpb25hbCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudChDdG9yLCBwcm9wc0RhdGEsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKVxuICB9XG5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMsIHNpbmNlIHRoZXNlIG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXNcbiAgLy8gY2hpbGQgY29tcG9uZW50IGxpc3RlbmVycyBpbnN0ZWFkIG9mIERPTSBsaXN0ZW5lcnNcbiAgdmFyIGxpc3RlbmVycyA9IGRhdGEub247XG4gIC8vIHJlcGxhY2Ugd2l0aCBsaXN0ZW5lcnMgd2l0aCAubmF0aXZlIG1vZGlmaWVyXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzXG4gICAgZGF0YSA9IHt9O1xuICB9XG5cbiAgLy8gbWVyZ2UgY29tcG9uZW50IG1hbmFnZW1lbnQgaG9va3Mgb250byB0aGUgcGxhY2Vob2xkZXIgbm9kZVxuICBtZXJnZUhvb2tzKGRhdGEpO1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5vcHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycpKSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0LFxuICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVuIH1cbiAgKTtcbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwgLy8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVmRWxtXG4pIHtcbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIF9pc0NvbXBvbmVudDogdHJ1ZSxcbiAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICBwcm9wc0RhdGE6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGEsXG4gICAgX2NvbXBvbmVudFRhZzogdm5vZGVDb21wb25lbnRPcHRpb25zLnRhZyxcbiAgICBfcGFyZW50Vm5vZGU6IHZub2RlLFxuICAgIF9wYXJlbnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnMsXG4gICAgX3JlbmRlckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW4sXG4gICAgX3BhcmVudEVsbTogcGFyZW50RWxtIHx8IG51bGwsXG4gICAgX3JlZkVsbTogcmVmRWxtIHx8IG51bGxcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGVDb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xuICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEuaG9vayA9IHt9O1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGhvb2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1trZXldO1xuICAgIHZhciBvdXJzID0gY29tcG9uZW50Vk5vZGVIb29rc1trZXldO1xuICAgIGRhdGEuaG9va1trZXldID0gZnJvbVBhcmVudCA/IG1lcmdlSG9vayQxKG91cnMsIGZyb21QYXJlbnQpIDogb3VycztcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2skMSAob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgb25lKGEsIGIsIGMsIGQpO1xuICAgIHR3byhhLCBiLCBjLCBkKTtcbiAgfVxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnOyhkYXRhLnByb3BzIHx8IChkYXRhLnByb3BzID0ge30pKVtwcm9wXSA9IGRhdGEubW9kZWwudmFsdWU7XG4gIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gIGlmIChpc0RlZihvbltldmVudF0pKSB7XG4gICAgb25bZXZlbnRdID0gW2RhdGEubW9kZWwuY2FsbGJhY2tdLmNvbmNhdChvbltldmVudF0pO1xuICB9IGVsc2Uge1xuICAgIG9uW2V2ZW50XSA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICBpZiAoIXRhZykge1xuICAgIC8vIGluIGNhc2Ugb2YgY29tcG9uZW50IDppcyBzZXQgdG8gZmFsc3kgdmFsdWVcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgLy8gc3VwcG9ydCBzaW5nbGUgZnVuY3Rpb24gY2hpbGRyZW4gYXMgZGVmYXVsdCBzY29wZWQgc2xvdFxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiZcbiAgICB0eXBlb2YgY2hpbGRyZW5bMF0gPT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgZGF0YSA9IGRhdGEgfHwge307XG4gICAgZGF0YS5zY29wZWRTbG90cyA9IHsgZGVmYXVsdDogY2hpbGRyZW5bMF0gfTtcbiAgICBjaGlsZHJlbi5sZW5ndGggPSAwO1xuICB9XG4gIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gQUxXQVlTX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gbm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9IGVsc2UgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBTSU1QTEVfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH1cbiAgdmFyIHZub2RlLCBucztcbiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIEN0b3I7XG4gICAgbnMgPSBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7XG4gICAgaWYgKGNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3JtIGJ1aWx0LWluIGVsZW1lbnRzXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29uZmlnLnBhcnNlUGxhdGZvcm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVmKEN0b3IgPSByZXNvbHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuICAgICAgLy8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdW5rbm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBjaGVjayBhdCBydW50aW1lIGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3aGVuIGl0c1xuICAgICAgLy8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxuICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBpZiAoaXNEZWYodm5vZGUpKSB7XG4gICAgaWYgKG5zKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxuICAgIHJldHVybiB2bm9kZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMpIHtcbiAgdm5vZGUubnMgPSBucztcbiAgaWYgKHZub2RlLnRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSB7XG4gICAgLy8gdXNlIGRlZmF1bHQgbmFtZXNwYWNlIGluc2lkZSBmb3JlaWduT2JqZWN0XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIGlzVW5kZWYoY2hpbGQubnMpKSB7XG4gICAgICAgIGFwcGx5TlMoY2hpbGQsIG5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyB2LWZvciBsaXN0cy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVuZGVyXG4pIHtcbiAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdmFsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcihpICsgMSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzRGVmKHJldCkpIHtcbiAgICAocmV0KS5faXNWTGlzdCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIDxzbG90PlxuICovXG5mdW5jdGlvbiByZW5kZXJTbG90IChcbiAgbmFtZSxcbiAgZmFsbGJhY2ssXG4gIHByb3BzLFxuICBiaW5kT2JqZWN0XG4pIHtcbiAgdmFyIHNjb3BlZFNsb3RGbiA9IHRoaXMuJHNjb3BlZFNsb3RzW25hbWVdO1xuICBpZiAoc2NvcGVkU2xvdEZuKSB7IC8vIHNjb3BlZCBzbG90XG4gICAgcHJvcHMgPSBwcm9wcyB8fCB7fTtcbiAgICBpZiAoYmluZE9iamVjdCkge1xuICAgICAgZXh0ZW5kKHByb3BzLCBiaW5kT2JqZWN0KTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlZFNsb3RGbihwcm9wcykgfHwgZmFsbGJhY2tcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xvdE5vZGVzID0gdGhpcy4kc2xvdHNbbmFtZV07XG4gICAgLy8gd2FybiBkdXBsaWNhdGUgc2xvdCB1c2FnZVxuICAgIGlmIChzbG90Tm9kZXMgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCAmJiB3YXJuKFxuICAgICAgICBcIkR1cGxpY2F0ZSBwcmVzZW5jZSBvZiBzbG90IFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgZm91bmQgaW4gdGhlIHNhbWUgcmVuZGVyIHRyZWUgXCIgK1xuICAgICAgICBcIi0gdGhpcyB3aWxsIGxpa2VseSBjYXVzZSByZW5kZXIgZXJyb3JzLlwiLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzbG90Tm9kZXMgfHwgZmFsbGJhY2tcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBpZGVudGl0eVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgY2hlY2tpbmcga2V5Q29kZXMgZnJvbSBjb25maWcuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxuICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbkFsaWFzXG4pIHtcbiAgdmFyIGtleUNvZGVzID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbkFsaWFzO1xuICBpZiAoQXJyYXkuaXNBcnJheShrZXlDb2RlcykpIHtcbiAgICByZXR1cm4ga2V5Q29kZXMuaW5kZXhPZihldmVudEtleUNvZGUpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBrZXlDb2RlcyAhPT0gZXZlbnRLZXlDb2RlXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9wXG4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3YtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IG9yIEFycmF5IHZhbHVlJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdG9PYmplY3QodmFsdWUpO1xuICAgICAgfVxuICAgICAgdmFyIGhhc2g7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICBoYXNoID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuYXR0cnMgJiYgZGF0YS5hdHRycy50eXBlO1xuICAgICAgICAgIGhhc2ggPSBhc1Byb3AgfHwgY29uZmlnLm11c3RVc2VQcm9wKHRhZywgdHlwZSwga2V5KVxuICAgICAgICAgICAgPyBkYXRhLmRvbVByb3BzIHx8IChkYXRhLmRvbVByb3BzID0ge30pXG4gICAgICAgICAgICA6IGRhdGEuYXR0cnMgfHwgKGRhdGEuYXR0cnMgPSB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoa2V5IGluIGhhc2gpKSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XTtcbiAgLy8gaWYgaGFzIGFscmVhZHktcmVuZGVyZWQgc3RhdGljIHRyZWUgYW5kIG5vdCBpbnNpZGUgdi1mb3IsXG4gIC8vIHdlIGNhbiByZXVzZSB0aGUgc2FtZSB0cmVlIGJ5IGRvaW5nIGEgc2hhbGxvdyBjbG9uZS5cbiAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0cmVlKVxuICAgICAgPyBjbG9uZVZOb2Rlcyh0cmVlKVxuICAgICAgOiBjbG9uZVZOb2RlKHRyZWUpXG4gIH1cbiAgLy8gb3RoZXJ3aXNlLCByZW5kZXIgYSBmcmVzaCB0cmVlLlxuICB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhdID1cbiAgICB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbCh0aGlzLl9yZW5kZXJQcm94eSk7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19zdGF0aWNfX1wiICsgaW5kZXgpLCBmYWxzZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHYtb25jZS5cbiAqIEVmZmVjdGl2ZWx5IGl0IG1lYW5zIG1hcmtpbmcgdGhlIG5vZGUgYXMgc3RhdGljIHdpdGggYSB1bmlxdWUga2V5LlxuICovXG5mdW5jdGlvbiBtYXJrT25jZSAoXG4gIHRyZWUsXG4gIGluZGV4LFxuICBrZXlcbikge1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fb25jZV9fXCIgKyBpbmRleCArIChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikpLCB0cnVlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyAoXG4gIHRyZWUsXG4gIGtleSxcbiAgaXNPbmNlXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0cmVlW2ldICYmIHR5cGVvZiB0cmVlW2ldICE9PSAnc3RyaW5nJykge1xuICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsgXCJfXCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWFya1N0YXRpY05vZGUodHJlZSwga2V5LCBpc09uY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNOb2RlIChub2RlLCBrZXksIGlzT25jZSkge1xuICBub2RlLmlzU3RhdGljID0gdHJ1ZTtcbiAgbm9kZS5rZXkgPSBrZXk7XG4gIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJvb3Qgb2YgdGhlIGNoaWxkIHRyZWVcbiAgdm0uX3N0YXRpY1RyZWVzID0gbnVsbDtcbiAgdmFyIHBhcmVudFZub2RlID0gdm0uJHZub2RlID0gdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUgcGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyh2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sIHJlbmRlckNvbnRleHQpO1xuICB2bS4kc2NvcGVkU2xvdHMgPSBlbXB0eU9iamVjdDtcbiAgLy8gYmluZCB0aGUgY3JlYXRlRWxlbWVudCBmbiB0byB0aGlzIGluc3RhbmNlXG4gIC8vIHNvIHRoYXQgd2UgZ2V0IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUgaXQuXG4gIC8vIGFyZ3Mgb3JkZXI6IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlLCBhbHdheXNOb3JtYWxpemVcbiAgLy8gaW50ZXJuYWwgdmVyc2lvbiBpcyB1c2VkIGJ5IHJlbmRlciBmdW5jdGlvbnMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZXNcbiAgdm0uX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgZmFsc2UpOyB9O1xuICAvLyBub3JtYWxpemF0aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGZvciB0aGUgcHVibGljIHZlcnNpb24sIHVzZWQgaW5cbiAgLy8gdXNlci13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMuXG4gIHZtLiRjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIHRydWUpOyB9O1xufVxuXG5mdW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICB2YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICAvLyBjbG9uZSBzbG90IG5vZGVzIG9uIHJlLXJlbmRlcnNcbiAgICAgIGZvciAodmFyIGtleSBpbiB2bS4kc2xvdHMpIHtcbiAgICAgICAgdm0uJHNsb3RzW2tleV0gPSBjbG9uZVZOb2Rlcyh2bS4kc2xvdHNba2V5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdm0uJHNjb3BlZFNsb3RzID0gKF9wYXJlbnRWbm9kZSAmJiBfcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cykgfHwgZW1wdHlPYmplY3Q7XG5cbiAgICBpZiAoc3RhdGljUmVuZGVyRm5zICYmICF2bS5fc3RhdGljVHJlZXMpIHtcbiAgICAgIHZtLl9zdGF0aWNUcmVlcyA9IFtdO1xuICAgIH1cbiAgICAvLyBzZXQgcGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25zIHRvIGhhdmUgYWNjZXNzXG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5vZGUuXG4gICAgdm0uJHZub2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4gICAgdmFyIHZub2RlO1xuICAgIHRyeSB7XG4gICAgICB2bm9kZSA9IHJlbmRlci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlciBmdW5jdGlvblwiKTtcbiAgICAgIC8vIHJldHVybiBlcnJvciByZW5kZXIgcmVzdWx0LFxuICAgICAgLy8gb3IgcHJldmlvdXMgdm5vZGUgdG8gcHJldmVudCByZW5kZXIgZXJyb3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2bm9kZSA9IHZtLiRvcHRpb25zLnJlbmRlckVycm9yXG4gICAgICAgICAgPyB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpXG4gICAgICAgICAgOiB2bS5fdm5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGVtcHR5IHZub2RlIGluIGNhc2UgdGhlIHJlbmRlciBmdW5jdGlvbiBlcnJvcmVkIG91dFxuICAgIGlmICghKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBBcnJheS5pc0FycmF5KHZub2RlKSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdNdWx0aXBsZSByb290IG5vZGVzIHJldHVybmVkIGZyb20gcmVuZGVyIGZ1bmN0aW9uLiBSZW5kZXIgZnVuY3Rpb24gJyArXG4gICAgICAgICAgJ3Nob3VsZCByZXR1cm4gYSBzaW5nbGUgcm9vdCBub2RlLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHZub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICAgIH1cbiAgICAvLyBzZXQgcGFyZW50XG4gICAgdm5vZGUucGFyZW50ID0gX3BhcmVudFZub2RlO1xuICAgIHJldHVybiB2bm9kZVxuICB9O1xuXG4gIC8vIGludGVybmFsIHJlbmRlciBoZWxwZXJzLlxuICAvLyB0aGVzZSBhcmUgZXhwb3NlZCBvbiB0aGUgaW5zdGFuY2UgcHJvdG90eXBlIHRvIHJlZHVjZSBnZW5lcmF0ZWQgcmVuZGVyXG4gIC8vIGNvZGUgc2l6ZS5cbiAgVnVlLnByb3RvdHlwZS5fbyA9IG1hcmtPbmNlO1xuICBWdWUucHJvdG90eXBlLl9uID0gdG9OdW1iZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX3MgPSB0b1N0cmluZztcbiAgVnVlLnByb3RvdHlwZS5fbCA9IHJlbmRlckxpc3Q7XG4gIFZ1ZS5wcm90b3R5cGUuX3QgPSByZW5kZXJTbG90O1xuICBWdWUucHJvdG90eXBlLl9xID0gbG9vc2VFcXVhbDtcbiAgVnVlLnByb3RvdHlwZS5faSA9IGxvb3NlSW5kZXhPZjtcbiAgVnVlLnByb3RvdHlwZS5fbSA9IHJlbmRlclN0YXRpYztcbiAgVnVlLnByb3RvdHlwZS5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX2sgPSBjaGVja0tleUNvZGVzO1xuICBWdWUucHJvdG90eXBlLl9iID0gYmluZE9iamVjdFByb3BzO1xuICBWdWUucHJvdG90eXBlLl92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICBWdWUucHJvdG90eXBlLl9lID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbn1cblxuLyogICovXG5cbnZhciB1aWQkMSA9IDA7XG5cbmZ1bmN0aW9uIGluaXRNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYSB1aWRcbiAgICB2bS5fdWlkID0gdWlkJDErKztcblxuICAgIHZhciBzdGFydFRhZywgZW5kVGFnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICBzdGFydFRhZyA9IFwidnVlLXBlcmYtaW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5KHZtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICAgIC8vIGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZlY3ljbGUodm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGluaXRSZW5kZXIodm0pO1xuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRlJyk7XG4gICAgaW5pdEluamVjdGlvbnModm0pOyAvLyByZXNvbHZlIGluamVjdGlvbnMgYmVmb3JlIGRhdGEvcHJvcHNcbiAgICBpbml0U3RhdGUodm0pO1xuICAgIGluaXRQcm92aWRlKHZtKTsgLy8gcmVzb2x2ZSBwcm92aWRlIGFmdGVyIGRhdGEvcHJvcHNcbiAgICBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKCh2bS5fbmFtZSkgKyBcIiBpbml0XCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodm0uJG9wdGlvbnMuZWwpIHtcbiAgICAgIHZtLiRtb3VudCh2bS4kb3B0aW9ucy5lbCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0SW50ZXJuYWxDb21wb25lbnQgKHZtLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gdm0uJG9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHZtLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuICAvLyBkb2luZyB0aGlzIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbiBkeW5hbWljIGVudW1lcmF0aW9uLlxuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRzLnByb3BzRGF0YSA9IG9wdGlvbnMucHJvcHNEYXRhO1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLl9wYXJlbnRMaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IG9wdGlvbnMuX2NvbXBvbmVudFRhZztcbiAgb3B0cy5fcGFyZW50RWxtID0gb3B0aW9ucy5fcGFyZW50RWxtO1xuICBvcHRzLl9yZWZFbG0gPSBvcHRpb25zLl9yZWZFbG07XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIGV4dGVuZGVkID0gQ3Rvci5leHRlbmRPcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gZGVkdXBlKGxhdGVzdFtrZXldLCBleHRlbmRlZFtrZXldLCBzZWFsZWRba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBkZWR1cGUgKGxhdGVzdCwgZXh0ZW5kZWQsIHNlYWxlZCkge1xuICAvLyBjb21wYXJlIGxhdGVzdCBhbmQgc2VhbGVkIHRvIGVuc3VyZSBsaWZlY3ljbGUgaG9va3Mgd29uJ3QgYmUgZHVwbGljYXRlZFxuICAvLyBiZXR3ZWVuIG1lcmdlc1xuICBpZiAoQXJyYXkuaXNBcnJheShsYXRlc3QpKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHNlYWxlZCA9IEFycmF5LmlzQXJyYXkoc2VhbGVkKSA/IHNlYWxlZCA6IFtzZWFsZWRdO1xuICAgIGV4dGVuZGVkID0gQXJyYXkuaXNBcnJheShleHRlbmRlZCkgPyBleHRlbmRlZCA6IFtleHRlbmRlZF07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXRlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIHB1c2ggb3JpZ2luYWwgb3B0aW9ucyBhbmQgbm90IHNlYWxlZCBvcHRpb25zIHRvIGV4Y2x1ZGUgZHVwbGljYXRlZCBvcHRpb25zXG4gICAgICBpZiAoZXh0ZW5kZWQuaW5kZXhPZihsYXRlc3RbaV0pID49IDAgfHwgc2VhbGVkLmluZGV4T2YobGF0ZXN0W2ldKSA8IDApIHtcbiAgICAgICAgcmVzLnB1c2gobGF0ZXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsYXRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBWdWUkMyAob3B0aW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICEodGhpcyBpbnN0YW5jZW9mIFZ1ZSQzKVxuICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1cblxuaW5pdE1peGluKFZ1ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4oVnVlJDMpO1xubGlmZWN5Y2xlTWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHBsdWdpbi5pbnN0YWxsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSokLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9uZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAgICAnY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhlbiwgJyArXG4gICAgICAgICAgJ2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdpZDogJyArIGlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlIChjYWNoZSwgY3VycmVudCwgZmlsdGVyKSB7XG4gIGZvciAodmFyIGtleSBpbiBjYWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAoY2FjaGVkTm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5vZGUuY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7XG4gICAgICAgIGlmIChjYWNoZWROb2RlICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhY2hlW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkgKHZub2RlKSB7XG4gIGlmICh2bm9kZSkge1xuICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbn1cblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkICgpIHtcbiAgICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcyQxLmNhY2hlW2tleV0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIG1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSxcbiAgICBleGNsdWRlOiBmdW5jdGlvbiBleGNsdWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1hdGNoZXModGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBtYXRjaGVzKHRoaXMuZXhjbHVkZSwgbmFtZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKHRoaXMuY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuY2FjaGVba2V5XS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgfVxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufTtcblxudmFyIGJ1aWx0SW5Db21wb25lbnRzID0ge1xuICBLZWVwQWxpdmU6IEtlZXBBbGl2ZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRHbG9iYWxBUEkgKFZ1ZSkge1xuICAvLyBjb25maWdcbiAgdmFyIGNvbmZpZ0RlZiA9IHt9O1xuICBjb25maWdEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY29uZmlnOyB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbmZpZ0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHJlcGxhY2UgdGhlIFZ1ZS5jb25maWcgb2JqZWN0LCBzZXQgaW5kaXZpZHVhbCBmaWVsZHMgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ2NvbmZpZycsIGNvbmZpZ0RlZik7XG5cbiAgLy8gZXhwb3NlZCB1dGlsIG1ldGhvZHMuXG4gIC8vIE5PVEU6IHRoZXNlIGFyZSBub3QgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIC0gYXZvaWQgcmVseWluZyBvblxuICAvLyB0aGVtIHVubGVzcyB5b3UgYXJlIGF3YXJlIG9mIHRoZSByaXNrLlxuICBWdWUudXRpbCA9IHtcbiAgICB3YXJuOiB3YXJuLFxuICAgIGV4dGVuZDogZXh0ZW5kLFxuICAgIG1lcmdlT3B0aW9uczogbWVyZ2VPcHRpb25zLFxuICAgIGRlZmluZVJlYWN0aXZlOiBkZWZpbmVSZWFjdGl2ZSQkMVxuICB9O1xuXG4gIFZ1ZS5zZXQgPSBzZXQ7XG4gIFZ1ZS5kZWxldGUgPSBkZWw7XG4gIFZ1ZS5uZXh0VGljayA9IG5leHRUaWNrO1xuXG4gIFZ1ZS5vcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIFZ1ZS5vcHRpb25zW3R5cGUgKyAncyddID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSk7XG5cbiAgLy8gdGhpcyBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBcImJhc2VcIiBjb25zdHJ1Y3RvciB0byBleHRlbmQgYWxsIHBsYWluLW9iamVjdFxuICAvLyBjb21wb25lbnRzIHdpdGggaW4gV2VleCdzIG11bHRpLWluc3RhbmNlIHNjZW5hcmlvcy5cbiAgVnVlLm9wdGlvbnMuX2Jhc2UgPSBWdWU7XG5cbiAgZXh0ZW5kKFZ1ZS5vcHRpb25zLmNvbXBvbmVudHMsIGJ1aWx0SW5Db21wb25lbnRzKTtcblxuICBpbml0VXNlKFZ1ZSk7XG4gIGluaXRNaXhpbiQxKFZ1ZSk7XG4gIGluaXRFeHRlbmQoVnVlKTtcbiAgaW5pdEFzc2V0UmVnaXN0ZXJzKFZ1ZSk7XG59XG5cbmluaXRHbG9iYWxBUEkoVnVlJDMpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBlLCAnJGlzU2VydmVyJywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRzc3JDb250ZXh0Jywge1xuICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4kdm5vZGUuc3NyQ29udGV4dFxuICB9XG59KTtcblxuVnVlJDMudmVyc2lvbiA9ICcyLjMuMyc7XG5cbi8qICAqL1xuXG4vLyB0aGVzZSBhcmUgcmVzZXJ2ZWQgZm9yIHdlYiBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IGNvbXBpbGVkIGF3YXlcbi8vIGR1cmluZyB0ZW1wbGF0ZSBjb21waWxhdGlvblxudmFyIGlzUmVzZXJ2ZWRBdHRyID0gbWFrZU1hcCgnc3R5bGUsY2xhc3MnKTtcblxuLy8gYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSB1c2luZyBwcm9wcyBmb3IgYmluZGluZ1xudmFyIGFjY2VwdFZhbHVlID0gbWFrZU1hcCgnaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCcpO1xudmFyIG11c3RVc2VQcm9wID0gZnVuY3Rpb24gKHRhZywgdHlwZSwgYXR0cikge1xuICByZXR1cm4gKFxuICAgIChhdHRyID09PSAndmFsdWUnICYmIGFjY2VwdFZhbHVlKHRhZykpICYmIHR5cGUgIT09ICdidXR0b24nIHx8XG4gICAgKGF0dHIgPT09ICdzZWxlY3RlZCcgJiYgdGFnID09PSAnb3B0aW9uJykgfHxcbiAgICAoYXR0ciA9PT0gJ2NoZWNrZWQnICYmIHRhZyA9PT0gJ2lucHV0JykgfHxcbiAgICAoYXR0ciA9PT0gJ211dGVkJyAmJiB0YWcgPT09ICd2aWRlbycpXG4gIClcbn07XG5cbnZhciBpc0VudW1lcmF0ZWRBdHRyID0gbWFrZU1hcCgnY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrJyk7XG5cbnZhciBpc0Jvb2xlYW5BdHRyID0gbWFrZU1hcChcbiAgJ2FsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsJyArXG4gICdkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsJyArXG4gICdlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLCcgK1xuICAnbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSwnICtcbiAgJ3JlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsJyArXG4gICd0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlJ1xuKTtcblxudmFyIHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5cbnZhciBpc1hsaW5rID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDUpID09PSAnOicgJiYgbmFtZS5zbGljZSgwLCA1KSA9PT0gJ3hsaW5rJ1xufTtcblxudmFyIGdldFhsaW5rUHJvcCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBpc1hsaW5rKG5hbWUpID8gbmFtZS5zbGljZSg2LCBuYW1lLmxlbmd0aCkgOiAnJ1xufTtcblxudmFyIGlzRmFsc3lBdHRyVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB2YWwgPT09IGZhbHNlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGb3JWbm9kZSAodm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gIHdoaWxlIChpc0RlZihjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICBpZiAoY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxlIChpc0RlZihwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGRhdGEsIHBhcmVudE5vZGUuZGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBnZW5DbGFzc0Zyb21EYXRhKGRhdGEpXG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5DbGFzc0Zyb21EYXRhIChkYXRhKSB7XG4gIHZhciBkeW5hbWljQ2xhc3MgPSBkYXRhLmNsYXNzO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBkYXRhLnN0YXRpY0NsYXNzO1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmKHZhbHVlKSkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgdmFyIHJlcyA9ICcnO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgc3RyaW5naWZpZWQ7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChpc0RlZih2YWx1ZVtpXSkpIHtcbiAgICAgICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgICAgICByZXMgKz0gc3RyaW5naWZpZWQgKyAnICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWVba2V5XSkgeyByZXMgKz0ga2V5ICsgJyAnOyB9XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIG5hbWVzcGFjZU1hcCA9IHtcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICBtYXRoOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCdcbn07XG5cbnZhciBpc0hUTUxUYWcgPSBtYWtlTWFwKFxuICAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsJyArXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sJyArXG4gICdkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsJyArXG4gICdhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbywnICtcbiAgJ2VtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcgK1xuICAnY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsJyArXG4gICdidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSwnICtcbiAgJ2RldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSwnICtcbiAgJ2NvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUnXG4pO1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVjdGl2ZSwgb25seSBjb3ZlcmluZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hpbGQgZWxlbWVudHMuXG52YXIgaXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcgK1xuICAnZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4sJyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFyIGlzUHJlVGFnID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxudmFyIGlzUmVzZXJ2ZWRUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWRyh0YWcpXG59O1xuXG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykge1xuICBpZiAoaXNTVkcodGFnKSkge1xuICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2ljIHN1cHBvcnQgZm9yIE1hdGhNTFxuICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRoTUwgZWxlbWVudHMgYmVpbmcgY29tcG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRoJykge1xuICAgIHJldHVybiAnbWF0aCdcbiAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAgICByZXR1cm4gdW5rbm93bkVsZW1lbnRDYWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTEVsZW1lbnRcbiAgICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddID0gL0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0cmluZygpKSlcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVjdG9yIGlmIGl0J3Mgbm90IGFuIGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkgKGVsKSB7XG4gIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnQ2Fubm90IGZpbmQgZWxlbWVudDogJyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1cm4gZWxtXG4gIH1cbiAgLy8gZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRlIGJ1dCB1bmRlZmluZWQgd2lsbCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS5hdHRycyAmJiB2bm9kZS5kYXRhLmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVybiBlbG1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSwgdGFnTmFtZSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClcbn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLmFwcGVuZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9kZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRTaWJsaW5nIChub2RlKSB7XG4gIHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9uIHRhZ05hbWUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBzZXRUZXh0Q29udGVudCAobm9kZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuICBub2RlLnNldEF0dHJpYnV0ZShrZXksIHZhbCk7XG59XG5cblxudmFyIG5vZGVPcHMgPSBPYmplY3QuZnJlZXplKHtcblx0Y3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCQxLFxuXHRjcmVhdGVFbGVtZW50TlM6IGNyZWF0ZUVsZW1lbnROUyxcblx0Y3JlYXRlVGV4dE5vZGU6IGNyZWF0ZVRleHROb2RlLFxuXHRjcmVhdGVDb21tZW50OiBjcmVhdGVDb21tZW50LFxuXHRpbnNlcnRCZWZvcmU6IGluc2VydEJlZm9yZSxcblx0cmVtb3ZlQ2hpbGQ6IHJlbW92ZUNoaWxkLFxuXHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hpbGQsXG5cdHBhcmVudE5vZGU6IHBhcmVudE5vZGUsXG5cdG5leHRTaWJsaW5nOiBuZXh0U2libGluZyxcblx0dGFnTmFtZTogdGFnTmFtZSxcblx0c2V0VGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50LFxuXHRzZXRBdHRyaWJ1dGU6IHNldEF0dHJpYnV0ZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICBpZiAob2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4gICAgICByZWdpc3RlclJlZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJSZWYgKHZub2RlLCBpc1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuICBpZiAoIWtleSkgeyByZXR1cm4gfVxuXG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gIHZhciByZWYgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5lbG07XG4gIHZhciByZWZzID0gdm0uJHJlZnM7XG4gIGlmIChpc1JlbW92YWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0pKSB7XG4gICAgICByZW1vdmUocmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxzZSBpZiAocmVmc1trZXldID09PSByZWYpIHtcbiAgICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZub2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkgJiYgcmVmc1trZXldLmluZGV4T2YocmVmKSA8IDApIHtcbiAgICAgICAgcmVmc1trZXldLnB1c2gocmVmKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZzW2tleV0gPSByZWY7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmlydHVhbCBET00gcGF0Y2hpbmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNuYWJiZG9tIGJ5XG4gKiBTaW1vbiBGcmlpcyBWaW5kdW0gKEBwYWxkZXBpbmQpXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc25hYmJkb20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuICpcbiAqIG1vZGlmaWVkIGJ5IEV2YW4gWW91IChAeXl4OTkwODAzKVxuICpcblxuLypcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlzIGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQgdGhlIGNvc3RcbiAqIG9mIG1ha2luZyBmbG93IHVuZGVyc3RhbmQgaXQgaXMgbm90IHdvcnRoIGl0LlxuICovXG5cbnZhciBlbXB0eU5vZGUgPSBuZXcgVk5vZGUoJycsIHt9LCBbXSk7XG5cbnZhciBob29rcyA9IFsnY3JlYXRlJywgJ2FjdGl2YXRlJywgJ3VwZGF0ZScsICdyZW1vdmUnLCAnZGVzdHJveSddO1xuXG5mdW5jdGlvbiBzYW1lVm5vZGUgKGEsIGIpIHtcbiAgcmV0dXJuIChcbiAgICBhLmtleSA9PT0gYi5rZXkgJiZcbiAgICBhLnRhZyA9PT0gYi50YWcgJiZcbiAgICBhLmlzQ29tbWVudCA9PT0gYi5pc0NvbW1lbnQgJiZcbiAgICBpc0RlZihhLmRhdGEpID09PSBpc0RlZihiLmRhdGEpICYmXG4gICAgc2FtZUlucHV0VHlwZShhLCBiKVxuICApXG59XG5cbi8vIFNvbWUgYnJvd3NlcnMgZG8gbm90IHN1cHBvcnQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdHlwZSBmb3IgPGlucHV0PlxuLy8gc28gdGhleSBuZWVkIHRvIGJlIHRyZWF0ZWQgYXMgZGlmZmVyZW50IG5vZGVzXG5mdW5jdGlvbiBzYW1lSW5wdXRUeXBlIChhLCBiKSB7XG4gIGlmIChhLnRhZyAhPT0gJ2lucHV0JykgeyByZXR1cm4gdHJ1ZSB9XG4gIHZhciBpO1xuICB2YXIgdHlwZUEgPSBpc0RlZihpID0gYS5kYXRhKSAmJiBpc0RlZihpID0gaS5hdHRycykgJiYgaS50eXBlO1xuICB2YXIgdHlwZUIgPSBpc0RlZihpID0gYi5kYXRhKSAmJiBpc0RlZihpID0gaS5hdHRycykgJiYgaS50eXBlO1xuICByZXR1cm4gdHlwZUEgPT09IHR5cGVCXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVRvT2xkSWR4IChjaGlsZHJlbiwgYmVnaW5JZHgsIGVuZElkeCkge1xuICB2YXIgaSwga2V5O1xuICB2YXIgbWFwID0ge307XG4gIGZvciAoaSA9IGJlZ2luSWR4OyBpIDw9IGVuZElkeDsgKytpKSB7XG4gICAga2V5ID0gY2hpbGRyZW5baV0ua2V5O1xuICAgIGlmIChpc0RlZihrZXkpKSB7IG1hcFtrZXldID0gaTsgfVxuICB9XG4gIHJldHVybiBtYXBcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF0Y2hGdW5jdGlvbiAoYmFja2VuZCkge1xuICB2YXIgaSwgajtcbiAgdmFyIGNicyA9IHt9O1xuXG4gIHZhciBtb2R1bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuICB2YXIgbm9kZU9wcyA9IGJhY2tlbmQubm9kZU9wcztcblxuICBmb3IgKGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyArK2kpIHtcbiAgICBjYnNbaG9va3NbaV1dID0gW107XG4gICAgZm9yIChqID0gMDsgaiA8IG1vZHVsZXMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChpc0RlZihtb2R1bGVzW2pdW2hvb2tzW2ldXSkpIHtcbiAgICAgICAgY2JzW2hvb2tzW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3NbaV1dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbXB0eU5vZGVBdCAoZWxtKSB7XG4gICAgcmV0dXJuIG5ldyBWTm9kZShub2RlT3BzLnRhZ05hbWUoZWxtKS50b0xvd2VyQ2FzZSgpLCB7fSwgW10sIHVuZGVmaW5lZCwgZWxtKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm1DYiAoY2hpbGRFbG0sIGxpc3RlbmVycykge1xuICAgIGZ1bmN0aW9uIHJlbW92ZSQkMSAoKSB7XG4gICAgICBpZiAoLS1yZW1vdmUkJDEubGlzdGVuZXJzID09PSAwKSB7XG4gICAgICAgIHJlbW92ZU5vZGUoY2hpbGRFbG0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZW1vdmUkJDEubGlzdGVuZXJzID0gbGlzdGVuZXJzO1xuICAgIHJldHVybiByZW1vdmUkJDFcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZU5vZGUgKGVsKSB7XG4gICAgdmFyIHBhcmVudCA9IG5vZGVPcHMucGFyZW50Tm9kZShlbCk7XG4gICAgLy8gZWxlbWVudCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBkdWUgdG8gdi1odG1sIC8gdi10ZXh0XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIG5vZGVPcHMucmVtb3ZlQ2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGluUHJlID0gMDtcbiAgZnVuY3Rpb24gY3JlYXRlRWxtICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSwgbmVzdGVkKSB7XG4gICAgdm5vZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDsgLy8gZm9yIHRyYW5zaXRpb24gZW50ZXIgY2hlY2tcbiAgICBpZiAoY3JlYXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgICAgaW5QcmUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWluUHJlICYmXG4gICAgICAgICAgIXZub2RlLm5zICYmXG4gICAgICAgICAgIShjb25maWcuaWdub3JlZEVsZW1lbnRzLmxlbmd0aCAmJiBjb25maWcuaWdub3JlZEVsZW1lbnRzLmluZGV4T2YodGFnKSA+IC0xKSAmJlxuICAgICAgICAgIGNvbmZpZy5pc1Vua25vd25FbGVtZW50KHRhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdVbmtub3duIGN1c3RvbSBlbGVtZW50OiA8JyArIHRhZyArICc+IC0gZGlkIHlvdSAnICtcbiAgICAgICAgICAgICdyZWdpc3RlciB0aGUgY29tcG9uZW50IGNvcnJlY3RseT8gRm9yIHJlY3Vyc2l2ZSBjb21wb25lbnRzLCAnICtcbiAgICAgICAgICAgICdtYWtlIHN1cmUgdG8gcHJvdmlkZSB0aGUgXCJuYW1lXCIgb3B0aW9uLicsXG4gICAgICAgICAgICB2bm9kZS5jb250ZXh0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdm5vZGUuZWxtID0gdm5vZGUubnNcbiAgICAgICAgPyBub2RlT3BzLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5ucywgdGFnKVxuICAgICAgICA6IG5vZGVPcHMuY3JlYXRlRWxlbWVudCh0YWcsIHZub2RlKTtcbiAgICAgIHNldFNjb3BlKHZub2RlKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICB7XG4gICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgIGluUHJlLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RydWUodm5vZGUuaXNDb21tZW50KSkge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVDb21tZW50KHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICB2YXIgaXNSZWFjdGl2YXRlZCA9IGlzRGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBpLmtlZXBBbGl2ZTtcbiAgICAgIGlmIChpc0RlZihpID0gaS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkge1xuICAgICAgICBpKHZub2RlLCBmYWxzZSAvKiBoeWRyYXRpbmcgKi8sIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgIH1cbiAgICAgIC8vIGFmdGVyIGNhbGxpbmcgdGhlIGluaXQgaG9vaywgaWYgdGhlIHZub2RlIGlzIGEgY2hpbGQgY29tcG9uZW50XG4gICAgICAvLyBpdCBzaG91bGQndmUgY3JlYXRlZCBhIGNoaWxkIGluc3RhbmNlIGFuZCBtb3VudGVkIGl0LiB0aGUgY2hpbGRcbiAgICAgIC8vIGNvbXBvbmVudCBhbHNvIGhhcyBzZXQgdGhlIHBsYWNlaG9sZGVyIHZub2RlJ3MgZWxtLlxuICAgICAgLy8gaW4gdGhhdCBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgZWxlbWVudCBhbmQgYmUgZG9uZS5cbiAgICAgIGlmIChpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgaWYgKGlzVHJ1ZShpc1JlYWN0aXZhdGVkKSkge1xuICAgICAgICAgIHJlYWN0aXZhdGVDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdENvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaC5hcHBseShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCk7XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRlbDtcbiAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIHNldFNjb3BlKHZub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZW1wdHkgY29tcG9uZW50IHJvb3QuXG4gICAgICAvLyBza2lwIGFsbCBlbGVtZW50LXJlbGF0ZWQgbW9kdWxlcyBleGNlcHQgZm9yIHJlZiAoIzM0NTUpXG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgICAvLyBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZSBpbnNlcnQgaG9va1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWN0aXZhdGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGk7XG4gICAgLy8gaGFjayBmb3IgIzQzMzk6IGEgcmVhY3RpdmF0ZWQgY29tcG9uZW50IHdpdGggaW5uZXIgdHJhbnNpdGlvblxuICAgIC8vIGRvZXMgbm90IHRyaWdnZXIgYmVjYXVzZSB0aGUgaW5uZXIgbm9kZSdzIGNyZWF0ZWQgaG9va3MgYXJlIG5vdCBjYWxsZWRcbiAgICAvLyBhZ2Fpbi4gSXQncyBub3QgaWRlYWwgdG8gaW52b2x2ZSBtb2R1bGUtc3BlY2lmaWMgbG9naWMgaW4gaGVyZSBidXRcbiAgICAvLyB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0LlxuICAgIHZhciBpbm5lck5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICBpbm5lck5vZGUgPSBpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgICAgaWYgKGlzRGVmKGkgPSBpbm5lck5vZGUuZGF0YSkgJiYgaXNEZWYoaSA9IGkudHJhbnNpdGlvbikpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5hY3RpdmF0ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNicy5hY3RpdmF0ZVtpXShlbXB0eU5vZGUsIGlubmVyTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2goaW5uZXJOb2RlKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdW5saWtlIGEgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQsXG4gICAgLy8gYSByZWFjdGl2YXRlZCBrZWVwLWFsaXZlIGNvbXBvbmVudCBkb2Vzbid0IGluc2VydCBpdHNlbGZcbiAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnQgKHBhcmVudCwgZWxtLCByZWYpIHtcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgaWYgKGlzRGVmKHJlZikpIHtcbiAgICAgICAgaWYgKHJlZi5wYXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnQsIGVsbSwgcmVmKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZU9wcy5hcHBlbmRDaGlsZChwYXJlbnQsIGVsbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW4gKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNyZWF0ZUVsbShjaGlsZHJlbltpXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5lbG0sIG51bGwsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodm5vZGUudGV4dCkpIHtcbiAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdGNoYWJsZSAodm5vZGUpIHtcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIH1cbiAgICByZXR1cm4gaXNEZWYodm5vZGUudGFnKVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlQ3JlYXRlSG9va3MgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgIGNicy5jcmVhdGVbaSQxXShlbXB0eU5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgaSA9IHZub2RlLmRhdGEuaG9vazsgLy8gUmV1c2UgdmFyaWFibGVcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIGlmIChpc0RlZihpLmNyZWF0ZSkpIHsgaS5jcmVhdGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpLmluc2VydCkpIHsgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IHNjb3BlIGlkIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIENTUy5cbiAgLy8gdGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUgb3ZlcmhlYWRcbiAgLy8gb2YgZ29pbmcgdGhyb3VnaCB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBwYXRjaGluZyBwcm9jZXNzLlxuICBmdW5jdGlvbiBzZXRTY29wZSAodm5vZGUpIHtcbiAgICB2YXIgaTtcbiAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZTtcbiAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgIGlmIChpc0RlZihpID0gYW5jZXN0b3IuY29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgICAgfVxuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgfVxuICAgIC8vIGZvciBzbG90IGNvbnRlbnQgdGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQgZnJvbSB0aGUgaG9zdCBpbnN0YW5jZS5cbiAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNlKSAmJlxuICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpXG4gICAgKSB7XG4gICAgICBub2RlT3BzLnNldEF0dHJpYnV0ZSh2bm9kZS5lbG0sIGksICcnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRWbm9kZXMgKHBhcmVudEVsbSwgcmVmRWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZXNbc3RhcnRJZHhdLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUpIHtcbiAgICB2YXIgaSwgajtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC50YWcpKSB7XG4gICAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICByZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rICh2bm9kZSwgcm0pIHtcbiAgICBpZiAoaXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7XG4gICAgICB2YXIgaTtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCArIDE7XG4gICAgICBpZiAoaXNEZWYocm0pKSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBwYXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlzdGVuZXJzIGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkaXJlY3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZlbHkgaW52b2tlIGhvb2tzIG9uIGNoaWxkIGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNEZWYoaS5kYXRhKSkge1xuICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGksIHJtKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNicy5yZW1vdmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAgICAgIGkodm5vZGUsIHJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDA7XG4gICAgdmFyIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRFbmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5PbGQsIGVsbVRvTW92ZSwgcmVmRWxtO1xuXG4gICAgLy8gcmVtb3ZlT25seSBpcyBhIHNwZWNpYWwgZmxhZyB1c2VkIG9ubHkgYnkgPHRyYW5zaXRpb24tZ3JvdXA+XG4gICAgLy8gdG8gZW5zdXJlIHJlbW92ZWQgZWxlbWVudHMgc3RheSBpbiBjb3JyZWN0IHJlbGF0aXZlIHBvc2l0aW9uc1xuICAgIC8vIGR1cmluZyBsZWF2aW5nIHRyYW5zaXRpb25zXG4gICAgdmFyIGNhbk1vdmUgPSAhcmVtb3ZlT25seTtcblxuICAgIHdoaWxlIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3RhcnRJZHggPD0gbmV3RW5kSWR4KSB7XG4gICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZub2RlKSkge1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07IC8vIFZub2RlIGhhcyBiZWVuIG1vdmVkIGxlZnRcbiAgICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGRFbmRWbm9kZSkpIHtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlKSkge1xuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIHJpZ2h0XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSwgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbmRWbm9kZS5lbG0pKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCBsZWZ0XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRFbmRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVmKG9sZEtleVRvSWR4KSkgeyBvbGRLZXlUb0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTsgfVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0Vm5vZGUua2V5KSA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XSA6IG51bGw7XG4gICAgICAgIGlmIChpc1VuZGVmKGlkeEluT2xkKSkgeyAvLyBOZXcgZWxlbWVudFxuICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbG1Ub01vdmUgPSBvbGRDaFtpZHhJbk9sZF07XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVsbVRvTW92ZSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyB0aGF0IGlzIGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAgICAgICAgICAgICAgJ01ha2Ugc3VyZSBlYWNoIHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2FtZVZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGNoVm5vZGUoZWxtVG9Nb3ZlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG5ld1N0YXJ0Vm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxlbWVudC4gdHJlYXQgYXMgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAvLyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBpZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5lZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5rZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwgaXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHZhciBpO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7XG4gICAgICBpKG9sZFZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgdmFyIG9sZENoID0gb2xkVm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGNoID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy51cGRhdGUubGVuZ3RoOyArK2kpIHsgY2JzLnVwZGF0ZVtpXShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkudXBkYXRlKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzVW5kZWYodm5vZGUudGV4dCkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRDaCkgJiYgaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHsgdXBkYXRlQ2hpbGRyZW4oZWxtLCBvbGRDaCwgY2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7IH1cbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkgeyBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpOyB9XG4gICAgICAgIGFkZFZub2RlcyhlbG0sIG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xkQ2gsIDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuICAgICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAhPT0gdm5vZGUudGV4dCkge1xuICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sIHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wb3N0cGF0Y2gpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUluc2VydEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xuICAgIC8vIGRlbGF5IGluc2VydCBob29rcyBmb3IgY29tcG9uZW50IHJvb3Qgbm9kZXMsIGludm9rZSB0aGVtIGFmdGVyIHRoZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVhbGx5IGluc2VydGVkXG4gICAgaWYgKGlzVHJ1ZShpbml0aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICB2bm9kZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcXVldWVbaV0uZGF0YS5ob29rLmluc2VydChxdWV1ZVtpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhaWxlZCA9IGZhbHNlO1xuICAvLyBsaXN0IG9mIG1vZHVsZXMgdGhhdCBjYW4gc2tpcCBjcmVhdGUgaG9vayBkdXJpbmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhleVxuICAvLyBhcmUgYWxyZWFkeSByZW5kZXJlZCBvbiB0aGUgY2xpZW50IG9yIGhhcyBubyBuZWVkIGZvciBpbml0aWFsaXphdGlvblxuICB2YXIgaXNSZW5kZXJlZE1vZHVsZSA9IG1ha2VNYXAoJ2F0dHJzLHN0eWxlLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleScpO1xuXG4gIC8vIE5vdGU6IHRoaXMgaXMgYSBicm93c2VyLW9ubHkgZnVuY3Rpb24gc28gd2UgY2FuIGFzc3VtZSBlbG1zIGFyZSBET00gbm9kZXMuXG4gIGZ1bmN0aW9uIGh5ZHJhdGUgKGVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIWFzc2VydE5vZGVNYXRjaChlbG0sIHZub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7IGkodm5vZGUsIHRydWUgLyogaHlkcmF0aW5nICovKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICAgICAgLy8gY2hpbGQgY29tcG9uZW50LiBpdCBzaG91bGQgaGF2ZSBoeWRyYXRlZCBpdHMgb3duIHRyZWUuXG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAoaXNEZWYoY2hpbGRyZW4pKSB7XG4gICAgICAgIC8vIGVtcHR5IGVsZW1lbnQsIGFsbG93IGNsaWVudCB0byBwaWNrIHVwIGFuZCBwb3B1bGF0ZSBjaGlsZHJlblxuICAgICAgICBpZiAoIWVsbS5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSB8fCAhaHlkcmF0ZShjaGlsZE5vZGUsIGNoaWxkcmVuW2kkMV0sIGluc2VydGVkVm5vZGVRdWV1ZSkpIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBjaGlsZE5vZGUgaXMgbm90IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2RlcyBsaXN0IGlzXG4gICAgICAgICAgLy8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4gbGlzdC5cbiAgICAgICAgICBpZiAoIWNoaWxkcmVuTWF0Y2ggfHwgY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgIWJhaWxlZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUuaXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQgdmlydHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3NlcnZlci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcgK1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBibG9jay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3IgbWlzc2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAgICAgICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNlcnZlci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlOb2RlQXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2luZyBleGlzdGluZyBlbGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICAgIHZhciBwYXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuICAgICAgICBjcmVhdGVFbG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBvbGQgZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5IGhhcHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1hbGl2ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDogcGFyZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAvLyBjb21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAgICAgICAgIC8vIHVwZGF0ZSBwYXJlbnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpXShlbXB0eU5vZGUsIHZub2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSQxKSkge1xuICAgICAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0kMSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gpO1xuICAgIHJldHVybiB2bm9kZS5lbG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2ZXMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICBkZXN0cm95OiBmdW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xuICAgIHVwZGF0ZURpcmVjdGl2ZXModm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZURpcmVjdGl2ZXMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzIHx8IHZub2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUob2xkVm5vZGUsIHZub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGlzQ3JlYXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIGlzRGVzdHJveSA9IHZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKG9sZFZub2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4dCk7XG4gIHZhciBuZXdEaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgdm5vZGUuY29udGV4dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4gIHZhciBkaXJzV2l0aFBvc3RwYXRjaCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xuICBmb3IgKGtleSBpbiBuZXdEaXJzKSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAgIGRpciA9IG5ld0RpcnNba2V5XTtcbiAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRpcmVjdGl2ZSwgYmluZFxuICAgICAgY2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhJbnNlcnQucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBkaXJlY3RpdmUsIHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGlyLnZhbHVlO1xuICAgICAgY2FsbEhvb2skMShkaXIsICd1cGRhdGUnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5jb21wb25lbnRVcGRhdGVkKSB7XG4gICAgICAgIGRpcnNXaXRoUG9zdHBhdGNoLnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhJbnNlcnQubGVuZ3RoKSB7XG4gICAgdmFyIGNhbGxJbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhJbnNlcnRbaV0sICdpbnNlcnRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoaXNDcmVhdGUpIHtcbiAgICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0JywgY2FsbEluc2VydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxJbnNlcnQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoKSB7XG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdwb3N0cGF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhQb3N0cGF0Y2hbaV0sICdjb21wb25lbnRVcGRhdGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmICghaXNDcmVhdGUpIHtcbiAgICBmb3IgKGtleSBpbiBvbGREaXJzKSB7XG4gICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuICAgICAgICAvLyBubyBsb25nZXIgcHJlc2VudCwgdW5iaW5kXG4gICAgICAgIGNhbGxIb29rJDEob2xkRGlyc1trZXldLCAndW5iaW5kJywgb2xkVm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxuKSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgdmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVycykge1xuICAgICAgZGlyLm1vZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGlyZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGlyLnJhd05hbWUgfHwgKChkaXIubmFtZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzIHx8IHt9KS5qb2luKCcuJykpKVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhvb2ssIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KSB7XG4gIHZhciBmbiA9IGRpci5kZWYgJiYgZGlyLmRlZltob29rXTtcbiAgaWYgKGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKHZub2RlLmVsbSwgZGlyLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm5vZGUuY29udGV4dCwgKFwiZGlyZWN0aXZlIFwiICsgKGRpci5uYW1lKSArIFwiIFwiICsgaG9vayArIFwiIGhvb2tcIikpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgYmFzZU1vZHVsZXMgPSBbXG4gIHJlZixcbiAgZGlyZWN0aXZlc1xuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUF0dHJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRycykgJiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBrZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMgPSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBlIGNhbiByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0lFOSAmJiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUpIHtcbiAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAgIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlmIChpc0Jvb2xlYW5BdHRyKGtleSkpIHtcbiAgICAvLyBzZXQgYXR0cmlidXRlIGZvciBibGFuayB2YWx1ZVxuICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxlY3Qgb25lPC9vcHRpb24+XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwga2V5KTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkgfHwgdmFsdWUgPT09ICdmYWxzZScgPyAnZmFsc2UnIDogJ3RydWUnKTtcbiAgfSBlbHNlIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJzLFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAoXG4gICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFzcykgJiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAgICAgKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xhc3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYodHJhbnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNzKHRyYW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xuXG52YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBpbkRvdWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIgaW5SZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAgdmFyIHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7IGluU2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYmIC8vIHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAweDJmKSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9pZCAwKTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVycyB8fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDApIHtcbiAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCArIFwiLFwiICsgYXJncylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZykge1xuICBjb25zb2xlLmVycm9yKChcIltWdWUgY29tcGlsZXJdOiBcIiArIG1zZykpO1xufVxuXG5mdW5jdGlvbiBwbHVja01vZHVsZUZ1bmN0aW9uIChcbiAgbW9kdWxlcyxcbiAga2V5XG4pIHtcbiAgcmV0dXJuIG1vZHVsZXNcbiAgICA/IG1vZHVsZXMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiBtW2tleV07IH0pLmZpbHRlcihmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfSlcbiAgICA6IFtdXG59XG5cbmZ1bmN0aW9uIGFkZFByb3AgKGVsLCBuYW1lLCB2YWx1ZSkge1xuICAoZWwucHJvcHMgfHwgKGVsLnByb3BzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRBdHRyIChlbCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLmF0dHJzIHx8IChlbC5hdHRycyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4gIHZhbHVlLFxuICBhcmcsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgcmF3TmFtZTogcmF3TmFtZSwgdmFsdWU6IHZhbHVlLCBhcmc6IGFyZywgbW9kaWZpZXJzOiBtb2RpZmllcnMgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIgKFxuICBlbCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIG1vZGlmaWVycyxcbiAgaW1wb3J0YW50LFxuICB3YXJuXG4pIHtcbiAgLy8gd2FybiBwcmV2ZW50IGFuZCBwYXNzaXZlIG1vZGlmaWVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuICYmXG4gICAgbW9kaWZpZXJzICYmIG1vZGlmaWVycy5wcmV2ZW50ICYmIG1vZGlmaWVycy5wYXNzaXZlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nXG4gICAgKTtcbiAgfVxuICAvLyBjaGVjayBjYXB0dXJlIG1vZGlmaWVyXG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLmNhcHR1cmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLmNhcHR1cmU7XG4gICAgbmFtZSA9ICchJyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIGNhcHR1cmVkXG4gIH1cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMub25jZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMub25jZTtcbiAgICBuYW1lID0gJ34nICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgb25jZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5wYXNzaXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5wYXNzaXZlO1xuICAgIG5hbWUgPSAnJicgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBwYXNzaXZlXG4gIH1cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMubmF0aXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5uYXRpdmU7XG4gICAgZXZlbnRzID0gZWwubmF0aXZlRXZlbnRzIHx8IChlbC5uYXRpdmVFdmVudHMgPSB7fSk7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzID0gZWwuZXZlbnRzIHx8IChlbC5ldmVudHMgPSB7fSk7XG4gIH1cbiAgdmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJzOiBtb2RpZmllcnMgfTtcbiAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVdO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcnMpKSB7XG4gICAgaW1wb3J0YW50ID8gaGFuZGxlcnMudW5zaGlmdChuZXdIYW5kbGVyKSA6IGhhbmRsZXJzLnB1c2gobmV3SGFuZGxlcik7XG4gIH0gZWxzZSBpZiAoaGFuZGxlcnMpIHtcbiAgICBldmVudHNbbmFtZV0gPSBpbXBvcnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRsZXJzLCBuZXdIYW5kbGVyXTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbbmFtZV0gPSBuZXdIYW5kbGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcbiAgZWwsXG4gIG5hbWUsXG4gIGdldFN0YXRpY1xuKSB7XG4gIHZhciBkeW5hbWljVmFsdWUgPVxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICc6JyArIG5hbWUpIHx8XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtYmluZDonICsgbmFtZSk7XG4gIGlmIChkeW5hbWljVmFsdWUgIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZpbHRlcnMoZHluYW1pY1ZhbHVlKVxuICB9IGVsc2UgaWYgKGdldFN0YXRpYyAhPT0gZmFsc2UpIHtcbiAgICB2YXIgc3RhdGljVmFsdWUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCBuYW1lKTtcbiAgICBpZiAoc3RhdGljVmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0YXRpY1ZhbHVlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbmRSZW1vdmVBdHRyIChlbCwgbmFtZSkge1xuICB2YXIgdmFsO1xuICBpZiAoKHZhbCA9IGVsLmF0dHJzTWFwW25hbWVdKSAhPSBudWxsKSB7XG4gICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGxpc3RbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1vZGVsXG4gKi9cbmZ1bmN0aW9uIGdlbkNvbXBvbmVudE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcblxuICB2YXIgYmFzZVZhbHVlRXhwcmVzc2lvbiA9ICckJHYnO1xuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gYmFzZVZhbHVlRXhwcmVzc2lvbjtcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPVxuICAgICAgXCIodHlwZW9mIFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiID09PSAnc3RyaW5nJ1wiICtcbiAgICAgICAgXCI/IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgICAgXCI6IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cbiAgdmFyIGFzc2lnbm1lbnQgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcblxuICBlbC5tb2RlbCA9IHtcbiAgICB2YWx1ZTogKFwiKFwiICsgdmFsdWUgKyBcIilcIiksXG4gICAgZXhwcmVzc2lvbjogKFwiXFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksXG4gICAgY2FsbGJhY2s6IChcImZ1bmN0aW9uIChcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIikge1wiICsgYXNzaWdubWVudCArIFwifVwiKVxuICB9O1xufVxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFsdWUgYXNzaWdubWVudCBjb2RlLlxuICovXG5mdW5jdGlvbiBnZW5Bc3NpZ25tZW50Q29kZSAoXG4gIHZhbHVlLFxuICBhc3NpZ25tZW50XG4pIHtcbiAgdmFyIG1vZGVsUnMgPSBwYXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYgKG1vZGVsUnMuaWR4ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJ2YXIgJCRleHAgPSBcIiArIChtb2RlbFJzLmV4cCkgKyBcIiwgJCRpZHggPSBcIiArIChtb2RlbFJzLmlkeCkgKyBcIjtcIiArXG4gICAgICBcImlmICghQXJyYXkuaXNBcnJheSgkJGV4cCkpe1wiICtcbiAgICAgICAgdmFsdWUgKyBcIj1cIiArIGFzc2lnbm1lbnQgKyBcIn1cIiArXG4gICAgICBcImVsc2V7JCRleHAuc3BsaWNlKCQkaWR4LCAxLCBcIiArIGFzc2lnbm1lbnQgKyBcIil9XCJcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVzdFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBkeW5hbWljVHlwZSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dHlwZSddIHx8IGVsLmF0dHJzTWFwWyc6dHlwZSddO1xuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgZHluYW1pY1R5cGUpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8aW5wdXQgOnR5cGU9XFxcIlwiICsgZHluYW1pY1R5cGUgKyBcIlxcXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46XFxuXCIgK1xuICAgICAgICBcInYtbW9kZWwgZG9lcyBub3Qgc3VwcG9ydCBkeW5hbWljIGlucHV0IHR5cGVzLiBVc2Ugdi1pZiBicmFuY2hlcyBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBpbnB1dHMgd2l0aCB0eXBlPVwiZmlsZVwiIGFyZSByZWFkIG9ubHkgYW5kIHNldHRpbmcgdGhlIGlucHV0J3NcbiAgICAvLyB2YWx1ZSB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIHR5cGU9XFxcImZpbGVcXFwiPjpcXG5cIiArXG4gICAgICAgIFwiRmlsZSBpbnB1dHMgYXJlIHJlYWQgb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFnID09PSAnc2VsZWN0Jykge1xuICAgIGdlblNlbGVjdChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICBnZW5DaGVja2JveE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ3JhZGlvJykge1xuICAgIGdlblJhZGlvTW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScpIHtcbiAgICBnZW5EZWZhdWx0TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKCFjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgZ2VuQ29tcG9uZW50TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICAgIC8vIGNvbXBvbmVudCB2LW1vZGVsIGRvZXNuJ3QgbmVlZCBleHRyYSBydW50aW1lXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMShcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgXCJ2LW1vZGVsIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBlbGVtZW50IHR5cGUuIFwiICtcbiAgICAgICdJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBjb250ZW50ZWRpdGFibGUsIGl0XFwncyByZWNvbW1lbmRlZCB0byAnICtcbiAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQgZm9yIHRoYXQgcHVycG9zZSBpbnNpZGUgYSBjdXN0b20gY29tcG9uZW50LidcbiAgICApO1xuICB9XG5cbiAgLy8gZW5zdXJlIHJ1bnRpbWUgZGlyZWN0aXZlIG1ldGFkYXRhXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIGdlbkNoZWNrYm94TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhciB0cnVlVmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZhbHVlJykgfHwgJ3RydWUnO1xuICB2YXIgZmFsc2VWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2ZhbHNlLXZhbHVlJykgfHwgJ2ZhbHNlJztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLFxuICAgIFwiQXJyYXkuaXNBcnJheShcIiArIHZhbHVlICsgXCIpXCIgK1xuICAgICAgXCI/X2koXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICAgIHRydWVWYWx1ZUJpbmRpbmcgPT09ICd0cnVlJ1xuICAgICAgICAgID8gKFwiOihcIiArIHZhbHVlICsgXCIpXCIpXG4gICAgICAgICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKVwiKVxuICAgICAgKVxuICApO1xuICBhZGRIYW5kbGVyKGVsLCBDSEVDS0JPWF9SQURJT19UT0tFTixcbiAgICBcInZhciAkJGE9XCIgKyB2YWx1ZSArIFwiLFwiICtcbiAgICAgICAgJyQkZWw9JGV2ZW50LnRhcmdldCwnICtcbiAgICAgICAgXCIkJGM9JCRlbC5jaGVja2VkPyhcIiArIHRydWVWYWx1ZUJpbmRpbmcgKyBcIik6KFwiICsgZmFsc2VWYWx1ZUJpbmRpbmcgKyBcIik7XCIgK1xuICAgICdpZihBcnJheS5pc0FycmF5KCQkYSkpeycgK1xuICAgICAgXCJ2YXIgJCR2PVwiICsgKG51bWJlciA/ICdfbignICsgdmFsdWVCaW5kaW5nICsgJyknIDogdmFsdWVCaW5kaW5nKSArIFwiLFwiICtcbiAgICAgICAgICAnJCRpPV9pKCQkYSwkJHYpOycgK1xuICAgICAgXCJpZigkJGMpeyQkaTwwJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5jb25jYXQoJCR2KSl9XCIgK1xuICAgICAgXCJlbHNleyQkaT4tMSYmKFwiICsgdmFsdWUgKyBcIj0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpKzEpKSl9XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsICckJGMnKSkgKyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdlblJhZGlvTW9kZWwgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAgIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhbHVlQmluZGluZyA9IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpIDogdmFsdWVCaW5kaW5nO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsgdmFsdWUgKyBcIixcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5kaW5nKSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gICAgZWwsXG4gICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlwZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2YXIgYXNzaWdubWVudCA9ICckZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0nO1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBcIiArIHNlbGVjdGVkVmFsICsgXCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYubGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG4gIHZhciBuZWVkQ29tcG9zaXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG4gIHZhciBldmVudCA9IGxhenlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFuZ2UnXG4gICAgICA/IFJBTkdFX1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9ICckZXZlbnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAgaWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAgIGNvZGUgPSBcImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4gIH1cblxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwgbnVtYmVyIHx8IHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXInLCAnJGZvcmNlVXBkYXRlKCknKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5zIHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRhbnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxuLy8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMgY2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50cyAob24pIHtcbiAgdmFyIGV2ZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAgICAvLyBJRSBpbnB1dFt0eXBlPXJhbmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4gICAgZXZlbnQgPSBpc0lFID8gJ2NoYW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtdLmNvbmNhdChvbltSQU5HRV9UT0tFTl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW1JBTkdFX1RPS0VOXTtcbiAgfVxuICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dKSkge1xuICAgIC8vIENocm9tZSBmaXJlcyBtaWNyb3Rhc2tzIGluIGJldHdlZW4gY2xpY2svY2hhbmdlLCBsZWFkcyB0byAjNDUyMVxuICAgIGV2ZW50ID0gaXNDaHJvbWUgPyAnY2xpY2snIDogJ2NoYW5nZSc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0YXJnZXQkMTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgb25jZSQkMSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGlmIChvbmNlJCQxKSB7XG4gICAgdmFyIG9sZEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIHZhciBfdGFyZ2V0ID0gdGFyZ2V0JDE7IC8vIHNhdmUgY3VycmVudCB0YXJnZXQgZWxlbWVudCBpbiBjbG9zdXJlXG4gICAgaGFuZGxlciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBvbGRIYW5kbGVyKGV2KVxuICAgICAgICA6IG9sZEhhbmRsZXIuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgICAgcmVtb3ZlJDIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUsIF90YXJnZXQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgdGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVudCxcbiAgICBoYW5kbGVyLFxuICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQyIChcbiAgZXZlbnQsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4gIF90YXJnZXRcbikge1xuICAoX3RhcmdldCB8fCB0YXJnZXQkMSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3RlbmVycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24pICYmIGlzVW5kZWYodm5vZGUuZGF0YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB0YXJnZXQkMSA9IHZub2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0KTtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5kZWYocHJvcHNba2V5XSkpIHtcbiAgICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5vZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRocm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRDb250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRyZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJykge1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcbiAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWRcbiAgICAgIGVsbS5fdmFsdWUgPSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vyc29yIHBvc2l0aW9uIHdoZW4gdmFsdWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBpc1VuZGVmKGN1cikgPyAnJyA6IFN0cmluZyhjdXIpO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVZhbHVlKGVsbSwgdm5vZGUsIHN0ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2hlY2sgcGxhdGZvcm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5cblxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlVmFsdWUgKFxuICBlbG0sXG4gIHZub2RlLFxuICBjaGVja1ZhbFxuKSB7XG4gIHJldHVybiAoIWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIHZub2RlLnRhZyA9PT0gJ29wdGlvbicgfHxcbiAgICBpc0RpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNJbnB1dENoYW5nZWQoZWxtLCBjaGVja1ZhbClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eSAoZWxtLCBjaGVja1ZhbCkge1xuICAvLyByZXR1cm4gdHJ1ZSB3aGVuIHRleHRib3ggKC5udW1iZXIgYW5kIC50cmltKSBsb3NlcyBmb2N1cyBhbmQgaXRzIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBkYXRlZCB2YWx1ZVxuICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWxtICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmICgoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmllcnMubnVtYmVyKSB8fCBlbG0udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdG9OdW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVmKG1vZGlmaWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFyIGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIgPSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xuICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7XG4gICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4gICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJlbnROb2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52YXIgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rpb24gKGVsLCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjc3NWYXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcbiAgfSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFycmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wiLXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQgdGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBjYW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZhciB0ZXN0RWw7XG52YXIgbm9ybWFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHRlc3RFbCA9IHRlc3RFbCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuICAgIHJldHVybiBwcm9wXG4gIH1cbiAgdmFyIHVwcGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIHVwcGVyO1xuICAgIGlmIChwcmVmaXhlZCBpbiB0ZXN0RWwuc3R5bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFxuICAgIH1cbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlzVW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFyIG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFyIG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxuICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5jZSB0aGUgdXNlciBsaWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwgc3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwgdHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xuICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZhciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHlsZVxufTtcblxuLyogICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMgKyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMpLnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIHZhciB0YXIgPSAnICcgKyBjbHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRleE9mKHRhcikgPj0gMCkge1xuICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyLnRyaW0oKSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpXG4gIDogc2V0VGltZW91dDtcblxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3RyYW5zaXRpb25DbGFzc2VzID0gW10pKS5wdXNoKGNscyk7XG4gIGFkZENsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHJlbW92ZShlbC5fdHJhbnNpdGlvbkNsYXNzZXMsIGNscyk7XG4gIH1cbiAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyAoXG4gIGVsLFxuICBleHBlY3RlZFR5cGUsXG4gIGNiXG4pIHtcbiAgdmFyIHJlZiA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICB2YXIgdGltZW91dCA9IHJlZi50aW1lb3V0O1xuICB2YXIgcHJvcENvdW50ID0gcmVmLnByb3BDb3VudDtcbiAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cbiAgdmFyIGV2ZW50ID0gdHlwZSA9PT0gVFJBTlNJVElPTiA/IHRyYW5zaXRpb25FbmRFdmVudCA6IGFuaW1hdGlvbkVuZEV2ZW50O1xuICB2YXIgZW5kZWQgPSAwO1xuICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbiAgICBjYigpO1xuICB9O1xuICB2YXIgb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwpIHtcbiAgICAgIGlmICgrK2VuZGVkID49IHByb3BDb3VudCkge1xuICAgICAgICBlbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xuICAgICAgZW5kKCk7XG4gICAgfVxuICB9LCB0aW1lb3V0ICsgMSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbn1cblxudmFyIHRyYW5zZm9ybVJFID0gL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLztcblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8gKGVsLCBleHBlY3RlZFR5cGUpIHtcbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcbiAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcbiAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10uc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKSkgKiAxMDAwXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUsIHRvZ2dsZURpc3BsYXkpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVhdmUgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRlclRvQ2xhc3MgPSBkYXRhLmVudGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBkYXRhLmVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG4gIHZhciBhcHBlYXJUb0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBwZWFyQWN0aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJBcHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5jZTtcbiAgdmFyIHRyYW5zaXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGlsZSAodHJhbnNpdGlvbk5vZGUgJiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgdHJhbnNpdGlvbk5vZGUgPSB0cmFuc2l0aW9uTm9kZS5wYXJlbnQ7XG4gICAgY29udGV4dCA9IHRyYW5zaXRpb25Ob2RlLmNvbnRleHQ7XG4gIH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3VudGVkIHx8ICF2bm9kZS5pc1Jvb3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVyQ2xhc3M7XG4gIHZhciBhY3RpdmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgPyBhcHBlYXJBY3RpdmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIHRvQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNzXG4gICAgOiBlbnRlclRvQ2xhc3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYmVmb3JlQXBwZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAgOiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/IChhcHBlYXJDYW5jZWxsZWQgfHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxlZDtcblxuICB2YXIgZXhwbGljaXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhwbGljaXRFbnRlckR1cmF0aW9uICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uLCAnbGVhdmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVhdmVDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcpIHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUua2V5XSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVhdmVDYW5jZWxsZWQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZlKTtcbiAgfSBlbHNlIHtcbiAgICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG4gICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZFxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZWNvcmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBvbmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVyYXRpb24gKHZhbCwgbmFtZSwgdm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtcbiAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJhdGlvbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50IGxlbmd0aC4gVGhlIGhvb2sgbWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3aXRoIHRoZSBvcmlnaW5hbCBpbiAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9kIChjaGVjayAuX2xlbmd0aClcbiAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xuZnVuY3Rpb24gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4pKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4gIGlmIChpc0RlZihpbnZva2VyRm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAgICAgICAgPyBpbnZva2VyRm5zWzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxuXG5mdW5jdGlvbiBfZW50ZXIgKF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICBlbnRlcih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBpbkJyb3dzZXIgPyB7XG4gIGNyZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgICBsZWF2ZSh2bm9kZSwgcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAgZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBidWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9ybU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoID0gY3JlYXRlUGF0Y2hGdW5jdGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVsZXMgfSk7XG5cbi8qKlxuICogTm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IGxpa2UgYXR0YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgbW9kZWwkMSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICB9O1xuICAgICAgY2IoKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgfHwgaXNFZGdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGVsLnR5cGUgPT09ICd0ZXh0JyB8fCBlbC50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXG4gICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgaWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIG5lZWRSZXNldCA9IGVsLm11bHRpcGxlXG4gICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxuICAgICAgICA6IGJpbmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRjaGluZ09wdGlvbihiaW5kaW5nLnZhbHVlLCBlbC5vcHRpb25zKTtcbiAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb25zW2ldKSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4gb3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUpIHtcbiAgLy8gcHJldmVudCB0cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25cbiAgaWYgKCFlLnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRyaWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlwZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxuXG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9uIGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAodm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmICghdm5vZGUuZGF0YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgdmFyIG9yaWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHZhbHVlICYmIHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xkVmFsdWUgPSByZWYub2xkVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodmFsdWUgPT09IG9sZFZhbHVlKSB7IHJldHVybiB9XG4gICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAgIGlmICh0cmFuc2l0aW9uICYmICFpc0lFOSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgVHJhbnNpdGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZzsgfSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdhcm4gbXVsdGlwbGUgZWxlbWVudHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9kZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBtb2RlICYmIG1vZGUgIT09ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nXG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJyArIG1vZGUsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcmF3Q2hpbGQgPSBjaGlsZHJlblswXTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQgcm9vdCBub2RlIGFuZCB0aGUgY29tcG9uZW50J3NcbiAgICAvLyBwYXJlbnQgY29udGFpbmVyIG5vZGUgYWxzbyBoYXMgdHJhbnNpdGlvbiwgc2tpcC5cbiAgICBpZiAoaGFzUGFyZW50VHJhbnNpdGlvbih0aGlzLiR2bm9kZSkpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIC8vIGFwcGx5IHRyYW5zaXRpb24gZGF0YSB0byBjaGlsZFxuICAgIC8vIHVzZSBnZXRSZWFsQ2hpbGQoKSB0byBpZ25vcmUgYWJzdHJhY3QgY29tcG9uZW50cyBlLmcuIGtlZXAtYWxpdmVcbiAgICB2YXIgY2hpbGQgPSBnZXRSZWFsQ2hpbGQocmF3Q2hpbGQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9sZWF2aW5nKSB7XG4gICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGEga2V5IHRoYXQgaXMgdW5pcXVlIHRvIHRoZSB2bm9kZSB0eXBlIGFuZCB0byB0aGlzIHRyYW5zaXRpb25cbiAgICAvLyBjb21wb25lbnQgaW5zdGFuY2UuIFRoaXMga2V5IHdpbGwgYmUgdXNlZCB0byByZW1vdmUgcGVuZGluZyBsZWF2aW5nIG5vZGVzXG4gICAgLy8gZHVyaW5nIGVudGVyaW5nLlxuICAgIHZhciBpZCA9IFwiX190cmFuc2l0aW9uLVwiICsgKHRoaXMuX3VpZCkgKyBcIi1cIjtcbiAgICBjaGlsZC5rZXkgPSBjaGlsZC5rZXkgPT0gbnVsbFxuICAgICAgPyBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG9sZENoaWxkICYmIG9sZENoaWxkLmRhdGEgJiYgIWlzU2FtZUNoaWxkKGNoaWxkLCBvbGRDaGlsZCkpIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRpb24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBkeW5hbWljIHRyYW5zaXRpb25zIVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZCAmJiAob2xkQ2hpbGQuZGF0YS50cmFuc2l0aW9uID0gZXh0ZW5kKHt9LCBkYXRhKSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xlYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIHZhciBkZWxheWVkTGVhdmU7XG4gICAgICAgIHZhciBwZXJmb3JtTGVhdmUgPSBmdW5jdGlvbiAoKSB7IGRlbGF5ZWRMZWF2ZSgpOyB9O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnYWZ0ZXJFbnRlcicsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxlZCcsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxheUxlYXZlJywgZnVuY3Rpb24gKGxlYXZlKSB7IGRlbGF5ZWRMZWF2ZSA9IGxlYXZlOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1cHBvcnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBCZWNhdXNlIHRoZSB2ZG9tJ3MgY2hpbGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxlXCIgLSBpLmUuXG4vLyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcgb2YgcmVtb3ZlZCBlbGVtZW50cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8gdXBkYXRlIGl0cyBjaGlsZHJlbiBpbnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFzcywgd2UgcmVtb3ZlIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdnZXJpbmcgdGhlaXIgbGVhdmluZyB0cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2VydC9tb3ZlXG4vLyBpbnRvIHRoZSBmaW5hbCBkZXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0aGUgc2Vjb25kIHBhc3MgcmVtb3ZlZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBzaG91bGQgYmUuXG5cbnZhciBwcm9wcyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3ZlQ2xhc3M6IFN0cmluZ1xufSwgdHJhbnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7XG5cbnZhciBUcmFuc2l0aW9uR3JvdXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2bm9kZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlvbkRhdGEgPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxkcmVuW2ldO1xuICAgICAgaWYgKGMudGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYmIFN0cmluZyhjLmtleSkuaW5kZXhPZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjKTtcbiAgICAgICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5kYXRhIHx8IChjLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRzID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4gICAgICAgICAgd2FybigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZDogPFwiICsgbmFtZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJldkNoaWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJlbW92ZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAgICAgICAgYyQxLmRhdGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobWFwW2MkMS5rZXldKSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMua2VwdCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAgfSxcblxuICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5vZGUsXG4gICAgICB0aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0cnVlIC8vIHJlbW92ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3ZlcylcbiAgICApO1xuICAgIHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oYXNNb3ZlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRUYWcgPSBpc1Jlc2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlJDMuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4dGVuZChWdWUkMy5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlJDMub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9fID0gaW5Ccm93c2VyID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykge1xuICAgICAgZGV2dG9vbHMuZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNDaHJvbWUpIHtcbiAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAnRG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xzJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBjb25maWcucHJvZHVjdGlvblRpcCAhPT0gZmFsc2UgJiZcbiAgICBpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnXG4gICkge1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgXCJNYWtlIHN1cmUgdG8gdHVybiBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9yIHByb2R1Y3Rpb24uXFxuXCIgK1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5cbi8qICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xuZnVuY3Rpb24gc2hvdWxkRGVjb2RlIChjb250ZW50LCBlbmNvZGVkKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IFwiPGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCI+XCI7XG4gIHJldHVybiBkaXYuaW5uZXJIVE1MLmluZGV4T2YoZW5jb2RlZCkgPiAwXG59XG5cbi8vICMzNjYzXG4vLyBJRSBlbmNvZGVzIG5ld2xpbmVzIGluc2lkZSBhdHRyaWJ1dGUgdmFsdWVzIHdoaWxlIG90aGVyIGJyb3dzZXJzIGRvbid0XG52YXIgc2hvdWxkRGVjb2RlTmV3bGluZXMgPSBpbkJyb3dzZXIgPyBzaG91bGREZWNvZGUoJ1xcbicsICcmIzEwOycpIDogZmFsc2U7XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4gICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbiwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxlbWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4gICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlJ1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVudCBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAgJ3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xuXG5mdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRlY29kZXIuaW5uZXJIVE1MID0gaHRtbDtcbiAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbn1cblxuLyoqXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAqL1xuXG4vKiFcbiAqIEhUTUwgUGFyc2VyIEJ5IEpvaG4gUmVzaWcgKGVqb2huLm9yZylcbiAqIE1vZGlmaWVkIGJ5IEp1cml5IFwia2FuZ2F4XCIgWmF5dHNldlxuICogT3JpZ2luYWwgY29kZSBieSBFcmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuICogaHR0cDovL2VyaWsuZWFlLm5ldC9zaW1wbGVodG1scGFyc2VyL3NpbXBsZWh0bWxwYXJzZXIuanNcbiAqL1xuXG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBzaW5nbGVBdHRySWRlbnRpZmllciA9IC8oW15cXHNcIic8Pi89XSspLztcbnZhciBzaW5nbGVBdHRyQXNzaWduID0gLyg/Oj0pLztcbnZhciBzaW5nbGVBdHRyVmFsdWVzID0gW1xuICAvLyBhdHRyIHZhbHVlIGRvdWJsZSBxdW90ZXNcbiAgL1wiKFteXCJdKilcIisvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgc2luZ2xlIHF1b3Rlc1xuICAvJyhbXiddKiknKy8uc291cmNlLFxuICAvLyBhdHRyIHZhbHVlLCBubyBxdW90ZXNcbiAgLyhbXlxcc1wiJz08PmBdKykvLnNvdXJjZVxuXTtcbnZhciBhdHRyaWJ1dGUgPSBuZXcgUmVnRXhwKFxuICAnXlxcXFxzKicgKyBzaW5nbGVBdHRySWRlbnRpZmllci5zb3VyY2UgK1xuICAnKD86XFxcXHMqKCcgKyBzaW5nbGVBdHRyQXNzaWduLnNvdXJjZSArICcpJyArXG4gICdcXFxccyooPzonICsgc2luZ2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAnKSk/J1xuKTtcblxuLy8gY291bGQgdXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2UgY2FuIGVuZm9yY2UgYSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxcXHdcXFxcLVxcXFwuXSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdcXFxcOik/JyArIG5jbmFtZSArICcpJztcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKCdePCcgKyBxbmFtZUNhcHR1cmUpO1xudmFyIHN0YXJ0VGFnQ2xvc2UgPSAvXlxccyooXFwvPyk+LztcbnZhciBlbmRUYWcgPSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5dKj4nKTtcbnZhciBkb2N0eXBlID0gL148IURPQ1RZUEUgW14+XSs+L2k7XG52YXIgY29tbWVudCA9IC9ePCEtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbnZhciBJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOID0gZmFsc2U7XG4neCcucmVwbGFjZSgveCguKT8vZywgZnVuY3Rpb24gKG0sIGcpIHtcbiAgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGcgPT09ICcnO1xufSk7XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzUGxhaW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8JyxcbiAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4gICcmIzEwOyc6ICdcXG4nXG59O1xudmFyIGVuY29kZWRBdHRyID0gLyYoPzpsdHxndHxxdW90fGFtcCk7L2c7XG52YXIgZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgPSAvJig/Omx0fGd0fHF1b3R8YW1wfCMxMCk7L2c7XG5cbmZ1bmN0aW9uIGRlY29kZUF0dHIgKHZhbHVlLCBzaG91bGREZWNvZGVOZXdsaW5lcykge1xuICB2YXIgcmUgPSBzaG91bGREZWNvZGVOZXdsaW5lcyA/IGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzIDogZW5jb2RlZEF0dHI7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJuIGRlY29kaW5nTWFwW21hdGNoXTsgfSlcbn1cblxuZnVuY3Rpb24gcGFyc2VIVE1MIChodG1sLCBvcHRpb25zKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgZXhwZWN0SFRNTCA9IG9wdGlvbnMuZXhwZWN0SFRNTDtcbiAgdmFyIGlzVW5hcnlUYWckJDEgPSBvcHRpb25zLmlzVW5hcnlUYWcgfHwgbm87XG4gIHZhciBjYW5CZUxlZnRPcGVuVGFnJCQxID0gb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFnIHx8IG5vO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdCwgbGFzdFRhZztcbiAgd2hpbGUgKGh0bWwpIHtcbiAgICBsYXN0ID0gaHRtbDtcbiAgICAvLyBNYWtlIHN1cmUgd2UncmUgbm90IGluIGEgcGxhaW50ZXh0IGNvbnRlbnQgZWxlbWVudCBsaWtlIHNjcmlwdC9zdHlsZVxuICAgIGlmICghbGFzdFRhZyB8fCAhaXNQbGFpblRleHRFbGVtZW50KGxhc3RUYWcpKSB7XG4gICAgICB2YXIgdGV4dEVuZCA9IGh0bWwuaW5kZXhPZignPCcpO1xuICAgICAgaWYgKHRleHRFbmQgPT09IDApIHtcbiAgICAgICAgLy8gQ29tbWVudDpcbiAgICAgICAgaWYgKGNvbW1lbnQudGVzdChodG1sKSkge1xuICAgICAgICAgIHZhciBjb21tZW50RW5kID0gaHRtbC5pbmRleE9mKCctLT4nKTtcblxuICAgICAgICAgIGlmIChjb21tZW50RW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QkMSA9ICh2b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAgIHJlc3QkMSA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAhZW5kVGFnLnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIWNvbW1lbnQudGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIWNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KHJlc3QkMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAgICAgICAgICBuZXh0ID0gcmVzdCQxLmluZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAgICAgICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRleHQgPSBodG1sLnN1YnN0cmluZygwLCB0ZXh0RW5kKTtcbiAgICAgICAgYWR2YW5jZSh0ZXh0RW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHRFbmQgPCAwKSB7XG4gICAgICAgIHRleHQgPSBodG1sO1xuICAgICAgICBodG1sID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNoYXJzICYmIHRleHQpIHtcbiAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtzdGFja2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRhZyArICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZhciByZXN0ID0gaHRtbC5yZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVuZFRhZ0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVtZW50KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vZywgJyQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+L2csICckMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzKSB7XG4gICAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH0pO1xuICAgICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0Lmxlbmd0aDtcbiAgICAgIGh0bWwgPSByZXN0O1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0YWNrLmxlbmd0aCAmJiBvcHRpb25zLndhcm4pIHtcbiAgICAgICAgb3B0aW9ucy53YXJuKChcIk1hbC1mb3JtYXR0ZWQgdGFnIGF0IGVuZCBvZiB0ZW1wbGF0ZTogXFxcIlwiICsgaHRtbCArIFwiXFxcIlwiKSk7XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChhdHRyaWJ1dGUpKSkge1xuICAgICAgICBhZHZhbmNlKGF0dHJbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guYXR0cnMucHVzaChhdHRyKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgbWF0Y2gudW5hcnlTbGFzaCA9IGVuZFsxXTtcbiAgICAgICAgYWR2YW5jZShlbmRbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guZW5kID0gaW5kZXg7XG4gICAgICAgIHJldHVybiBtYXRjaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0VGFnIChtYXRjaCkge1xuICAgIHZhciB0YWdOYW1lID0gbWF0Y2gudGFnTmFtZTtcbiAgICB2YXIgdW5hcnlTbGFzaCA9IG1hdGNoLnVuYXJ5U2xhc2g7XG5cbiAgICBpZiAoZXhwZWN0SFRNTCkge1xuICAgICAgaWYgKGxhc3RUYWcgPT09ICdwJyAmJiBpc05vblBocmFzaW5nVGFnKHRhZ05hbWUpKSB7XG4gICAgICAgIHBhcnNlRW5kVGFnKGxhc3RUYWcpO1xuICAgICAgfVxuICAgICAgaWYgKGNhbkJlTGVmdE9wZW5UYWckJDEodGFnTmFtZSkgJiYgbGFzdFRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICBwYXJzZUVuZFRhZyh0YWdOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8IHRhZ05hbWUgPT09ICdodG1sJyAmJiBsYXN0VGFnID09PSAnaGVhZCcgfHwgISF1bmFyeVNsYXNoO1xuXG4gICAgdmFyIGwgPSBtYXRjaC5hdHRycy5sZW5ndGg7XG4gICAgdmFyIGF0dHJzID0gbmV3IEFycmF5KGwpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYXJncyA9IG1hdGNoLmF0dHJzW2ldO1xuICAgICAgLy8gaGFja2lzaCB3b3JrIGFyb3VuZCBGRiBidWcgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4XG4gICAgICBpZiAoSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiAmJiBhcmdzWzBdLmluZGV4T2YoJ1wiXCInKSA9PT0gLTEpIHtcbiAgICAgICAgaWYgKGFyZ3NbM10gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzNdOyB9XG4gICAgICAgIGlmIChhcmdzWzRdID09PSAnJykgeyBkZWxldGUgYXJnc1s0XTsgfVxuICAgICAgICBpZiAoYXJnc1s1XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNV07IH1cbiAgICAgIH1cbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3NbM10gfHwgYXJnc1s0XSB8fCBhcmdzWzVdIHx8ICcnO1xuICAgICAgYXR0cnNbaV0gPSB7XG4gICAgICAgIG5hbWU6IGFyZ3NbMV0sXG4gICAgICAgIHZhbHVlOiBkZWNvZGVBdHRyKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXNcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICBzdGFjay5wdXNoKHsgdGFnOiB0YWdOYW1lLCBsb3dlckNhc2VkVGFnOiB0YWdOYW1lLnRvTG93ZXJDYXNlKCksIGF0dHJzOiBhdHRycyB9KTtcbiAgICAgIGxhc3RUYWcgPSB0YWdOYW1lO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIGF0dHJzLCB1bmFyeSwgbWF0Y2guc3RhcnQsIG1hdGNoLmVuZCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VFbmRUYWcgKHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgcG9zLCBsb3dlckNhc2VkVGFnTmFtZTtcbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkgeyBzdGFydCA9IGluZGV4OyB9XG4gICAgaWYgKGVuZCA9PSBudWxsKSB7IGVuZCA9IGluZGV4OyB9XG5cbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgbG93ZXJDYXNlZFRhZ05hbWUgPSB0YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgY2xvc2VzdCBvcGVuZWQgdGFnIG9mIHRoZSBzYW1lIHR5cGVcbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgZm9yIChwb3MgPSBzdGFjay5sZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10ubG93ZXJDYXNlZFRhZyA9PT0gbG93ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1lIGlzIHByb3ZpZGVkLCBjbGVhbiBzaG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgLy8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUgc3RhY2tcbiAgICAgIGZvciAodmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsgaS0tKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgKGkgPiBwb3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9ucy53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20gdGhlIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAnYnInKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuZnVuY3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVyc1xuKSB7XG4gIHZhciB0YWdSRSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMpIDogZGVmYXVsdFRhZ1JFO1xuICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4KSkpO1xuICB9XG4gIHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xuXG52YXIgb25SRSA9IC9eQHxedi1vbjovO1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxccysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159XSpcXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmllclJFID0gL1xcLlteLl0rL2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGRlY29kZSk7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1MIHN0cmluZyB0byBBU1QuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB3YXJuJDIgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHBsYXRmb3JtTXVzdFVzZVByb3AgPSBvcHRpb25zLm11c3RVc2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcHJlVHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xuICB0cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuICBkZWxpbWl0ZXJzID0gb3B0aW9ucy5kZWxpbWl0ZXJzO1xuXG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNwYWNlID0gb3B0aW9ucy5wcmVzZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtcbiAgdmFyIGN1cnJlbnRQYXJlbnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJlID0gZmFsc2U7XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAobXNnKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtcbiAgICAvLyBjaGVjayBwcmUgc3RhdGVcbiAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGluVlByZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAgIGluUHJlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7XG4gICAgd2Fybjogd2FybiQyLFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhwZWN0SFRNTCxcbiAgICBpc1VuYXJ5VGFnOiBvcHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVMZWZ0T3BlblRhZzogb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCAodGFnLCBhdHRycywgdW5hcnkpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0ge1xuICAgICAgICB0eXBlOiAxLFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICAgICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAgICAgIHBhcmVudDogY3VycmVudFBhcmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9O1xuICAgICAgaWYgKG5zKSB7XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJhbnNmb3Jtc1tpXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAgICAgICAgaW5WUHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQcmVUYWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc0lmKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc0tleShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1vdmluZyBzdHJ1Y3R1cmFsIGF0dHJpYnV0ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVtZW50LmtleSAmJiAhYXR0cnMubGVuZ3RoO1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NTbG90KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGVja1Jvb3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09PSAnc2xvdCcgfHwgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNvbXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAgICAgICAnY29udGFpbiBtdWx0aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdpdCByZW5kZXJzIG11bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgICAgaWYgKCFyb290KSB7XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhyb290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuICAgICAgICAvLyBhbGxvdyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFuZCB2LWVsc2VcbiAgICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQuZWxzZWlmLFxuICAgICAgICAgICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICAgIFwiSWYgeW91IGFyZSB1c2luZyB2LWlmIG9uIG11bHRpcGxlIGVsZW1lbnRzLCBcIiArXG4gICAgICAgICAgICBcInVzZSB2LWVsc2UtaWYgdG8gY2hhaW4gdGhlbSBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRQYXJlbnQgJiYgIWVsZW1lbnQuZm9yYmlkZGVuKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVsc2UpIHtcbiAgICAgICAgICBwcm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7IC8vIHNjb3BlZCBzbG90XG4gICAgICAgICAgY3VycmVudFBhcmVudC5wbGFpbiA9IGZhbHNlO1xuICAgICAgICAgIHZhciBuYW1lID0gZWxlbWVudC5zbG90VGFyZ2V0IHx8ICdcImRlZmF1bHRcIic7KGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgfHwgKGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgPSB7fSkpW25hbWVdID0gZWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmNoaWxkcmVuLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50UGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQgPSBlbGVtZW50O1xuICAgICAgICBzdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gYXBwbHkgcG9zdC10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBwb3N0VHJhbnNmb3Jtcy5sZW5ndGg7IGkkMisrKSB7XG4gICAgICAgIHBvc3RUcmFuc2Zvcm1zW2kkMl0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZDogZnVuY3Rpb24gZW5kICgpIHtcbiAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAgICB2YXIgZWxlbWVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIGxhc3ROb2RlID0gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGxhc3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IDMgJiYgbGFzdE5vZGUudGV4dCA9PT0gJyAnICYmICFpblByZSkge1xuICAgICAgICBlbGVtZW50LmNoaWxkcmVuLnBvcCgpO1xuICAgICAgfVxuICAgICAgLy8gcG9wIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGVuZFByZShlbGVtZW50KTtcbiAgICB9LFxuXG4gICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICB0ZXh0ID0gaW5QcmUgfHwgdGV4dC50cmltKClcbiAgICAgICAgPyBpc1RleHRUYWcoY3VycmVudFBhcmVudCkgPyB0ZXh0IDogZGVjb2RlSFRNTENhY2hlZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNlcnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5vdCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAgICAgICA6IHByZXNlcnZlV2hpdGVzcGFjZSAmJiBjaGlsZHJlbi5sZW5ndGggPyAnICcgOiAnJztcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHZhciBleHByZXNzaW9uO1xuICAgICAgICBpZiAoIWluVlByZSAmJiB0ZXh0ICE9PSAnICcgJiYgKGV4cHJlc3Npb24gPSBwYXJzZVRleHQodGV4dCwgZGVsaW1pdGVycykpKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0ICE9PSAnICcgfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS50ZXh0ICE9PSAnICcpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDMsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFyIGkgPSBjaGlsZHJlbi5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5baV0udHlwZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuW2ldLnRleHQgIT09ICcgJykge1xuICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxcXCJcIiArIChjaGlsZHJlbltpXS50ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFuZCB2LWVsc2UoLWlmKSBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRJZkNvbmRpdGlvbiAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29uZGl0aW9ucykge1xuICAgIGVsLmlmQ29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xuICB2YXIgb25jZSQkMSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9uY2UkJDEgIT0gbnVsbCkge1xuICAgIGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NTbG90IChlbCkge1xuICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5zbG90TmFtZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGVsLmtleSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcImBrZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFic3RyYWN0IG91dGxldHMgXCIgK1xuICAgICAgICBcImFuZCBjYW4gcG9zc2libHkgZXhwYW5kIGludG8gbXVsdGlwbGUgZWxlbWVudHMuIFwiICtcbiAgICAgICAgXCJVc2UgdGhlIGtleSBvbiBhIHdyYXBwaW5nIGVsZW1lbnQgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcbiAgICBpZiAoc2xvdFRhcmdldCkge1xuICAgICAgZWwuc2xvdFRhcmdldCA9IHNsb3RUYXJnZXQgPT09ICdcIlwiJyA/ICdcImRlZmF1bHRcIicgOiBzbG90VGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICBlbC5zbG90U2NvcGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnc2NvcGUnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NvbXBvbmVudCAoZWwpIHtcbiAgdmFyIGJpbmRpbmc7XG4gIGlmICgoYmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnaXMnKSkpIHtcbiAgICBlbC5jb21wb25lbnQgPSBiaW5kaW5nO1xuICB9XG4gIGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAnaW5saW5lLXRlbXBsYXRlJykgIT0gbnVsbCkge1xuICAgIGVsLmlubGluZVRlbXBsYXRlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQXR0cnMgKGVsKSB7XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICB2YXIgaSwgbCwgbmFtZSwgcmF3TmFtZSwgdmFsdWUsIG1vZGlmaWVycywgaXNQcm9wO1xuICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBuYW1lID0gcmF3TmFtZSA9IGxpc3RbaV0ubmFtZTtcbiAgICB2YWx1ZSA9IGxpc3RbaV0udmFsdWU7XG4gICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgIC8vIG1hcmsgZWxlbWVudCBhcyBkeW5hbWljXG4gICAgICBlbC5oYXNCaW5kaW5ncyA9IHRydWU7XG4gICAgICAvLyBtb2RpZmllcnNcbiAgICAgIG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJzKG5hbWUpO1xuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1lKSkgeyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtcbiAgICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc1Byb3AgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICAgIGlmIChtb2RpZmllcnMucHJvcCkge1xuICAgICAgICAgICAgaXNQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaW5uZXJIdG1sJykgeyBuYW1lID0gJ2lubmVySFRNTCc7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5jYW1lbCkge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnN5bmMpIHtcbiAgICAgICAgICAgIGFkZEhhbmRsZXIoXG4gICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2FtZWxpemUobmFtZSkpKSxcbiAgICAgICAgICAgICAgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwiJGV2ZW50XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9wIHx8IHBsYXRmb3JtTXVzdFVzZVByb3AoZWwudGFnLCBlbC5hdHRyc01hcC50eXBlLCBuYW1lKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFnID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3QgYWJsZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY1Jvb3RzIChub2RlLCBpc0luRm9yKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBpZiAobm9kZS5zdGF0aWMgfHwgbm9kZS5vbmNlKSB7XG4gICAgICBub2RlLnN0YXRpY0luRm9yID0gaXNJbkZvcjtcbiAgICB9XG4gICAgLy8gRm9yIGEgbm9kZSB0byBxdWFsaWZ5IGFzIGEgc3RhdGljIHJvb3QsIGl0IHNob3VsZCBoYXZlIGNoaWxkcmVuIHRoYXRcbiAgICAvLyBhcmUgbm90IGp1c3Qgc3RhdGljIHRleHQuIE90aGVyd2lzZSB0aGUgY29zdCBvZiBob2lzdGluZyBvdXQgd2lsbFxuICAgIC8vIG91dHdlaWdoIHRoZSBiZW5lZml0cyBhbmQgaXQncyBiZXR0ZXIgb2ZmIHRvIGp1c3QgYWx3YXlzIHJlbmRlciBpdCBmcmVzaC5cbiAgICBpZiAobm9kZS5zdGF0aWMgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgIShcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IDNcbiAgICApKSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3QgPSB0cnVlO1xuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBtYXJrU3RhdGljUm9vdHMobm9kZS5jaGlsZHJlbltpXSwgaXNJbkZvciB8fCAhIW5vZGUuZm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICB3YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3Mobm9kZS5pZkNvbmRpdGlvbnMsIGlzSW5Gb3IpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3MgKGNvbmRpdGlvbkJsb2NrcywgaXNJbkZvcikge1xuICBmb3IgKHZhciBpID0gMSwgbGVuID0gY29uZGl0aW9uQmxvY2tzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbWFya1N0YXRpY1Jvb3RzKGNvbmRpdGlvbkJsb2Nrc1tpXS5ibG9jaywgaXNJbkZvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAvLyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gMykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5wcmUgfHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAgICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5vZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxcKC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVsbCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIgbW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4gIHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5HdWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5zaGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRhOiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICByaWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZlLFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZlbnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBjbGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBuYW1lID09PSAnY2xpY2snICYmXG4gICAgICBoYW5kbGVyICYmIGhhbmRsZXIubW9kaWZpZXJzICYmIGhhbmRsZXIubW9kaWZpZXJzLnJpZ2h0XG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlVzZSBcXFwiY29udGV4dG1lbnVcXFwiIGluc3RlYWQgb2YgXFxcImNsaWNrLnJpZ2h0XFxcIiBzaW5jZSByaWdodCBjbGlja3MgXCIgK1xuICAgICAgICBcImRvIG5vdCBhY3R1YWxseSBmaXJlIFxcXCJjbGlja1xcXCIgZXZlbnRzLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXMgKz0gXCJcXFwiXCIgKyBuYW1lICsgXCJcXFwiOlwiICsgKGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcikpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnfSdcbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAoXG4gIG5hbWUsXG4gIGhhbmRsZXJcbikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gZ2VuSGFuZGxlcihuYW1lLCBoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG5cbiAgaWYgKCFoYW5kbGVyLm1vZGlmaWVycykge1xuICAgIHJldHVybiBpc01ldGhvZFBhdGggfHwgaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgID8gaGFuZGxlci52YWx1ZVxuICAgICAgOiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIpIC8vIGlubGluZSBzdGF0ZW1lbnRcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29kZSA9ICcnO1xuICAgIHZhciBnZW5Nb2RpZmllckNvZGUgPSAnJztcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBoYW5kbGVyLm1vZGlmaWVycykge1xuICAgICAgaWYgKG1vZGlmaWVyQ29kZVtrZXldKSB7XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBtb2RpZmllckNvZGVba2V5XTtcbiAgICAgICAgLy8gbGVmdC9yaWdodFxuICAgICAgICBpZiAoa2V5Q29kZXNba2V5XSkge1xuICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBjb2RlICs9IGdlbktleUZpbHRlcihrZXlzKTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIG1vZGlmaWVycyBsaWtlIHByZXZlbnQgYW5kIHN0b3AgZ2V0IGV4ZWN1dGVkIGFmdGVyIGtleSBmaWx0ZXJpbmdcbiAgICBpZiAoZ2VuTW9kaWZpZXJDb2RlKSB7XG4gICAgICBjb2RlICs9IGdlbk1vZGlmaWVyQ29kZTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZXJDb2RlID0gaXNNZXRob2RQYXRoXG4gICAgICA/IGhhbmRsZXIudmFsdWUgKyAnKCRldmVudCknXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICAgID8gKFwiKFwiICsgKGhhbmRsZXIudmFsdWUpICsgXCIpKCRldmVudClcIilcbiAgICAgICAgOiBoYW5kbGVyLnZhbHVlO1xuICAgIHJldHVybiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgY29kZSArIGhhbmRsZXJDb2RlICsgXCJ9XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuS2V5RmlsdGVyIChrZXlzKSB7XG4gIHJldHVybiAoXCJpZighKCdidXR0b24nIGluICRldmVudCkmJlwiICsgKGtleXMubWFwKGdlbkZpbHRlckNvZGUpLmpvaW4oJyYmJykpICsgXCIpcmV0dXJuIG51bGw7XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIgYWxpYXMgPSBrZXlDb2Rlc1trZXldO1xuICByZXR1cm4gKFwiX2soJGV2ZW50LmtleUNvZGUsXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5KSkgKyAoYWxpYXMgPyAnLCcgKyBKU09OLnN0cmluZ2lmeShhbGlhcykgOiAnJykgKyBcIilcIilcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmQkMSAoZWwsIGRpcikge1xuICBlbC53cmFwRGF0YSA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIChcIl9iKFwiICsgY29kZSArIFwiLCdcIiArIChlbC50YWcpICsgXCInLFwiICsgKGRpci52YWx1ZSkgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnByb3AgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYmFzZURpcmVjdGl2ZXMgPSB7XG4gIGJpbmQ6IGJpbmQkMSxcbiAgY2xvYWs6IG5vb3Bcbn07XG5cbi8qICAqL1xuXG4vLyBjb25maWd1cmFibGUgc3RhdGVcbnZhciB3YXJuJDM7XG52YXIgdHJhbnNmb3JtcyQxO1xudmFyIGRhdGFHZW5GbnM7XG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzJDE7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnJDE7XG52YXIgc3RhdGljUmVuZGVyRm5zO1xudmFyIG9uY2VDb3VudDtcbnZhciBjdXJyZW50T3B0aW9ucztcblxuZnVuY3Rpb24gZ2VuZXJhdGUgKFxuICBhc3QsXG4gIG9wdGlvbnNcbikge1xuICAvLyBzYXZlIHByZXZpb3VzIHN0YXRpY1JlbmRlckZucyBzbyBnZW5lcmF0ZSBjYWxscyBjYW4gYmUgbmVzdGVkXG4gIHZhciBwcmV2U3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuICB2YXIgY3VycmVudFN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucyA9IFtdO1xuICB2YXIgcHJldk9uY2VDb3VudCA9IG9uY2VDb3VudDtcbiAgb25jZUNvdW50ID0gMDtcbiAgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zO1xuICB3YXJuJDMgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRyYW5zZm9ybXMkMSA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICBkYXRhR2VuRm5zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdnZW5EYXRhJyk7XG4gIHBsYXRmb3JtRGlyZWN0aXZlcyQxID0gb3B0aW9ucy5kaXJlY3RpdmVzIHx8IHt9O1xuICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMSA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCkgOiAnX2MoXCJkaXZcIiknO1xuICBzdGF0aWNSZW5kZXJGbnMgPSBwcmV2U3RhdGljUmVuZGVyRm5zO1xuICBvbmNlQ291bnQgPSBwcmV2T25jZUNvdW50O1xuICByZXR1cm4ge1xuICAgIHJlbmRlcjogKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyBjb2RlICsgXCJ9XCIpLFxuICAgIHN0YXRpY1JlbmRlckZuczogY3VycmVudFN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsKSB7XG4gIGlmIChlbC5zdGF0aWNSb290ICYmICFlbC5zdGF0aWNQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsKVxuICB9IGVsc2UgaWYgKGVsLm9uY2UgJiYgIWVsLm9uY2VQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuT25jZShlbClcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwpXG4gIH0gZWxzZSBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJyAmJiAhZWwuc2xvdFRhcmdldCkge1xuICAgIHJldHVybiBnZW5DaGlsZHJlbihlbCkgfHwgJ3ZvaWQgMCdcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVybiBnZW5TbG90KGVsKVxuICB9IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4gICAgdmFyIGNvZGU7XG4gICAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNvbXBvbmVudChlbC5jb21wb25lbnQsIGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGRhdGEgPSBlbC5wbGFpbiA/IHVuZGVmaW5lZCA6IGdlbkRhdGEoZWwpO1xuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygnXCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAvLyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJhbnNmb3JtcyQxLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb2RlID0gdHJhbnNmb3JtcyQxW2ldKGVsLCBjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuXG4vLyBob2lzdCBzdGF0aWMgc3ViLXRyZWVzIG91dFxuZnVuY3Rpb24gZ2VuU3RhdGljIChlbCkge1xuICBlbC5zdGF0aWNQcm9jZXNzZWQgPSB0cnVlO1xuICBzdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsKSkgKyBcIn1cIikpO1xuICByZXR1cm4gKFwiX20oXCIgKyAoc3RhdGljUmVuZGVyRm5zLmxlbmd0aCAtIDEpICsgKGVsLnN0YXRpY0luRm9yID8gJyx0cnVlJyA6ICcnKSArIFwiKVwiKVxufVxuXG4vLyB2LW9uY2VcbmZ1bmN0aW9uIGdlbk9uY2UgKGVsKSB7XG4gIGVsLm9uY2VQcm9jZXNzZWQgPSB0cnVlO1xuICBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMyhcbiAgICAgICAgXCJ2LW9uY2UgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgdi1mb3IgdGhhdCBpcyBrZXllZC4gXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbClcbiAgICB9XG4gICAgcmV0dXJuIChcIl9vKFwiICsgKGdlbkVsZW1lbnQoZWwpKSArIFwiLFwiICsgKG9uY2VDb3VudCsrKSArIChrZXkgPyAoXCIsXCIgKyBrZXkpIDogXCJcIikgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklmIChlbCkge1xuICBlbC5pZlByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gZ2VuSWZDb25kaXRpb25zKGVsLmlmQ29uZGl0aW9ucy5zbGljZSgpKVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKGNvbmRpdGlvbnMpIHtcbiAgaWYgKCFjb25kaXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiAnX2UoKSdcbiAgfVxuXG4gIHZhciBjb25kaXRpb24gPSBjb25kaXRpb25zLnNoaWZ0KCk7XG4gIGlmIChjb25kaXRpb24uZXhwKSB7XG4gICAgcmV0dXJuIChcIihcIiArIChjb25kaXRpb24uZXhwKSArIFwiKT9cIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpICsgXCI6XCIgKyAoZ2VuSWZDb25kaXRpb25zKGNvbmRpdGlvbnMpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiXCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSlcbiAgfVxuXG4gIC8vIHYtaWYgd2l0aCB2LW9uY2Ugc2hvdWxkIGdlbmVyYXRlIGNvZGUgbGlrZSAoYSk/X20oMCk6X20oMSlcbiAgZnVuY3Rpb24gZ2VuVGVybmFyeUV4cCAoZWwpIHtcbiAgICByZXR1cm4gZWwub25jZSA/IGdlbk9uY2UoZWwpIDogZ2VuRWxlbWVudChlbClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5Gb3IgKGVsKSB7XG4gIHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAnJztcblxuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIG1heWJlQ29tcG9uZW50KGVsKSAmJiBlbC50YWcgIT09ICdzbG90JyAmJiBlbC50YWcgIT09ICd0ZW1wbGF0ZScgJiYgIWVsLmtleVxuICApIHtcbiAgICB3YXJuJDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKGdlbkVsZW1lbnQoZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChlbCkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBkaXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhleSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwpO1xuICBpZiAoZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYgKGVsLmtleSkge1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9XG4gIC8vIHJlZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJlZkluRm9yOnRydWUsXCI7XG4gIH1cbiAgLy8gcHJlXG4gIGlmIChlbC5wcmUpIHtcbiAgICBkYXRhICs9IFwicHJlOnRydWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZvciBjb21wb25lbnRzIHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGRhdGEgKz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1cbiAgLy8gbW9kdWxlIGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhR2VuRm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBkYXRhR2VuRm5zW2ldKGVsKTtcbiAgfVxuICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykge1xuICAgIGRhdGEgKz0gXCJhdHRyczp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOntcIiArIChnZW5Qcm9wcyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIGV2ZW50IGhhbmRsZXJzXG4gIGlmIChlbC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5ldmVudHMsIGZhbHNlLCB3YXJuJDMpKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5uYXRpdmVFdmVudHMsIHRydWUsIHdhcm4kMykpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBkYXRhICs9IFwic2xvdDpcIiArIChlbC5zbG90VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2NvcGVkU2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhlbC5zY29wZWRTbG90cykpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCk7XG4gICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsgXCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30nO1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEgPSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBnZW5EaXJlY3RpdmVzIChlbCkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFsc2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGlycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVzJDFbZGlyLm5hbWVdIHx8IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCB3YXJuJDMpO1xuICAgIH1cbiAgICBpZiAobmVlZFJ1bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAgcmVzICs9IFwie25hbWU6XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJcIiArIChkaXIucmF3TmFtZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwiICsgKGRpci52YWx1ZSkgKyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIudmFsdWUpKSkgOiAnJykgKyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpIDogJycpICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpTT04uc3RyaW5naWZ5KGRpci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9XG4gIGlmIChoYXNSdW50aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoID4gMSB8fCBhc3QudHlwZSAhPT0gMVxuICApKSB7XG4gICAgd2FybiQzKCdJbmxpbmUtdGVtcGxhdGUgY29tcG9uZW50cyBtdXN0IGhhdmUgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudC4nKTtcbiAgfVxuICBpZiAoYXN0LnR5cGUgPT09IDEpIHtcbiAgICB2YXIgaW5saW5lUmVuZGVyRm5zID0gZ2VuZXJhdGUoYXN0LCBjdXJyZW50T3B0aW9ucyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiArIChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlubGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoc2xvdHMpIHtcbiAgcmV0dXJuIChcInNjb3BlZFNsb3RzOl91KFtcIiArIChPYmplY3Qua2V5cyhzbG90cykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldKTsgfSkuam9pbignLCcpKSArIFwiXSlcIilcbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdCAoa2V5LCBlbCkge1xuICBpZiAoZWwuZm9yICYmICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yU2NvcGVkU2xvdChrZXksIGVsKVxuICB9XG4gIHJldHVybiBcIntrZXk6XCIgKyBrZXkgKyBcIixmbjpmdW5jdGlvbihcIiArIChTdHJpbmcoZWwuYXR0cnNNYXAuc2NvcGUpKSArIFwiKXtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAoZWwudGFnID09PSAndGVtcGxhdGUnXG4gICAgICA/IGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsKSkgKyBcIn19XCJcbn1cblxuZnVuY3Rpb24gZ2VuRm9yU2NvcGVkU2xvdCAoa2V5LCBlbCkge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG4gIGVsLmZvclByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gXCJfbCgoXCIgKyBleHAgKyBcIiksXCIgK1xuICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlhcyArIGl0ZXJhdG9yMSArIGl0ZXJhdG9yMiArIFwiKXtcIiArXG4gICAgICBcInJldHVybiBcIiArIChnZW5TY29wZWRTbG90KGtleSwgZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5DaGlsZHJlbiAoZWwsIGNoZWNrU2tpcCkge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCQxKVxuICAgIH1cbiAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUgPSBjaGVja1NraXAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShjaGlsZHJlbikgOiAwO1xuICAgIHJldHVybiAoXCJbXCIgKyAoY2hpbGRyZW4ubWFwKGdlbk5vZGUpLmpvaW4oJywnKSkgKyBcIl1cIiArIChub3JtYWxpemF0aW9uVHlwZSA/IChcIixcIiArIG5vcm1hbGl6YXRpb25UeXBlKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhlIG5vcm1hbGl6YXRpb24gbmVlZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBub3JtYWxpemF0aW9uIG5lZWRlZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChwb3NzaWJsZSAxLWxldmVsIGRlZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0aW9uIG5lZWRlZFxuZnVuY3Rpb24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKGNoaWxkcmVuKSB7XG4gIHZhciByZXMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5cGUgIT09IDEpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6YXRpb24oZWwpIHx8XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG5lZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAyO1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJlQ29tcG9uZW50KGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5lZWRzTm9ybWFsaXphdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5kZWZpbmVkIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRlJyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxuXG5mdW5jdGlvbiBtYXliZUNvbXBvbmVudCAoZWwpIHtcbiAgcmV0dXJuICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMShlbC50YWcpXG59XG5cbmZ1bmN0aW9uIGdlbk5vZGUgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsKSB7XG4gIHZhciBzbG90TmFtZSA9IGVsLnNsb3ROYW1lIHx8ICdcImRlZmF1bHRcIic7XG4gIHZhciBjaGlsZHJlbiA9IGdlbkNoaWxkcmVuKGVsKTtcbiAgdmFyIHJlcyA9IFwiX3QoXCIgKyBzbG90TmFtZSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKTtcbiAgdmFyIGF0dHJzID0gZWwuYXR0cnMgJiYgKFwie1wiICsgKGVsLmF0dHJzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gKChjYW1lbGl6ZShhLm5hbWUpKSArIFwiOlwiICsgKGEudmFsdWUpKTsgfSkuam9pbignLCcpKSArIFwifVwiKTtcbiAgdmFyIGJpbmQkJDEgPSBlbC5hdHRyc01hcFsndi1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYgIWNoaWxkcmVuKSB7XG4gICAgcmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtcbiAgICByZXMgKz0gXCIsXCIgKyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJlcyArPSAoYXR0cnMgPyAnJyA6ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJldHVybiByZXMgKyAnKSdcbn1cblxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRha2UgaXQgYXMgYXJndW1lbnQgdG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxuZnVuY3Rpb24gZ2VuQ29tcG9uZW50IChjb21wb25lbnROYW1lLCBlbCkge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4gIHJldHVybiAoXCJfYyhcIiArIGNvbXBvbmVudE5hbWUgKyBcIixcIiArIChnZW5EYXRhKGVsKSkgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJlbikgOiAnJykgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gZ2VuUHJvcHMgKHByb3BzKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgcmVzICs9IFwiXFxcIlwiICsgKHByb3AubmFtZSkgKyBcIlxcXCI6XCIgKyAodHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzKHByb3AudmFsdWUpKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG59XG5cbi8vICMzODk1LCAjNDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzICh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpXG59XG5cbi8qICAqL1xuXG4vLyB0aGVzZSBrZXl3b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNpZGUgZXhwcmVzc2lvbnMsIGJ1dCBvcGVyYXRvcnMgbGlrZVxuLy8gdHlwZW9mLCBpbnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxudmFyIHByb2hpYml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkbyxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LCcgK1xuICAnc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xuICAnZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cydcbikuc3BsaXQoJywnKS5qb2luKCdcXFxcYnxcXFxcYicpICsgJ1xcXFxiJyk7XG5cbi8vIHRoZXNlIHVuYXJ5IG9wZXJhdG9ycyBzaG91bGQgbm90IGJlIHVzZWQgYXMgcHJvcGVydHkvbWV0aG9kIG5hbWVzXG52YXIgdW5hcnlPcGVyYXRvcnNSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RlbGV0ZSx0eXBlb2Ysdm9pZCdcbikuc3BsaXQoJywnKS5qb2luKCdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpfFxcXFxiJykgKyAnXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKScpO1xuXG4vLyBjaGVjayB2YWxpZCBpZGVudGlmaWVyIGZvciB2LWZvclxudmFyIGlkZW50UkUgPSAvW0EtWmEtel8kXVtcXHckXSovO1xuXG4vLyBzdHJpcCBzdHJpbmdzIGluIGV4cHJlc3Npb25zXG52YXIgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xuXG4vLyBkZXRlY3QgcHJvYmxlbWF0aWMgZXhwcmVzc2lvbnMgaW4gYSB0ZW1wbGF0ZVxuZnVuY3Rpb24gZGV0ZWN0RXJyb3JzIChhc3QpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICBpZiAoYXN0KSB7XG4gICAgY2hlY2tOb2RlKGFzdCwgZXJyb3JzKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzXG59XG5cbmZ1bmN0aW9uIGNoZWNrTm9kZSAobm9kZSwgZXJyb3JzKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIG5vZGUuYXR0cnNNYXApIHtcbiAgICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuYXR0cnNNYXBbbmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChuYW1lID09PSAndi1mb3InKSB7XG4gICAgICAgICAgICBjaGVja0Zvcihub2RlLCAoXCJ2LWZvcj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkge1xuICAgICAgICAgICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hlY2tFeHByZXNzaW9uKHZhbHVlLCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoZWNrTm9kZShub2RlLmNoaWxkcmVuW2ldLCBlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIpIHtcbiAgICBjaGVja0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uLCBub2RlLnRleHQsIGVycm9ycyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhwLCB0ZXh0LCBlcnJvcnMpIHtcbiAgdmFyIHN0aXBwZWQgPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJyk7XG4gIHZhciBrZXl3b3JkTWF0Y2ggPSBzdGlwcGVkLm1hdGNoKHVuYXJ5T3BlcmF0b3JzUkUpO1xuICBpZiAoa2V5d29yZE1hdGNoICYmIHN0aXBwZWQuY2hhckF0KGtleXdvcmRNYXRjaC5pbmRleCAtIDEpICE9PSAnJCcpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCB1bmFyeSBvcGVyYXRvciBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmltKCkpXG4gICAgKTtcbiAgfVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0ZXh0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBjaGVja0ZvciAobm9kZSwgdGV4dCwgZXJyb3JzKSB7XG4gIGNoZWNrRXhwcmVzc2lvbihub2RlLmZvciB8fCAnJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuYWxpYXMsICd2LWZvciBhbGlhcycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMSwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IyLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKGlkZW50LCB0eXBlLCB0ZXh0LCBlcnJvcnMpIHtcbiAgaWYgKHR5cGVvZiBpZGVudCA9PT0gJ3N0cmluZycgJiYgIWlkZW50UkUudGVzdChpZGVudCkpIHtcbiAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlkIFwiICsgdHlwZSArIFwiIFxcXCJcIiArIGlkZW50ICsgXCJcXFwiIGluIGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXhwcmVzc2lvbiAoZXhwLCB0ZXh0LCBlcnJvcnMpIHtcbiAgdHJ5IHtcbiAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJuIFwiICsgZXhwKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIga2V5d29yZE1hdGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNoKChcImludmFsaWQgZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG4gIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIHZhciBjb2RlID0gZ2VuZXJhdGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAgICByZW5kZXI6IGNvZGUucmVuZGVyLFxuICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlRnVuY3Rpb24gKGNvZGUsIGVycm9ycykge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb24oY29kZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3JzLnB1c2goeyBlcnI6IGVyciwgY29kZTogY29kZSB9KTtcbiAgICByZXR1cm4gbm9vcFxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVyIChiYXNlT3B0aW9ucykge1xuICB2YXIgZnVuY3Rpb25Db21waWxlQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNvbXBpbGUgKFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIGZpbmFsT3B0aW9ucyA9IE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICB2YXIgdGlwcyA9IFtdO1xuICAgIGZpbmFsT3B0aW9ucy53YXJuID0gZnVuY3Rpb24gKG1zZywgdGlwJCQxKSB7XG4gICAgICAodGlwJCQxID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgIGlmIChvcHRpb25zLm1vZHVsZXMpIHtcbiAgICAgICAgZmluYWxPcHRpb25zLm1vZHVsZXMgPSAoYmFzZU9wdGlvbnMubW9kdWxlcyB8fCBbXSkuY29uY2F0KG9wdGlvbnMubW9kdWxlcyk7XG4gICAgICB9XG4gICAgICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgaWYgKG9wdGlvbnMuZGlyZWN0aXZlcykge1xuICAgICAgICBmaW5hbE9wdGlvbnMuZGlyZWN0aXZlcyA9IGV4dGVuZChcbiAgICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMpLFxuICAgICAgICAgIG9wdGlvbnMuZGlyZWN0aXZlc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gY29weSBvdGhlciBvcHRpb25zXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoa2V5ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0aXZlcycpIHtcbiAgICAgICAgICBmaW5hbE9wdGlvbnNba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21waWxlZCA9IGJhc2VDb21waWxlKHRlbXBsYXRlLCBmaW5hbE9wdGlvbnMpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5hc3QpKTtcbiAgICB9XG4gICAgY29tcGlsZWQuZXJyb3JzID0gZXJyb3JzO1xuICAgIGNvbXBpbGVkLnRpcHMgPSB0aXBzO1xuICAgIHJldHVybiBjb21waWxlZFxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4gICkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8Q1NQLykpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUgdXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAgICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBjYW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAgICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxpbmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAgaWYgKGZ1bmN0aW9uQ29tcGlsZUNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbkNvbXBpbGVDYWNoZVtrZXldXG4gICAgfVxuXG4gICAgLy8gY29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbXBpbGVkLmVycm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxhdGU6XFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgIGNvbXBpbGVkLmVycm9ycy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIChcIi0gXCIgKyBlKTsgfSkuam9pbignXFxuJykgKyAnXFxuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBpbGVkLnRpcHMgJiYgY29tcGlsZWQudGlwcy5sZW5ndGgpIHtcbiAgICAgICAgY29tcGlsZWQudGlwcy5mb3JFYWNoKGZ1bmN0aW9uIChtc2cpIHsgcmV0dXJuIHRpcChtc2csIHZtKTsgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIHZhciBmbkdlbkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5kZXIgPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQucmVuZGVyLCBmbkdlbkVycm9ycyk7XG4gICAgdmFyIGwgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoO1xuICAgIHJlcy5zdGF0aWNSZW5kZXJGbnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJlcy5zdGF0aWNSZW5kZXJGbnNbaV0gPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQuc3RhdGljUmVuZGVyRm5zW2ldLCBmbkdlbkVycm9ycyk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZnVuY3Rpb24gZ2VuZXJhdGlvbiBlcnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkgZm9yIGNvZGVnZW4gZGV2ZWxvcG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XSA9IHJlcylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29tcGlsZTogY29tcGlsZSxcbiAgICBjb21waWxlVG9GdW5jdGlvbnM6IGNvbXBpbGVUb0Z1bmN0aW9uc1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNzJyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRpY0NsYXNzKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEkMSAoZWwpIHtcbiAgdmFyIGRhdGEgPSAnJztcbiAgaWYgKGVsLnN0YXRpY0NsYXNzKSB7XG4gICAgZGF0YSArPSBcInN0YXRpY0NsYXNzOlwiICsgKGVsLnN0YXRpY0NsYXNzKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5jbGFzc0JpbmRpbmcpIHtcbiAgICBkYXRhICs9IFwiY2xhc3M6XCIgKyAoZWwuY2xhc3NCaW5kaW5nKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBrbGFzcyQxID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY0NsYXNzJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUkMSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNTdHlsZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzdHlsZScpO1xuICBpZiAoc3RhdGljU3R5bGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljU3R5bGUsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMlxufTtcblxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5bGUkMVxuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChkaXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVlLFxuICBtb2R1bGVzOiBtb2R1bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAgaXNQcmVUYWc6IGlzUHJlVGFnLFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3AsXG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcsXG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0VGFnTmFtZXNwYWNlLFxuICBzdGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07XG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBjb21waWxlVG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xuXG52YXIgaWRUb1RlbXBsYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChpZCkge1xuICB2YXIgZWwgPSBxdWVyeShpZCk7XG4gIHJldHVybiBlbCAmJiBlbC5pbm5lckhUTUxcbn0pO1xuXG52YXIgbW91bnQgPSBWdWUkMy5wcm90b3R5cGUuJG1vdW50O1xuVnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0gZWwgJiYgcXVlcnkoZWwpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkgfHwgZWwgPT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiRG8gbm90IG1vdW50IFZ1ZSB0byA8aHRtbD4gb3IgPGJvZHk+IC0gbW91bnQgdG8gbm9ybWFsIGVsZW1lbnRzIGluc3RlYWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gIC8vIHJlc29sdmUgdGVtcGxhdGUvZWwgYW5kIGNvbnZlcnQgdG8gcmVuZGVyIGZ1bmN0aW9uXG4gIGlmICghb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpZFRvVGVtcGxhdGUodGVtcGxhdGUpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgKFwiVGVtcGxhdGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1wdHk6IFwiICsgKG9wdGlvbnMudGVtcGxhdGUpKSxcbiAgICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxhdGUgb3B0aW9uOicgKyB0ZW1wbGF0ZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChlbCk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgICBtYXJrKCdjb21waWxlJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWYgPSBjb21waWxlVG9GdW5jdGlvbnModGVtcGxhdGUsIHtcbiAgICAgICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IHNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgICAgICBkZWxpbWl0ZXJzOiBvcHRpb25zLmRlbGltaXRlcnNcbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZSBlbmQnKTtcbiAgICAgICAgbWVhc3VyZSgoKHRoaXMuX25hbWUpICsgXCIgY29tcGlsZVwiKSwgJ2NvbXBpbGUnLCAnY29tcGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vdW50LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlmIChlbC5vdXRlckhUTUwpIHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1cblxuVnVlJDMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1bmN0aW9ucztcblxubW9kdWxlLmV4cG9ydHMgPSBWdWUkMztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUvZGlzdC92dWUuY29tbW9uLmpzXG4vLyBtb2R1bGUgaWQgPSA1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 56 */ +/***/ (function(module, exports) { + +eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzP2MzYzIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0aWYoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImxvYWRlZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5sO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiaWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUuaTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHR9XHJcblx0cmV0dXJuIG1vZHVsZTtcclxufTtcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ=="); + +/***/ }), +/* 57 */ +/***/ (function(module, exports) { + +eval("/* (ignored) *///# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZ290IChpZ25vcmVkKT85NDY5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIChpZ25vcmVkKSAqL1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGdvdCAoaWdub3JlZClcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0="); + +/***/ }), +/* 58 */, +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(5); + + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 3ab6be18ce17643429d84e18f6bb048a2c63872d..be5ca1abdaaa7d7c75b9e32e86c67a8727fc0132 100644 GIT binary patch delta 448 zcmZ2*QK;#LP(ur23sVd87M5py)AiYyIHvpDX5^gyy^lqIx}G~D$8@!DCb8)*{Vda_ zZ}(&2o&4v20C!qWeqxE0LQZO0$@GavOv3yM3b~niy5*TEB^g!<hGx@0WH9PaF8IMR zy<i2S$n<_?M!w0}*LbG)KV%e}KB<>QoY}OXV!C4=i^R0GOyYb671mq|3cBT~N!ght zy3-k-F$z!L^N~@4T|q%NH@^x=WcvT7jG|yUWDSNN85LL|Dh)p}N=&a~WK@z@P|!-s zFG@)*(k;qN&nSU8&In?e*7S+u%u<t+lSL-8CM$qE$~Jwg9}9ndQGP*6etDj5Zfahs zLP>@WmtIO@Noql6a&~GF5>q!bFDElE6;lPO{uF}xQxvMX6ch>)Q&KYX(ybI&ObRL# treE%7F%&8;Nz6-0%*oG7)k`ie*2_&Sn10|Ov+VSQawgX8x)WH6B>?xtoBaR) delta 67 zcmZp=A++G4P(ur23sVd87M5pyOokTIU-YrqfoO$rCYk9j{Vda_8%}1?VoxqE*2_&S Vn10|Ov+VSQawgX8{gYXWB>+Io7u^5= diff --git a/public/js/dist/all.js b/public/js/dist/all.js index 52aac454ef6f937f7130a3a18b3c5ff4a4a75898..d2001ac3dff816ef8942763ba9d60df6d2ace1b8 100644 GIT binary patch literal 5789550 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�UeuxIL1aJt|lfXCPq&)MoB>%Tk8lct6^`Yrv+x! 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�S-{G=iz55!^;Td7A}0#4!Al-ERzR^CFqni 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≶7g@eWn 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%0A#$&*)`wO*`OrS$kGrrMvJs| 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Ώ}TWI(wOBNu{JP=Txk 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%0AcC>NxJ zkfR}56#P=lA@0TJ68%J6rrGGDB@~!f;SyNP#Txxd`6-q7+-;+%tE=Fb4{>a<f?s|~ zW^$^6t}afO6(9v4EPH?~P$<*QOaq5p38aL`NzF?y$xyJhwN)?xDZphS$ZL`Lr3x8| zWvL2z`6UX;;80IdNX)BLD1eqd3W?ytM*(U!7T<%6vC%I8*@8<J<W=m63ZI8d5|eUL zkvt9IgGt?_{Gyc9qMX#?Vg+Kt!j5oA*pz@WEXWri58=W#B}IgkfVA3_WZ3y7=BC={ zmt+vDo*1<@`uOb!nUR_ZE`f2x1;llr#7W3qHYG(0Wx8qkMToSekeLTf2!zrV$Qlp^ zr*h|<%+$OR1yF$CiEof{7`7=%Q9zW7WvN9anaPPcy5JJeN+CBhB_$`-npii046Uw) zI9v}@St`_msv3|mK5V03LMR|%+QGhbNzF+uNmXzvEh)**8z_I;;3#AjN>VFIbW;-Z z(o>5-;f7q`7NwTuXQyg_bGRl*l2FQkc^gDSe2piuffT{84eo*$rUXR8LLS7%g^9=s z_!7B|KDZpg=2Lh{k8CxDAY1^+>)>Pnt%tyMmx6D8N@5OLT0pBUa=}W{5>rw^L9dXR z0?uw=QC&!ZtP74Auxv?UQf6LCY6V!0t|3^gC_g6^%umTo%*n^v-oR$1E^g%@k7LyW zZHa)a#TIfn^?^!ONV>zN4XiZ@l66Wd3m_hX@<G-iRRhU6`Nfd10yo)HGK+IFp-nb$ zsDYIy7G);tW@M(Mq~?LcrlhD8tjA8RBr`X)*xE)PVmQb>NHGX<1~RtEFhQ~zY`kts zW=RgjEIb-Ph9IW|JW6f!GfY6v0BJ$T*isp?8mzGdO81~Zz-1`N0B}+THLVm}i;D7# ziqX<2NC`4VvnMepwWve^Od^*l@P<fQeo?MoD%fB>XlsOs8W?1uO@W<FaY<2rUb<a) zMt*)lu_CBp59TWb=jW!DWMt;0E0lw(lX8%#BDCcJ(u)h*BoVB$ZAx?Sg%-?Yo19Ff zDiQ2KP?d<}T|(gwGYLdjS1Uk_AhJ5j$t2`P8-4u#Ae5Xyt^%hF<fN+rPA0e;reIB= zAVA6~Ag*pkeo<yseqKpp4k%O<;N=uZ5-j3ST$+@dS)x}^lv<XWR|3wc#U=SgMCC59 zJBe&kpe0|B19a1i@=FUq&L9-1VE^SLCZ*;ec`!LYM>jV`*F*tSBo^i8=z<l1jRU#K zMjy-v8I33BgG>ftH0MFhHUpbRgm$nInRx}JC9v89x!%wPwRk{ADZtBBP+I^jg6Qmm zg9PdquoOraI6^=Sut=G1ZhlH?4p<PR9Nd%w$$)$basxgLPkBTsBH(Fo)CYsc8VHqJ zAluMF7vywA<Rdyy;IWHh5{oOa`QWG~E^R;@P5;!9l39jSaDlxFD!9OmVq)VE<XI3# z3((|@)a2}>{0dTy0UHGlJ7N+LNHsFHfh2f%nnrd7f#id13^E&O45B1IJv}EC99tUT zK+?-h0XL1wG};R6yi`cr4s4)jv14&@W_n&~3aSO5uprZt>T1XUoL*)MaXlPl&m*Nt zWMO=4qVhD%0HPHWrI4T^8+}kd2L&d~0mw95JC2YB7ch{vyCZmr7+*PqmK`9C#I*eU z60%#opqzwMo+OpzDI}HTArC?-;BNZbIfL5A#I|oCtzbme0O8|sKtWMvZekI5R13NP zNOYAAX;t6|b5Q&syBfqt$MAR~N&-VQTmZ=l;HX9(=cKgH1{p6K?X$%wAtm7<(`Umv zN{N(QFcaQDbl$*&t>{ic=6j?Tr7C0=D^%u}7AfSVmSZ2z)l&$`$Sek_E6GSz$j{5E zQ~>pk6*5Z{$}@9v6p~UEK!fpl3dQ*fDfxNoB?_RTMIp095l@JKoB<kD&P}XT$jdKR zC@oG^C;?dm9>q{7$ydlt%uZEs4DeI{P4lG|mlW&aF%H_l!>6L4DAmp;IX@-UuDTjJ zTn!n0sjaoq2aDV2gVf+K16!#8@&pWnONe1p8NhsnOv6I}SrEj=DuE%0A^_*u=p)a; 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	O`F~Dp(+5&r6__Us8(|5*5IgeSx}~ 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	ZWQerTXV^g!Y| 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%0AU`;Z;-kRHvS75 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�!`S_+!X9?Okr?RK@&DGf<zFSu#pL* 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%0A2rr z={;zM0R;xQiiJ5B9@d#DC~ks!pe!+`6m)$B*g$B58@CzIyJ)eR1d{_5PDQ1#8_uB4 z!f*|w!b`<!5=@RblS(p6a#FE*4J-kQ-NceaJun9z&L|-SN~F-_4=&&!Ap^<OFn5F0 z<mDITCgx;TrKW(Y1d!uEcOJ*Xg*{7BbHSY>h*nT2!sWnPVEs<`SP0lXFe^a!>XfAx z6=kMC?gfH4L%kSWIw+K9LhoWu&d*KC%u7uH3&ZrPfZGAk9zCp{(osOQ9^x#R7D$5| zmhZtXAuiX0id~dy3>tPwQ2+`pP=W&8#(_Ly04X~`fedjkRA;n7EX>WQZiJ;>1#BaG zP!E9Yfw~?`T7%kvQYRrf6z(9TQW-S(Xax%w$VGwBu{BVPDky+5EJ7Z{)6hgw0Lusn zMUb8kOk5pRIV`oKD~E}rDF-KHbhThXbxl~@!XgsnU}&)i3QDxVfR>>Ig9GG6bPK`7 zESk$;g}IeNbSz4MfL(`f0$32!$p|li5|IkbOi-GEWC(bj0j>uS#WTpSkghb69^8GW zWCdFV18aq31sespCGeh8GS;3GL><T_8W3htYF>15ENYSkIRoT!up?k)1Srcu^<b(7 zt1L>*gET3?JcuHYQD{jTl3w9K0P0+Trc#Ph^RQ<DQ09O+0&hVDQixPMK~qY!0i^8- zixg-vgOG(~TWt55V&+feq5#s|hK@5Mjl!b35~Z90g(6a71*K?36}`;jfSkn4Jb&;_ zY#LxSNQxA|S6qV1A($UPp_-Wjx%v_{m8MpdK!g!WAua}KL8&o7wt&)s9?}g{NF@j) z!>B`NAQcp9b-=EG#45~iP$Ef5O-n4zDFHR!khH@xzLf%aL;}f?uo46+12YQZN*E6m zE+7ZuoDnHW%>~KXf*qxonSymb1Y{ZrgZvIR5#%wfWii-3uq@P65Sw^&;~_0!&}0&1 z3J26}0GkOJb^v!~;GJ3AE<iFz0jvi$Wdob6g0y<!CLzZQ$fGEc3{Af($dL?-FjS4m z;g2g_L%Rwn2^!Y_17$v>Gz&@@5amU%ybCG%iuKY{OElD>a%jy`sB@u`@LmqsY-r(t z>`th16z77KLHi$Auet*nrk@D9XAyZm3X)!7iz|qqkwUQ>-<%ZqW=CjIfqx1e6m%d* z!dqC-AOnf1Yl1GxL#q*xjV3hxq@w`qPs2Ko#i&^toa7K)GI(MuOD!r1$%l5-AT30Q zMwHSW(nEtz;3K<B2Rb$Z4FQN&NZv$NhE#|`Vgx0vfkFT+jX{fXSQ>+Q4mv{xNpk9% zdTE(CC8<S7LzbC33aL4{NQS{W?;v4Ng9+53fc9>1lrG4Afb^%Jj)7Le3bwYk3I-@v zKo!7T3vnJKFu~~-5+I;lj2;b8oe(=g3Q)2+N)RHJT|j~mvEl-`hJ!V)AXcInP*9X# zl3!9;kP2G2ffDb8Vgocr0reb;e?UoECAA{6xCAsZW(z6TaKsf@Bgls!O)x#4DWLiV zZiHTLVgXWQqJ%NDPyjgvI)?~O!<w3~ISG*2wVL2!2oju-Ab_;Hpy3R%4K0`H>npf{ zQ;|Y`X^8^p_DN9TUaXK>k(^pk0v^x?U3!|Im#R<zTJ`{5BmxpiEJ`oUP0fSfunHe& z$j{5E1ogKRAT>VnYzov9aHXgds_?X`0`VFsy=s7_k6^VSJPcv64E8g~pCAn4kUY5s ziVcv5q0y^{+QtE=;ph~Mb|mNu%IwSnu)B&C$}=*PGZe~Gi&8;1uIhp=l}t_1Q2>R5 zLT+kNI;77C%H=R;Lh}{;W?Ya9^g#1vNC`tz!45s2LE{pp2vTZ+8apr%Sb+et8WaVP z7(h)9pkM;|8m0%i!whnV20S@J%!lX(=>lPp&b-ues3v#?44MhnQ2^cM2{J-Q0oibf z0SK={eUX=14zU0h^w44hYC5JaG<WG0r55BQCZ~pHmSkwCz)i!{2WnDe<{^!GpcL&e zPeF4Cnqxq|K{pZJ<O25xic<4X@+s7JFgcic$@zIGMGiP-;GG3@D-@v1YmmkSq3#1M zSAupcAeun#$M6tTaWSOd0_7ppqZG2xJPB0<Ssnq)Uyw+Hsz5GG!8ws|b0jOV0=YE; zZJt0(CB89&Y%$)pNLFG6v?9je6oJ%2S&0>p1PCe>!9wwg1qC^kF3^@gbjSwUOi2X! zMH3Q+5D!2yF<2u=5^5Hxs!vWWE`~H~i?KF{!Fmdc@{!d+YY*HefrA_r+bFT;i10Jn zZ6uWBgWA+Vn69IM91Y0ffb0ZB9g7;4C^al3qa%-igGv=x`yI7I2r4zL;1~TWK-<n} zIS!gY;iVC%9D+6Akveanz$=7Zx2;!_T9gZmNRSLPHG`O-ZXrSne4TGWeo+agJ9HF^ zOOrvdsH2dUn3+>rggV#>Eek*w0H+p%hK5!2K=BLn1UN<!_9!T*Kvn9MWTfV4K#hh3 zHN;s+N<j8$fC!MK7$(6&1Zp5y9%2MI^?;bjJq|?8i@iq$jWN(&&84X@2O%4PJq=(a zaYV%r=~W`90jQIq5>OWtwu9uUJ4i1Kl;@!>Ay8m|5+JB)1ud?@w!>luRNjMgY&<kH zvF2%geFd*zf4>0mo#Cm)CB+KKiFtYXpe7akQu?I)qLS1Un7NSh12jtF23?N~ZuaQG ztkFvZsYktD8aly>ssuW72=WI?Rt5>6Ivmo22m1~r2~G<z=YWC$8qc661w0|Z<P{V^ zZD%V5b$8bg<lz&r4WMKVEdU|O1Evccc$EdI`DxI(qhh_%q8xA^LLHVG)KRiC)C~}2 z$eIuhex$iENH&MqiQy$ImV?R@Vr++~gIf>cl5RiDgRnHAfZE;#g*YtBBlU{m<qfO? zLcUuY<PenLf|N1PTmzeaMa_8NR;-Q!a!|pd2NYzWPy(fWJy^(tM>0}UlS<RoH9@02 z<(YXY`Q@NqQ*nMyDo6yh@I5~#RWB8^wj9kl3JRbV%^9i5*$O533b~2dsS3rVMW8lt zVu=E%<4}}ZT#%nvoT`wSmz+}yT1}9skO1{Sf<ks`r5>{DAh|>lDi0bafU)(E#X#8z zTtR6-MPah&`3K}<6z6N8+6IzWhYWuhSt)>4%{zKIMkqi{RY=K9Q2^y?Xla$0rvPr$ zfUbrI`AuCx8;fx$zEj9gLkR{wcxD1w4Z?`j4B|nvG=vG|Alm_-y@omwS$8dR(m{(S zeSHPTl9JTif)Y?XrKFamCYLB=rYR)CQ)_u*u>!aZLN2qw(d(a=Q>jp%UzA-8(gE@~ zJkctoRutqHrxq(DDioI_mXsDNfM!@yi%Key9Surzu%xdCRi~zgr~sitprHnJ1Jv>X z6cCWmhnHg@A(XNVBmhp*@I^?_z_H3rEiO(>PgU1J?v{d-LnW*f)WM0`CqFSIGcO$_ zZctkYkZ?wL3Tz*&U<Q?-(Aom-N)#7@0sy__)JsXtNvs6rFGyAeH&L)wHgMhX;OZ|V zGdDHAv;-}JVc9k(HL(b)0$RbKXo9;BBW;1*hhl?*tpe24;?xqDnNWY~K!!h%Y66IV zAmIcGV(4@iQi}|#6{!LP2NL$~2cj(sb}}?Ja1Vx-B&HW5dLOvf-eXy3ACj0}te}yS znw(#hSOV(F!-jMaV~dE?11iKpHX#+@;PMkBhBgcgQVLlv5t5jWt{yIdrU?|)a5?a@ z7wqd8z>$SeXsZBcgF_1({-DGP!XOUFF`0SApy5wU$G|19I0i0<$1%`m3PP!^0-TNA zIq=X%)UpJ}bU{IbDEC1Dj#}8m2ZKOOZv$(E5(OItkSgdvrnN!|*15zIaCm?eMwdY5 z*g)Y0!r(9~NzH|}643{XN)po{i5(WkFg?(|HB1|%o&}EpV5$elBP_vzR&}T5rJ(K? z0GSHSs~{#U$AByaVFd+H`UQ1Ep`)GP+>X)#g9kROQGj!u8>mo&IvX5s5DTEu8xL88 z=bw`TvJskzVJbk8gItW+LfW373LGk2keHr|wRD3!4>>JBG$A<@>>f}6z&bB*0dR=G z+yQTcl^20VQ;HNc@{_W36u{#%C<P`cazU*tP{vHkf;At&hQiE3THl)qnWN5BumLaj zfG4R;tVs$I<Iwdk(V37`g)kM;hD!#unVg}6I|{Z6XblsH8So(^SjZ`;sUaJrpr8o# zs0LCw3kxRDwy<I=XsZ@(6srDOXfF?06f>EELJRC*=%Od6>p*jh;N~?Xy1+FUS`b1S zbO^mQH40!3%;zYP0&+MgC1FMvNCp=3kjYrEJrH3KiINIH0tyQGNm<~<EzpQS(*SQs z<tJrfdKhLGiYBlf5VOHdM3~`nG^FLC02(hvG6_vHC~zUA5GeoY!Ao)+0|y|xK+3VL z#DOF&L;(ag5E5A$@bU`c0|ofPn#7WlA`S3@T3yIoi;-?gV!ApsVSwF@@Tr0V*i59k zwP>hy7{lgJrSPf%+A%?M2U=i&A`RMlLyk9u12E$a<R27M@Rlgh`~rz`)TRfhTtg~J z;SqtqG(}3m;FwG;0@WBQdL>1fxzH#CXAFpqFpq#^5v<hKRzV%L%?nL6parks(8ur~ zQ~^?!2d$$34RIkYQ2=F5D+Q1s%udMg3SK|MBMZgP@sK$;9Z-FW<XuqtsaKj;oROJU zf}Fe{_CRb!3scle1l1BGlfeNAshGhl`*ISCOF|OU!Jz>$7bT^GhIdeFQpi$tNXm}} zxf3~Q$D*}!pb5Ab@8WB4gn=9b$s=g%C9#wjC`nR50XEA8sYRjHCpcyy2?I4+pfL;z zJ+P+<H-Gc9Q}Z&bQj5rI1H*Ka))0p4f^R7WPe`hlz$DND8XSf&IXn$Ya9qL-0kueA zn!tep4mD6R0AUaZYlerlsu0b1sAi;y34xi5l<hILpukPnL2MuaP0YYHmLR2DxKiY{ z3}{9QbMraaF)$B+J*-lknpl*ap<t_kutzVYD8C>jzdTP5CJU-SVKzf|pk(GFOT)}m zP*8!}3|&b8Rd1vVu_-=2Ei*MI1sX}H2@qSz(4uJxZ?Hj1TgSW<$Y_iLxVAtFTJT7O zA8g?-cuWP9uR*muXegsNU!gn|GzbgZa|-GXfLj{y%_@*012o468#u!<{R_#Ah%khY zZe>Eoaggmy%qdDuOsRxSe-<l%#!o;cB#LIJZ!*DyEtw?>Dfy|zdFt?KbcmZ&U=yg& zK~<RhU`ZGneURb|+d>eOaDtUZ@FEAafeSRT4qXw3w6+|+aR$ZBo@ok+c@STLRyshe zRVYscIb0zvzceoeyig#sL<idK1jhzM8Nwh?W>-Y_8MNh$=3Y>74=sdYUWb^5)N2Ce za}b8A(<7(Vf?E3^mBAo`3AAfKN}&BPgdagG15$H9=?^q221;6>rQYQVB^ik&p!ArX zmk;8A)(T`6g8~)eEokr|%z@M?Xud@%rxXx#Vi2WRvIp4x@DVVGGW3BjQ0hh9<N{9t zApfD*h}5Q6u!RmMgBvoSPMtdHArYVm1ee#)l>#N8iV`dUs*<3sAn1@0BnUtUg%qVG zmZZXSJZjDZr5>;WAQK_hf_8NvISM5Wfj5<b7YKmUBBXo+H-11vmgT7m8Hr_}LFrTl zs8mvZ1tR#tmVulMEo8B$Qn06BDnNM()qN26gMtx+Q52`;CzlqZBsY|hRzL||TLn~e z!4(C_NEAI-YZ^%CVD_3(8e~|iJg|kJm_lukA;t?3afW&J3@Gl4Q$bdj<QIWjVo=3M zO@UyzG|JLHkf%VpL2XpjBnJ00NE*`l2E`T#!!$wa3&_wKIIs}{H8qIr0!@1;i3QrY zLTWxkb{c^EkXsB+Y)I{B*ggX!S(rOuRVK(y$YHDiS|pT{s-OWHFaY@uTY>_44I~FT zOa;`$NiE9794i2&OvF}Sm~tHjM1VsIc3ndhA1WwhYHNc75#dxwtAg;-n1aM2&<GmH zF1_N?q~eky4Fes8OyuMZaym#^KqBbKAJFJGeEzT&k!VoD7i1iGG9IbwgEeZQ$6P?_ zLQoL}T1^iw96}P)K@nI2u?XS>gpWXh15pkcZNd=*px6OnP-_Uk_u+j@kg4dlfr}W> z7FAGD5AqIZA_X)#1fAFd7d)_>l%fDyLXerChj1-ei!HcJf`x0Qg0_Mocrh%rJOw#Z zK>?BAL41^KkC}8q#uD!4LG{5~b>OrC3;(=eBR$AwISqA4y<wye3IYAx%)HFp(p=BH zg3=P7)V%bP3~28H<SUdjZQwx<Z_oK+=tb*WAll`K;dO9E#<UeQNC(+m2`N-CRY2RY zAa{Yn3~TAAl8Uer?0=N%9Mio>eFAb@zDQ*TY5|9(4h5xVB=yiD12l*Ys+lmo3=eXU zhrs~{ul%6{D7dD-5R+e-pqLHG&kxSXFG4z&7i3~$QF^fzB4$8B3JOqHSV1O#pgg4H zfl_QLD1eOz=lVo!<tnV+gQ<YU9>^|mss}OP4HSedBr!vy5G4{76tKoTBv|p+ix5K< zFp~k;9>Q5Av4Z@pf}xk_tb(Z%tt+03p@Iro1;fk%$SU9zkLf!FI|T!@L2^j!gR6B| zrm}-3U<{8?GgJBG=OJB-21?7=^AyApusj9f4X-?f;U|*v6r>BCnV(0X3WByb5H%3Q zS~Tq>W-WBx*s~X!Dyn5MG;=Yt8LUu*dm4En8<Oymiaq4w9Mpybbs0fTPxN!rpfi5Z zvuTj_C_qI(eKM4s0%^J>=a=SznvO`S;PY1YSPsTfuu?Dprvy;m0AWxS2y&AiG+(26 zA4}c_HEKbY+Sx+pC9rEmb1QUWg4pU3<T6B+iDE-4(sisLWgv_-lY=CnI<4@z6c(Q# z^&pH?4T8ClMk$C1!H`-DB@j`xpjC&Uz(q9BVa;7+L!lKNtY-sp55yJ)U#uAlY&ldL z_T?GSAxvo7Q9(f+x;g{eT2R;1$8nCU3UvK9JpSOx+y!bT5i7r8gJ_^`3iSLMu#-Un z2(Cn+{Z&LG6D$q!xq<@BCPM42VSxw^eu!q2#nmu#pkC6$ehMs16;e(wO3h121?@kC zdmedRAt)QGzy^syUPPKlR<|iGNX&zr?rIyO1Z~>u!c@m7*`Y09!=VA%oQzSjv(X2c zh^kE;CJ6Dgf&wHYU_7|vU?X;!MWCrgP@5JS@Q^lrN@kHd+Jbv<?7;PdJO^_+N(@0$ zCtM*|5;Xy13090@et04Sk2D8o<d^28ka!|27HbOfi!(vT!k~<-z@3U?8UZw{h+;oz z=T$0rFBZN7X|Y&O^odWPPAx2S71E0GbHUwN7k^(^JfcPh^h753m=^Nr2Q)rlt^r2} zG3A3kWM~d|F+oN-5e%790p%D4q?`#6#-GXHMJH0i0OvMHh6JB~2Umlb??FxdU=0v| zfzmJG%n4Ns%c~HsF5Wx~?qy-*a)?go6i<v2csVz?5CF|Ff%u7_9FSUJ8>6Ia7^8$< z5-22=mgFbr=N9ComZaLoDCMW6#VA1qi;7Z{OHjoU3o=W<C$hkVG0ZD2NX^LsPsrHD zD1o=r$0#Wj<>!D52TfIj24s~K^hqjPAZZffQ_x{P;8`|MI75WMDGy%ELq~2A($HBI zaPXnE*i>L~tXEK!3OcAs1F9P}cA+U9t{Q3~a%R9tX`oO?DGcCgi173xC^dnqaBOWh zxG{*Nh|55*Gg0$3B*4H2;AN*)f+ieM&ZbK(LtSnPas+6BLwb5@k%oG9YGpxDYH_i; zjsi#_it*64R(y79WoSV_QEFLgUI{qsq?VQFWfntsU%@5d1qw#DUteD#JijPAu?Rl@ zlvI>oUYuG4+mV@)4_>NWTv`AcdIJ|<3E;R*PypKs^RT|YLP$ntu|j!fP7Y`XC&)z# zDfy*IIjOqPCLws%D-EKp7(7{nW*5{FBqNjZp{D{RWT#e^79=Pn=A|g0*k24^=#HFh z!9fmoCf)$o*H;M511BADL0wvqlbH-!t*QXC4#kUz)du-#Y2f$)9rFf`7f^P96~@qU zR}ANXeE=D}!Rsh+D#%F8OUX%vBy$aT^kcCGH2ezApkOcO7o_H)7>-oRLemU1%R$=> zCD8IpT}QzHH5Z~ON1kkfMUVoPh0Iu+Qy_PPy#=!z*))(OXtNm10U$nFSfY9|IVT@< zVFA)?1PQ*>HN@*p&;*n^wAdo(5U?+B2REqSg>ZRhv3~*RfI<|v;t6Ds?a)y;5EE~R zK%0_Qi8(na&Vh7QQEUV`3L>lr9)1N6;3!}&EJcyTSW5-znHFc{mqU^$Y<?Lb0-9h* z%tbpu0^|{p0}#qk+y;_HPA2fm2ih)j2HhC|A54cXx6swi$V^E^iZYNXn5*PLqS(z& zOi3ZZU_{ynH+(?GLZb$?Z43z)q_z-pjz+1eK)D++ga8U2$hpF3g*!?}fvPNU@dmB4 zVCz`G6R7A399$AX%U}(4aKxg|U_+)mz$PMj5MmJ6iy%=D264dVp}7v^qr{wI*r|AU z>uN;ogLFZ+?I~!)!@AH&K7}>~kXCvkn+%nO1U0xEhDHV64zoTey##=Ey=Ua-q`;SU zfqX|`^2H-FB^5~{+L%{PDyTmJpA3O4?t^ZnM)DFk^uTlK5bI$v2tUgX$p+ZwHAr6$ zNfUaX4r?<7)<wtRByfO1OBj&n6%^3?hm?3htG@F<$1x*{ces@hk0SXHG|2^9`VI3P zWPKj8*N{~~5*ox2I3^oF$|1^7^BHb8V+&A>1cyilNFD&?LC`+U{4@omFb6NmRxbwM ztbw|+6h#ptD}(Y1Xa%V{?C2nn0DRsXVKdC%Fpq(hfeROy1T>u^Sp$nZFbz?LJ0LK^ z9z7JmVT*7#sBp>6PsvQngr5WnQlVFzlbM{Vf!0g_EeL}j)(uvc1D?`U&{Z%59o-E& zf5TcKMOPOod?B?5Xk8C<F>-VY`f7e~6o5uEkUR}O)XNsW+zQ1&1qEam>lK4qa;X|A zIttM09u%g~v<_lo3tnUcz~Ksu4@mezBLOX#!3v2gbu#nPGV?M^QiGF=@<G*fG{jig zs2zxhQv6`qQ{{<b1O>$pXyGqp@*i|i0CJIvBli(glz@By3R`dirvf^_B{MJGH@^sU z`YKoqvXlh6DG(%q)GYxkfa(DyPvp7;WH1OTD4+%ax#bhsE@THnn-|152jUJKp#)0) zkTMFU44#ZZbsn<M!Aen5FvL~RmK<!)5=0OhE}$TT7!L|&a1usMqBw&G+{Hn@><X#y zhPP00jGBQ;15m>WT9ShkJj{D=V@T{B!|eojT3{^_MBM^uprQm1$O(EV=@z00>>f~f zK%3IgumZUj<&a)Tz`-1j#Q|23I*w5LnY!+P#4jw;^Yb*+i=o8>uHFqOIx>qvNePr3 z!ZM39lX5^gOa-*H9CRC3G16$5f<g-Hh-nxDddM_%k^m{-kTXQIK`bn!&<CC&JC7it z0NLKFP*bCzh~XrZ$b+q&MT#tN@<mtz@)mT0%Rem*v>pgL^`rt19I&v4rd~;Y0qO>E zuwxMFN=s6UJW?~$GfFhT17eVvhxim^4K#&-f)C9qBpJPY0@k6Z#cn0Scc5Yb)pyzo zrUsz1sgR6;I0h};z<vWM0y!6{fI_azU>-y+$8i<~Ftb2~EWGKBWGOgBf)s&9YitpF ztYDr2g&-v7frk8$7pPT(_99v-7=re`fog6<W`#HqW&%XF9!NFXYC5pps2vqVu7qfV z7)4~UhgRsKcp19+2Fd5p3LaE4gB+Kcmk6F=P*a0!PAo`FhYIQC<`-e>=->=<jEWD% zB}h&H1uk?YHYjwFa<aNjPNo9N=&w5X20ifDGia%_5%iw9;`n&T1Q2LGG&Q*dLtGbp zwwf-;4`}1l>acO+qSRDS;|w%1U6h%q3p<t7Hbx255d%+H<z(8yxAjBf1Qxv@KS1Yo zL4`0VB|sbmJp&4S$UzP`Y>U+)NA0OY(;Fy_Lp$;?)1aZDmr;_NqX9J*vH>3{d7(N0 z8jnz&&>{ypZ$K5GMi*EeQ4P7ol9I&a45$2*N~+GOIKqv^->^eUF5vtEpY;kzgx+b1 z65O!aCx|R$p|FYutTxa~%1^084L+=OI!5~sq6b<EK_Uy`0i=c*ty&(SR92i?Qd$5# zBFq&u-V9nM4KDJ*kqL1Xj;0#C0f5r#LD2_S0&b)bF|ryDDsN!(b0}psxD=0vB%A=~ z)MaK~x(9fWw@3qS6C_k&4u@2=ikRL+N&=v24O0Oq<H1@#2-85TI-nPJg1rQ-SusWp z(Ts;Stm0vFu2_8taYs%X=-{Q|%&JrzieMQGIz|rC1@}Cvo4^-&pftv4?<|mWph+6U zL~|^vLx~xLjt7l2VGRjLf=EdPl_Z1{1Qy4jW_`p!DX0mVn_pU-N^r6%wX8(1xFo+I zpeVl}F&$hUBc)lW-%%@CtT`OpTsXW8L5efD7^1I$n%r@D2{L>EcN=m^j@3c1bc#~R z!fn@4fESo3SsyX{0ot3E13Ib|bdD?ZoFRDJLnee__tq*P41><6fGcHnWRp=O(3WDr zodWHFqK-pDt3puhBNSqeR>R$<s|zlqP(u}=Gr71J`8WeuFj*<6Cngo==aiPDB9Bv* z<QG^e=vsmStO$W73K$m>VQ}j~EfzQjT#^!zdLT2x*rN(5@qmhZ#J)?AO&X9@HSo1F zsJ;fPhgE%`K_=KaH0X&B9Jp{-!@Aw@KtnYZ;$fJv@Jt7C4%`T^$6+A^ZD}A}4wfY% zSWrq1f}w-MU3!r6h4`F<vxZWzh4~0+%N+8WNVxaW;tW*Ifhr^PrI4Wbf%J626}N(| z0<_}`+e@nly3ZJHD)RBnAgx8IpgIPw6~ZM>YkpB?YF-JrxP$9Q5`)}oir*+$Sb$uj zQVza^3%o-M5)BAP7l0dN#TxJ<#vv=$G7^g+V}Ovv1x|r5Q}FJUhwXI-^-z#z!N3Cs zy0GkwKC@F{1>dj=32>j(v=R-}8(J#S)r901Xdqv<f^aEX5dil-sPcxG4-Qr2BhymL zkP-!C=ojW#P|g9j<~6}bis1GX!U2d$c!+f%r^1ZWgEnPBL5l8B4ak{WnrIGH&{j|f z^{YT<(`8nrf*lVRLrNE538X<2#8?&TX{De9uZO>>1W^J>vsfAjP=^y!NI>#8X8VEs z><UgxV84!LNod9fjRa{x(i%8mAW0Ec2B;v?RazRdGI%0_L^N0{Tns&7LChp3%3(<z zmT*w&2BdrjDVxA&PJ%NTH1&h)ADG)gYBGzRON&7L#+*vWr2I0_NFt;dgVl0+8HvTH z%@X*kIbGdEkQSt73Yv*dsX6)O(BfYYUZ>(UF$tsvY9g{bK?j;=f)>bS=I1Fu_9bHY z1u|p@w+~SeLnNT}Ak0*Vpk7jb3FxLwTLmZ|Jh}+k$AYM~_44tL@PYgdw+=L=0<%Ox zAp<-T3EhT**F=~e<OVKsmks1HWM_i?4=U>5HskONLLTB6utu0|Ag9CP8lTHyYOn+a z%qUccgA6XqOf3g58?!|;uN4%)O-mI>iqwPTEKn(qTqi+d#YzE-Dg|x0D8xI6nhMha zsd@RO=@~)!`MI#v4RaEB7}-Wa11Z{d72uwPm<-F7kV*?-7A#%E&4M^r!47U5R6rZM ziLd|z1yOP_Xw(9_$p#dgIjLzSR<P6v;vm&J;E+Q^C&U(*X{f%}*H>^!1ug5y%u7`$ z2OXRMTH*$2k|;nI?1S!=FUbcV?U9yWq>!ALlbl%!8k);X2QT!4gbmDmkZV;SLXg2E zcus=_8$=i-d4X=m$S(q)Vwwrs7*VMJF2V9a7yLn8QLF<x(;+VvawBefD&&A$s3gpC zeSOI351GXZpi@?hK$|47x)L<hj^au^P`^hVY%BOOHP|$MVo7E)>NGxzHc+XF>{(DX zP@D?dGM$=N0xe2F(S<UP0SY2W5JLv@aTo&C4)a@baWObG>VnUMNX;vOXa<Ra!xCf- zNDU}4D4;6>34&F@OaldgB1W;UrUsg$ftU5*6pU0|C@7#6u<DS47;G}geiUzltw7HX zYHA7yAxLgRvlJ|d*HTD*g0K{FlRTPrU}HcBydtavdj}+h?r*%d5%MBxkl2Fy$@yie z>IyYAu&`E8&_K5l<O&pxpz}4Lp^193CMZfFWjZ29gZR3jb1P6%fdWR!ga{&#Q$QFL zNuYp2vs(dl+!;zJpjPiNtsw1K2O*GZdvJKcrxjqC9^MK-F$!~-0-+w%wL^9$qL_v5 zkV90HC}u(ig3uZx@UYX>MRgyN1SDA@b!Ze6^e`QWqye`JQSt$5P{PLpz$H#{F?8)C zF|9gC8<Chc9Y%Fgo|#gTfung54w8dTf`Zzf1r_i)8`R1IlyJbF!8&!|SXz<~HVW-d zYfu8t&CCN!fzFmFF4hCP2A((-6hKN~MK7pFQIra*UdmD-=iGo29YhUSA4mace*{7j zPiT`K$jGDfD9vX0*dS6q0fz>>$%=?t$RdG|d~mN7(WZsee2|0;OS51j@O1?t3Q*%7 zS~Z|18t5<*Vzd(+!qAQ){<V&vdNQ{(7dlJgmR|%}ED4>t0y!0B(GffZ;Qd?h?o+6C zjN_3&^&MCN_#ju1X&?-WR#1BazAVfDv=9vKjMo&jGhRVPfhHY6gLR1|iP%?!ffT?` zT!p(8WFM%Z4BD}(ZL0uw5Y)xsv!4(;z~Kf_j%|f7SSNH&8mbEBAC!~`jSsMLsF6tW z@SuYpdH{6_JnZpL??F~m;#f9{BQ_CxEFlX;aVSIUR>3np4&@3qXgAb>(<?5;whGYs z)JkZGKqpdQ0SM1zh!I#UXH%p49%>R&*y0FMqzOk*E{CLX?0Fo^B4bcMfa4MxQ_!XB z;2|m4I#x}z6GNa%;gO1x7@_F{F%=0)Oh~?fEr-E(tOlek!CDUB2n29w5mhKaw!!)5 zIYTy5fL9`d;)y^}0NFPV)ds$X19kHsXc+=j7AZn#H3N(_LBZ>A<QW)9P=Y)NiU+t7 z&`6*<<}@C3oe6S>6*6K6TfmRxO=wDiSO78{8vLlyh7xW_Arp_qM3h8}ZACmNu|k{( zYH31Pdih0}pv5UU5Sxr3gH6~@G6t2h;5|)<b91oi1t%p~fPpvey5#4nmq6QopcD5% zB{Ap>I8dh&9EOl>U7+I(6`(74Qd1y1UK3&3@{3T6EX{+YLx@g<6v&5QH|oWM7GXpC zYvA($L2Yk{a%4G}L8!esSSADe1r#^X0tv)K$%~*cQOU?m&&UC-8B0xpW^GvSHa)e( z149y8O~V`wy4oIen+McGNQQyNl|eTk!&HJihs8432`V<AgR77R10W>{+zS})22BNk zI+;i|LY)sTy&&gLqm}!hkpXaQ7NtUu?^S>uxe0N9Y6{fVsmQK|u@xY#0QhCv&}0Tm zjUd;+#Gz9tpaXqT`b)@a;M<O1Yph`Q!<*_@idF1^0j`^%2@f`nfIbxhvKsZ6My%Nt z66Vl5X`$sA*ixu!{0%N}X7JC0<V50|S>U1=rVXQPMUh1+K?Zl(3W-gWH5{mWonR|V zAPPf@GC><(Q&ULT?+DNOs1r_Dw$;WHV+m@xjVsjAjY2Q8Q9TJNUSMS`q+qrM?dOG; z*<dkn`hw*!cm@ThC3q>DpI1_pp98wv2{dk(lnPp)nUR_UzX}ahw4hp~rlx=*pqE@y zl;fRRNoKABI|nsWp%`z4Y8%qHB}^G4S3v3~D^MuFybR4+sNoOIh$ztj4k)N<tQj%W z&>~MCv<WskRtMe^2OU%Zu}WWG!8I>EC$l&M!iU-cFLIIZEkeGk5KE9LsE1^vLQBeG zP_H8ga;sHRssd;|V`_>XQb!gZ7~nm2A^G{BW2}%Z0G)4xVhK3il%*Dd4zdId5rY)y zfpx<w3ta`U81w)faL7PB1*+me+M(+uLH+80oYchPRE3mO(7^-X3D11E*`O)V<c!3k z#N?9HB8Zz2=73WbT&bchS_P$`0JB6JG=~q-4YD6v+ae4qN-ZfZ%7ZBfyB4Ib79(W9 zr{)n1nxfR)#LT?RymXZCf%Z-mph1HiTwog!&cPl&pl$R;;NU?s9~4IUMGBx*vkLIA zDu#F$VJJaAf)WOFR}8WbQ6e5{h&pJEKPZob?S!t?d(^NDVkc_QL6ZO^d!?oz8x2Y# zD8{3CJTku&e7-m6wqsaB4K(}((g!;*3N&^EzNQ&sH^RT5#DSuamgyreAKJ7*_8yAY zU?Jz156_n1bG0GPMh!B^(F~b+=>$!K^d>X&(oq8+5(<!UG<*dT>`GQ>TR;KhoF>ry zU71DD#a9qh)%EnD5e`|B1s8=>Vww4Q`o)=f={ZnM3JU6a`Ut7q(wvga0vwV^`{^KN zqiIge$;mHw23>cCRT>g(Sf#*i_8`#hYY=I;qanvoLG!t~o<7nFaEMB<6H+o0lZ!G- zGLwrTf^hAiW*gLZ5E+Q_#F9jP@U?*$f}l%=5w?M~gD#>%S62c%vKd_hT8JPW7Kot& za%2}_6_6Z>bjTjaS0D`W1N68pWaFVi@Kbv*6k~2*##Dm7*AP<$WGyme5j&<VGz6ge z4L-<$-JMANVQdP(tp-@j7NP)dA*`|n37`x<sOW$%P|Pe!1xF-E9+Z9I80s>g%;FO4 z3WCAe10MW33ck=xfh2^q8(Bxe5uWbB2EuIuG2nV2MS+e2xXlJm>R`nf&I2#>(oqO0 zO3W(;4S470=_t5(Iywh=hIl#$W7h+*1at-<^p<ESGb^zI!UEk|qN4ymYZz<_$aQcG z9T!4Ml{&D)<*<oCEQF^`uz46hfz3(iz)x(0g#p?|SRL5-A9RB&*f_Y;Kn%q2wGQk& zSZFlD6PONauS-V(rR@hc62pbi<{VO3!|Mci`ww~^PBFM+1v3HMWh_c9PDM=TBK5Cf zT9A5M;ET;s8vD@c61as5&|ASk?KKtH-YC$X865@Cb=qJXVf6ugS3YF)2<9qKl?pW$ z+=YjZ1jD+@NLE3%2f);Vu8f2o3yGo#?j}^@6hOC4gAx|FT?C3B1qJAsIJy%^Gq$KG zu@bwv@J2SsHki9X#WUQG(CA0k4hkC(2I)ifHMF2YO5UK;EQ#_zIFIVNKo<rhZM6c~ zg2i><)CZD-V9d;ha3O5ZBt#`rq5=sZhc2|;HW1FosKLm0K3YLSw-|tU0nK(Yya8$) zkdtJvB@*zxk&qk>ifoKt5OVB;8z6{F9AMcDw4WAcG*}7v3JK^i8#(So4ic=T0b0_A zS24&MiS!eAFE`95XpRN-JOWEoiz*dtVYNH_fRn`B6emyzRa-$FbUa>Si9XmQw4qB- zkivonwcwyIH-nu;hIc_HI=~Yk9&dZ*WtJe+5#xOnlj#)<D9*$i9H5v$DcFz`Hni^o zFV-RJHBnLnEEds~DnOeApq3rDW<t0E*#;tNI}DSFN+PJb&@u*eh7;PtLAZ?Q@*b)4 zg(I=x3>V5>kJex#!}*XdCUi&~B{~ts3Tgl<*eX!&a7f01T8r1&cvB^80TRAsiJZn@ z-Dn&h#V`)uLI$T>kW=6-DwLKFs2GGaq7##H;2R||Lkd^Z8&VP@hXX9pU^)rY9%RRX z%m87CTT%QDxn=~K8R6}7@a2LAL<a~_QIF<mv@8d0W}!O-;cBAu9!fuyo?bxd!;s)` zWToga>|6|4ln*OKP}U?OG9xT(or{YJs7y>rEGU7cICRqyE<p=7P*R3#3JxZ!UPp2h zzG@9R4g$}t#FZm3!=c*H5)+bB5njTZfY8GoYA$AGMK%wICKSgYI>QK^kc<t=j5upn zNC}*op9gmcmbw)sBSVKh&>{}zL`?HA2TG7j49J39l;RAJQD}oO$OeIY4Z<Mbf)^M# zrlf$^oFi9}xtSH2d7$~PM3i&b$`gwfiVISc!3UHf3_<obvMKmm&R9Z#sA3CUA4=>h zC?Jh3AzX+zsUbTbF$hb1yivo|h(Rzi98I9UL=Q0hc?eO4q3c5nXh`EAGd~Yf)sf(C zWTmh~3|}0CUIgMOV3E}mQ^LX*lA@cBa12_EgNj&$E+WfVWM|<iWYL3`N>PIBT!g>y zCVp7>ljb5^x=@k`VyqV77Ca>_XvtB28f+X-FDEfCy)-dB6}k!u%i)ip;{q~Lle0nP z6lgURTt_BSDWy=JS(2fUs8E!ej&ge)a;ArA)XU6ENv-ft(@@t{*TgcI0-D0EC;`pZ zf(uNDkqVi4X`owt!ABNlrYV4K#w}KW-k}FyA^<9FK?w?GRX}1<323Ym7LYJ;@cD@) zU<V)-+K_EfNr}a&KJZXcfN2366>Wfijw2!;!xSpmDnz5(r=x&uD#Q$sTd_Bw(RE`p z5ycEx#A8&eDtej4j-UZc_&5a2m8e@aki!fVUU{kI$b<XP)nE`8qq|P8ptLwcLp?PQ zBO@Z4>X(?C3Njg8H#qoV?pFXGnhsu8odaHRt&pQ&1CIf)5zw^()(Saj>#HG=mzS6e z+TscGC0I*z4su{Y)WH;hb_7DEI1z48P$(&?L|z^V@;B)C_o7PB-Ho6rZcy?Ar+83? zfGz$|09lS~i~`*03bx3>sRuG5Ah9Gv1Ed3yS3&mFDkOvU<tk{PZo39aVR03>W#O3y z+FzCox_AV%h7n}A0{D_;Sgy@10WDhu$$^}kRth@6KCuM4Km=qm1cMv{TNDTz#MevA zO@U<w==c>#893G;x*#M{cp^<y;PWUb>BGEQfmSDg%mf8^MydkRTq?FDC<=)s3W+&6 zdJ4h$xv3?Ypfm=Wgiy#ty1pA^8aSYmQj-%)i&GWy(-aaxccrIgrk56hPfAcID9TUD zNzK(!$S=uAEmA--DLFAuAql=v5Mma(X&L$D(2;#3g^bjkf@1Ij8IZ$3y8$657$SQl zEi)$-ajrkiOysgMB{iuu9kk>Sx{EY9Kd(4HClw?DW$KkD7Uf|HH_%1_uv)MJv|)dU zRqBv7g^`s4Xn_wr>OignXF%|=Y2efhS{M<dgc|TDhqOTq1d-~Xoh`YbO^1m&IhEi5 zNKMgGa8yWx-u(-?IUy+(v>g+4CrxolYGR5We8UdN3<yTe5Fjy>at$N^!k{()+P$nG zVX#^d1BAgG<SYsEY%y%|3MPPTDVi==k%bh4ppp!xvlyNkpwml8y$4VU2rBuJ@&vA; z0NItGBn-M*H4(J37E2Zc6}AZV$W8}Ym|R+1lAnueC3=Al^ApSy5Hk>FVweF7FErnv z>w}q#7FHO>A;Jt~CkTV03%b4qY6w&fa`B91(h@wui85)4lquj7q@Yu+3tZqUFcdUE zcgG+p1n20`;?xuc_0qgdg`&i~^i&0Ha2`m3pH!+2S?`@uQc_^0ub)+1kXn?cmz<xg zk67BFZ)gGY4AMz5xu7ClBN4?u1qG;Y5%cEJiLs!$kwmD+K_P;c6rox`j@K(n1$P29 z^rPcqVoD7R3=DL^w7F}ne!7kV*iK0FU>F1s7O<k!A_eF=f5`3>6ldz|D>&wqCsr22 zoC~T#@{_Vam)B>eff{H<si5VWdHE$7pv7Dz`3m6qjUuEX6I8INfbM<Ch1vtYlL2xA zwL11i?cgIRafbtV1u3|>nOs^_oLQEt0KOs!TzWxM52Qt!oROK6Qk05xpEAfXps5x3 zrYTUFiXs4QVqkBXI)hKn0tEs{j{<r~Bo=|3f^H``b%Ae>$pnRCVQFSjYKlT)F{s`K zpUPbc3P_k?C7{(^xuCNu67wn*^78X^A<=|VrGYX!SQxZA9+o)~Gw~qDK_VZK9Ko(| z1~&>)6O%I(z+nTb3_-qugc`EqwEQ9ka8oQ9x@8R>Vz2-LpMahWI_1^CS|J(j1awfM z13406i!C@p;U+{ULz-mB_CXqEU_XIdiV#*2G|A{doQvrvu&+E}DX~1U7}U;5gd~5^ zA{%f(f_(^0w0YpL2Cu9_wH}l*AeI(mU5x<pkpjeExJSSpiR4s`WVD0WL2AKy7sLQz zFbCN_eSHPbGzCx$gF~n&H4kERY6{5J;H9J>SAz;}NFqbl40kHRA<$Fl?a=nLf$WBs z8eqR6<tdE0TeP4|ElO3$%ZIoMl(k{*1Vsg?KbTco3^~f6ASW?151M+BU5RXODk37m z?tnxj$aNUb0Hqpuo7z?Zt?1SOC2c)W2?#nVIkcc4wa7WKI2EOf0x|(~Gz93@mXe}O zq=Fxsnji&`UP(T>euVSUyS*SAL5)W65!B!$1hN649uy@oSHpX_ASIwKuC5_Up$aei zL4HAs5wt`CNg|mg3Mu)i;A9PI@_>RGlrTU>>nNn;gOWQmpcC^d!G$owQBVoc9(lMm zD3+9fj<1C^_CcK?gkI>3wH0XXC1hC}B(~6c1YmjaIyYoRD3cLZ;8T{71}(s?TPsk@ zuo$xb4Pr8Ua2vKC8&gSYadKios&8UZc4>hXbjTc849OB$)5Z$6ARehjgrp3d8dHm` zAn81{2w4g;Nrbd|#Y({dSst=LgOEI=wGCf~hGquD4)pmSR7H?cBj^MnW}p=37nOi~ z0I$};d4#wWhvc1-)ZBuc#FA8qTacFxL*_iO8wimDXGnMw1KoCoNJubq;o*R6G{kF} z`RH94Xv&34<Fz0oH8<5tK^>Zok<%e~-@TQBdQoa|eok2`yte^qRHAOjz|y#coYRg7 z*X-0v9fh*QoKoc8IjFQrPRvaO?K}b3#$XP(P|8k)p4bKp4Uk$;rUzv;m>U$pbz?MG zmv?Gqtb#4X3UF{DYfR41D@!dZfnQnz84-_%3WFAvK_VVSBVw5za#jc5@rN)BRvJT` z1hEtB)YLR^9|UwFRcg5cEQFwiEkqqOrl5fj=?&pqFAiyG6eE_4qpT0dTt2R+4>KAT zvAA#kg&L)!prQkJEcE7Fc<P16rhfrwFtJzxHa3RXt_@cUJ+A}mWW+Xfln@4${IK(* zVPoV-CP2*qU5*O9n?M7m8W!wmRUo)fM%W1pb<p9RIhBxu8KANd10eALSvUwY8q}(V zvGp>GHPpddMbHko07Wsl^m5M6El332!3_;Sh$ZQ%B^v6`YCv5RG!_7E+L!2q%>t!2 zj3GZ{r=zXMgrrui>k)D3LMog<ccT=PmOvZ|^Dy#|JGfdy2}o%CA}w%5iUX7$qY8R< zPOV7JDNTWAv}komIb@`c+H3{IJc`?Mp|g=#+mAR@DyXD_oLHct4$}<{RZyh}_7%*# z7}miKt|x3ALM6gFm>AL4!D>{j)`1)c_X$WPT3Ul<18BlUns-1r2%<}`B;O~$980SX zI=lk42;9ObF40hr25E~`*MtTlh)0Um_{{-lbWlV<Qx=FxC{Bt9hY#e|YSb}il;n|; z3A(x)9-d(J$ZmnmQ)2{0N@fuvB*2<b3L>;PfLnqH155)jZABX2!fK#;P6>3E9VoPL z1ssy!ib3myQqZsWh9yr(83!^7t_7Y^bRY*A!V(os9HIp|+o+_1OC#9MX(P~H1GH2E z3QW{EAZrX3d3Y9W^c8j7H38HPfNoGX(gm&2O;AWIDJjZKDlJJ>$Ve<!NJ>r318v63 zONSgChcWW14jRn{bp{}2feeJ+APZuG&4k}+fn<0w_?B7lMYc()pv{1=kOBp=0;sVB z>NJDKXcf{*OG=AU70ObJiZk=`ib10VkY=0_>c}l5#3A}o@`nN_dxKm9-Kr0&WU)pC zQaXc27AR0a$)cz<6=4C2@t{b9D+eu_3@yqT6!8jji*9LA4pOia8K;oA1nY+yke8wW zy*U^>zy*r%{G1e|!~%;-$N^$0nCV0zGmlD92}+?F>TuVAPJ)MJEs!82__4($NLCl* zAp%-Zq8HRa0VN(tJG>gXc?uq^2q;QT15MXtq{5DTR4-Nl2Vik(33AXwW{guSGK)*# z!)W^Y3R&QF(F%ro72rNL_$KJ&eDFo(Ih6{K<4eG;b3|Z+Zh$VyP=FOR3Mq-j8HnTZ z!Rb*iEl)2Cyu2IS3PW)9ic6D<ONulMbQFw0!=DQ3hI;B?HL1}CvEXb`oQk@)AK`mM zL%ygq6|&z(1z8&+XF(6)2jxa+orzRrBN+&dI2>6E7WUvSO=?9+YF>&4>Hs6it>CDJ zl^-Cp;cF}i^h@Bwi`l7_pyUbCi&9xZf-*A?GJg&3c_BB;unwz$21wB6giz8Gw2iEn zSsVZwv+@TI2|^mX&^jbKJGC+vb#h!m0TJ||J`}P_$cQ;a6F4Y9fexD5OwB1y#a+LH zH9&_|!E9u`u+T(tIkcArs-U21kuw8kQx|m1DDs7Ppq?ngJxHeMA$x}?qam3Q-i^`# zM@?B`4pQuaoQYyEq)&^*c&JOD9sn!A*Lh6N2W=z<ALxXwrwH{6Mn@6akx<vu&rYo@ z29E-uZ^wkX0NPvBQSf$+42Js%loz1&9$Lo%?NVI04roe)p7ILL+VIAQx+d0cBD}i> z$_hw|^`JM9KzrSw6o!&Cz<~|Z49cxgOTmE&OH5!znV=hP!L0c7)V$Q9#FA9c6tvzb zOanA15q)0J)D&6?3^od(5HwZ|4Mr?|Y82-{15+<PzPPj?wJ1Iwbh}@1Nl|HXNq!OH z1T{#}1ap$UzCv(ni9%@sWcU?&vpYx@ghAl~iYM5O??@p5y`lsr1Gyy10PG-;E?C$> zV<|r;MHjAAM*+r!xCKQ$q%wplP}fmV*ENLpreH2YxEWM7fiJR$G{3+Ll2ePowGm7) z$oZgdHGJ_aYV#J{9|t84s65mvkdweMfg}YRut_XQgerzdGisX|;wxkaAPy&mEe3(y zVFFElFr{D{<H1vq@bz#S2)&r*LZTdbX)hMvLHgMUMd)6H%R@bgZYW+~!UIYL*%+`# z-~xKMJ&RCN0KMW0Qga|o!+j_lIA$@He1olq<{!w(hVUWql*EFP)FO26!=$0UhpqP} zCW;ZBM=}KL02m*S*WpUgd=3-G?{Ub0axv7EuvCTOZ^$SzObNQTp|Vh4qZ)@J#-XVk zDN8_7BqA6PhJr%@%Ec21FcoNF02PK>2tQI4VjV2E=<6#uW#*+o&UVAd^Puzhpuqwz zl+bm7TKw?h1GEMW>E<Tnas=+Vc+kOF(C{us%eeab3PGvqnZ+fkMd0a27k^)fv!Lx= zNRfmv3bg(bq}U}t7rfMzka?MTC8<Sui8;g>npl#EVk)M+@GMS19V{~tPzFss1XQ6& zBSi<O{sF}XX!l}fVh;G+clb&Na5_RtaeB}zQ8f^4C8$17A&=BlfSwbEcD!3=ex6ln zK}uptD(ab3kof{D1thazE>uu}Hl9Gi2xY?L^z{`$JLJH1Cv2h;dLRx=3A`f2JUluh zGbJT8Pd70+IkgzPpbaUHBD9s16ltg@g6`CWs0USvpgsdsG0YxNrC6DloKcjYmsynx zPKCMod6^~o;AIi8F%WPz0eJ)*uJOf{dC87&IkZF#cLFH*5p5?(ri5fg)X5&mXtXP& zTLVdAM$opOo_|ttYEc<zPzs_G;%ulQ&@f|3K4=xS9#SI;YpW0`hC$^&xb>wDIjaX^ zBw8a8(wxXl!O=bh>xX+3p%`3bfWisd*#mc+plv{C%LlY(lLS+t%C!~LbwNiZLBa~w zVg#Q@rC|gK8YF9x`j}vsV$)@Uqze=TAPh1BtRXW6v8GAGswO5zuO=oYx+W$jwnj%2 zw4_NLnvCE&V8ilYS7xSw0|I6wv||AkMU8wcQHk1+L5)s$(TfzJh?b6CW?pe>QHf(( zNoo<aK>!VWh-YCA0wn?PbR@K-2j3)_pHr3!K3^PFCnVj%dQgz20a&j(v~LeH6cpEB z3G6)zxXZz(iK~NEs_Q6#X^87UVF~U{5DX#c6e`%YsNn<ku8u-(YDq?Z3Q{P6{2cD- z65^p?tDqkTw$@5RBU)EG)?OppK-V%>D<(!y(;m#!*3>Ads7cMONv)_+t;x)*NzSdw z&8;aYsVPX-)YQ*JiCvJtA+~`A+u_r@NLE9Z6BU<K=0E}%d#J;*la7KqSSd7x!Gaf( zLBTQ*e`DWk1x;%RbzrxGf)+aZjW7?Y6jG!i2PslJMjaZUP{)AG0Y?$c6g1DnRU`WM z5YIy;ATGC6fcX`2!wpyzdUih8xiHfqen!!2V~eq>2<i{;s$WQv2684Y@1mHdt)N~| zfzX4`Yv2$?T_FfcQea`s{vB8t8fd7#0TtKzX&PV!pw2hwC_gM)T@+x898ng`V0a4T z1W@q{S_KR?61)nmL_^&g!*cj2S0-pbgN_1dTLV}tbPb)gLMCX31BkL!$W+kAIDHUi zmx3*L2(majGZs-w#>5n(my4iS0O^4&YXP|sWSt(Es{zi6kbI8_A4q(I6{Lc8(Ly#{ zf<`5wVo;}o*7>0?V}b`5RB5y!WP%jr3J?azEr@{;hS2nb63}4PFo!`EKr%Tvff6jC zkQ==yB@|Mz0M2-zMgp{TtOwErE_|V7E}~$E1Qf{iU`>ebA0aI;FMzedx=6%ZRFql_ zUiVGN8iL`0(Q?NXD4+y`s}BP91fuB3(@;mfLK5ZpTcm)7wrP=r8nZbJl10%2)kSnm z7}gdB83YS<P>ey_z91&PHZi8>((;o_i=k&b8=?3O_0(H*hl2H~>wwODMWh?3D_{-- z+XiXJ!bi#Bk*o)iD1lA@7DJLF!YqVl&^B~P;|fi4aA{IWQEDo(PMFo8Dg$f+EG9wo z4UjYPz+D}bNWiC1Lp?vQpeVl}wWy>Lk`O=>bf95zi2D%^M#;^f6qXNeR;Pj{wxPRP zd`lr0l|mZasYNK8P@!tVQ<J<iONdeFn_q>l4CZ}s`2pjA!UFCVY!y1#|M74owxGMC z6kuGW&Rj0k`Nb%q2c9lSOwQ1NOY4BTS!vJ+Mg$NjajHNrM8&E!7+EPaDS`ArC*9!= z)Pp(=T#D%-MX(NXgFpdXe}E^Ki!l~tDnM3OgAS#^B3BGaSI~uruwX>ZSBM1(;Lt;I z1?VOsa2f-d4jOev2`z%EQRdLqUHpAPeL&y*6!7MF*g!udSU^P>G?bwO{t$8SJrxLN zBL^$#*8AnBq<Vr|{HZCptPiHG^+BoN`FRR$2j@@X>ySj)Kn>ZI2&jyP)w-Z-+_g}O zS5Ti5%iSet<t&OSaIOYLF+6i1&xv8_<iRRLh*V~N9yncs8cB!|8l=<-Dzrdp3fgsm zTL%))%g+O!j|n#+TD>Gc9eiS~f;yx!fHZ|*=?<LI5N!xh0Khe1wH@Yju&J=YE$FZZ zlBe;Q4{-+a$?=fuG?2UqwFImZx;7q>J)psg#|9#!5LDu-=)tCPA#sQrfRIKxj%D)j zfX8S>f?@}>u?TdoK6o=NJO#n^Ks`ZxLWhph!y^`J<baX@$a3VQff7#eW*;b`i3}!? zfmHSl%4jFqIkyPfA{|)2P#7a1$LAM-PR@sK=tDU!6`B<g?SD|kh5Ir-uu=H)3dlzA z(mIra4m0;5SqWLeL$R%?d7#lt>RAh0iwEuB;wpYX9)>C<-fqmXX85R;t}fKH6e286 z$|)@(-c~{Z4K5Lhuob+_2gO<}Wh|)tQv~Pk%wqq7)I1IJ1twrQc&7)Pv_LC-5XlRp z<O5eH$Tce1A<!ZmxyT2pK}mAZbPl%-nz^kKb8^t<8IXHdC`}p#1+aBipqo4sbKwK^ zNa+H^L~S8LJcCk5g3=4bAjq|Ygu;;qo-Qaz%>ykxMH;;ZIUN*gkgIfP<?rm&%7UWQ z;$jp(qxUgE)eLBT6y!#g@{G*n3~<E;3q{D-4LJ4SNLiqy2R6ah7QCcI&o$T?w2}iw zEX2_XrRxO>0R;un!XEIkFrcL{dZ7WJA)(Z=61~Kn63`thXo(7%tia_Rw3UKzCCEUK z)`BANA^OlA4NzquNf1VwzCdxEt6zv~5O&)z5;3HK1xm-zdY^nZpn5+zz|q+i76Pzq zW{7kYyq#A~v7=A|CNzLZ2Y`Y-Grts+)~M_R7yocSA{~*JT2Vql#2_LPnodx1EM_tX zB^r!`4v9tN`?^304?U@aJOzttyonuDP(u?j!g(MQ38!_0dT2iksjwu_i$R?T#nq?- zmzA(J7N9fW)!}t1WPk`hQUIFKEYLtmW0_(?F$}T{DHFPCAGIn2#RFI|j^YR`hg?R0 zLJNE42G842cO#`8kS5Gj05%)03*H2RrFgI=NU#$Tz|gTYl+aBrE74Ja57i(gdr&bA z84Lq0umcY_fQxC6l^{7#0gbJv0NUW2o|j()odSmrCqWiY6e|=ZW`Yi+08Jr4=TC|u zcf=<arGj?-LL*lJaqXbKKImMp^rHOIf?_=d@PPx6HOwH5sS3%U1E|Y0QuDxT03byr zY~3{I3<u~s!&LZjTA<j3gc!&tsbwXwTv3u(1X^IKrlx>0JOfJh5GlR9{FGGC=}X`f zRn`3iLOlKbz)PL+sc{eT4-EjX&IH+~pg{UHc_0@nVv8d1a&gZzc=W*n85)+*_4T05 z_a&eJDhGvDo&xyNpv2<h(%e)?(3fPuS9^d>gv7c+Vp>{iatUacMn)=VurD<kytNP! zb`W)-)B#!!0Z$yzL=18@+|i(JM`{Xan5h^P+}On7Gcst?a-gIFKC&SXG}~mYkf&e+ z_i!<ixlsMq3VGNM(aKK&9ioNJ=IA`sQ4LT$fm{!YZs@2v=te}8vKchE2s%#%!}lP~ z@X`-j2!O>9gNX<?KpO1W!Ub6d>NAY9J8*?RD26~7WG(EH%c4}>0?-**pmjc=b|C2B zyK+$cXXa&tat`FclSJsw9GGrUC_rsNDjA?-wIE|)LtmJ)AW#vEMM2Oe6}(7;<XGIx zf?&;cB=cad1Njfy_y94HDjRsXBNvMLT3S$@S_=MUsYOMZDWCuV9mkak8f$^h^n;h8 zm6qfqj(vi<RiU6LRTtdUD^>s%IB>&2r)#AufKEw)%9dm#mVoc)N=gN3Dg#|mmZAq! zuMc5B#_Nng6%};p4a^?oCGL=MCD3(UND%-keiM^RN)vOS*DosA!j9@fT6_#O4xTST zx(bR?p;~+s3qbp|A#MQ$pE{`GSGQ6C)0uhc$Rn}P8+WY~zzlRrNECv!LRjeX@cSOE zKnD>a)WGaUjwDFqALL(fE4?%?B{eNG4=wvaq!pkGw?U2v=Qx;opi~PAH_#3Y6b~Z> zA!IQDLKa-C+k#>X5kAo%Lm)*1$PRQZjz#I9QC5^<0n{i3$2N3c0i~k_GR_Ko{1S>V z$TwEtTLEDnKpocu*^Lt0h^6E@NDc=10GSVR9%}a#61E6GgH-6jU5pYq3SjpjBtaE@ zQE4hTEg@V9n<)nigPaM^cTfgQDNg5uf<y;w7sRQkKF5+pPzH`s8Zt=k2PFV-!wK4& zfUGrwHn~#Jw$ef7<l$bxNJ(IWu(tfbGU)9-XzhoTD!|G>nG4#g1_cz@7DAo{=^^Mv ztS-anC$Mv%WrKz~c%%ZQ6^fi2F(Ux%U3`vG1e;HxtH8F9;3|l9xSRzE4amZLq+!X7 zM96XM@RgOiNMm%Mu!oP7;SZ9G#9}wl1UogYM;)odZ$DTqishi187VvH>nr%>E99ku znsT6HxOAbhuK>{rt+X=1CvJjjG1$e@U}@BbGdOZ#9!4ASg9J17j0Dz)6!v(>N5S^O z10UMjfVx=&IuC_Bl88TeAblp3@Bx*$Na2H{xB%^xR@VeISD~}^&|T0V5hxRU93_%T zc+ROr+b0dF1&uUflpyYlQPNC+H9+9oq*GE0ic*skL2dBFycF<RlW5yu)fJLb6`*ZJ zP<017>ZS<R7J%<?)>8;APDL!011)vXh*5%-hcQZ;7^Y_CVVq<ME1=Pec2MAf!V|P) z5w!3LG&}*~!y2u&w&?5ZK(e6Ie?grFMC}SL5n=TOsHp;To`S7{B1jARF~yK11?@zF zT2aW|eH{guc9^sAClXMOK}jM=kqYu5*fP}G1fD!#js}(MiACw9xv6<2#W3&NDHwp# z3w2Wvs8J1WU*_d2<mBh2rxt;d0cZ<jDd>h#g#<+E0(lISw)7N0cgCW}b8!affL+iD zV8xj!sYMFKsU;<#Q_(=Z1n`MK3ebe005ur41VXPYF-Jo)0eQbXETGZS2RJGdOA<jb z4vB48c!9$d<UZ0n5g=U(whBmn0z|O`aR<zjBFF{CAPrC@_!B}|B4{-uVtN#m@<>Pv z3e=5g&{4KXky)0Q1By#x$_a&}RP@LuxtsvUF)RfT5!IlK0tzqUivnoufKvi$(t<`7 zmc*2oS{??DB#>3;g#yS4i1WcAN>K;%AY!0(wtBgV1sV`8^4wB>QWjE#gEBSLmHA0o zdL{Y6;3c+5O*zbNCoJt@dJAHkCVV~|y6g~M*Wpi_(4j0`<rKs^cpF9!QY}DT3Ud=E zfFKH?B`0XjTuN$5VsZv}DjLP>_!N@4W)5yYe5DuGMgCx$;Y##UGK-V*^YT)Y5x0JV zA_i3zXeV81P7WgFAVyrk3SkKh<YP$KfPGBV3NBdifoz2aEQ)3g%tc&~_9kQjp$_C& zKuFO9G6UMEL2?pNHh>1u5bLy%YzU^N4e+H{cr8Gwu)zTg@hf^XAf!NRJV8waa16ox z3zmk3gI<1Gnua=b%*_a%Ezm*>y8j1hi!!Pqpu%259c9Ne+VDTBdPrhGTb}^g>xF%9 z7^-&AT6ByJV&L&|oF0JK2&%^6oe!v5lwbjQ1XejhGe0ytgVGS#6_A=fGd~Z@hI+69 z_?jIY20&-Z(X``o2G+=hy8){#%mG*>p|+#S;V%Utdzo<+f}rLGqMrdO=8*>T)oqFk z67v+2a}tY-ZDW)m?lyvsZ5tuFe=$mS=#?inouErWl<aKuL533001E`&@*>cxfT9>B z1*9E?@biqY8m11j0TwBcVg$xR_!gQkKu2UjXTwliteHjVJFUPe1YrOuxZw2%mRt&# z0}Z>Q<rlb|E_mY_*klyzOF#!&qB{U#H}sqWXsrZWe+?@bP`wPTkP(`}ZbcnVfvSOy zV1N}s$BJX}f{j22(P!qRYN$hww9(DYFD*_j&qz(pK^)--kpj=$pq{G%uOs#KK^?0U z(1>wyMrJPb<Q+YPVG5wh3(#TL;QJ|(N;7j(U{@qS-KRppW$?042gms!5Lcpj0F*L7 z7<^qlG?D8=4jI7^h95%-l0o&RjzT=_YHuUN$&+x;gKBaW&@n(z8(^(IxB~E8l4DK| zw7CkJu1hRYfOa{c-UoFwpivHT0H|04<zP_i@dfX@1C6jogNLL++iqdwLh8`M4DIMb zROcYAh=V3XB&WfzxWRiC2xP<*ve61O3kg0h4Ai4lha6vxx{C{1O@YoKM_N#iVkyjn zpl(%SUUDk*WD!ut!#wXC=4x;ffdvo91jtA<%nVTBnF_zFLqi3;WL{GT+;B&-1CoUx z+Tm?hWK-c$k_kEQ6rvP5o(YO=Y~cVp$T}|_Jsd!BSd>}<b~wZsh?7B0b_H7n@aadO zE<1GMqc|rsITbRh4evn1&mKp1A}C!zHWwgzXn4aH6tIx+fR-=N#EMqiLfi=QBO*`{ zTgGtr=~9b|@{2GWfEWb=%Oh1l5PK99)Il9Ps8cjzV$?w!lA*B;I*~LcMqLw{Ye1LW zC?qH5<fNu3<mV|Q=3yRf2Qn14yAm>?n^_D#^b68whn9fI{Wp*f<YPu5e3S+qM5rhg zbbcx<Okg)a#X=8lg^8mM;6rr6%G#osJct0eG=Ln`4;g8M76jn&E6~aCpmB!;Py{C+ z$2cfX5UZ@AVFan&palfhGqYeb6W|ssN;1UoB{bQiCRb>xM;gTkW$vQ<a`3hpS5UNT zsC(v>CFW$NfTk}XgFfKm9va?OpooH%8OV7L>;O=hK$<xyJzR)y)AC@YKB$_4o>dG< zj!0<@xv)c02R|Yh>T9rdkPwCX6zV{*JS>{>z|j)~87u)6%8tG+kn3)WK%+xQmkJf< zgYJofTp$Fw^(Mcx1T=aCIz|x`eF~r}cTg;ZhazMy&q@Ja|H9|NphxtArJ!tx5s*Nt z)j(;$gYNGrEy)L83I%d3^u#;R&auqAbm+=WeSL-SRE6xk{BlU9KssI|H$SB`C$(51 z6?Al-LSho=S_+WUbrg#870Of9i&7Pe6VsrJB0yysG^>K9S&j6d?t`@*U~z>~q=3$) z03BxtavdlrbHO$$fKT>I%}Y)#24!ZDB-H8f;tV`>47w{5d=UZ2hp+*7@ZC|F#h?qA z^2>|iW4tB#pjZG+;VZxoDFJIMQot55Its<5$<SM}^z}j4b!0+T&VY`X1>czmiauB) z1>!oSN*;7?4>%OSsRt58;ImgiIT-8+XzGI3KHxl&m{*yfm#R>nkq=sulbKtPUj!a! z%q)S<ibInoG@QYP*FvLQUtd|FIKQ+gIn_6@pdd3ZJv7M27SuDcN-QYI$xH^{b)}zG zoS$c%oRL^moLXXAT9T$~VGX*~$IL`0wbIKdD#EKOG2F7$Gb_K!$Jr}4F}xzjGb=yS zx5}|JG0!*C$JwhY$vCVs(kQITGpiuUGcP44GS4X^(x}+Xr_!R#C(}~f$Jj3?$vrG9 z#l^EM$~~tl#o4kjxze&KD!d{m(m1fvC%2#~peiNPugWnqBDg#=*~ro`IoB^I*}$(X zDK97|DK9Y7Kc_g;r!qey!ow>$Dbumg(+zHBx}UR2xlfi~a&k^Zsi$*(dZI^=L9&Oh znGcE`DFrF+8HSOWrUglc6_pY0Ch6WeP&(5o80?k^znmy%C&Q%Npq%7PCxb-y(Dabd zoKR2qih@X^u+n6sFl=_@B}N40r-XZ!MjBa`Ap14hD6BXt+|R%_(=s#3-7?e1$S@<> z7-Y7kZ*ZueTS$(dn@_G`Hq1{x5O?KA<%N|-8V4058JVPeyGLb28V8jn=VcdodXzxz zcPfa=bj(lj$SIEsx6Ji)56X$k%_)rvcC-u#F-Z3^iZV>f^)mp)n^&b{u2-g0c2sy& zK~ipLX=J!zws)|TIn>T{PiMz6pGqgEkkG(VPdBfeD5IRJ6!)-7Pj|N}Pj|Oc5Kb~O zHBAb)G)%5^DoHX5GE8z0Ek)>uo1GtCnNpY>5tfsjmz@_8T%I14>z0+`ZdsWcoDH`x zE!Zh1$-^(l(>*8G(>cQ+HNq(;$tW^CDk7si$=J&vxf13F%gn^wu&fm4WF&t(rh7VD zlzF<EmPNUTmIWGFmL!E+mImj*;@&ac6A@nd$+=+_Dd9PlQNihXiFs~@Q4wCIUX|Ge z{*Z7^_w+DGj|#7-ioy&J=j2>V<76XHIHVLO8F^(Sd0@9AF$ZF<cL+RgEWu%uXMh%u z1wkp{VW6-`PleeJ@{3zgeqw}gItVA_hUG-Lhh=+u_?3Bjq~v(I`(-3$I%P#h1Z5>U zL(*elsG+N;dqr7fI4B)CWhEJz<|c-x7$)bsf#Vw#U!XLcY!sTF7!d?bFW@*11*PZ2 zaMRML2+#DW+??X5V5h1?cT2-0_rUbX+|cwCW3P;452u_cXUF`=yzKNycdv}3T+^K7 zOw+0qcelzEXVb!DBgX<y_ncBsch_{}beiIxk&)sC$xq-o^6<(@@d&F-%JWT6anH!{ zbanF!a&{_CGIGlX*`J&nmKzn}m6HU@=ar^VcRCqGMtG)&R(Ylegn`XM4MXQ_w6OEa zNe1N&klR6aAe9Md;Z&7W=~R&7?35K5ZUXTuD6b>C*VQy9Dm)03|4WjL{S1;kveOg8 zO(1S}ugFNsO)-oN2gONLL6Un|m5;NNaiV)zWmGUEUXt7`GorxxCa22N-Lx#l*{L8Y z&o3uAFDNGpW)CFI7luOeNV->MWI8PU_~b^FdOAnudb-2XiD_<9rYXFP#3$#I>sAtl z5;l(MDY<Tyo^HOCo-PI`cKGDM%S~`ufXEAm;5dNk^RLXvO$j&6N^#FAOUiW22bCF+ zJe!^Yik~!(@^sHI-%6i6ubkwFu!7{=u)^d@aQu`ehDWA*JG+JWW@e|SRyu|FW;$AW zdX!lDS2|gGx`!2m(q?L<Q)N_yn_*&vR}RRHp;eydo*stDNtqUf-q3P95MJ(vrbmWX zlq4CMW_!9gmiktjRCv1jl_h)RR3?U}<fnkrYh`x2Z<b?)Z?Hk7uZydJkFygvy$88l z7A93XxhENil}5Qk^N6ckagwuBFj%jLZ+d8MSXESnmr+!BU@5p>$aHc_$#pA8a(By2 zat}>U$<4{|^a#q23U=}f4hu|AGWJYQ$_+F2boB}WrRl_QzZ_6p`#{~DY!sH`pXrpJ z;t^EtpJ`DRWt3x(=n<Cblj~QO6l__Toa<$noLiFPW8_v0D!-zfopM2DM!AO>M26=S zCmVw6v9btvlQJKJl(NKd(>zZPzv3igr}ETbCxfI)r;L<b%YrCp$GnsXzZ_2wKZE4l z98g)Ao@^Xc30Cj!SC(uXSnTQUWtigZRF&f4RS;<$n4aw61*%U#^;wmthhKh@aaeJb zTSci)rDbMRuv2c5QAKf*aY{~<vne<(67&3u6T?jn;P!{)r>A&$8Ab&=7Wx>1^cCcR z>bA)6^7Le*FoQ7noRX+;OT!eGd{Frhj%)8s%jBe-ic)ae@<2{6<>`nrx;#C~JuEjd z+%(7Eu%gu49Z`pQI%k0E<S0;j0*8%bx~E4}MslW8No06VsgE-#Ex8tZx*KLB8in~q zMmQFGx@Tl0<pvdl+AltCpzs9M9Uu&=ufnoH=`PjSpcoYAp3WdSkhv)ti4j2sNx8}C z0l`k@X~7ks_6De)1mj2}%hIUaoII?0q4h90{9O#vG0b+)$VfJ@G)@BL2Ul4AW?G({ zYiW>V9Auj89$K2{?p76IoKhO<;Z>IG9#)y+k&Ws;ceip-9qH*-lHvo78^0Vh{}m=1 z`WZ&$Mir!j>T`oIlVoQ{OHXIZ<OoptT^U#g3SXF?k;`z9-C%p2Gs+@!^NT$_oGO!y z9l`Z)QYJKfoE<@NW{?u$RSF7Yh<{A8BEu_+z1=M{6En*}X{;>SIolj&M_O0~IA4Ln z*rzhT5GD?4s|6Y57)61~<Y1@DsPKx66!#pXs9<<IBRvUJwgs1`C%NYoMFl&S`WX9_ zC549>B)aF6Mpc%lC*@jJCWX5dCq@*2+7t$!9zmdd1CA?@`H^6A-HJWkO*4|hLqX+v z268=+6z*1@46bv7%0P8mGN_CIr+tWjy)&I0lil4aBf|~SQw_oStTf8l0O~GC*`J&n zRvZ}-RFIMz3K0*3r?)~+SEusG2(OH!U?=lXXx>Z<cFK&5@XHAS`^_oC)59wVlz$+8 z1)1pv@&~BA0hQ4?p6+gyQI$>w$)GY57DmW+cm$O}${w(rL3UO~MFbfp=bBb|dX$8K z@_tfoiY2ICO3pRRNOI3HiwY0Ka4RT3gW|{&Iq$ifmcjJ|XMo+~<BaTnNSP1T2hKx~ zIvnhmFsF><ydY3r3Dy^C6qc719#)#-T%HaJ_pn^I;*{{vVo&#|vXpSs?2vG`avx`> z;>ZX;gWzz}?5K!z)U*#VKNnn<yJo}ng&GHCBxf6DBs-Ub%D;@{Y>*rXgVS(Ea$X=d zbHH&B3ToGQ_=55}m=B2)aGM#4Z(5b?UQv+ZoRRFAX_@SqiIyiJ?kb6la0HnHZIdOJ zg8Yb@H^K1(btA~VpnRDD)(2_}fYgUqCKq}c8WebXR9JxPOhZK8frPO|SzvfjVM>Ib z0jRB)3Qphfd{Z775tN@?2`alGc7gPO>tks82ipTqccxj1?rxQV5rO%>&e`b!AqJM7 zZsnOiIpvw4x*m~7;pUY2806%F@;oS=M?%vuG+z~adIVKM>!#8qW3Q6P@QQ-eTu{B8 zl93p0S_Ntkr8uLOr69L~+KNfWLHSV;UdD+LemOqQP8rF@eukjDnivrXZWl*_>O5n| zk|g&qqbN{418>*E@=8iUk~?;@LG4=P{F&lzksg`rRuvT%R+$89qe1(5QQ@Z9NO=fa zemJH>!p<ur*(l6EGTbl+N7#VXgVTJlBPgGN%9_$-W2fT8h`@ZWN{c*D{{XoRh4>v5 zwkYWxlzzZ@#V5BSCn-0@Ako>e#M8yqJi;9{P7(USZF~PDqo5p5aQW_(k>p-cmSW^q z8fg@2h9w@sZiV>EuPiAysvxS;v=pR2I6TND$;hxgG9nPtHqG-3NePe2O^nD0jtWn4 zOZ9LpO>qyaN^ypi1K~y$p#H2EsK1=*W>A1HY{2dXr@^qKBzL!}6xW>6DEBav2zYp* zi<?$PMK~2lhWq7syBAc28i(aZ<>r`#=7!}3MP!uwI6LNfRU+ybu=(J82ntijbmTe* zUCyV{(l^Q2F+IsBDi_+W1D83T9-#6nFdft%g`^P>A6$Nc`VR()?rsL2&L*I;%OKJy zBPY2Ml>Wj{+6PE>mH8N!XGXc_RD#9;l8n7fBb+_cBg0LzLFI6YvlBR;J>4x~Za^w; zQmQ=N4a=fD!iuAUP11vMEh|BNu4Ln&3{ZawTbTl}*P;yU?odcw2l7XRvsYPCZfIGG zM@pHGaS*6aoD<>f32rMTd-$e<@&h(CpfMSUI&k~ZI0{kUfYT4eK2TU&fYVxvGbk)V z(~<q_<Ls2|nQK`Z6>MpcVgxETA?@50_Y6>7hEz^K+U3~tAJ`snx(Nm44R9Di%k0u* zBha`^Xuhv=IW$j0;|n$K6oA{^xqcb2bPLXl;I=x*{pi@D3>41Ed4ZsIZb4FLP+5wH zAC5SN_{ZBlJ3S!SvE0AXsld|()FyE&i3&C?jtV!;OL0#(_jJ!r_pUNX_YFp`E79!+ zw-pRPZA)-j5>`?W5mJJ~ZirrRK8B`SBFb>IxPzoYpFF?vB=?-GsNjqOA7{r3aQGm# z_rP(0l()cq_w00^5QB7I0`5Z_?*X-iK>o7~2zE;L%rq&DaQ4J#UxLlYun#<5RN(1i zU>OkXSm6okE5pj6Dz6l%c%DzDNglZF1gDv>BwsfJNZsa~T<VjVOt_3fve&25(k&?$ zQXYWEFx)G^V`!ePB{@+Mj_IIsGRZwGBiR_F#xw_%uahzjvy+U2@WvUE|H^!foib9~ z(?NYFXxqpM)IJ4|Jx1kul_li`rY9R&q=V|hNF&gAoL3I0p93DJLFv~((gTv&NO5gZ z7HMQznG70FbFVN3wUIsDg9?(3ic39REe$~97%4_MRZ+p^p!RW2axQ4>$QRP)4zDo9 zRfnM4<x^={np6o&!$J8_H-h_7QQ-2+H67Bnc7lv0f!ps+#-OoNPe|Or`v~afqVs(! zEkhICLE|jo@v*8D_Z(1vJ{Qz?2DMF7A_CJRjogsR=+N|}a7$1dq%tbptt!dLG$S&% zB8LQj8770qw?SpKvkB4ejLZYI>x<$2Aas8q_=s^4aDE1rCz+1r1nX0zv<faSf+6kH zNTbmF#9(l{q1e;K6Exmgim(e$I)UZsEc|5-*evi^4Q{hQ^)FZ*k{iK%-1^FVjKWHz zoSi^p86`pPmIk145L|Ht@h_sSm6&T;kdz5;pJNGg^e_h3k)?^?env(>RAzdfPo_nl zH*^dg)Fw`ajWwYA0W@ywYFg&$j%XM9I6Fbx2%vPCQ|0NJ<LU`YqoDB)Bg^8HT+q0# zS56YBe;E;lGwu0QT7c_ha6Jxgqk{U=VW9L~7L^+b&Yzy{6*-aNkTHrVcS{2z>P>K4 z!za(rFftF?hpkMn#9Gdy#SbVRQRBd(EHJ{U95g-(>aTdZ!`hIbISJ6X6nxwaHJ^aT zKGX9d{({ug;Bwl-&mc0w3p8d^04~$rLH#1^^&~jXp?ykt9SKeIDbDG6K9$Mfw2tat zP#Q(9ry+G7tPPRm9#$G<9Fz~KyG_!4U5e8|c?VR-;LCpyxA^5m85x4+r$B8Ja2UhP zMQ)oU24|OIrcYe$c~CeyqJ$GZcYyPhvqf1DX#NM<21|0cER8Y(wbPON=}uKq;VC6i zps_r6!;BPnzkE=e659TS_gOK+4itVcY*7|!WKrzt4jL;d0F6sldAeJcLe0ob3{T06 z0`*Hhg33HS{6KxcVldww+L!V0#cW&SY=?pDgvDDvD11@cen|0F=;;EDw@k+pLh%L( zFR<Aqkr7Vek>M4fu}n*FedShyVh2hbX2RkSlFq>GGQ4gF+2NQD8dpUc>p_ZxjEv+; z$8^|uqK~r^XzVi^JjU*xV*u)BCs#Uw+V1I~`V)V=fb9ae?;-O@;PxlsHV8ORg2o?U z;eb8gA;Ju752RfI%BOBo8A%>t;PHD<SpXT&2}?rF8$l_c@kXp>pqHzZxCdfZnU4V^ zZTmPo878|2Wu&-6$K*g`2;lx2h#zJQ8b1cP9cS4IF%RNbI2)86!%CxEL1h%E?lH_r zhK2#regvBZGY8afZ~~WEM1>DTZ)S3CSVm$M5p^^~y(Qta<Ah%gTAhG!D@Y&yax5y> z5;S%XDc?QtyO~gX39~Ljq(`4hOP56Vu&l&NP}q8=M+QUMnc#fw>{J4oLoH8_%nLK{ zbT2Rjwb>KhEsLX^oyw9j!E-7F*vF^9c9i)T<v{xBp!q6Lz3%Rso@|s+2AbbX&cs%> zg2v>+!2Nd6xN=fBxIJ2sl$(MpUzYh8!Rk^-J3J}VDK|1Asw_FvsVpTotP)htg7P=G ze+ruWh;T%$W5Mwab}wYy%GnJvR_X??W5MG(VEy3nQt&t@xIGRUdkr@NwTZ$)VD&@< z;r=Ry`2o;y$7&vdz9Ph31o8y7v<MQzQWk^T(y%aq<XO;K2y{2&>3@RK5^{crj8ntM zn_Y0FXP7>)U%=rTjLq-(+>JCQj<5cQl(mrd6rvxW4jM;?_!DWI926&5+kD`318En* z+f~qZmQOCIo;Sfgh6(Zm(pUjT9)+y~$b^^=FDF6zU~z^r-vFM&3x>@NdwY20B)Njp zC1joev@R&rIHxocI@gR;7D4AcOi<P(cthsJG5S9~m6lGP9#J{Td4Aw^HlVRG@LUmW zP8!)w9zpq_zJ9X1TNR`q=nCpjW~YQ#K<03;jE(tJS{gyx7NE4?30jMhlN13OZ_5Dn z?@J;hvO#mmp!Eg@Nm%+BK9!cmNk*1Mo*rT4pmE6*_lzpgJQ1w_0Pe#>=A@x(av<Z= zm}Na=J|;54D-S$x2%bNL&DXhAMj3~J+l0xL<>|iQIXi6SxkXuUcqC}eNF}J;1epcy z+d$Siz~}M3om0T`%t^V)dEUY0kg-mX8{uW9WoeQ}4wmxIqAbY>G=2h_=PCz}b%4q_ z$e4>;Wpb{Ysi%8XS#qvHdJ1SR-Q5y2r=0;_ALCw;85!<Z<df;-1)76T&cinLVo??u z>{OZ(UQrBLTLXzti1|@vknwWRd?I)~O%^DwLH5JPOpxXS;pq+1R)Mcy0)<JkVR3mx zuww>z4VE#ipOp+QbHVbJ@G(Kin3RhvzOpAHIX9)sC(p?+*(g0fDG$^K#5Udys)J3? z+bQt80GeO-$py`ER+xHwfYv~S<$~u}KxTv1BS6MQlR$GMkhw3=x-Co4dcKg<aMP@a zVDNe=r2OM#Nn{@ON16u$jXM`Z%tvoyg68f)bCqcM7Ce3ziamUg$`oWfz-3`DcufJ! zF4S=V4+A(Kxtv0t15XNfD~bvQt*;8qk8%$yC&|qokoGY4@*1)3AlxV@CmCF(g@MK` zL2GqD^Pq6IfzucfZjA)3A8`%JNrsMtV%Q5wqxq2$eu2rkmgU|a@U;!F`EVTLp=f0W zTwe;bZI1{?uv;PZM>c2;C8)ifV&qnk0vg{lECKh4!F?s9Is&W*X{`jb-2n*;(Ats^ zEcGgAZAZ9CX(VLqAs;kf92Fi}44xY|_C;$$gYpDwIR<SDAi@G_e^fYVjSRScfs8*m zyJ4sSt>^H8&ewS3XcMKlXH+H`Cxgm#V^7zx%H&+jN^j>B|D;OCJWuCh$Xq*U9i%%_ zUIo>GNa2#48wOoh0bS1-9)uCz$mtd|4hmX_kz5H{L*P`L5}s0!l<8I(72#Kw65*8v zTAP+s>6Dc0USSwz1Y0Kql?wx{wF0*l%Y2MMYh%+PV@n<|bDT1x!og)CsQnIEUm6|= zZdXFeO;DJ@=f28(jDiZHoSjOOj04jX-Q7TII5IpDW|f21`z1!C!`rLKc@8p98Wads zlMl(q807?bZD6v87sxFp*yg|>V|nSIu>x?q^K`L*hP!D2c#hK5GS}NVIm4?mJKaCi zu>^hY0-Q!b>DE2W1T?1L6N00B_5iI_i7H41t*e2QQ>DqqVVSVCSKcn5^+%BTO|0!L zh#t5*QOD&nAZ~SbEb?>#t!V;<b7(1SyaU}lP<jC8CrBQIm;2$yFgHTyqrwn*7NiH( zPC#Fe69Ov#B78ypCrB8A`uU*s8i;i^;4ytf8UVG++(6^DhRH_Y^n!?YSo_Y|vCtD# ze`kWy2W)KsWX=yV-eH;pT0fp_<W`vqn(s9B%81MZyP+~F95m)>kq%44Fn5F2_N2I5 zmVxWCN+-}d*|KDhpn|0E95c{boFpUUar%7tnjlE|4(q?8tT6-o7rd4%yaM}NKV;2W zd6Gw1UShZjwlyW-`7Lle%L6>8W)KQZuilV2FTj>=VQCuF_6DsrO7ZXm&0As2`9tyr zXe}kAy&qoX1|C~Mgb8T<GkBg1mfvvHpRlw68pA+Y-viTE3~p<J>!?t)vK3rrz~ckt zW~6!urXNiYW_j#WX^GrENRJHn%Stl#$_ACSB>M+a&%xpa+}?tv7oS{Y|Dl&D5Wj%) z4<vp-c@kz$De~GfX#9ca%@d8nkll{lwn6hZ#C-T1D9-T@NZ$w)mRRjX^ntLOkJA4@ z%yVFyzksJ9?CZKfYw#dxKLkr144!8WssgzaN12V<hJlnxurvV<+sFtn18_SToB2p_ z0999kz3o6m8i(2q&8r~0!D|$Q+{4Pf;pI0G?P*XQjVQ-J?d&oi!>}q)I`#DMDu{B= z$w~>YC`*a(g{*sotl5OrI}yI%v0G0MzjDwz7Eqpwi~#LvL0wM(ulKQ~5BEqj&^k=e z{*6>;M|~uAktet=b1Z_c!Akds_OX3HdpbaSK-?ka7)pMEgi9%0EtWatWDidyJF%>* z@^A#nL)sfCVT0T^0M$3JHkcFAT5`~u-IAO@=sH?xzQQP{;9-K?4|h(-PzTPt@cw{f zK5RT4GMD5BTi*nm-vE~lFg1{MAyEZUuy$&2b~<QXd#W+W?a1vk1RuHXOmufEjdHKZ zNzMbWA4E<2pm{&=y7*8tl=YOj+Uk&af!E*QdMXUIRyq{cCPK3VZSAsqm`Sp`Wo3$o zFDZ6{+f|^wL-2h>SlXT7aE7?C0Cn$CXu2n8?VxiCayu~(qb~y13n>o~aT|*2AFvwy z<rml;NbwC@Galsz?P~;s>c<jG^mY<NAH2;A%E#&GYrB)eEx}_t{+Y<>)e#o<puHzZ z{a`e|V9UD@{}e>I<U`5>w6)}5H$l`GCg*0Gc{(TOVQU|N)uF^KM*jdyTLj`hSX%c7 zjTeVw<~uB91EPNqaT|PYAPrPz!}2?%KL#pSk@7Yytja-a`O86LO5nDEyH`e}Q87xJ z0<@P6c|9a}Z-BdBVX^^i-5bOVNdFt$rw8rn0IiiR_H@U({uVr50;-$B4bk!i#2?`D zKQh-XE71_V)*j?`#P|)UFAa4kmN0>|Z9!}4A^8iVZRS&H83x+d0;yj?bGS~RwJ`Ad z6va$LeGYO1Tn%_W98w2jGv5WY#vU{W5ETsC$5c@a_Ddyr?gF;I57LK&uN^E0_t%ng z!?L0x{Hh`&yi8H&yFl&)m6>kENnpR1go5_tc|z7$<w5$`pnZd3*<O`S7HQ!9Q&4+h zVF=0lNNE7FUk^EM!Rgo8qAb({G=}9=23ns3=|8~IaUeLofY#tfg_~w2hKGUo9!5EX z))M(uLH%5o4BD5O8<vd{mf*N`Eb}pjjJ<%?WF|r9`H<2cyx$3N3pj6-`51ugcQZ`# z2n4UW2seh8x5b`_{03_CLDpi189>9+0_<MU`V=Jdz-0<(%n026cLwcqbE-mG#|xT! zK%_zBvA{~FBrk;Bd7!nei2abs#h%V7&@tZ7yog{&Gf+95?BR>8>;&&4LSK&vaT9#( zk+}7U;C>&de*hkj2hHDs$HS5hOA0`HI}ziB*xFFw@CAnvB>zIpNp?2P1&tkIi9c}I z`BYlEgVz2-#=Fzg5&JuR!E5G|a)UCGb1~BjYMO@F4UQK`zaTp*!U^1_g`{hzWKYDN zHPBjqtmQgbKR9hUfy<R}qa5(~6jGgE3L0BY0q-w`tcS*0=RnMW?|XxcF~G+ELLuY8 zZsnQq_%_73{vI4g5O-N1?S1uy&qaXRnNi`s>At}x6}Z9}tRJ+W#Mmz>G0Xr|{^Wz! zBqzCtRVG)O=A?Q!f#x);VC^zce1Y|V{ecv=U_NMUI;S)WQ7(eaGf2)01MlI&st>W} z7Tk^irA=5G0ganSID0|UdKeLL<5=bc+9MurSeBGs5Q11U?NpWQ9+u_l;#%s9(l^3z ze^z3ipC5EjGsx{Y;~LgBAQ&!a{zKYR1udh)vVEML;Azr3*vTRdOB)<p*ddu^92uTt z0P2HK!7Qk|Kw~$^buMJTIc7PI2t)9k2Dm%`<!?XGz5~~&2uE-^0f|%GWdpoV49TOQ zdc8Cm$6OsEEI{-4j-|=Yrr>?V-rzFI6tw@ZBr?1tCltOfBm-Wj`heCG=7r^e=A*!E zYRs|yV$ePt+<6z`UsS(>>W!SzsPLd9c=|;eUqiSTq8IL0oNYviI;>;JkoG{jH)tH$ z-LN3p*bhAZ=2Z#m_rc2%tm6V;cYyk@NMp=!F<3heoR1;)gWBbw_7hUQnI2Gy+}1G7 zNcM0lP7Th0rkSv8*w{UI94<Gd${SQaLFbu3dpV;(bL3d;f|P^cu}$oKI*7X<dyYK( za#BEJd%4L-=L9$zC5F4Eqm~!oJ#qy}nNH<N?rx?y+tSV!Wl_0qMxZ^n;C<`Pu=N$t zJ?oiHu({g|(E4w9*<5Lo9vB{F0NTF}(TAmP40E?p6ljlbC3x*eu4SoD1Z3_F946rX zs*pLa6v!U9^d#db(3unP^4HTNtSTxP)_;b?4><0?=EK@;1yv!?J`1$Ji`0Hbl;xhz zuAueykp5YwW3CsL_&}Hqu`ALDVYW{$yk80F>%r$v;PVss;t*VKVeO}(wD%G2#aZW| zm960PisCm=8`Uu*B?6R3K>L-Tbs6Y<2jqDda2P`T3Guf@Sr~X9HF%FVyblhG8}K@O z=stg>c?)c9O0ZwSW@3gBsD7!8iU`EgZiBc5G`0ZNi{w63F+|^(aQ?9<3ke6!n?u$* zf%d_H&OS&o@+t)FM*_7WL1%`5_c|MyK*y=T{)g7Tp`g71IOpqAK>G<mXGDa1f!p)Y z_yw0uAh*HifZ%-*C&>6Zmb3@en}gDa2c3NZo!duE51_GR$k+@@e-u960y>Al(GoP) z2051iyl<#7D#8^M{z&~4NIiw8j|$#jidb&~TF+2n;EkS^AoUl#9|@`tK<$5MTL!uw zA_Zq#1{7A_NPE@6bHg5fDH!%3r3s%(OQe2;6R5lc?T4-ct%m^hK|yO5Kx+h(z<WJl z>u2C|b%-<yHWM-bj%eHZf$OzoLxX&zx&Uh(gPJ}e>DZ^z(i^-#6+TV_*&7CHLwS0n zWPr}~iE=hc4~Cqv0oo5%1v+CVGQz7MsS>jO4NDsqG|!j=+P4O(kHKqDK<i7e>=y^M zX+1ssa=_yspgpCz$?4vpxB`t~8-vdI!M+X!6n2Su;I-4>JvfMd4z{w`qAUb4F9zC| z1L-FQL({r5sGNqJJCbB%3Od`NG`Z5T)YILv(i7`G5=2~p!yPiW4{qCl*KWB7f&5+! zisvL~-tZ1K%|&m!z}p)j|2n6G&Lt^Nt~3SjVU9Gyv8Do4C%T7~Cqwp`gVxqS$4;Hf zB6ABs=QM%V41mrx0nN2#B<Fc$q++X|;QIkUZ9=env6Oe9Z~=`wK+aO|0rl%WeDTyF zpm1@8kL^O$gTevoM#y?5$ao00HYcLYK$Nc#H+Y7F+pXX=MELR?sICFcwWF3rkn|49 z1DI(QVm>$?-NEBuko~}*{jBI^2sj@?%tFuGpt=2|OwfEED7?$lQ;aeSB8}41lfuI? zKxgZK_Jx7cY-BLFPmu$f=T6G?GX<Slm23<-&jjITh#eq4X#HChbR8@xFM;Ac3cME@ ze5OqXXb%{uEJGfX!So}<Jdiq2nTMP%v4s=JUSu_(wkAA(fyNfm+o|Ai0nJrH<}pC( z!Rw$vZAx^th_(Ti^oHh6X!{hK8$odib|=JcOZ0u$K9!asDWEkd#$E<Ubqwh2s|?V- zeUvals>48TM@kFec?P7mL^^n#B6!{bwVd&(wDgL~L<$4w+G8ZW#h&2(0-$|Ip#6cM zwI|^823m&!nV-l+ZKs0HMN0yoC1F?w+RL99ftF6d<p$zxE_fV4_eP<fFNS?i6<Lob zXzoAPF9*DC6Wh9VWcf-^x#3ovf)>Z1ctHtU(0HOzPDu**JdDuv$Ou2vq+DOnzCY+# zCfdF`h@WzkjJ>j=!oX^=mp71cZKU-@;4%zU)`0rA;Bo?GjX((MJSn{F#oE^cw==<Q zB+z=qBqNiO)ZDPjq)K>yBQq-857d6m0q+Y3m!*C=$+;%b_E`#e9cq$MMYgBAS7nlM z3h3OTD%5ZRr*%+030@lk>c4>2j6(L|AoPIFdPs?I%1h35%Z>^w&jhb0b%Ct!NpiO| z2KRBGeG^dm0y<|X%B2A7+D-6zdoKB)bwtJ~m8Qm^eex+r$)Nq+c|OK|<x$~&RX)Zk zIgy!$8Oa__RX#?3hRJzepnX#%pmt<pr6njH4H6@qGNOz^%TnBPO2Fs#<YpKog_mbV zxm%X_M5KV$#gwIh&czD{ja3;|MMVS|B!(O2BpHVp_+x2TLi3JsBzVu0D{P%zdSbX? zNmO`HL1aWwPLfA<F{G~rs$(GMQF%M36ht{E7l8IhfzIoT3=d5A2{uSiHnJ><iU`UF zjk{nCb7SbbQX|XCL}Op@`C;&Ls}TF7;O8Yl&$ED?(F9&Q6=fWjk(}!WI%fg2HW+k< z5!NtI2{$cH3@-t>A3Syq2}f{SunaV|o}39j(+}j=@+5c28ehn|7}F|j<E1EPH#uXT z{e{K9;C5tExEpBSCA4n|89&0)rpDfe3@%Ui1Ft=XwClm;FKFBXB~C%{1L-q^#$DlM zH+Y>Syv!`~&P1e9?@T91JJda>GRfEpHje<G3r;eEo$nR}T5DYi+dB-a>%r&kM7ToY z(Fk;A2-3Mekaj2BESMhHz9LB5G^`4CrWn{y&WLqLAV0w8pTT7w%37qXs9el>6oegK zImy8pU^PUBgBy5U*9g218a&4ds=L5vJ$iUS)>ebhi1adyG6LnZWZ2s6vLqwWo_EBa z74TVJ;JOzSACUZ#nCDv>VFVi!3k3DE;NwFe_rcN*te*#}3z6!tbm*8WXkQ_g_N^0Y zeGVzd;r%Vhd>h7^YwTsa2k86@OJh%W)0~t_C%5E0ud?LK^t@1`FwhxGu(Q~LgF@Y0 zLqb9G_Bo(4Jt6z%oe^hJMdpPSB)Nmvjg}#eIfMJR7-y1Tq+`c2A4ABQkMRDGyJ1FZ zFlcQYeC;G?d>Gc2D~O6fT`vOeGs5PV;Ab~ruZMjqEkR~gfzu;oy*^U=9du@!1$f;` zWUgB#WKS=sU5RQRB<)(1p^hI^6oAeN1)p1G3_4E|cGf5I+&O6P1NgjFa9IH{2UI^< zfXgUYUh&Cvazbs3!t*miA6i=q+~&mEmH^k+pfs3-zIF(s4FOI|=^04l>hN@nSnmtk zBjt#!26^lq9OpRK1f#Em2CYqiu2X=H+k?)=LiFVg5$jCAVFgM%kh}(-lSj`-kaHhF zV;!h%5ZIZL{+UkTxfqx}@OVj{LB2P59kOY1QV#n0jUcmNbD&{`$yFsGzL}tNcp&*4 zly5=h7I@Ap1S|&)FYp)(j18K*2DO_ly`3R@2STenL1+Dd_P6GEyOn3c>O{!-GKg}| z+d0QP4d%8?i$YI#=-I2zPOvjG&7yMMKxYaTdpZZg*y*4$33T=^iapMVvuJ%lXXRm8 zM+DO2=?q!x9#IJ{w_x^w+vi>`kTYGu=ecG=&w_HZ0G%5MI^)SO$-NxDo+#PKvN$Rj zlvcodNUD;IDsp^s!yxOxLH#|*xy9+8&RFDO=YxX#9FCy!2y$+4R(^V5xJi0qIQaZk z(0NYa{nN1c1&<@RyCTl_4EHNbiU6G_k^?@sGRZwBGdUNurq;<gGQt;hR-S>Ub8@;j z{QOx^UUbZZ?9mJ?^>hWz^@gS=8-x3Rkn@f_a>`PIL35y?Aa`UXd4z%2Xd=!j1+5bY z?ac{I4~3t14Bk^|3OW}Wn|&!pVVR&g-YBEcQZFR8fW|SPaRNC*7kWN3sICH^C7bD# z28$DLIst`gPDLqNyu;5-^)U`JNDQy2@~W&zg2kbiQ9%Xd9NrZ0d8eScY?QjlIS^cT zK-~de8x;mR4-#@loH-~Df#hK3LFGz=A~Fm>ePvJ{K{3zOFF!H7B0CU#R+ewEr<<Q4 z=v+rAAIUC9*qN4T5k?sq$%f#w7eVEid0Mb3Xiq{wijip`Xdg#ZgqJ~T2x{8&bVez6 zok4rfL2K+lYtmD~{R}{J9pFADQh0lU&kM+@0=Gjz=R)L#fzN9O`619KqaevW$OUv( zS8^4^E?Aj_?0=BGV6!1>ql=;<Am`?W8i$ofMR-B<L-y){&)f!^0Uj4~%#Sd%1o;c> zC!bu<I81pys=o5{M58cMX!(ky-!a`2C0zZIK<dC}iJ^oqR2&*s5WB%=gTc*81D`Vt zJAW8tF8E9jmn0)o(AcdZ`0VXWlruU(aRM3x$Vtxj1DzWN+M`vOWDGhdDyKXO*)9|} z`j#epc$KBNTY}pzpfHA>AqzTN4$Z!FP&*m!MwGayG);>zhNPhgLkptZ0!yo&Nb^o8 zX2Rpw2~^Kig2p^RaSV!E#2LU&c~KETexUwOl2K3<=<M!9_b{yS3tr0wK07q14CGHx ze*~J|QNjRn_ApY|L(&kqj|H~F#UMQ#R3}36IXpZ-=OK7HXMpo2<SbCjY{+~wxc>t= zPZcxGLDYllV5r-|jSO>A+%w9e!0X(@Kx^rd{0=S~!RvjzJwWTl!pfpDok}2cX^weF zc^tCV5#&a2T@BF(8g~Zmfl3Jvg`a&6PJbSdbCwZt0$;Na^Ec936~{b~IY@b!3U)#L z>;X!TVO5FF87TH5%3x4=gzi>Qn;+5#gM~YyY;Zy?v)v$NuTORmXbip*)Yk^31*C9G z_eRO9zQvxdaJ6NyyagVUg@-Mqu8wjK1ML;aNO2F#4haXH1#6iN8GlU4NpXeyFFy#b z&ax7k{!sE2B%MO?5<YWK%OvPo_OQCi*%4*GF~ZI;SeXwQ+e0mP!D%ri+_WmuJtsE> zw2#OYvd`5g4^-|$%aUMI!=yY={Sjq=kyo6dXMBU!@)-Dm&QArMtCo(iAMR(AJcnM^ z!`G*wwRIqA6@11rxP2N0J{uCbOmwtFtIP1(gU$WmehiBHO+b5)LF=*Lc^%>o(A^6e z1yOl{rQk7C=M2y~9YgS0vK|<9DqeTM(l<)}a|WHm0$KwJiZjbnr2GadUtOcZ{mMY+ z>n9n*>NAx30MtiB)<Z;o2i0{IIZ>|Qy#Sy#I=J3N?9&DJ521S-A!9emptCL!`2aPq zIXhyFchFrM$?g>ysnGKv1A?7U>#f|N0?<B=$cP+pnS&8W$ZckKKZ9iGIq)c9=K*#r zdKjRD8#wKN_RhoW8LVXsJe=X`D^bE3WM*kpL~?qhaZsf<XuJp%9?1C+bj}>CUI3Nz zE{^7&?gr@rp!3fooN|)0;bjASKb?Q2Q;BzFF={&u+zyA7HOY{647A<@_Yta6P|Wg6 zN&>C@L30Z@-6F~}P+ViS6~anT%>tcO2yTxcje|KmrlXcW$YBzegz7%<Sv&B&gVDBu z)UUAojO-_rd2v|T4yjYY;|g#yq4$M^q<Dm7dP4T$gXc+;jJ*m#drZOO0njoTvbQhC zz{?og_i%@o?~pO@a1+qJFN2hD(D~fZxIyU)LE->mb_Gs1gX#(NwmCQsz<qqwIu10h zi&WQOj~mE7Uu1u$gZf*Epgp#^ZpE<r0#v6V%3M(S0Xh>GRJS79df3|;usBAmH<8jF zwt5cLKI~;YcKeXpStw_?Bl_Q-(ET-#wjZP&1M44CT3303?$v?TWw5qBXx=deG=2{` zBfKm*HzzMK+%zKzR)=HB<KQ?&tSiWdmCaG%u(oL+VvjiZoZ0epWP4!cKiC{+$8=bl z0rNp)$!Pf)xvd!ms;9waN+76A!D4q%6{0>ZPLFafE&`=X)bbKsr()3yE?cmO2UUd| z!SXd~91>1<@cfn&1q)M983WxvfD~q+HJcc1DwMFoXtyHTf>_)EuLEJ>3kw5qo6FTQ z6Lhyu3TVvH9Xxh~QvRTZ8EEYYsE=Av0Gf+Q0*$GF#>+wXiNM-a=<$YXK3aRgvJ{ku zP}-s3bHz<T`%A!OBXk`BN;?E{X0d5;VuT;4pAXyf1zvaKlZ)&&&>A!+jBx@_XrDJK zA__F`1)fvDVkSmCgsH|a31UW23hZnUaGMCS#sH;#i#!*JoTu@b2@0EVBXIi!Jl6>t zLxt;wrU6f9jDBK3B>1kIDDb(eXl+=~d7gPupu3b@3{cw2-q3JIi*In-7<%>|sLpqS zt~G)5>!9~!K;_}-3|3Bo_D@HK8$$M|Le7WA-ez=hg@zSUo`SYzl0bKqfzE}D@B*8I z8D75N@j>uDLA3G$bbcr33`npWVE3yyJ7pw!q-3Om_SJ*t5QD+})C`oh9Z2;)xLpid zr<Chf0_xWUK+mp04JS|=3N$VUQ3JXU1k!$k)GHWuKlsd2<TK3NKzA2`_9!8@r6F^P zpu3cyaRWX_&nOgh9)LkqxFP6{u8ico>~z>VLRh|rrEggH!^=Tu$bDYW^Hh=QQ_$WX zuZ*M!P+bY`heF1FLE#DRM`PBD;IK6cgWZjh9sy1ZVW4^$ayDDAQ*L5}S5=BLe9aPu ze~{b@+N+<D6an6AUkWh`To&b|<c5`k)*pb<J(7CJeg*RKZ$VOCR9T`?Xg+3ILdwse zGi1T%a6{HJd4u{!#<2E(Iq3XwXqv?l$KbY3dY*S?GO6VYUiW!b=7aBZ!#S1!Qp z1m$s*@*g?>`GEI;fzt_U*$7%QlIfTau1`ScB?mi#&O9py-6azc47zs#UQQ#o^&#i8 zyN8v6&U?ky?nky8wC4w-PX^DI&~X6dw3>-%Pr%X*Y<xJx$P2Vq!zeP`3p7t)>4{oL zLCP^$Uj{aIlADqPs_#H!CxM_bVaPsXw6KDlUyE8cK-$fba6OKBUeLZ5%w3?dJ*074 z(7Eccvu`ax=L>`Ho&cYPi?a<=30h;BWMt?9x<>?5Z-j)q86-NJ<|esYmL+Fq_<`;s z@yP?-As1AZ6r5fFI<v#KDiS3PgXTj(`jaaiivoh3P|Wnn3o3)%nd9x^YeZ~&1nO@{ znBs|(Nbs4tp!G(`ZD7dS2Or2hjX_jI24u}IqFjQn4@YT3K=!U6mv7*Bf~OzQTAsY1 zoKz3cyfN~*YpCf6UWTK$X<%t0#}c&W0CX>>L6EzfK_sZ3i`-9l&d8382+BZ950HI< zkp3T1JG&$&6;c;r(F3Yqz-`r{sE8bJJ&4o~^NEVchOB1<-)~|7zTX73yoBoqn;inK zPs%}g9n6RL6RGZXhR(0Km*k{I_`>rnWY3;s1*(4_eG|~wDDh*gpmQ`~<wY^<zJ?;u zeGQ<wgJi^hOmk27;v#R1@ng7uz;he{!A{_C2{$UiI&KW@C;Ni#QcKSD%K)v*291Mz zx<?fx=Yj6-sQ~S1$w`Lgd2qiE<S)?umY_8mp!F2sy{Vve5gExw=_ScVVc<FoH16r? z?gbiGEr|lRDcnk;!Yf=rb3Tat4Km9SJbwbpn;<`;o-+hGBN7y@rUpp{p!;INDg!}l zT)_FX7_1LXJ@{S-j5vnHo3m>^$PRGd8hq}qn=iPX>I~UO2GR%aW5N81tj4Vb6qexq zmGCwdxLk$!0kbUw5{Im>O$6N+3XKb-HV5d=9Mt-PfW4r*0VBgoQ1b?CT!*k*z-byi zjYIeqkhv-3c_C206WrcIP5)8uVZ~7qK{=j~ut`GAZ#mF(hNJFB>Jx+VKO}#dfbKYj zl!LHz1}jH$L350LS;@JU#Yv!kEovD8T5Fe+>Rg^46<&@Oj-d4EmK_=4WB|HD49DJ> z^hjf`98kR#<?NK18tmj4YLt-?<!)&lYUEd$2+|wj1)hI}qzQ{M&|Owh&Q2Lo?r!DK z^lj?t>g1dlUQryF>sASAb3)f^fzGoH_bc*r4Ko3i^+~xYIiUL>qufJ5cR3m*hJ(&` z2HivKSCE2oS1tIiB=EhEh_EdOoxz<A*;5a>8x%Spo*s#~KNWKCtb2w*iiacUUg0dz zeM!l=VPLy_^85@yXHZ5(WPt9}Dh17JL+%20E%OcWt@5qPz~)!*oP3l!=q#C(Qczfe z?&1OM(*duw1l=zh5tI+z`yP@QQD6qTixPIHFsSYZ-7f>$Pv!%TTcorEF6SMyL3d>Z z1UqJXyN4B{)}7#T9ek#6RBlCCiXr&Sw45Yo(D**+URYCPIY{~e=K)B&0=!o(Hwtu5 zWE7}ui3%?Vjenbh?gd7cgQP(ucR7RhEobCJ8WpEU=2{vgIy;#_<J}arA1M+vM-IKm zHW}8phm|kxmY_Nh)V44VhxRFu?E>w8LofThk@djWE@u=(xd-JWWhR6Ba42TL&OOM@ zsY(R5)1ddo!0Ucc9RS}Wm>UVYI~X}%L)*a!cR<Q0Bs(IZ^;urBkzXa~u1)B<3P|A% zy^GB`r7F_ct1QXA9COYOk=H?U2cW&y@OB4ASqWF`nD6BtR_v3TQwnNR2D^t9L>Xlm zfYt;AI6Hyk9%5gGXH<AjUZO`}dYVTCQo40aN7f%^l#`v}o}TX=>}UbH)72*rT9&w_ z6hwIh<s;G?##liZ=)M-vUh`xlzl>ye(0!d=MJbTG^T2H;*qyUU;ck_Q#$k|qP~dR@ zNrTC`VW2&pSy7?Tv)tf!V}t4j$8;~lisT5l@;v`c$2_l0UsK<#V$j(t@Nn`3-5-{j z3_5cqH!|F?+`lrp7!hwEGm<U5s`AslDx->1Trl+pK=no$2bz0TqJ@)Tc_vhEMM}7( z0jAk0$q~-UFt=6thhUoTQwedKXH}rFe<ftC3b?F9Zx=d)?ijF04{`^cb!Z9d8^iA5 z%YlS1_|8kv-lUA=+!DiN@HiA`PZH>kG4MUb8PNM<OQX>99MZgZWCSFRplAJn)<%HF z@bRV15~v>J@&jYu3cjY*%?~tAR2o$Yx{m;CR{{8LVfTs*(0w*OhQ+x7E~d$znV_(< zOpb7?NR9}$%mdw<fLNp8m=8H;9db?-a+?Eg4``nt*i2Bmb4r4!&p@qPL2J;U=?#7S z5;O(@y8i^c)(3JwI`n*E&^_$1yPKWB_vt~;BFXS{PbmP6DS+}x6nMNl5Pp9;tbZ68 z;ZzPXGbG%tG!>&wpAJ4-6+GYRT%PXb4!Zw5tO~7747$f1zJAR&*u>Z;FFifV-4b+9 z9e8ayXs!r+K9sX#Ht4=-NZ$l>=ME^mAZLJr)_6uncvVJ5<RImJP@Nx@0b1_{85;$k zIg^331`M`G3{;mEC%J>x5rOWFhMo^m3AZmh$~nCNk<TFIqZg>pm}v^TJ05<PCiomp z7hh1{6m;iT9>`CivpW&@r-Sk-q&)C)FQ^E~1+8`U1-0$7vCR*9g8dCDFVeG<AZkH- zJPng_{UCRzJ7<974J};3Yf#b6Pt0=z-?^AvX_^t`9+(d{4=LS1^D4Bji(ChS%27!C zf$B~qbMfXAP}vJhJFv9k?HmMlFY??ldU}PYduY24S|@|g#{%V#2zOJ^8c*2T&3rFo z`2FBz$+=-wDd80c$(6~);qbBnd0i#=j`no${avuNc3^d;Dd_pq%eg!qn%0rplPGJ} zf}<k*43j)SYl~3Rdy=seIDSC;3c&63P-y!z0&;g8$RCjKhRj7Hg%vn0fX*cb=N;%8 z2V}Ki^T7EHbXSO*6SVzV2?-}iTN^rN2RUEV$Q0TahPnxJTm|kApB&3HP@ap5@JfrQ zGzInBLFFcFO&NHu!5cE>3{58{>7YB%LH>c|5onmf*B5%bf$qEyD^3Bgdw{L6L77j1 zngvU9P6+p)t}Uqql{cV$J^{hV@c_B&9cDjlT-^&)ZW@E_1&66O$~>)OUVuj!Xpa<l zjyoW%95lZJS;LxX2s)1#9Ip|EmhdnH-GvG2dqjm8CVS=uRYrw}C3|L>Soj!+6$fM@ z)puCt03qY!khn&q4b!|R&{%|#A;_+RWcP|3uS(3mCz3x(BO`(gK<ocOdyXT64WWCG zpy?lS_dED3rWDYb)WP7prQq!c%yt&UJxJz*!wH^;Fw+Tq90^GeybM6k$DljvA$bvb z{y(%d(x@UQGQtxyu7c8bLM_9fb7+}C@VM~F4J%3Z2r`A2lUT;daM_7iS7MlxZ0rZx zvxQ+lY#sp39pJg0s0hET$OxyL5NP`jR1Tu&F`wL&oD}DD(0x)UYQg&}Ky@>?&x4Xb zv%q&TW}>d0gqoY57#@@p;%=D{1v=lk5~c>0M?md*P@l*#J1IP@D%r>_4}2b?b6`Fq zAAstbWQ!#C>~yqr3)%-!0!q)&bX1%e5tReV1CbGapfO(q5I@4%Gtbi*X&tSzW4c$R zQx;@>EhrB_)18ZF2|UdhTBgC$cZ9R2c7U^Gabk!`9+I2T@;b~PP9@;;-ojJBcQZl5 z0G{_?VVmONm64POTEiMt09x<rRhbRCH_X5rKE`bdHwV_9N3t6!tib2O<Rs;yg_nC+ zRiu$yIk=4uZhIp4gF)ema3_+Tp!ujOZ}9jCBz`@e9g*4$j+lOS4uZQgyvixXCl}-= zzbeT370|e{V;<-%0C2kmJ$&Kuoear)80pF+8y+8(2!DFH!_z+0J)pAN0M!gcS&cRa z4eEo2`N84{G{=W}MkuH~hLlzybwnvrIZ+BayCVv8=UpC-bc660xE-AoZfO)13`_T< zxD|AF1gMROF;1Qh8fQYw-_ZGRu>X9MjNHI`1>j{2a@gj&ReCxH!P6wD48XS57hKkZ z$HQDp5%J&%I?o1rpGSoSWV{Sn9)8vx<a{+3N2E3fDBVHFnz4jyBxK!tWmLFHzBl3y zU!3N^*U;w$RYLB+^UMdI<p-%N%@E~DGU%Ksq&79g9iE7EWajCdQkrB4uiugLIk*i9 z-}3+-ivi_z^!2$QG3fY27IOMQSLXzdJ8=IB;!aTc4T-xvzp~^!(A^iHxdqVPA4r=F zGyjA3c6p|IgU6bjKzm}q^G8w6pz#1uTMBD@n0vYhVi{Y9wBZv$`*GoIF(mzlCE2ib z2uS4*biagSHmr;Ur6JU^&LkgVCUlMkDgA-^0x*5am8Rt>5q|mJ@bqYc$kW)yYO$po zX#WjihG`Wn%&@GNz||%zPcjCLS%Ugb==m)jsT>0J0l|A(vy+TdO40HlxQ<1X6@H+- z1>mzsAZ<Oz>?jYfvSjz5vJ@i|{N)JbK23O=2Zx#9^;V#^q_;DoeL;rbtCB!xDqyS; z0jDL@{0m8QVD%6`LEAUEmgV5FqdZ?oJ?5MOQ-fuG3bB4E*~qdIw3pEvQqCaa9(}9@ zUwLknQJff_lAq!VncoS9r)A{1Mf7qV+U9`wZ$SI+(A$xIC}oCEF6cbgz<jStQ^Y=} z2w0inmlk0J4TGGLjO5&$44(*S{oo#!9RY8{Vzzr=<I13MXwaB3Qr^f-46gv4d6w^G zh-qd(L{Mc)cvuRyb{TlA#0WCp3o6G!^IxEIMIyoXL4n3OK=<ZV<U|?=f%dw?>jFd` zhmH?;ApC$d$D{3urCbNu84SKNA_IJnHP|jB{hsd7@X7Nn_H@qxje$bq4ZIgB6ne*1 z5K5SPA?XK&KWP5W+c~>51$6$qQA!S|50MmZ3A!UX2XwAcawb||A=oJ=$-^(l6K#wV zt6SYoL3gL-fZHnWVcEpFH!vL*Ux=^+)i0oVl^odptl8kbWA2v5Nw~{F==z!T0w3i1 z%*e0|JSP!u3Q7m?yaee-W7I8>dL%atG>%gl6^azbZczovM&P}P_{N8Em5reD9w7UT zKzDJYmlJ67@8ESI;CPFK*KLqKJ#yNI<Tc0`fN54rgcqn!Y~YPL7Y5B|pfrlU78+7- zA@WX;R}^@kAZWY`G|rTPq_-S(?HlyGBT!!-9FE}mNu)BV(zGDT+0-D(5H>D~)OLfY zMU3Hq`a|$G0k$#)lz$?T+K;GZil?(9{(1nZ9};flR+$*?3Yv=s_wS>^gRtg(wE8tC zGTbj8HC)lkLWrLrbr&p;W;$AWItN16Oku6Vp=|&sa32g*|9d%`g4;IGaTU<n$zVRV z@(B{|;5?EIIujr&JP33~1n6Gx9Pqu?d7%3NLGcb9@AQDhg_Cijdsr!0O$2BSUJlCG zIoMoC9aR8cGwhrUz5@!<7BMXVorwvGchtNJZIe1@fc@f=8&(V*?*pB=m<~So$Qiu9 z7+t;;k^Vq?S1T;g%>}y$i@BgP>Ja9F(riv?Ab9LIJ3kS0FBUlefW~sevV+5eKxcbu zdpa9bVBL=i>d(UC%`_v$1GGmY1)~n~sw_|UG6vNdp{V5uB>v&&B%_Y;g32<`xGA*k z&Lm*I5$G&%KhXFOq(27B8}POqtY7JbB@ZFQNNBfJCAwQ0BgPld+in@)bsI?$kTcFe zaSx6YXge~|JtsQ~d@e2cPIq|Oh=@l>Ig<n%zc4T?1J$De;4>*fYonpzf@t>`fX<Lf zHUiy2n^TsQ=bPsp3>_ac_REQk@XAUAkAuMKDdaK{RDL*t&({T=a|6m#sBz(xofzQ< zUgrzC*8nm$hC2TRcV|_8IyU(f_b`(b(47dV{>g`r86oxkVdG$s@B+EbF&l0^cpW&T z42RW!-tM5g`@rFdXvcxmCR`jeW|om`><8ZS<mp^&3EHEMFcUFeiDk_kq;5kVN6Q11 z*-qfG4=-$XlhTHC4}<raLE(;XeHo;mgEBS&I$t5%+c~)ut6wU!LH*|v&|EaUKTg7! zA1r(^+~tn5eGYBUnSkow>?9*U$bLO%(=5>0lqv3EZm@HSyq!~u6X9)BNZy3mhc=dD z>FJyTty2RleXzBAGqH^0fW{i!-3(GZAnUnN)3ak9cswr{G~b$HkenNq11YD`=Yz47 zWuW<CSXl#}_kg$^mS&OiFJ$d7c)gw}BLASZSv*1Kf`?b+fbLKPk4@+KC3#`gw}E-E zzA!jXfc7qe#<7vqg2rdT>rBG~LH7lK!VJ7l0G6J?`f#jOfVPFe^%l-`=b-fy?qLQ| z!A{_EKH0E14?6Y<jT=y%nSwf}3eM9=<qUYOGGwiyPmU#QT-qzj*)apRz0h(l6Vx^W zm9gNoR~lgq?f<yuWJB6`(0IUSXI@Z2ihD&4YTp^O7aMMeL1IJ@WUVeFjhCjl=NKfp zBk$+NT%!)^=Ro_BrAT8*sQp)XocWeQ(jKUtlLAVIhRM#*^b4!Apy@We5}N+PD>5Q; z!-~BO!Dsh_+crLsb)~3v9aZ88dCep!|9FDel|#}dT3rU)j|{p46}+Adq~5D4+z3oV z(*jcbJ3GSrEIxUDIVrASbp@dN*`tCp!0F1z8FVgQIZ8Q>G4Fz$j&ebJr7J+=BxqwI zpm8y1-2v@ugUT^4=L}dG1+@d!ec(O>XstkQSTRU_l)GgXWWQQqDQtaPP<TZScy7@- zJrA^RILXK~58l><#~~!nh%d`hDwB-E%3=8xQH~(_!`&?tvAzppK4Q!T(q4kp5vGuR z8}4ofQNhss=Im4)8Sa&ngk^3GKHuk#2uqOPv5n25ts&0>sq=LyPLHfai~%C$0r;9; z|4OGUY-{gfc0=?)_QQe3n0=7qHQdM#Yg&To^@6$^<QAy^VR4)fH5Y4KgZe8FdC**> zNoleNXirLdHbg8Css~c8fZB!NI6>)0L)vIC`;&9SN<rtZq`12kfYw`q+~eh(4xT3s z$SN;O2`|?MwT02@qI6H^6v&(qc>NE7x-QQ*9oF{u#WBz76Kq%tI{PsSR2QK16Ahq# zLQV6y+>f+Y1R5sbaKd2*ybJ}M_XutqB|*|FR6Q&l5o5R5%{N6JyF}4TU~e0?G!IJ$ zsOF&85zc|7kU9`vHX!vO%hMrpn0-<BIty4I2tNLfvHlI$_(mq^{#sBvL236v_6=l! z)_Eppg2sJ8X9fg8`KaR&;PMLGXTvw<0V)Tb!1X)0|C$Fg3tXpy?i57KKUPBPBBXQ< z$x|rpPH<TbJu?$@7Hu}H90KPNa2W_b^9nWwU7BQMf-*+}y4MPn7f}2SpMym8qo*@? z%rF;JmPUoURU)@#A?+H-SO<KK4BQ;(xBzs$Cc<r?Iv;$WBxrpG+>MD5egVnuVWprm z%+SZ};BEldTadZNs0d$pzYXjTNPia89?JE}MH&M`86U<R(?Pfk(GNuuLvbTUI6~(j zNDoWc93Q-&3e5wU=^VDt53=_HQnvZz=2V3kJLM#0rbF%%M=obTd(A=Tf@PYbjNf6# z8)O_29CjX9$|jV2U|N=xnVy#%5tfsjmyNLo5Z;eOId=_IcS6zzq`wWDzYVLxbPGgX zvQb7^iUGXei0Gd}(-28+1%*Mlp8-bPVD<sPeFaa@S#C&qGugnh95N?~o*zK|!ZPOv zAL~FZ-@)|-!MK3<KhZrWFVVdMG)8U^l$%qTY#ij3;vQCl8eYVvQ_vYMpfRlx90o?< zIK)V=7<~}XUR}48e9&G-(42`U<osIjTp#2dPp~=Q^I<?^v7q~DK=W@=;enPB&R*cY zUW7C9{t8D(J0TNmxeXbk3kTit0=mx>bk`s5F*->4!DkL=?jO9q9#n5a*2u&A_T;C< zD9{;*5negLNNF+*zD^&t9EH!5Bh_1|<&|ZrH@KZ;SrrwWjJ5_8b6grUPZMU8k&^^I zA3ro5Y5p`FbT)RRQAJs@5%^v&q_70v_md4;2Lw5@GA!8>$vyBo1bHke7t{yx%!l>) zLGcROV+m@zf$s!_oPCKgZc1XDfYS#?9|h8GK$;@}^-aUT<3)j>@rBHESRX$l(l`jT zo;e$|jti9TK<8_tnn!Gz0PVMX_?o4-TjoU>f!6Gy&68l3kI*>+q&gKePv!zTpF6BL zDibu$8RQ9?i%kNh6_22tD8#%iypBfHsj&J#JsY{a1D)HP1Udu2I4B>wX9H~?0;G=x zYxg0KJ7Di0IAWNOW&RM<|3__~!qyZcr5!A388&`W<qumA<V-kSgWHSFp!3XA^5J0x z>bpbJLX=UM0djte3J-#}UEy^AlDlAS125!xRrj!Lq&Ztl(3}J2SpcNfVPJPd#$>>2 zEYaf)(ne3ugV0#UxM6#WF#L{hUIDx>2Qhbn-nKxrb3pqTz~^0{lrbKVJBi_A|DgIA z$GkASY(Soag{{j5#Vgu8GPoTA2@lZSpcyIdZYcBDp!5i9lY`ZQ><0IHApI~R%S)s* z1{(8@Do8R8t0JO3L;d^;o?Aoo9l`78plKGdM#UFCr%C*rC8Q4@X$(5IH>@<pH3xKV zu?eV8<^}85<@uI^`e{)S>G|mC92UkXWecb-cLklhkpenn9CYSJMv{kDPGoqHsi(Ue zXunPl=<bDN&|XV-%Th1nK+t`jMp2+O*%4j_iSA*QDCR-NyWn%x!QrOaQ4#6*)~CVN z8JnY+gE9UK%7fs(VJT?OJKWr0Ck(rMf*mU$<sE8$4yq@E!y`fG43~n&hCy>wXnB+9 zH5cG<RLuNY4BGRU;*Qt9Xzq6`hqx7z)<Jmz91f`E7Br25?w|vWJ0Yhn)12hs3}iE* z<uj_^z1+ciiC7bYst;0@!S2Hd3W&;$s)~vLxdGbGMQI;c=0<_~oX+6&8D+`H`x#*4 zuV8lsg(ew0g3HFF+%S_AXVWsMxu7+T21&+_XlVfv?;%D}xuClsKxrOJy8^l=u>xd1 zXzyQ<r!ypM!rU#(J)I5G5qSsZR@{9^u-g!M47A4wdmRhvJE68+QQYAR8^;8XHGtBw zL3$KuZ)PxL{Seq5x1h3QXU7sxcPwG;>`0cqU~^s3{0Vmh8U0z<ew(TSaC#dpTcK;} z+{3VpDS_e{k#6yoSKgKQ%c~U7`9_d6X`u2rKPuP>w2#FAzV<4!9DM(DDtNv<tTGCz z?u4~@AZY<sUzk`TuWd%Oe<<s_gUbr%AaL3M<xk`~DJsG>AK4Aq>mrC=V%Bzn%Sd=y z28T1e9w1OgpqDl1=gp@>*5V_tNAfKN-Qg1z;RV}!oDb<Ug+j|(c-ajury>6IDogPI zoht*HJA?Ww7nT>H<)gD>ktZ~~d~z)fL2EqW`<~q)YeZn-1Zx+8!x&PA;xCKg`<+4M z3g~Q`;&e23VJmAO<t}R710L^z=!K;p1KO5_uJEwa#!?<)%vHkMqsVm;ivJ;X04!ag zhbd&v4ibkXw>5L4$|A9~GvVX9=y?ipt{8mZpEGEWCiE=(%Je*Ny%z3gfPK!yq{Js2 zwQosj-xg&L0P5O8?CXLMeF@N70nk2o(-8Q64)_=?O5VU0u8=lVU};pYNhx%FDrnsr zXx<OyY(w}S2ITn71&@)GfZF&`5umZCuwsn*$Q^Q*ByyhyHV>BqY7fBs<S64sD0Me1 zt)P@Q@U{#*omyfmGeG@QZx_b`_}K%l89AVSe+sCc_W<Qf&>h*Kpf-GQio07Bq#cOb z{(`wTF~ZL&1=2>a^mIq)@pJ*5Ney0i2WmH^`vg1XfbO46@(9WZ4|cQ&2u5#T!t14i zWCJ&Yz+6j%6nD!KP<b5{Yzo@PZ4eojogU!qSPnX~!qXk@M~i@9Y;8W6pI~EL814s` z9|-rO=LhIG1+i@?l(Gq;H!2vk=P=ADD%{i{$UQ7KG9s)v#Tn)vNWO-ZpHab}yGks} zL&19t-0~oIj+wy6U0~`!?Qqb3c+j~>;B@MqQxzBy<eX$2WRPTJfTauqg)3xS8o7@L zJ4XZ5{zTi83f?n=wd{iIEiCsAHie}{SiJ*^U&x#dN?t(30eU(G?M=g;u0Z2Tp`d+V zkn;px;paJF2@9xN<Djx+H_-X-pnLG#z<ZwI<1Dbc7_ILP3P)HT0*5U|zYe-L0>wYb zc{{8el&{I$Pk?%625Q-sladEokBYPp36`&&gTU+PKzYK;IRngw`2i(-!To&5UL~+v z=z2-WxDHX{J7BYY(8g6^<v(a#)f;v$3~Ws*mT?_$`h<=zz}BTDSAxbF1M|HI>^FwQ z2_)SjkN1JjQwG&fk;Z|b`2a|}04a{a`rIu+d&&xua@~r9Am>h+dAf%gr8uLmw*;#N z-9rFcUlx)NnWIK&qeAjAypBM!2iH70*i5LOk=+d$>kb9G8LN3<doju=62>4f!wME( zpmd6{UV`W_f}|t=ObCsd&S3M6kg^Q!FQl>%%e*&u4iZ|g!uEX>gU&*Lxfgr;!ZZnE zt(=<y+SxRy`|+b9qR`GD1eJy0HaU3x7dUUg@=-8!p4&MEEC+A9Ao&GeCW6XASJbu+ zV$V17IUSJn1KKB$oC}>30G-uj?2CL}1Y+F)(tZJ-V8eV+os1Y?#y%bk4zo;C<gru4 zcq3995HtS4YXG6+p023n5hzc<)@Qlor^Cw{a2kcgHD>vVlop6yy9>H^1XnnM)+rL+ z1BNzE23j)<DZ7x$ZKN~{AKL`2odfR`Lf_X6UFSwr_#@7ULZ736mrLktS`q04)Hbj* zNCKb53vM@o&bTPUa)u3RoenL_QR;GN+Cr}Lh_)B+{2+yKKp>xB)c@cyS~BL7VDSK7 zI|Rz-kZ~kL+(X8wk^25v(+X&x8fZU0wmo~e_W@##^`h+sgq{nC;Wubs1gYGI)ZJLe z46v1@xW^|U{ss4sVeNCwabff^2Y9-LweP|D;bV2!_F4LtqO>KQv(vpR9U)^X5PPxp z=W+QP>YgCisPGEt8Lgo4VaT|w57L-Atj`QdLy$5F&8;P%I6x~OaE_ON&)9{gAEYz` z?js<^W?|zD<(8f<XlLkv+GyZ=6L9z0P{&)H;Cpt!?Id^T7>q0EZsnj1Q2z;Ae5XVN z<s@e#+SQ&Opnd%4ddsog2ZW_POYB$#v~3J3^C964ORqT3$U$01h+c+dK<g*adA@|! z<OSs<MS#W>gYcin;T~23y00h2Jq$X}8i+dA56M%|bKOAamx0eoL*#$V{m<xX;pQQw z4e*#+q>&})&goL{T~r<j_j<$5{c#4LlUWK|&x+Yzhm5r&n}d5DKXQ1PR;74=&zyvh zb%5J5My6#+xuJQGc!J~$cv}@*z9R0YN3k=+Al=Itwoeaohcfc`1Vk---5TU9M7JQn z5YW6g=6NOH^>(0sFU-G?b}@W@0jZn;wUGkzk<IrGMw}M{5f3X(L7A(7?jOLi4+plc zz!R}{0b*AktbGE#zcm-sugocp3Pv8+vIL!{i@5g^-1fsflM8v>5qR9wwZttv40L{) z6T~iXKf%d4Fx1Z{)X>Q(&>+;z(<L3LjpY;?80u-}>5`2s<`$9@<QAHhpY9vti!2@z z?3&{q<^mFrL>6}mbMx}`&vdNtLq12*)y)^87R5fdPy=5xPZv*PAEfiA5N`9WL=ks& z^9TyF3=0L>S%u=3z`)QHw+MrvfG`6SGfx*^17v+cp{B0>nT}O{!ASiq*Ng!0ozO16 zM#ySIT*DxKszTl`<OH=7#qGhtp(&nVKUJZGmurY&iobuRqk%7Szs@ztEyOh}G$<rL z-OnWoI-ifRmKfHrN)I*&iwcFFF@@BB!E-k%sGkMe+X*^r!ZH(db~N^TQW5_0sx&D@ zx>FVECdWLVOp~%iqcGEC=sA^G?o=)Igq}a=<Lu-U6qXZ$oc55{{RZZO?pa56n<Mz# zQs`dTV)&d)9@_pBSbNev48Cs`RBwX%*x>yc$aAGowTQkvsBDL>S<mx@q<wInfs{L# zZbG?(6aDV9Qt*8&u>Kf)ttd3F!_0++M|PM=3TT~?a|Za%R@fc7iQ$%|KF&_Cvr+?) z?^l79MX)j)i~CUTO34MUMXLmrtH@yuI{Ov5KLsuWoP$8)U!XG?3X+UKd-oi((Z<#C z0zCZ6!RJIm`hcJ{hfqDBJ$XoRms6hU=>a;!HWZ{LE6K<(Gs(!SEY+<%6SU_N{T^aZ zcgWsy(0$y=p!F6Jjv#&D^=e4xYvrVRIAtV($~_muWY1j4JPzo5EU!w(B3PJ!%W3Ci z3m;>!TeY#>GmKCRZByh}8bpSBLEE^FmYy!qd2(2s!PX5y(+|=)gV6QT>3K;;71=%! zK^fq?1>D0-K<8C@h8RHiZ=;XR;;@%A^C9UKQdXn3#juzI-n*5Vo|oe82HtNF6_K9j z9gJts9n_2nV}zeT=?K=QgXb@2_}VF?FogB>A^8Y04+Lv-f$B??v<5$q54z6|G{yw$ z1B1@PC;`>O@UcA58bs(Bf5>eF#91Anat*7Sia}>;Cr0>!?tFpA6MCLPniGMhZO|EM zko*81s|bgj849r*$xpC8T&80-raCO=Zn=W*8x8@5BWPV^k`ZX{5#sJRpIlIS1g{4{ zIo}V`o`AMvoE@`~`N(A}tp5Xc3+OxrNPI%l3{tuV=Y97a@HtM%X8GjiWP3Unr+ZZz zg4;ro;W?#I5uPaRGO%7)JJG`rw1?A@{JkaMb24H3FhFfvWP35)4eP6b<~N{m;scqx z$_4E?2Ay4sdbU~y)^TY__@InGA?XK=xkA^mK=T=q=>@Xa#mK8TCBhSwo>Afu`?wyc z{ERFG-2tAI8&n(>3f7wsRtv97K;r_4b|Acc3yIrOv^)SFrv%l{p!4^WGSSzC5*;3( zHf1^J3^quZB83T3I)bf-0J+yEFC{-Q+z+~b7E<r~<oE>!hWfdorcqE?;Fu24172GQ z8c%hN3XjSFoq35o9t1Ae;r%!q;ec(g2x4swQoJIM%OU1fJ<--zLeho_N`8iyL(u)% zk)X5}5tRcv&p*-#RNuOlrhwOKg3bp4-O&XZmqp#{OfXF$r+r9Tf~^B}&nZjFDlkk2 zulod#$D^bzLVI9RBEaL|IY{R&g2#(t=^7HwSkf4luuTH*{XtJxq_3lgm;=7Au^=+o z5VfAq1DzRya}7Om84a&TpyTWab3pOooC0o7z{kbG`5BasAo&h0@4)u9LD%(L8iUT# z@B!bW4mlSuI2^V&6sZnC%-^Sh>RZs+H-V5n0-m7t{7LR%mEI`fNJcs^@+(d<2Ay$2 zXuUl6&Wi}}c{LtEptVhibD%Pv3X;KRkXlwnfzEq@w!e_}9e~<jkUbn><(Y`~60zZh zwx<MkRszah#yHKYj0!gd-HYIaa+XZETULsDj!{&25NK>8Cn+~5BPkDUoCF^JXn8iz zD+hcIW+>`D3(y&Q$?&u8u*D;qInenCc)5gH{(;hBu1^l=Eb^d?NTUpwBzMcIsL%{h zo3%J9!V`6jfKZu^l1?D|-lD=y!RN1l=ELx{=i&1_nYh|nh&G@PY+ofx8<?DQ8B~yL z<d&J_j#(yQl=;y4MI3n!xg80bS1a*_?<0b?Ct-Udu#BG&>Jy>Wub_4YO8E(@i%{JQ z8Ha|{1@Q4>jP?j<4Rjc|P2yA<6&{uiy#pXKD%c6M_9G)T9CW6e8|a)VP+o-Yr3nSC zSB0J<0M3)(JC!4IEwfXDp=V7&@-8S$VEu0Boiva;ypk)OAa%15cpnnz9LXxs9VV&4 zP8mt=mZedZPR5C#`()fL!E4HsE0NN<M+&IVQ<efcQ!pYZG!b-1fpHkxIcV6+^C0M& zb;KO8Q+i}>g<*0o<UA|L{x!%NF7Vzp4^X?g0<=#Ub}k(#zd-w&NN$4lwUEYnz;%*y z2J%@l(C|Z?B?H>4gIFsBD$}83968115y9CQcba%QJLY>iBifwFmEbema(z(pjA@du zn*rz^F3?&uSU&_(4u!(U8w$|REJklfc!KMVAj9Nb6G*y&*FETSJcu$85w7WZ;BW=E z-;ml~U^AR7eViTP_j6$x-^LtUKs^f{XFUb#>!Fk}DCH4qe-_dY0EIc8{pZf0vt^Oa z(Ez9MY)IP%cFrK^j6%>J)o{?+kb#vxnaSzipnA&46xJ^&1)oobw%!Cazk<RLG)L~3 zodUW?6LfE=iveg3IL9Y12z17D4ty*YwfqK;hr`Px(73R3kOAoK%czJz(AiO-y?#}o zv&oU>Ua^d;BkTw5ZwG}V===vHJ@9ked^1t{RwX{+;QgK0&2$a|-NR8D74DXm=nT25 z5ParoCi=PkkTx|qPKaG^1Iu%eegtSwNjf|n+#vY}dAtacA05+SW7UwpFr;h-%R$@e zDD4K&{1WIqCg&h{pB@}G5If=HD4_l@c-+nzHim#&Hh|9SK&U~Sg^IN23OY9ja}Q!q zBE)U5wyg=~9chI6<hbj0jCusQFO8Nyv%TGekjfLUvM7)20w2&C=FIdw=(-Z{o?qlN z0~+JP>{}!1Y4rJWLiJ#>yJb~k1Z->rb=?U(?m>MGV$PmG89OvZKDz_F7X>*i;Pca< zIwu^I&%thhr+IK3;WiKX%weSZ1L@pm^tBs=;xsoX2Yh~yaW+OAqQ)D1%q}|$G|q>m zeFqsEL)0lz5uS*&NUFQ?!pcGG-N5$|pq6)#{u;`9H7A2a53jP6N~hAOh~)I32(QW{ zW6yjqLvXu49oFZIbOxQfAC#YD6queA5eB+18QMMpoh=M%pX7kfw#-iqugLavho5gz ziri;HPiL?)z!Ni^A$1*b^H#`lS(a>+QwrG=T#*DTL%fU%DpJD3DpP||<|WD^LGuQv zV&u<NVETdR`HN7fn~}%yJ)P0oPHuh$Nx3P-QDLCE652k=BrvBC;Z&aFkqtcy72HS8 zgPcVbgmTU}IGkYh8Ri^A2<S}5B=<1n@y22-aRyDVurk*Pn?BIm*0L0LOM}!1ryS5( z@}M#KWY8ERN;*aJy9cCB2DhU@V<zF2rJ(X3TezX!p94CZH#;iA6YKm6*x%r`5bC(A zPp(^blq)0+d!w8kh#d9?C5W^JElXix2s%3w+)shWQ+|rOVKMo0B9>{Ov!SBg!z!b~ zgP?cbK<6m1%wHrMJ7pwg;<zUSY0NXi&@v-A&#NrO5M|B<+$R8yn?u%Nn}Y1axQ7IE z7hZt7C(^wppfNZ<&=_0>xNVVBo(Vd$Dl*FiL$6m=c^TM^S%mH-fu2!9?6^4gJc2T> z1)gI8wa-w}TL$u&S+S>c5HcTa4H_sdLe|`a(jd6phR&fP(i8TyA7N-&l@j5UlbmCj z1|6dZ*GYu(D3ZD0c4lHYcx)fpji9zIXzfv+56T%Zc+O%%N(Y$rD*Bupa{3DdoeK*a z<0^;(jgPtK!1vmL>tJZR47Du)pI3p7i$TtxOL7m(j)a`YQxFAP=YW)tz~NhoK9+*C z7Ck%&bSD9E<K*Cd)t0469-#Yp!m5%%eOzboInBjU;ZX*ldMh#9uL$`bQLJOr&aR-n zRu!mqJf!UmtJ6^1wP^FW$mcwv?AH$}i!w?n2A?m2HlFP1?1XgBFl1kaf2LDTN*?OD z^YD3maJhzPzapg}*!&oBy$S70LHgVnV?^Nf<EZ^M=v~!e$wpz7p6(ERpnIi3^S_Y( zJJNa`r1*rp4@nG99A_qZgjJI6o-mWd2=KYwpz#u<e1deo4Uy+XMdey%r9}7=m%hMj zjM6hu+pNT#bA_J1A>j!hD+I?SsBZ}A^F#6&tS<tqZ$bM(kit9@GVX_5XZpk2h3Mn% zgyu0!VRHuX^Q?Sw!E30Ybv~rO1dm%RV{2IJYSi%r=v`c(brr~SEa+_k$l1+kWefZq zW0-$^GYyf_H>jQD1seCwNzMhGRg_&C6>eCb;*pKCuLfhC4B_@mZcst8F=&k*X8Rx1 z{*DYrTmOdI?gp3TptG?c>-R!IeF#Y2#9WhySW}47{)6>%A>j}1w_~hFgO59wBG#_J z_MxEPwFNT|DNVuWrky}z=g4>O<|Da1AG?2{?IQBh19JSK^$St^oT%k6s2u_xFG~lF zoj})}fbK!7N_KZE4M4tU1HE5GMEe2O9|G0=sAF7^{D3lk2QCkw=cndY<Rs;$7$idP zp~gJV2HHo=^()4HMj^B<1YM^KDFYzo0aDoxPE)Wv09p?Ob|+|$Pgrp|><nmh^`Q0i z;C6U!7<eupdwC4%=b_&rgVY`d-CGG=GX&lvg)&D0ZZqX38GDt0=C&aB#lZXv&qMjh z?)GtZ1fR(ZY4c*6F9V$=3OdKcD<{g?6tq^>AT>C>0C6U02C{u9<rK1ieZXaqW4;%B zZAdxf+%srD!v}iiGkC2rYMb5wbmj?S?h~W@fUmQ|R`x;K2d0R-1n}LdiriL1**ivI z9~XT7IOZBp(7mgeV?YG&V)X;fyC+6Cq4iOTT#M(5xPue9AB@(Y1J&iAy&|ytP(f$K z7N-V7_5=DjgXYasAZNyV_#)yQZA=m4epFm`J3C>Ffy3e(mWM(j!irPebIQ^B$5id- z;<5v!KLMJj1dT^!nqs*l7O6Z(86Pt#jSLUU4uq`9L*18!oaW&7oH~KprqFQ3ZDyiJ zP)U+A>b;F#RTYLw&P4S|p?!9*oG3R)9};}-F*vP4>N)f{K$;^#j6H+KAK_&sM&87c zR#EpQ(W$S9%PnaU#(sv$ptGC|ElMG70j~`wklvBv1$#dXytXIOsG=a!sF=8REx6o^ zL^-Dj`RqN6@qKq3dr(p4<q&-nNL_}dJ&V)*XlcvHuNc&C^Fm$=4jO}jj}v3|XCsX= z$`Zr<av}^Zp=$<0N#9TD?3fOkyA2LcDNQo=0-ebP>Tl$L?rl$T2JLNdDge>Rl}PuW zpo9Ua%?>_C7}VCu^}%fSf%Z3m=k24Mld+zYi<I^uW2Uga0({RmQhI>&JHc%Pa2*J~ z-xG8e3fg^1NM?ZBl&EC}cw8Q~r_(17ROW*AD8TmiW48~|J_Ol?x~>2sj(=Y^d`$vM zUm5jmSd26XzAM11Aj&AGG%~!x4IC#f`H=Nu=y3qr^9gDr;o1ic?<+#eAJAMWto%pp z<;ONBgriOaw>g5!Qap0Xqk>HbTfYZad4w{K2D&c<)NjGuvk7hQg35Zt+$***G(?{U zbblu_uVeI4j1l{aklO{w^9r!_s-Uw)BdK^tG;A!#6QfU+f#i1V{)N?1ptJ&Q>p|CG zI1v@T$ZcWtI{{Go9cX8rLh~!Aodlcr2Ip6dv1j*+0?>FD=)P&td9yJ4F#63#e)&m8 zIayI*<(UDXId!CZ7+h{UCtHBWa)}#n&PsH*EQmA;O9S1%0$x`YM%LJKx~Fq;Zi;(O zNmPWdIcR<pDL;bG@IW48#<)Yfs=O@8J)6+_et7%c3wiwlg>4Fw`j5~&0llvsK30M7 zE2xffg!a7&-(L(%&ye&8Da$a{*JGJ$0iTuWR)TqlhCA|IFQ74L$8!Hl(7nE}I}hM) z!h44=EbXE8SMlH9i>?RKXNAq_gXV=zk;e?+VFyXGj_Kfh0&;(@A!sZ+2YlxqG`taI z8+ct0be)k2XkGwRPs8|F+QE*f?axebdkuV-MO3b3Wm34CK?>5jbTGG|jb(w#*>Z2^ z6zE+-pgW+E`q`PLP;n=VG|2ipn0r8bF-@?qPeGsG0*_VXdl`XgP#cgme}V2Gg5Gt4 z91n;x4>4AWlvWY#4p2XZ24f9KcER>Qf%=D_aX-Jva8pz8UBlqBPeEe_<*0F$humL8 zyOSL;28O-thL#EN@z0zJV)xL2&gsgE3ePA@au3Q$&P*;2hnKI(r9PRU^XGDkaqf|W z&ebB1e<9Zmp`d$+jKcCk`-?z#9(%h7<wP1;Rz^mE?%D#~3j$w<MsSZDsIHGhG7E8! zplMlhu3<)!dyZLD80d~5znnyO%VN;DjW=jN7N{SFxML9AzXh-~gA{k!QQ>}N$+>O@ zp!2km_r-z6gb?d@%HelGB_pj3MlH{r0+Za`kir+Wf0qQwlf{V<1v%(p6#zO*H{2Ao zUau@E(=k7yvOFCv3{cxNkg-1SympdNB)VGAx+u_{YM`-;f~4H!Jmfe7mjfQCVFwzw z!)VjG=Vbe5I_9DGb3pr!Kx0w<nNFzTi!{fAXouh`_o3s9=w?9EHbOtFeUCqEVRu~- z3fCz2u&g9wuMAMR=;Ms${!G+4CvchV9E9pe(AoiLxs6;FA-9>}^C(E+;e{67KDikN zN#W(twG!a__CWTSdZVfHMp{1%T2F?SCWsnOi7>PTnT?b#lM4{(A2N>!P7~n%nj`!U zMndB>5r&q~_7&ouRD`)m<Kk$3g0}}S#=}w5BxI}<-fw};34!J<P}f1D#woTnN8q{u zwtfOLjX35b+zsj@gX<~yU0|Lr29};KuIXNxk<fFiipwK{!FLgX?g50%q2!^tJvS#C z$xLY74ap1Obmfk{uLf@WfcML|BH3?}?h75?Mwkg{izQ(l4>YZUjvqtU@SwU4vn+t; zMLcC8crQ){to#J07qoFsP`Qxk4!Y|VZB79xAAtRiCr{zX$FO{YmX4wGJ;>&R*R^BJ zZx(>hnZYwYgIMnZS#OZ+0lhC3E$t%wk1@svZ@;6ZFUU9v8EeZxYjTr}Q(ThV!!l6o z>XbtGy+ZJ@1#tZh+W%Gs*+-0hoE^LezY?jOLtdBS>Q<cOZfP87RFM-I;h7HJdtHgP zmH<@^>bNtGeV}M%E^=QH)W${Tqt<cYz5&6tFZj|dve_7RLCPUm{Q}DO;IT2R`Pmax z2DqCVCb^fRx)F6fGL|{dpq$9OFwlLA;PN8{wD!*3(%2^#G<WV-mgF7^7LPQtEKN4D zERG5`%>k{EN=B=T!1)c_F9ho;je@S5M3e{cay$<<ZsD7ipC0C(k>lwO+FwyomSO<O zmyw{g9Uh=Qi%B~8{wVMoO3-*>7-)|b<o-+}%M#ESFl0@ZNjkPZFKA6xicyY1qBCf2 zEi^q6Ew3QiQwm9wkn#`g7uebx*w`PmECI_w*$BUZ%+IMp-S1!mT|;76mJ;EY1K&65 zoQ%9?9jTvTnigRM@jrTd2DuIEjeYG2{5)vHo*al-Q1y^J4)zOToEgde$mtO3?vk9; z2v8mAhj~8*RyRQMflrQQK6HPcPgF!sW|EOxC1~v+cn%k=4{Z$qwBCS(D{Rag+t?vW z-bc;X2s@!=5&D{mj5Hr-(ApsMvotNrJY940K<(Zr@VVrnpz+Y0q`bg%&^b(r5rN>l zi9r2d$X&olYm1=mTS$EZKlh>(e4egz3jT3wSpNy$mc-LPbce(vsQnA+)019zK*vkq z>%tN74&K-36=ekKvxKHY)+s^OQh9>>=WbdCvNI_+IURJKgr~b#4(L8DSi2Im_7c8t z8l>JCbk`@iY({Du;5dhyxG(_iGcQfXccv?H-3r<h0co3n$M~TBM(l?GjcLR8zaf{a z)ET!yoJShu3c7O@6la)y7I51Qde)*_Qj{BH%>p?6gXSop`2i`8AbZr@f<Wh(=7IXH zka%)3OoH80<PP5V4NAAgo*sT>o}jjYF=%emDGPMQNHQp_b3t<w;Q5!_<Xp=VP+Wr6 zF=N;RO>dySCW;)iPl3Fb3gKVy`Kt)`xPtu%ZBrtJGkkt15;d)Pq+~$%-ht0YhU}va zDoe^t0k1&>l^ve$IiR})3{#v@%>(6AZx6)WM-VuULH$}tI*tlQ&-0*q2vn|t*Tf)| zi-<f3jtksnJbcfMPhM0;67-B3A1v)_?_iX(5V8{8-Abd3u=YiubvitbLF+G&*FM76 zMPTW7IwiRy>Q1yiNgCKr_llfgqcGFRT+58)T+kWrp!OQhGO`$TZwyjf4Azza*Yk)w zPjTO?h%KDa+G}t#LHqGcjT7B-vcPMCf}v*}WJAwz3I>nwfy;vwql|(`Bk=t-kTaVq zO_9&n!f5}1%CO{0Q+QZF+mBezgMj5ljJ7krFs7v6hp%l2=_g{82atXh#80Hx1!(<q z(As6heL$Ix<)D5UO1_891qQ>%t|4PLE{+)COwxEd^qf*q8R><&HUhjhjmY^J@cJ<9 zXBRo9dsRjmfcD}hR~3`E?jF(>M9d3A&Ytjwp9u^b)2CS<547)~9CSAzWSkbXk00qS z5A?AKP#NzLR+*IPgpyXFeF%8@5#eqc;+qLNLm#w$Efjf;3usSfaTIKwm$6??WQ12% zqBHUsEY5zNVTwCwToz?NQK^p+s150x2To5ppuN8+>sYf9XLFT9^D$CcgWT_PgSiDX zw}U)B<_Ovk4&C#OGX9BjHv>xlF4qsV_Y>M*$35l?2{%wX6jCOD{gCOH9%>Ypk(}$7 zk5<k?*XVfS9s5BY*MRJW2hDXr!Wpy{AP{w&$2r*|$vrzg60#l%bdChHzW`ak0nrC; zcjrVJBa0c7B!-(7gYLV=nJ=m;3X<}i3{yb!((Z0m$yJ8Qp0M@==p1CIKO+n+a}&eE zia~3SJUxO;lik7RkX3=|<Vd58WY0_|(0+Q*-uIkT&{<-c1{D#`o)~!z)EDz~cQZ_J zw*;MG23j9x5ETMCd(1L73UtO9OwQP=5|jo(bFfK9QMr&a%fbwjjQlc^-E#~g!z&6> zbHQ!^oe!JriG2<>JsEVKihD&?qI+0YBFJxuGtQ9q=mh1YdIV)A8H4=+-G_nAjTHsS z#zD!RnT};x=6v%4oGptJLkR8NL9EjT$D1pte+{ccL2(aS2jW&4X_SuCCPD63g5|*N z+GJ?l!1t*b<&-9Sgc-os0HC*tosrjug6e(bc@F~X<Dl)n2;-p2$Z*rDsNAs1Fn701 z=v`6pc|=(LKw5v34lX;Pb6be~gf^E1&)c9jn<e}VY*61GJO_zf4mf8Z*OzGR6i{A9 z4pXGE1h!uqvTh5MN5Snah?|hwlPL2+DB(iLE=Zgqg*#}x1a{6V^enA1&|T;ldpFS5 zE5O(GfX_|<$2rP6GuZwM#5f<Q-3seBBl`t8EFgOyknSBo8J|Wimq6x$=2t;?OTo%r zQ=`c6@_aA&`7V&U5u00K>!3)#?-r}Q$Y<HZ&YXhwD<Ez_nq#btaEFLt3HzL+T++`| z0q0X^aJmG|KO^_)LH8YJBzgGdz~TXs{t^BllxHCQ4C3MrJ_bR=UCZG9Iq0rGSUCY+ zU*!mz--ezm1KRUZo}S|2Wf+Are?#op5M)0NMp_1s@1W*8Y-t3!4@pUS2A!h@T4SAD zRRBvHpm;G%$_1T|Vp;0xOlThuxcv;N&(ZETA>u4D#Qr?o<7(h?2K%@mBn%V7P4YnZ zQX`#DPy#RCgAEIkaw`fzXE^&fqwev*JX;5m?y!X~Z2SvS=0Wlaw!DMAUjg1<2nk~& zOGEIPY#8I1;IgX3Cp@P#$sKf-GRB@NP~Q!+&j4Cior%;p1D$)52{})X0=I(Z8Nla0 zfYK=Hy*#io4besdsUbYZ3LZZsdMpZ_?vdAMg4@HOJ~4Dm6?7*FM*j{Gj}ajCVPT+q zpdf2#p?7qH;@&4WrwV?LlpDy*D9~QxoGAF6Qb=_Htp0NcopS`L|B?FIE|9y0P|7dx zSYAd^R0R0GW=l`VnbxI&*={buhLE!d!S`-K>QnGpiO{kVTu;F71FFP4I~=w)(aQtu zX7K&TfzY+bpuQk_*@ZlBjp9bwTrjBLlbN1}mVe;=82od<ps^sx8B5;IL7@JYQDV5I zVX^^qjURHKHxv8)rZE2`Mg-*~f!1weHwV&}hxZ*Z`;6ea0Dk5gXx$blKV<|%&u?>q ztP>2)huDK#KR9jVfx{M*9&n%k2pVfdyTb($zS!yk@K|wZa$a_Nin~R6lzW%~sGSZv z2R16$$tx(>$tWtqs|vhk&BHH0$vCVy3O4V8bVf@^xMg-!xMO-U_-?bX$`lWfc^Mfg z@OeVW8uG*lU(kJ_WuX0up6-^gbFPritug`49f8i?1L3ly+zL}q_Z-mK|B(J5D6hEZ zlzO`6xOsxc-JG2YkoPfz)~P2ORTM-SWf*|=KZD1L!%cINGeK=`w^C2{pfb?-sHeMY zI%xhTITLiB7<dd7(x*T^`wO&>+6~;kNAVZP4@tR}2A=M2Mv>t;#o#%FV5fqlOeeP} z_mmtTXQ#}Rh`{uq@Sr@<UC&9Nv0L|`vZx3@@Ez8P?ruiN_oRZ{3@M+TGE>5nOOfIW zynY}l!mj{w#tHJ7I0!a4?4jiiIK4sUFX8Q);BeFOl!ze6+Heo>8TOzv9df{V-QBP% zF+4Oqz{MclH^ddAy$f<%n2}{=qLEu=l5tpRl(SQAlCfucB<MT^W51l_Jl}NKxLuUH z1?YZj15Xb>!(<PqvgEu#=y<Rbq)!ST&qkVWK?>s(qnzR-XYg5V;PGNmT&0A26-Nad z!rP0GxU<X!-Sq`JyCJy}w|kO}!^)H0Ei2K}U}UZ(V(t)Bc1DDiM>>Pf%??bDbcgi0 zB0=*?ps{riU*!0}S??p_3{>`{K>X_r&+pK*g&0Qx#}g5CEsD9QeI~5+E_A;-DBl_< zhF5^jb4H(EfVd4F7lEMo%Sp;~%J4*+M}?e82br4%?RSqvDOW)Lv?v3eCkLq`oHCP) z(@Q<wg33JIQ*u(ALHi{v4U=-gX#kX$3zCif45Na}(-C(HN0lY#`sIMilcY+g0@!>N zX#D|-zoGLBSmFjeXB-?Fnhu(q^mH%DiHdLp<!jK|v-C)K+@jW*@UsrwbE?33Hxv@* zkbC5UsxbOZ;5rFB9)ouF9cV5%D%aZ?J-*Y^6Tx{d5Hu$YZihx1W#oYNA;J0;koX6M zA*fvdT?d0aZwRr|5*!Xl{ZEKKi!x8QFz8+>P`MVG9_0~Mp5&gB1zGdxl%8l5W||V= zln%=$U~|CjS%{rT^)b9og`KYj(d!6zJAC{BrXM<o0&xpwodqe&z-@43vrEy}=A+x= z3C(+;Iv<jzM)S*1$S;t31l;xnuL}jOSqTVs%!B3u%r&5pv<({b931%xQeQ&a#levN z0JKiSs1G4&9+dx5ay;GrK<5wTCg+CbfZ7^~u>EoFkU2_F-2|DFH7tvA&jF3MR)Wf? z)CfQ59vMhpgq262`~V6&Si3ybAj2ytConzDqa2){k>vsngMvex!E<L2cZV22$J$Mu zLfo*;jgni=fbKQ`owJ{u4y~U-=b^#Yf@FKTgXUXvKxe2z&SeFax!|*EOw&C*obo|; zr=XWT;JICpI?(;1u=&88Ag4fVYmY!}=iD%ZlnAd<<bESK9-!qAy7`c@%@pRw5XhKz zI_A6}T3Z=WHlxoII+l577Qo}oJJTr?v_8bs-7qJ`J)<nj*$H0P!p2ge?PtUoy0a5# z|3zhDxR+syduV!8o>y5CbZrV^4IrXj<edqwZ(w^Kz-@Ez`T!4DKNnu#=7ZX!pgJ?j zIHd}7Mh&E`8w%Rr53YMa_b8`A&i?_$onf*O=o~w@Dnz*DL)vK`PL+w_h8du~0CfBY zRF74qxQAs#IXjg_f!okvbK&JW>YOs7p7lo5S%sdipf+8O5vXoLva<}v#xeJjmg3=+ zk(B3`8x`Rd8X4~81v<MS74u9h<gsJaaR}%bH)1XZel`<QynyzdfZO=s{x0~wNYGmT zOss0*>-Zt*k7#|EXEdYF^WhpVH}=W_g&W%1PS99)ZVJ-6eU!N{LhH*BYgNJN1AbmV z=!}<e#J&d5_zBv)GV0zNtmmCzokyc&E*;zlf{mR8ySrrvLCz`yg#l7~9Ne!4oka|q z$4-xOM><CrH1`=1l@kQN?-YG(1k{Ftt@8t!lMX*8AI<;ZF+F&D2$9A?{bt1aezdtr z$lhOK+ex7LTN2J6!Dy4i>J$i#bWR9*SRwBlgO0r;@-L|T0^I`x8jA(*8-b2F!}l0~ z+k%ia3s~X?H6Mb;sW8$UWSkVuJV<+&_;iI{#)HxXO1?mC%R}Qi&nqX{2(*s}R+eJf z(+wUgOV5C`WlhsSb#qvRQ($r~q;AKy{s_Fr9NLBjjd?-zg4@B6d<I@ugvBm+_@JyS zf}iE-iFrnvK~#iSiGL=vUyU@z0$N9esK-EcKI%L-e64&A_#V74(4Fd0;QO;dd!;~Q zh>$y@;B_sL<rFLpghJPUAdmf_j=>_&QI@Ae$GuSI^&#Pg5*COxXrOcW(82?pze4gM zW+CMV0^{IFagtF0I^)SF4>WHKJA(%@mJW3bdOCy8kAlJ*5>~Lh;{<DOpsr=bNORz@ zMw-*Wef}4uFJzjP48Bu3r69^9C?8ZddsTTFCVQk~S^o)HgOFmBlbzz84w_re^TIs4 z5q$3{#D7R>6gFRiQ5R&VdxjWTdOBm<(*<!8TAGKq5#aOL#P5SBNXj+MNzQ?oi(W=} zx`!1f8-=2z8Q6GjQg}{jVz{AUQW!)pnwyZ~9CU^f{H&@XPZ!LwFHdm0E(m;<m8WwC zXzfKoQbbru7&KhHGabu)vXTwGgB^=Jol|m>f}!V7Ldr%+S%y?cV1~6{RdQu|9yFdn z`%{e*!$I~z>k2I8AZ#s`C#<~y9p^_%>%{KKgv>p-dF3RzyP0CY-!KK-=EZVnAyWB{ zJb&c`8DoT+2|3%hI2~=TB8nQc^)}#p*FbTGugpN12PXG^FGw6g+7`KC#gP#?5O+bw zN8x8GgWGw|DeyUdFC)<T^QNHjCA4!?9P<$K@Gv&0UxYq}kpk-Xg4Xqb+Y;cu3aEV& zZi=zr(aRXI{uP|xk@%o-P~^Q0xXwI-uMu_!&69_r_z}e~&Zutogr5f-1o5l0V;*8% zFhmTCoycwRQq(=IPRM%^h}aW@xz52Ge7^(oTC<GO$Z$i@czbzdgjYsV1lqlq&~Zcf zxiyG>xj~}48)%#wHlI<NWE_|tnHvf^uOE~aa-vY{RB&18<!oAzl<iiToa<)l?QWWp z6dqda=>f?<h_ORQ%YYDrbe|Acq&xy?iy^I{fs8AF(;&7w8l)aH#t;NLX9wc9@GwxF zU*(CIgULwpNXbZz@CCaYv>rUk$g2=EcLVEJfzz%BXdD)F$Cjg|C!7r)H!w#(ryQ&v zG#>Aol9QAh2HrmnY6nIII~9gTgyn$yh2XYAU^-}@KU5BSUUpz5*0Dy&*a~Q@8dMKu z`(#7fPsry@`)4MD?y!KxC2H7!`v2~3m673wRiJ&pka$KNKS3({;A=(T^R$_WyA*to z=4?UpX|Q$@N_c_&4>>y*w#M2MGN%cecLSeM1oLMyXv{hjy!PHWGQu}K$;dPZ#Vkl0 zGTSFNr!+9at1>boJ3lGctpqftha+DWfW~+Nf*nhIgVEPpfYJ%}abnc+6_j=y)03fL z1}a}s+jrn`x`Jc_(A~&xhDjbl$ZcArb`8ir*cukldP%hPU7-0{$huTWnF1~Ip=}|e z)}=!G_r=h?UU@!lkbW6xO<`i5n_*Oh7pPtW*Fhk$<lL}|l<=I&s9>D+5;#95M}!q5 z=Y}HXKa@HuG&$F;G})*Ea(;IvXzgiERtnmBEl6E$nw=Q#X8^8`+(Bwk^9`u&2aa!8 z9q$HNOPA#CW&oNm1%-W*F?=5}XniW7{t0|9C$jyJFvSuF`0dM!iU6Heg6wz4{6wQL zQ?x!2Ry)JNYZRbyj-?$E1{s@y#T{x}Hy3tqFM1m{!vHnxQPViGpFv^n<!qXh3c7DS zH!wfd*Z@421sY$2hi|T1aguX-fe&~-8npj6s36i9sr`=LcLC*XH$MYVdW)<?3YR=c zc><2hOviL|zeO1Nf$k~;-%p=v3=I=pah_XI78xEC7zw&h%EcfZr5)qpl#$|&*3O5N z5gDMn20?B0#BdXw_IqQL3D9;vN?e#$fx-@vS3ql}g5dcY=0|W@kDh*VEVDrO@kND| zl!M$K0b2Lqftse1q5TN3evI)~(E0?>c(6%&Qf`>BCz|=*XnY?G`-o}xqPho?H;6l5 zG|D|EBhuKbAjLf=3v^E><O~u>zYVjEi<CAYby#*{xLa0oZjM1>xF0x-k@tXk8CE2x zgm@YRW<}<K&aMbVx^Dwic15^V7zSlWR{91fn|V5?IHB$ZO-YXM2rc(@^)2_R%1`$) za7AfbLd<q753F*<X|}J6lZ$UAPO~e5LS2n;o9*Tn7!ruv?9ec$K-}&InQemGY>>Ns zahvVpTJGzN)7|C1A&!-}&31DO%yPtSc4(MW5MFnC8sInE6Svteo|S&M!@Jx!G?YMG z;t6jTH&^`bcEuAWpzsdG<8C*1JaJj>8|vqZJ4_raeO>T`w~J>vfi#FGOx)Z8L-C}O z&@g8_;aw3F;)us=#|mE;eBtd`g(plZ1FNFkafV5#tFdntG@XRv%D2!mAr$rOO=!NZ z2+D@~8<%_t%zP~R!S+M_7HWZ6Zh+;X_J`rppAJbcVUgJN8$in)obpijhh<~x2bYP- z5c4xp`oekeG7*xGoUxRNpm>F*bx$m2ySc&R6^q%RJP1uQ*vu~X%?hl7#49$l9V`4@ zpy7_qY!_D(XjzWU>`FgZPiUFwi|OvrD0km1XqZ)EhKa9>YdO^2E?B|@R3_p!JH)ZV z*A*IHILr>L1edqi&35%QhJ*<gcZYz&8=6+In{DEU&+IHeXPjn((y0No+`?vdR*<tl zq%3#E43jYTpe$Hf9*7y<Aa_H<B*+<ictguuEM|vR1cf-cK-`VP><~zqh}G=S&<bdo zh|6p@+-5sg_~J9$#nmJbl6SC~UG5u_;e^j@f0t}<zQpG4z>s8P+~FNs?i(6e0Wmu$ z5i>qO^1jfz6_<P@G+zgq;m~ggH6NRNrJt)8)Nk0zG*JG6q@^G%?J!VV$sf|@aKmc1 ztFI}<ZY*YpIF<)O%R{VYhlaU8+cVhAt_TYCg2p#Cv)$YRs~}}LPO~BLjmvCkI>lx- zC@n$CGwf!ER`}r#lZv1aSo;x|*?8RT;#vVM&#<|>+}9OWE?_g;%`Gq+Ql4RTw~K29 zwC=`kc9tVF9bz*Z)SiLVjabbN4RgkmPAY;zeW7h?9A;-h%1Z2JhgLw#VeIY>afO!g z*vxiw^9><jHl(b?VRkmOt%S{N#|nQ}Jb5Q8$QfGZxMSuWa5)SO6D(~BP&ph5H5+@K zY6`7Wv6=1USCs;-Kd_nYX%Gl)M+IT2KR|siXx-$2>26SY6$woz$yn+S#|mF)+Z3DG zzM-L&&^(Xb><~9-p2uM}v=4*TY!^2-Xx_nLwkNb4#cp;Gv|oqaY*$lXNPUgP>@X)k z16OD|!D4o(tFfN}G|yuRZ&3XKty8g>9SSPHq5X_>%<u-ck09wg7<+wP2`#HUvBYIX zPzWqcu$T=>gU~)YcC$Szpzg+HHZ+~!G8>P(LqjW}WfeBF%Y8#Up?L?J*<LPwS&()# zR(EIn8v8-=JQlOVocyXXaECXjjh+q3m%&)-OHkf{wgtSfgg2=ChSodS+W(;X5|U1^ znGLFoq2Z0)>=0Nx8mrkAzR<b>yV<Ul&@vW>*|6~ztY()78bIm>tY(LXR^o9tsBVCk z-&oDAz-zXPXF0Uq!S3!XCurLTo7rw|u=WX7ce}XacXx;vzPPOL4}qpZEa}8IE66zr z(mwIVOedha0oG>A$ISDfehaki6O6TP@HBvi2^O<K<q0e<i!sdxl_%MdwofpYvdT9! zv<g~&`(U~oR5ye|;}VP6pz;LT|Ho>!i)$6M{KjT>MNkN=os7+F#|nRFJ&)DwY+oa2 zzQkfSD9;B%%Wo`ZgUWAc{}!9sfg#BT&@vXg*#@vNC@f}!$`j~VWeAq?8&sY^^QAA= z@DA~Vj<=L!#w9qNK>97%%=UG0tqOv)W3ibH3U6o`i_L5|H{U8q`HjnLXxj&e*?!Qx zgTriSzX6BY2GF(-HnYopvtZ+L*vtmi4UqJW)$D9vBWU`@Vm3IPK+`uCv%%>EQVwD> zJ1`{K1h?6syaO9gsKAzQ%Y8$Ap>|gkVo3{?ey+aI_Kg8%S^(#3NZk^Gtvm`1t%8=( zept+|2nvDa4=iSfxVia3^9NS5vwe;5m|gB0k^@Z(*v$4c2&{sP|Ab&E>p=MfYPLTX zcZ2%g&@eN>43iMY3O^UzX8XE0xkA$!HnTxt0&U;mG8<C<V{^A}Xs7|Stixt@xo=1y zv`>%CY&SPQ=ok$yv!UfbcC)iQp=BL5vmGn^L!s#eOLzx{B%4ChFc!1H?O?oN0;_LB zva#1|fd<gLnTt&xlop_F!%{ba(*mSU4ZxZfTmzx`1IyTNh+}yWEG=L$8<ZBHWjr>s zD}qAtneFBl1f2^A!De=7m@70b;4&K;rnuY<X^&zzJJbMLe_%7a+&2r>hQVewD4pRk z+r<^1*%d({uz4LEW<$s7vAWyE)c~5Wak(4XPsC=nW2J8uWSkMZ*-rSv8x$tcHX}B( zL2X97VPXi)AK2X;8VDT=#Adc*rLQZrJi?YvTs+J1hDj)_4~orfH@6^sW`~BkLi=0T z++7g_pQFQNHl8pE4ReEz>*6pQ))v5FwhOeKfi+Cr-0--&+&44~TDM>`8<gkqn(dA^ zyhGBV?IWyaSNMlQ+X7hJ4Qeyub~mV<5rog(6@jq4V}PY!18Rpr$E89Hu)3|%Hw#+M z8e$vQ0+q9n_zcC~CWZ9@0<n~{pnMN0uM8cr)VXeMej$)>!DhCvi<=X)oW*8#Wnfh# zWF88e*&u&I=K!#o9T<{q2u+7r%m#&dC?0o%!UXDWEbXVD?8qu;TOkNDOu%MC(uyIL zc~7vrA?Yv_i`l*|o(9mgg2ilbe-1JaWr$^N4%F_0_PIi_)aSk~u7=R?4#sphXg&wp zpTlN0sQm=(b742zvjSQcVl%tkHw)S?!fLjgn_nnoEE}uYp`nJ*dJVhTA)(Ol#u6r= z_9}F26|32x@P>@_VKW<)2BGN$i`k&K#N+P3kQ66qU5~|VP&!G6v{A5z2`CLh(+QR` z1)K&U?he5ompPC+(-7NyrDFv=ys?<=8yac^O()pQF82+Ama|yRc60NCj@yP}Guy=# z*5|@zc12J~Bs4Cuxf^6Qq%6Z~c4(*(v@MLyY)~46^bfGQ8x$tcauA!lvwe-B^#c~O z!EIsOW{0{O`$N}RV0Cv^kPCFYA`~+&LE}Tvu@FP-^Q?Z*vA!@Y<+rbkD=aRtm<`JF zQINU^tJ#i~zR>iI%WP;Fi^J?>NZ$ji*=}xr(6LoqW<&E1HnYopL*4MXyCM*p=dqjZ z3G4r2F&msOp=l6Hc!TESq4QT^ZaDfa(D95gEaf{W-$KWu!!Y9-wAL*UGRKOwu68UB zg7yWmnGNc<K*wRQn;jAfO{3V_0d8)7&@mqDX1f|e>m_VvR|JKmK-$sR-Cf}aorA(| zwv#Kge8*;Xxo>C?WPS^W*+DLlzBhKW-CXg8cPPH_c5@4YwqLND?Ft*~!0zr4So+5n z-i{TpJ}7pxJz?|C*v-y@&O74>lR#*D6sy^xVX$^IHnTzPf4u1=2$r|7q;Fr4*^qh( zhuM+PG67qdfWjNn=g02uP-AF$gU#%6-;iWzeTv;|zbZ(Z4wu=`IuE<qS%J`Y05-Ed z4Pav#VOZK-;5-i*s|d%E=RtV~T9#p(zjbr-gRcL<X11@3n=>>_u$T=h%fg`T0BmME zR{FU>>O5>_2ZkiW>gw=tY;m0x<O0pN5t#l0*IUrGDwcWD5H~k}=r~Cjw)!?S)CB4; zEM|v-;u;zsxXgyeH4d|(agELFilC5mX!^%ywwH?^w2h6`-C02{&~f%i9AN@A8{1r_ zo0~thd=JM~mxqR$K*Jl0*`U6GA2hD9^%JAqeXAhz16boSG|U|u-cgwD2GvVJka<!= zEM|lH2GG2P%WP=747=G`(6MZ+W`n{6l18zb?c!>T$LxxrP*{5so4eiIg0djx4R*8L zoT2LgaJV}NcX)@mxdlPnH(1REr4vY*fMuN+DDU_|>r-rP495yTSX^Q$Z+t^TVdJ(~ z%m(Eh=z0-D9A-n;FNEVV8>hQL?a6FtzQk^JU=}nkv6&58I}Vwn!shPEz^W9;{1;Yt zd%5^Q=Q6Rm8(fy*c6X(pD|F7o2wR^$%H7We(m##FRt|=SnnK$~8QAj<bZiux*`TrL z5IknPIKjr#u$c|oV*n{*v6>CqzW@nu?CuV83WS6SF0&zRQLJV=mIsAE#xJp&4cfl| zS$BcWY|vU=$k+~6vqAe8@Pr9y{{mijdqU<@aGH(J-JX@u^-$Q|9U2N5)5U5wC`=&b z3HC5?bA_%0z-BfmF7bp3$ZR}u>Eh;&CoVzz7a(O7c6V3$;!EG4{R@yb9WHm{2@}x% z1w3H_+P{F$><~vhW`p)G;0cp#Un6MSADg?&eY5c7OHe-#Iu{ukj-^Zh=UYe{BQhLY zo6xZ$C>!c;T=KB|gH0Z6Kh$sGSjKh1@{oQ{WCRxb!Say$J~9GJ+YclUoqxkE4|RV8 zwz|{PAPAObu$1LN*^vg&_CzL@G7+?Y0h-pajH`jxjzHU`kyy+I?_YqV8Ej^k`-Y@L z`WQyo%m(dWfaZT}X1jPALhF2NW`pVpNFT!p%lK3%sGfkDjji1Y+P?sCcNUf~0hNi+ z@)nEPp!FTDkg=~w9A-n?o!HHG4TaVd*vtm)Ux20+>}H!l+gRAm&VtVAU=0&jV_)cc zF|6*+ay5ar#j%+U3U6pS!8R5H3U5dnjl$kuE{B$h+1SI|3DTZ0!eTZk4Z7kry8=1~ zfX!^sx^Ud?2Ad5jJFvRj#TB2~p#2Mw{vuX)J66KxT(Fz%X$Y;~u(%u4Uxbe1U^lxW z2)aKf$^%FH4%!dEE)Oa*pka!o9R(^gpyhQA*7$OT&QBO&Deu7LF(eH~VKLj+#R)d% zfz52tx<qI_gUxKvT6<`GVKX~4%mt6TL1shK0xq+0hlwvJEkMc)?CuV6g|>CDo9zo- zmxw(~Tr2RnyWBU#6<TIsGuyE|C=^m2VKqB647MH~o4d<>L);)^df4N#(id9(V>R2w zvmBa+v6)>F6zT~rN3ppZw3h@@Z{je!5;_)--RuxINIw|6yDNM{@T9@e&<X-(;|&u( z=r|`1cN;>>I&AI+jiKUkHz;31+8R+<>O^q9gtWJFvE<8&pb$4`If|v75dvDP2~8(h z%m%H8hmL7rGaFR?L&oBbu#Clk>sx4CVy(B_+@a|k?F=F4zH)e6Vlf+3MrT3#AW>M& zcCCQ6<#Cwp2`x{sneA8+1k0D$&8~#DL9m-08Vb$xSk114&A(xDH)u{0T5n-9yCTRX z8Jc&nm<^imgx2NQ%=XO+a)sv0e9UwL8q)}bjC~nl8~bvs@P&>IfbQT!I*$Ro9~Qiq z1X2!SF&i}Q;Asrrn}*%&N?+)BI4-lH=>(VA&@jQ~ZZ|hy=(qz8vrVD%SlG-4?QOv0 zZqWKw$Q&?Mvq5_sAo&uz*;$d$bb`&@pnM6*^NAkV@-3)LfZC0v&I6SR(6X!mGp<47 zh0r--BW!&KP~8Ek^AfR`4XUf5bFJ9T4uO^LSk110#|KukT`QsOWb9_UhC$0RY-WSv z8qyBH>h91m*gP(FvqNEHOxVl@?YV>09aznF@r1Qyv6)>F6bjudh&{Y3e6#VnI~0GI zWI^W*ahVNW(~i~MSwXJQbb@6aGpI}mf{b$-VQ)|RRzcG!mb$~&#mybM<^+q`p`d;2 z(0q%{Y)=E&TxuegG8mM;q4jAImh=r;FApu>v90q5mG98F#9}shUj?Kr!)A85ZwPd4 zxDht9L2L1$VS>$U7gtkgcw;jgbY=rIys?-KD&L`fdTe0=TE_;hm#~-(>N`N!F=KOg zsH<@xbi4zb*`T@u8s5d2;SEkF&^`~AwfLa<2k2Z<61IMzi)$5hd=`t@pz(0%yonJu zvq9kvX=7kDJ2bQk8s50f#^Y``H(%&jJ1(<vhY85t(D87r?gp)QhqSw}n(g8W8?(ml z?yM+iTNGQEfa)bk+X$Q4pmc&eOhD-*9h!Hrm<>*Yc*5Jo4OYe$CuU+fvmh%7ww9m- zM>>MGgR$*D0L2HSoJ_)2cZ7z*_M%`h8`K7Yo||EW&1}a?KWI6L)od3}BWQaPo7t6q zuF&~6BNNPZmY{YpbPZ?{wlHyVbBD%9DQ1{}(h+oS8=Kjnel@fmjMZ$=-Ui4xKQ6PO zZ9XjS2CdD5_Gz%1?cxgCH-XLUil7kax)7}H2JKUUl)*U6Hifn^u$f)%n+07<fYoeJ z-okA*c;5uhFafU>gSN}Cg^6QDpaEnIF$u@Mh#**8V=4bZ^%gW8m0^u*SLpc?Mp(v_ z!Ep_>8;jY#E>7;yu{vyKgZ4#0$2qW>4cZq0Ei<s04cZq0sS|OT4GlAFW;>P#LHiC# zSj`SKfVTOtnGM<l04)=+nGM<(0WA}-nGM>z0GYGIW;SSjG_<V4VK%f*#OiL4*^u@< zHnTzQhPG9)nGM<(fhW8{af#n-X!(!LY|y?4ykTMp?PFqhH*Eh5_B2@O3mtdG9wwgU zc++>NE8g%9!e=&UUj*(j0j-N7U^bpG0qu*xo4%p@7_o*4DDOba8?0&2%?;X4z!BbI zc+xj0??C!_*u&e+9dCGNLD$h^b2q3iht64GGaJ-Sz@IOZ@#XmnSbH)Fd%vU-c9v9< zF_v*au-l;Vh0X0Dp#A|wJ{e1!GAKI|w)dwTOF0Y5_Yk)m<JuPiY2#os8@w+9Qh#7K z+a(1OpV-U>`3t(90Grw1eG!m!h{bGB+YCCkgw1SFm_YYjBx7kGfx`si?g}hnQV!Y& z4<4g2#xkD@b~iLku$T>UH?$3d&Fo4)SLnRFF_t+$Q2PkFhb9?o`^eQ0I{s6M#oeH| zg!Ch^nGNcDK*xNso9zjk%fV(gXiYk#&ctdqXkP@R4Ug6A&`?8Y{=sf`2z1U5r`gc- zjWtX>VRa^Uv$J4n5L<Y=8v8-#2C%ssGzJMBC&XelC=I6L2@_9)AXr>tDGR}A5R$&D zu*7A#uWJyb&NRk04+`1?01a;}W`p-dK+-pMvqPZeELOAK-29;JXwVs}7~`9ueG$0L z2JMT0j1%HC8`5sWYBp$J1a7lIX%L#eafJyqonQ+S7tbna{eUG*z-?VqNS?=HHh5nI zWGn-RyG^0>8Wyub>m5U(=>*ICEjZ6Z#u!2OcVmQiXs8j?Yy&Lmq#`IJ8yenN%m(Fo zXnPZv+0cB6&FpgDEa=>qF)p(qaf!ohV`$q7o7ojXA<#29aheS&W3ig;;^u_k-OzQh zSj`5F2|&^bHnTzJAwcsy7I%a4JakOg80)!rpz<BEt`KWo9_8*A0!c?HSn3W?zXe)% z7-EU*a$nad$e0*5vq60#==eT%vt40ljbJkyG|vM~|5(}}pmc=K?9fnSXd1<4cDZjz z6to?H)$DTE`Kj35?FJhs!ESaabgl+_m{bJ0K;s%~c)P*&7h^LU)Q*PcEv)XY@Pm$3 zV|TYJEd66MyWBSvI+lUm-Icz0(}`yVG>zgg8+w)kR<qsQVDsTv-5na{h9?bH1cgH9 z9dMcrEz7WlH)!oPq<qKbZcunb+oIUQ8?^5STHatY+r`xwI_8Vr?2u$UaS1XTU%vD- z!4oE+JP&m@miZ}g`3_Bk*xE0lp~ld%%m_=K2kp6lwga%39pYH&5AC<4U@;ri7KPS% z*vu~X&B}m``5I#}8`RE)wgXb~u+0O3+BZ;tVX1FH?HgzsHOB5Q=-8?;mib%oo(pJP zV=>#;#T9l|8ZNV;agEDtXk246J2cc3x`qsw+0b$lo7tc}7kJ#A732mD6BEoZ0nHsi z*9{qCn+FB$FMzc9QnB>&d_zM`py>#U+2A$^WPH;YOI(7}D5T$>iY;$}@-3vTihQ3( zx~DUAeS#~je8*xosP3qO)aAI$hUP8oW@q_A+fLZb289VE4PrIh#R)bhfX!^so(pI? z!C^MEzl7E7&@kAV4QytY`-Vc#GsYI)A&!-Pu6W!X8ivo^pz;Qq2C>W+g5nao7d913 znE=W=&^ab-=kkKulaR3^V=QKa;u1RMi_2{2ST!!Qp>c`LY&SQ5Xq|`MY&Y2X@z~5R z_sxQ?rN{2>N<Zkl8&<QkeT|@Nd$5=dYV$$Qcff9Tl|QtN0Xh%e*Tolf25K=zJKn_? zwl)=VS434dwtA}Ew<;YHx8VCI9IHU*_4y#(Wd%KRz6!Sg3TCH2wtVa22fOzHW+(Qv zS_Q2KV0MOLsSiRNt6=BKLhST&^222(WNZ>*r-3UDe`Y}HHK?6|A=vVuV-@U90jQnM zzBufJmVHn=J+a$q06oVQW@i?*G8|+lByYm(#1XbG(0l~56GzxW&+3KSiNl}Jd<C;J z2y5Q;gYDUa+UbkKpU^cHFgvTTwWl1bV0Ujo?F6k2#gcCQVDp$TJF)xI0Jb*{bdQQ- z73h34SRO#Xrwo1vqI*z5WVl~tVg%^kA79A5VR^7St4x!Va(pX&azXc8<&;JRr{}@$ z+Vjn{%#Mr*%J4Dr%18#UZ$#WX<&$YrmJ$(EkmTW;2ev=QpxDzL<<7aV6!)Cs<VvLb zVUXorL1u<IMY+3`r?`hzdOD|PN5SqLb}mm(GIj#r4TYlL*)csZ*R3il)Ga$Q!pR^i z!m~8O(6TBe!YL;?$1=?)7jze%pFwh7SXPR=Wu*_w{lZ9h=78@$h1_T3>Ffk`r>Pt4 z4ka`@iap)J3=+dDs(i97Gn0+NDpPVncLau_-39FA47$TTFgz$D*&`??In%T}IoHx4 z$vDU~**&y0(m1RVbbomY=DplmpgYMUbKSBMk;4jd*KK8zaWdqNAXkun%SvzOl+Z-? z(DX=mKf~laFVJ0U=}7mhm!w4a8F;#T<#@V7<1;)k9duVxq)|pel6zo!q)|mivaw%I za-|9UK2*^CT+sW0pm&Jj_e(PLj=O+hq`RRq9rNLLsX055=O+)yU1pKaP9;$hLHS8W zf$2#RVO1&4PN4hPv!lX6cRqveWX~z}boa|o46n%cboVQcjPR?9itsIk-#3lr9xk*v zMZ1T~s~{;C^A0fL@6U8B^Qm-l0o^SKx*IVu+^{^!J**@u+|(cn8ve<~VVUr-H>`l% zzlVPB7FwP_yB94xD#FhoIoHw@bZ-^PeOYLCviVe6qz4+gl|s@%PD!$RMNU$980b#& zY)|)`Qcn**!^m7%xIympA~g*}8HJTbMR;YTxQ7KtMfid4$McH9lD3nKObsH#b4sHk zJc~WugECUw(e8Wnh{{OLbSi-81?AtMjKpwLQ2qgl6?r-*mw@ipP6@9t@PXYM3%gUy z*)csaJTTq6${;-qQWljWxyvQd-K{dYGTi|4{zAxo+~E6=gH1v9WCR2|m8OJO6r<kx z=9up3o|EnATnxI;x5TT`u?Xsi(!}t<(iC^gkQ5J4+DV4r8wR=W%OE`}yrL>9*a=eB z!tSp`Hw#v-<Rb2o3^dBfNY3-k_j5*+SD?57m$6`T5O;?qh6lpU$65BHr737WC+glo zNcdPH?qNl`chD!(G80tZA@#5Fkn03QTPmdxT3+C)C(z2xa#&mzdpZZ=x|<Msmu3*j z^#|ncJQJk4#?jK#8FBX|Bz#crv@T2b2r5W2g4`Deua}_ryCKC3hMRnHEYp&W!^)!~ zywV~nO|w8|q<DB4Mj8i|C1;v~%SdmJp!~!LUuazdy1Nkd9&%W^4vNSyhzd8&_IC5j zNpcU%N^ynPfyJI^ag3hcLyf|~cT7{YZpwA5gysd%U5!bwJ8mKAADpK_=_VIcR)NDD zGrSBE-E*pZknbJM1(olC`Ce58AiX(}#-O{_lM8%u!!ja`()00^d9Zt}z1%I!Q`~dP zk}^T@8ki5ZyAqn0kjf31dRTmd+zD>?WSWBSIQMoAg2uZEG;Uz+1<1Xjki219o)Y1g z?+v#TY7ZozBJ!ArS8@_W3>@c>x;_Kkwt~eKD33$Z9?Txl{pb~-Fo36VwE6%VMws;$ z#BE6JE>K$n6ki^ov=a%6FL2nS+6OA@z~yr(I2^+Lz;#zZuoI{~m4l%cbVsCXPA)VJ zlp@-0P6f%8P8puAK>;DbPNhjkL7;nw4MF#iCq{tUBBoU-?qM0o_Xa11N2Yr_2j)ZE zZ3;@?;JVX0*t8(IGCdC#M_!fLNaX=aJizt%<bnJMYX600gW?pF-=abw?N&rybxa4{ z$(smjGq{8DhG9-pUSKJxERQlu$w|&k&x<t5$Vkdf$$_^iP}2_VE>L*+3yMFm`AF)( z{(|K1QZFQXl0Cf2lAY7@k|M&2Q`~dPliWk|u-sV*jw7F3SUWEeHT@&nf3Bc5I!3(( zkMpREBv8HVR+54lhoCTY0;fYzScMyb;@=Ib4pIh!^E0I0E=~3bt4ee>%}DleDozcC zq+cIrr>v9+uS!r`C&=B+ATk)52av)6Vn$S1a;9T`3Md`AgVL;Hxqqcowx>&ZIyByk zqry$|Qry$cJ>3I~ywTdiU^8HT0@b6SJ3~SCg_UGSfa-AQ{qEp60OvK3-#{2r*Q4G^ zos;e3>|_)fUXK4BVP~*@kUFT}GYX<m>Sd5T2s=UUut%~N+g-!h?^*`MPX@>iXgPxv z?vVV7l6LT>QJDQ6u)ZC{th8XKoFosw98V8OK0pae50L$!`)5IM?+R+yK+-fy{5e6= zB63-s2hxYl-PqIyRVId~<V8hz=6f0W<wu5_=0yc3qxcsRUZDC9{oYt;en!-HsBQN= z#NF?pG>lS5K+-L0nE`2Ug33;Obrbj=bI%BH-Ha0cMCM(h$_Hq=2e}1Q&gVedz)=~X zxWdS*ko#}5y&--=DsQt(6C-@{L3h+c>b>LwjIsbjk126>g7TYtMnQ5Va(l_tAUQWD zFUlwk)ECVH-~DYA3hzsz<UiQm*I7vE4)ZQtNZKN|oP)$CDF1-!HF!G&#U1Xr%N}^Y z+!d1klib5fql|;{L1mM7Wie{nft3dlp5T5*KrmX_N1!YM*9V}o%h}a3AQ)2a`s9N8 z7m>N1&Vi+g;igW>d0rW*!Ju-cJUu1Xt=K!*(J~;!Al)Yft=|N83#c9g<wICIBqtlu zo&c3gAdFTvVT3=(3{W16L`mmhyTN4xw({Hwlzwti+HOd9#^cQ6u(|<D|D0eOH8-ae znm-Jaa{a(#L!QnVpf)w4f9V{A%twtoNIC(#8&pn!+l9E=q~LKRSU(h0HX`*)p=lYB zzMPQlEKM>p$@ek_g=bh6Xx#(am{@sagjYsVgfFVwoE_7_ZLUmMz6?Z+rR0LsC2Cm- z3rD0fI?~9pG{xPmASpMj(kIul)Z015FbUQca!y7cn<L~7B)y<}vB7RGg_Kv&^Z>4F zoZxL-Q2Ph9%p%x+C22e(G&igy$v7&<)7`B!6;v*Vo921CyJbhYhh=+u1eGDigJA8s zpem#|f|N1H^%tzKQJJ6T9c-Edy3gAid3@3t?f!9R$8^xR3W__x`QOhV$;bfOhH<I_ z-6bEHmz@qv&%Q`;<mv2~?E@OK3%4|i3I)e2w0}~b?gegpxx&j)a2<_YkE4$jVfF*j z>P5&{8Yr!!)QKKW8OgbBCCQcL>5)cm#Yyg78IeY4<s2lhAlik7&^j3s=SGncp3wB_ zXbEjcW3(B-?L2rN3etB5=Q-56BrDN9r#Q;PD<>&49h$~r{U1=-1?z*ER?(;r2&w0T zVfL6{)TN%zpt9LD8`cN$$<3+qc1{8H4fB$7Ee(^MvDCMq{G1zRkP_il3ds|Yb{Hs+ zfYT&Ont<F*4>KPWU(m9EsD3CooZSsGQr!LWqau7kbs)Hm^T~yaA<7bGCy=`fl8mtT zX(9C!Twl6ph=HZ2yQyK4dpSmV<>?Hqzw(?6la12zlfvB$B8@U~l3{&qa9RP?Es*gH z)bxxL$L@X^N$wSyk>P$t-e~Pp*tlPERX!wtfyeD3VVMRi1IejN!h^Cy;PVTh@*R2J zA{`#r$!L8L*jP+tgi|?aEG8t}tu!?_1G8*#c0@J<k~he3CvuuV$-|KL9BQ0E@+>TV zA$B6AGf3Qm%bZfkTtHA|RJaMM8P1OIc^6PRjB>ZkN(qPbjU$b{av~#wa)RJ<G?0FI zl(AP?N`xb7xrJnoPi{p<WNuh7#5_>{(9|F*BEtYVU*PJWp!lB%w<LyJBIW>){O;)t z=>x*d^T`X!N%aVF0gX+A`mLUj_LyN3Yz{0OdE60H4uLQ{?|{b9O;TLJZ357^0VvOb z%Swp3h%s4cn#VpCj1opUrJ#B{%stEmGCu@~rxXw$+OGwh<?NUa?<c|8$ayIz*V7r= zFVD@%#_R{c#>PyIBEu^Tqk=(cA7U5sSTeS93OW5mx#v_xhI<u9VF@RA80Q8RBpZR| z$uP%Zz<$AKheF~A(#C+bgFxedsN-0kh%yY%I2E*v0GAgy!Y41NAjQ2R2TvFoBt`@k zBZpCndyYYpdnhDtfy*~&+ZrjYfy-lfy=Rgh5bT(ZF+PZ{-rck;IoB{F$vwv`Dm(~0 zo&(A+kowXzEh*QsGAZ1xI5DCiCpaP~CkZ<Cg3{K<VunvHtStl@Z-J*@i2IS;0BYBS z7)RwK=Xn)Gxre5wxM$>e!pAgIs-R<h=_y7z28qs~{(WeAq>*JwB&bau9*9vkdpVne z^8>=)i1v+-vr}o3u~$iCctt^KZdf+1F(dfgH6kn_?k1xgO$3J-D6L~J=TXxDq&|kE zLs0vs#1c|gA*Um7o&m?L52Ssb4<C2VDK3u)M)(&NN8oxNl4ihd4ygIK=bd1E=S)aF z3vmO!bd9LDklHAqx*pruA~=3PX)F~s7YXZ6y60s3XCmq^AMiL&dI4fS2UHe<>UB^V z8ffN;h#yF~=!`|JJEAN=HQT8&$=EU9%LpOwRhf;vHX<EVR)E_>knv~~`(R@+Nb-5! z!4=RsY^Xay=@pcZL-Nz%aRiy0FZXs%f#&h#0z~|P{D#urwe)lkD+Z5WgU6|{wG~q; zlZ?a4agR@f(-DTd!1W+XSi`~tQfFcd3#7W+%+swT1xvhu%QdXwYz!&$yee~0+=4!L z2nusgaC^cr8_7O!dPkJ+kokAeng(cl7?ReYW9?uwK;uW?@m_>lP?`&e^(T<ZAWvtf z+$3YqbZ@Y|PFWyzzAnY-k(G`Xp3Xr?{RC5_abjQW<HTSyU~UJMeU91Q$Y$h}WJSQ* zk0@>c#XWfL3Su8<+#EW74=F>^q2UpTrLO`?Z%z<>;QkD3Oa|h2SUCU-7f3yhRHisP zLdwx#QzSD$Wfnv~D4g+^0kAR&R6gfa`Q%t4m$P0e?qMa+u|ufaA!P}q974>wfWjS~ zPe5fEG(M5?M>e4{&j;E!fcY7r7cqAYwijwPsJ#L48!S8sjvZjB6G35xT)t;O`cEix z@Q^l!XK-L?VuW8{5@@_6+cGmT7c^D_Q;*T!0Gk5}7wl!F6IdQgKFmq=2sHC_&oPJ! zN9qHC+HG)ugVGyB4k?Vl=7H?<ayA9EQ*)AX1M^dj4T>?w@4@ZE{B*C%6hwaZ0IkCU z*$JBifQ2c@E^yigt)s~Rt*1z?#4MMP%2G2=cgR>Ys^6Tl6C?aGB6BNpqFnORqjKGf zla0cV?T6IUNcjrVb_BZ#G`|4qSEeWBg%u~Ety=-L(?RJJJSOU5kPgXnp!FH121$mX zwJ$lPQI)W90!aGB$VcFDa!6c4+v9}o1NR3&<peY?A$&aRJ22xcD$_9^>fSV1zcn~K zFdZ~@3-POCu2&}1eAt*Tv}{2hy94z_aP_&dnjZ|!??`J%LUY5aK=B(K4x9f5uRTDF zlY-MEEPdbzM|k_gG216M%p?UgF7BLRo)!$6uM5kKj0h`E@$fB%q;Dj%NFAp_j8lO6 zQMoDMrdg1A43za`;Pwi(b{c%#0W{wa4Nq7dm0W3>7Znkh?_~rV)9{4%Q<3r;Y_299 zVHSMM6TW5%Qa)jspMr-IW|;-iV+tQ5jc_*&@y#>^<-dZY+)%_gv5RLJxI7HD%z%vl zCl`mq+hxh6K1k!qFn4=Znw0t&L)IlCufa*ogN*xmf%TiF_&B4k(SwakBG!TswcZ9Y zFM(KhneL6WX2u8JCo`?W7Do`jfy!rS|1-}Qv`)*w+c_m0G<WS)nVp{IQJx--rCksh z;Z+$Kk%L$RLHwGUV&ru_C~kz7zp$|M1ho-CYf*CDvZGw#ZiJ4_g7c11RD_p7n7d^F zY%LJ1E``-`pgIg}9<1Dht?kN&=N<GgEcV14!-dw(urk{TT@TtAFKnIx6t*aJA2?jG z#Ra@>N6IhAYZIbCeLB$E1nBsfS7ml-RBlc&XpJuF_;^NvkF!%wlDh%M7!thi<{nm@ z6pR>aK%VpR$qOnAH3rQKo920=%&8;h6u{w$)MrAt9o_~6m9LhbE{+&(K&S=Pagcdj zSh)a;J81qy)Lo$VDtNxrG$YDA2ocwaJ`OZ~aFm&@Zk5ToZl;L5WttXY>}Qzl9#$D) zXaOIu@IhIZ3@T4S<6?+;74-HvMjprm^%H{1Qap0Xqk^%gPf+`T$T36kcri#lc)S5~ zP7FNW@8uq5k{AJ+cQeg{t3@5l&rJlaPlJq&WA+8WZE~laRQH^!6!)CcD1)4AaQnkK z2q9K!S`r!Ih`P=NvyA{Rufc5<_<Ai^U6)+|YCk~Y78*~%+0gO^8pg0Z3W{$~{{$Yt zka-Gh<q&9$BnX-hJl!n~Q=FYLlHAK7ZIlS#^r(o8tf&Yl15fZ=GpJ4uO;0j1&G7`y zw;227L^(SZBxORxBO|=>Amge*h_r`1_vCI_n&goKZnJwjL)tQ^c^TA}^U6u_2&+uW zL@nPj)FI79csj$ws1!WE>zobBKM+44t)YSUQK01{n2$MLhumKSueAd8*P@&qEuiB? zrG)0v!DD5Rwg{;1hm51+?6<fjMY+M+8L;vZ)aQcE%NdmvBs)XeSIL!5#)<AZS&7b0 z#!(Sopg5?E3N|cGGIGm~3J)yy1cz^SdQx~;Wt0(YybIKSazn%icx^FwT^h=~Jgj{R zD*I5=a&~$^mO;8NMtTLs6{y|qm>m_7QIKpLRFIUL0xeriz<p|jcrsF1i%0|BkT5EM z)isE65#oPHI3n^VWK0cF?m^m(>DcT?DbFDB405YeX;efCd>j(F9|B%a7hIkW?vFs+ zRqTmWHbCsg%x4I*9kY{i!;E3`FNm_l6gGE}50b}g4sw}c0IjbxO)H}!oQfmE{c^&< z<CN(r_TUP;NbtOQPH9Rw^0+Q2&d}TVATdzbAjZb9xg8SL*!&OadqU)q`}pYnO@uwD zV=thxBc}?o#|1Q28x)!Z^Lw5ztnYy|c7V+dj_L5dEV*vw$)Gm9t6@e`UN&O<GP6A0 z3%a)gH0A&cH*owp!{#4Q^B=sf&GUt>lS7O}qUgsgL*QjOk{OWxBbISqc)J3<o`tT- zfX@l$RFsBRd6q`Ghk@#(9B=0oP#u>OX&hMT1DR(piwrNw0PXKZX=fWj>Tl%sG?{DK z(c5js@Njo_M46XCuA>7%ZbGbcBesnVDK~T73L_&jpydjr9s}3sm8NN+`N|}Z9M`Du zC}_Vw1De-B^Xe%%DbDG6(D1-g#z4|7)U1reTsIR~-c7Cq?{UhCitwv~^*NI(9r285 zL)u}Waob3vu&QK3ubgCKa6b}J{-gN=yyn@+FDKd954O*w3Z-sGpW|@_hXYOe3&gbX zLE(dF|COhsx7}d*0ak{i#W`yGKF1QW);1Khm&*;b$EFHY<{+mT_#8_f+L|IrdkfUp zgvL3jK0sQB2ODn;$xlZy57b@(uMfdiF2ULym}3G+d%xiM7glC?Iy+VPXF9>w9D(Ku zDwDwR25Fyx)giBS0nbG^S)z?Q86@Yrl_ncIl_lqa#??^zJ2110!F!v)=>;@45tWe` zUSXJ=8;a3CfUW=c^6<(5?@uuXjsJlB1xi2Z@HG?Y@db9Pvtv4vzEaS9SyE<3RZ6%Y zI4{8Tz|?}){UqmxRiuQ2_OhAgMuz7Ud%Gjt21(DTWvZt$VyqO&F4VAvmZxBQ(8pa+ z+kK^=xdzah1#gcMOVIc%qAVzf&-sJa1VQR|Xx)LO491&YLH!bN*dy{PMtTK>Hzd!a z#tC8^r4qWI43W>#{f3^$LG~KM`$M2`u1p2bZR1EI$ZJke$A`gv9r!p9XnYjDZXS|W z!EG(bx@>rvg%N*{F-S<coMTxT6#*KP@iV|Twg>881n2k#gycA;!_$g~FKCTcX;QAG zfv3A$af*?fX>uiaFJwk!u4QG4dssHC908{Ru)XQop!vU`ys*+pP+QZ;1U8NV8kYox zO;w7sDMY_B=6(wJSO}84eL(wNjlB#|`{|%|3br;9q>PU+M$T7|y>*aqf`lW+xGki- zg4au+bc5XPL>+r~GDwYZ%JI*1%nLFI3x$kzLCp;=2hCp>Bv+cE)m6|mjnwx8k4t-i z_UDF`MP<U~$4#qz^1>=XdnQ0*w_ZkwGz1!_LURY)y)ZrSdGkEq(v%3VV${Aq@;d7B zbXb{*QeHswG$LN1^)INeA8wh8Y(8vUjU;#Gg8DhGptOr{J4CD$ydKaQ+j=H=*^Sa) zz=%WSJ}fAogZ2p<2c~;t^obyI>`3Jrs(bQ+DkH;9tCHO<D^r}2+A3&cnGpYDtEWKi zbWr&T-j@olGofPzpgq~(G8)ldfv%TvM)xB|c?_Pnhnj;Fc98Z{lzUiaN_cXfcQAOI z-xxF&l4P7*3hG}Z8(D(Zk$}ekL2HGpl8h>Hd~%`txlzg=NPo`L8M2=^(LF3HvC_#P zsnV$=GQ1=QRJSGPg8Qo(Dc~{7P*7O`3a3)Y{IqFSl1CV*kDDGD>;#qr%>yJGIi@EX zg_-&wrG0RD0q^6w!OL7vj|vM<X9OR#UKQ3x1C7x_=guJQ+u#hiJ|uOR`wzhNIcR?w zXw8&gS(1AwXzy@klCft#BAvti4xaP(GK7w8x_Fv-x&`G&1v@zfXS+pug3=YF{z#7k zt)+K2ElWYFE5UoP!DGhR;C=6)y4lk?Io%sP9u6rZV19?tDH!48>28?|TGtvC3{FGk zpnaQB!6uOXtKjiSWVb@g6%=vkx*#MmjJyI46XbpJh_FN{4?uk`(3}gRJjarsK<=?9 z^K^AH0F6&1djzJZxLc%0xrZ4<h5H$Jg6ai#SCBuU<-e10WQ1>eWVlyZa$Zml@?Jbh zn1IXzjXz|krx;mQCK~&ugUU*9Sb8AmO{bhx52vzZqp&JZkom?z87UrNRh}N8@kytg z<h&qL^!Npt<Lw*-uM>Up{0t%^f((-@LHWip8(#N0gZ2r!8Ki*Lw1U>5IwynHSEQqs zzaW2u>q{(aZE@63pmq^xKWrw-J{EX7_Rlp0^))i0K<8aJqwU{@#90ZbzY`gr0<M3e zBD^Y-jJ<q8V@rwQrg_M95jZTdv}<AUixM`FHbp6Fy@?ba$m;-c)e+FKYfv8~1Ui17 zTnU<Qs>n!%luNL7GNcV2jHj;#N;9y!AjcAvZYop5f(nwt!^%=3u&$3pD)TCGA|t#) z6G3Z7jl&F}dz?!nj6v-nFVishoRX+;&=@LO-ofw}C=Oxm33R=VmYyCd1xdL<Whs@W zRZ$T^NcO?o9>t)14BF=j?%yKjc0gkT#gP%&sP!3+eR7C2iEZu~@0_3$C@$drK{CcE zQrzA0Kxd&M#wk(=?59u1Ild4EHp?+T$~`PA$ryZgL$;5zBhp^@a-_ZhYP||+_XcG| z8H3lDW7L08cS6GxsqTcd>#~w_!$4<6ghqxZqt^Agkopt0z8K_2Y<q6O<%YXoWmLGE zK~z{!MigkAA;cg(B^;E#LHowTQ2Y(adyuq)Y&NJ}iOeUWO<DljN0XcvgwySb;h^*f znjdt_!|nDQ(ELwjiW`w`2hB}D@-w>q$b6*!Ahgaws^d}O8Ewu9Y0eKc9uC<vp9edK z04e^!<p88l0U684&WFS`X5S$y*Rs;nIl~CFKLosv*~QV^(<3lFz}d+lGCZZqC$}Oe zDL2I+(WN*&#ksf$+gt@aoq_sZ9-#E*mz3g$ydDoy=7ZHi#-Bmy3D(!bT=N7n1GXmt zDQqC=1Jq6=cRUwSHX(&&DQK(>+|P#3DZ%zyz}g<rcmlT#5Ny=;fm0|ryol@9W=Dnl zl_lr8f%fYcgXf#T<2MBN_khMk@$G?yg=u9}xM5jJZdgE)J17sNRKfd!NZ|?2pYX9G z&>DZQ5>FTS{t@u}KCHjvljj7gU-7NWLG}}BzXZ`vFZM+4$0N^Gf$DfH`)^Rg7}Op` z^zA%7QYyi57vY)i?QWTwm<bBM4A7ZLsN)o%d<mK}gzUiprM<Gq-2775nxABh`BShx zNPFM2L32K!z3&Cs_r7Q2S<?vXqk`s*AnSs|jdGy-^^x){q@4oJhoC(<kwzshh<#R| zb1^bd=DEOm0lwbb6lo3t(LMm}gF<PqfbDS1NHO*TjZx+#XJ#OkMUXrSHW$%eH-q<G zGm-2-N<(1v(Dp85913-vs;9FfX8i(o2c$m<^=l|-tP51m!{+;8>%am)?MSpV3Mv0F z!VcWmLopB3F9Pkc3im4t1fQjaeg6#D58yI00}_rHeP3AEfch3ehRL}m&^2^u^G^_e zLCzJx5=KczUWGon@V-2Fy$8fEuyO`s54cYc+2fZF(u1|_39$<{7lRRxkbDC(7g}ba zxCt^w0hzDD+BSrloeqvyw7d#2A2klZ<vY0S2DS4*eZk05<a*m19*@vABo_C8>M49< zZtyW+c-lwU1xq{LU^hVR0GHX2aP@-gG0jNv2m<Ye2giX=1jwynSt%}_B_R8~D$5~$ z#<|`Yq&~7V5@k<XMiSio9PD%6@UtXxk=qsUu?&OAaMbe^Fy<~GagJJcf$CgHxdurC zs9}nHb`3}$G%rHZ1x6gY2jxT>SyqDfj72%4oOOg!M<L1&L>Q+*(+8})0ksLCb4^I+ z=|T3Rf#g7W9c2y!#crf=Hk7dzNSOgz*OUYrD|UvQ|B@68U;78`BSGDT6c&)WE+{8C z*8sGB!qU?jH131eS450wgU=O1&YKuvg-{C#cUU?D@5KO}bLdrqJ{JNi<NPxra<Fg$ z#WCC-^f7Z#yVDpnKkHSN;%*5ZKlMRLI~Z%o(m?YBp!In^;PzWGYCQ-^C#5Ojrd5gV zIk_p$8K`NF82dqE%xG;3jJR~OK(!arp8(kfs(WE=6wn!f2B5S6@jp^o0#=V`<AK*4 zLDz{Qx7*Oyy+O{xaV-Il_l5fz_+}b{+OR3u+V}9h3R>3~?v|D4oPn~A6{DRCsUIM2 zhwagK$I^en(T)MdGdRwX(j;h(3EIyt0FA{Zf%cdOqxDx|We}Em9r)ZjB%MIgAt`5s z8V8jn8ikdD_NamGc%e>z)v_om+!VA=4AiecZWH2O+le)gBbno3fYir@t`A0aJG5Lw zN<+~2N-`?RNy^PJi;D0BwOuVeJ;Ffa2;emaQ5f|+biGC%a=3u%7bHG(JOJEgz!>{* zLiR6O8yIJw9TIP#_yy0e!u;SAisW|GIp$o@`GuglPt<i}D1Ap~lrt_sVGkO|hOH+@ z&7UY`FIu_p4jTW3ovQ&}XHu4w2jgRwvye3hCfUhGVHwG}e)*uX!4t&{)9mD2%kn69 zOXH+WBz2Is8j{)Y{iL9EiKSj1exUIw(E2coG^8`1L3s!?UXM6O12nD>nC}G|UkV4E z#THlzs^23cys{GAEYqTLb8?d01L14RLHQE3{J|6M&~@4%KM_-RfzH{&c}^^-KLQy) zgqMk^?f~~e5a*`A#!*7uN~2(Fkexx}Lg00%=wqy)vrYXGdp5!I4>`~^e(9h#C3uY4 z!>`QKBP9piC(8t#2@skNI`0iUCID?WC!>tPL+W41dMHr7fV6`mjF9%ihJyEuK+lE4 zOdn|TBn45>^_7r$A*Zs)+yc;=pY+J^3edPwc4{zm{V8Z(6*T@G3?7$2=?j78VPR|J zL3<k@W9K;rp6)?qQ4xNnUdBjkHer21Z0phTz~f}#J~qlZIk0m_j9}~5K<67q6(oVr z3?@)-Ak_yr)^b{c+#D5d0NQ5*FAE^$3-)#-$iKnik?Ej$6Qp&B@G{cVBPAo*$RsZX zygx6jGzv_6g5nm`{|1GtK@@loN+?_pxNbtUVRAj4(=(9Q4<n6D!}ju_mLZU~DY*X% zuUo<E)gfsF-ZqDf|3J%YNIMklSH##$X=Fr@L2_n#9wbc|g5m>|CMta*K;v-9pz-0# zlyLO3oFQ#|cpDo_I|V)l0`n&*ZXojtsB6dFis5HL!1o-&^k9_vAbTy!;QIogb9|6I zQl6faYiSG`&yI`;OiwWiO;0p3Ela5c)iYt0QNfUN7n9)g*r0x;WhE#*pu`8boIu*| z25oDD!wthd$aMnv%qLLTrNh?Gd!nD$0r5Zb`Czc{&hx=CmjaFx(E20rIeySHks)yp z-!p^5UFh=|mWXjL=-3me4scG+!zc&A?Lj94aDA8!?>|G^Vn}s!CcGa2N+X~%T1#Q+ z4zx}N))x&7H_e8X7npr(NWVD69o+r^ucrl#MS%JZ;ImcWeOQQ_G1`fsGdA74a+2LE zG9qE?lo558K~#iS3AlU$m%AAmDUi8g&^$4$e#=ZUMjh*c_FcgKLDYlr{S?^pAtY=v zgQ}v!-6|uE(jjZdJs@EPS*HtiKXO`v#3P2@s9ejeln7tc^O8YhJ}B)KP(E;kuaAI* z8R#rhq<Dk$&yelJOuu;AQ1JPFP&tM;g9dJ%6WYFie04b_EFf)Pto<lhdPN><N3|DA zyEWM;46F}ymOZ%N0vmGx^)rmZK>Md4={UzP2RybK5mc6(=bPsp>|~MV?39G%OkPNu zaWOy-Tco-IS}%k8#4e5yaio3*cw7e7et^uwz|Md|8J_{KBS2mc;tbDE7-<aN_dqL8 zK>I;KdrZN83pcESrUQ)g0U+n3<fHisvNj1^et^;!JYGTL_R#qRWPgFj^g`3U-Lt{- z6`;HYpRd4d+k@*S@Yq49Up{EQ1C%yFdT@=$g7Y2f8Gqoo0H61rSq?f+3n{L_`!Xy& zoee55%LK>t#Ngs0jB*W<-@xti#BftX*qOI*|6|Et;J5^pL3!ZzKiEA!d47hGd48Ze zv)sqo3BDc}W)4D6P$2XyJJ5JG#vW04oM9>V!QmDHiLVrt_BXb@U!eE`&C@`}yFu+` zSlJ8e?}Nty^WbiQwgq7Q9!NO?4tvOW1!%km$KGR58#%kk8#;au^RFkg??Y^uB9FI% z>o-`R8!4?p+pWP-5q>$abv)oO2?nqADNQm4pOXw(%L8p&LF*7uUpU(nwB{lYd?q<c z+ZAF4s4Wd1n<@p}Igo4|R0&Gc-j$A^v}BRy?3m|;=Ep?jybf-gV2<(P%A;UAL-NzX zG&qex+F`IUJS=@8_*iflq+SI1sS=u=;q^Wddu2-!!%Yj4BEm|7!$D^)1o=YG56<&} zo>LEQ_h8&hf_$zYO8dqShk2m(4$@dAsNWijT#lobXV9^wr0|^5#Bf8yq|hADo(O{w z&|VAUAaEZR(T;$QKNuMnB<1Fmq=XxKCFMC8rno}qNu6P1xJc<4U;o+}eAYI6ZXVVi z0mT6%ETC;HS6udi*Ym^2Si$R}^FZ@e$l(O)Cx#)dAHY$MqSj~NvMnjX7gA?~(i^DU z0nbxH+796Q0$Y0xGWLR|AKqR8m(}2N<a2TP33VL<e0?kOd8MGWs*p8hW=Y{;Rmnzf zp!10_&Rg&V-%H|G1zY=*2uXLLNk*0-iQu)0$ryDLXs;jW{5ovwmf&dwoPR*)?3&_A z(-`K0>PB!{ae<Vhk$CDyPsE(58N8j0(iaDnv1s)r)^ZCzX9Z~&;3z9l#*Wa|9U#>U zNb?EMzCCE%3R+Kt(`zPTZI>smGz(o9Matfvq;NMAY<bhGvLXp=FSxA6+&hn47bB0^ zgy1j_bQT-R+&p^zM9m|RwsNjvMyfluvH;Ysw1lnGfbM5aDT$28z*+{v@;=x<ka)t= z7Iw^z3NDBD-;vL7M4hW}^21>t>X;%G$F|_<B@bMufyTGc$^uYZ7g47n`4>Eg3mHQM z?JLF_PU!)ej^)_qw$bc`?`8FLF@dcw#})Rd^#N#%2(pd`xnE55dP8`51UkRU2vV1X zxm%WnxLcM+q28+rUN?)syn&{Br1Azwe2$hkt~l}`CFM;RX#5IvH$_faQZ~Gfho1ET zspCOs$03(3-p)DjvKCn!Uglsm6TObc$loYqyy$rZHl6`GPm@5q1y)wU?!E!tlLK#u z(Yg%6=1%Z_K`eWLkje#=xjB@&3Q<qu>6?S<N^pM!G`59j{S-(YZ2ci<t$$c)3fjCN z+S&6M<pykhLZp$UVG^W|hIZEm()t`1i*z*ekjkw5bYEz?Me5gp%SZ71W+tM1#1^KY zGSAo9G1m)RFGAY)FmvE;%Q67<VT+>(n1x)2!pwk=vy#;&gOq!y<s>}s!qR0<6zW~R z;Ia~Izq?yyl(DZF`dB7d4$`NFm-GIa;4#o#A4DAuGao74qmH-1%z@OSs9^_hvw-Vo zh(D0_{lW7+PBXCf1wds?B+42Kq&_LMe++X6qQ4F5BS8CL&^{%+t(T6stbwL0xL@$^ zy{=3$cFImNPAP@AwK5&ky^IPV>&ubu9QCRsbiZUe=nfa?-Hk|XeB?1F*C4ok#NICn zDGQPJX@S<uQRRLxSHxT;>bWqWIY&@GJtf@FAj#OX6dYgBwfC?x6cj(;G7OdnG0zu5 zG9P}XQ)!5iS5;Jmml629Ui3CSQuv^io1puAvO)9Q=yyD#=3mHIp_e;SIJ+36dpV=# z0k5ixs$_T2eT0xZ2Lr;&LHB5a?<DihG(^nd=9Fg!WMbQ^lWdV}?39s|>6De^?pBpt zWti*<TQ}k23BMmO*|0n_AgjC#tTxLe&(j%ozq3~rLJl03kbDQt6Oj5BlGlO|ZpuWg z?@EmD1kGbW+vyl>@obR1H+mSu+kYn6QJ{OD+=I$ej6mx*9g+Evybg<7&|DI9{i>%k zl3U>G1u({@k>Vb;4-Y=07j%v#a=yU0+W<W0l%HfARvZPnYqKCJ!l^h4w0{G%KL~Pm zO;t*`7bN_R!r*r+z{YuC;TeSRBU+!psVo_EE=Ra!DQFB2xh><3>_^D?6G(ISNO>D} z2ZK>YSqk{>PtZN5;QKAX_l1#m*Cry(qNRQE?xpYm?@>caH%__9xt1lM`MRiJC)W@I zr2aK@j0id3U|q9=zJ?01P7D#>&@@46`3pKz4!n-R8TqU^#NHCbdb8wGpG-?b$X&jW zb0#s{sDbeFEs)Cx<Twt6t>FNty<+G&=CC{mIy(<Cw*)#H0=_;CbXP_$=q_DQ-xq1E zwsQt@Ulz691fJgm@0$Xx&8Y;X3DCJ?Nd0iE<tr@x!rEMjxiL`rABeV3kwAF_^DAtw z6;wt+#e9N^EAJp<OR)QTeJvxLy+G|v(EMv9<{FfsWY0{<o@i*<3SKW0;p~~7;_j9S z+KU<$k!~5`>{;R)R-OsE#}wgTNV~(U(kUY)BB%^>t~cnu*cA6rkey{wxltgqVRE25 zjI&Z)43j-`EpwxC$}>IP-3(LQEwdscKxZ#O&L{`DA;~BzH^SKyqYU<RcFgni@GFlB zuPBDBuPz4JlN$-TFEy+@)6>HXv_BLi2EHdCGS|`s<PV=J3d(a>euK@OLeB1o-ZKk| zU-;Z6q#Op<3!r&*@copqc~9^>2W%~p4}2X5q)(1@T_ETjU{Lza4a)|VF;Njt;Imv2 zX$v~;g}vN|*1=vmQP4IPs11PDMhk(>$)e;NYOm=6=P5|r7gTnG+epwk1VlQ*w_XkZ z`Y}{LA^J^-a561R%1qBoGzv3?to6dU&nPD)4|Cl)v~Pnv?ot#Lky8%Zs{z_m=jk41 zlma_@5GfAe{gE6?kovG>H&9zR3Ut>t^o}-=KGT9^1NgZtfyudHMxeVSqQV1F=eFVd zKVfAZD8GT~+my28+>#8?9WtQ1ry=X4Kzm73K<%|EPmh%R#BjfS(7Gc}$R20VJ?G^~ z#$E={Iwc)aMg*mU`~k8X5f|Y7<DsB&aqu2V_ww{)P~DLW>VtyX-(i_a?x7_q9$p3D z`z}FeK2|z`&OpdX0jcruO~>gT4?n|X$ovzup8)lbJ7`^TI%sSx$J5;j6mEve?vCk^ z;ilQ1?oI{Zv1)h6^r#4MI94I=MF*#+N)z}xKj{5c5IvZ8S7D87&^o5Da8qzu2MwR> zlnAHd#Be{*zC(~3;BJDt0m=Q2pf)SGUFRKaS{9WXneSy(l9L(%KGPk!OhC*}A?|bq z>+?Zc9|67t45}Y=-*&P`m;q=X0CIik4M}?_<1p}amkYXkG^jW#47N@&1MFu=K7sVz zkm`HLUE<D;pgS4R?*J<Uo$-ZXH|BgcsBQt>=LRe5;OnN4>W@4hXUB3_e*`J5rF(+w zxk#jSm8Q8#Mt+9L@Uxnc)4n6<9*I&=J_g;@n&JlEQ%vC8M^L!{?%U$A2NE`*auV6C z;5I$Be2BW16kNtc8da1fL-u~7j1wWZYar%fxCOQk#2_*pw5B#F2Xwv|cn%+JP6LO2 z&>e>PUX`#pKZsw5jAv+gqnC@wbDf}k3c4>nGTj^1-v!AAmgQ05Ci$3m(2^GBh%|v1 zS3nX2uT6m71rNO^&kJ_`ml<enD@Hnn&k>^b0YGzKp!2qq-Q6l7^Inj>;n4LVNOSz4 zxdHh6WGQq$6FvtCJ~yQjZC?Xq%m=)_BN^1sFofkn(7ZY%&QZk?>slcB6E&^F-HKus zx_=;X1F5eN<zOKAY(nUrexSB6Xia}8qz~=wjC7`51k8;FC5i4i+30txLed+KJLw_* zMa%yg;JcAvaRu6&6lheDk!<XXd}cLhZv?oV=@V?2pBNs5xGNdleuDT3b=(WOt^h2L zNF$*9iW+t}`U4o{B1XReTuyo-uOkA_AE#$P>KN0sM58d%um~sQ`Wm(W0P3%U)>FGf z+I8^u4s!hjy%Po1%@F@W?LlsHz{j>ck=+FecLUIxA^%Kh{fJ{N3?%*_{YRwy1gUp$ zwoxEw_e0!><%|M1Seii{FF;M(7~u=r69k)oLk%}j`vP(vEz*7ASnNfpgSA~D^(&Ek zO%P*fmf$oO3SJu-mY-x)0UEC&ckPEKDE*?Dg=O6b{5~b*^&ikP;@#k94x-i-(0)W7 z<ZRMJcgx}^_pnMtx-v!HvktnGA}cC9qb$iC)bB+)`v`hY0%R>H!oS$Yn^5L7(B|Kf z_B`SD1GLTp<xOy!gSC%cGYX>I!_eG`nufsps6p*M&>h{#=hmQ%SHsV}Mri{<)=YuU zaz&io1kF>heduU*L-#!9!Rr#t@jMiJ(f6c)*8oHHU`ek;_!s$pF7z~nK7JZe3EGbc zTF(oQL)3f(F0V4c`}2~FBGb|08&tPhdOD|6f!gj#x!Cp{Vx}{UwI|?xg^qbh=bS?4 zLqPipGYmjyH72>cA<`i%?jdCsbX_d8eF9$dg;eJu@^?9k8PIVmP<n!tNiaQ5*zz9Q z*r8Vrct2Yhrr%K7)NU5gyoh#JGNk`nl4KNA0NS$?1-a`Pw3Yy}XE)Ce)KAFqcEPg0 z9DJTP^1bztb%=<yp^hb<F0P<E>mlbqyA-EKIUAIqmI0u46nM@MezyxaorCU+hUPPH z9s}2lpmm7gd;B2fJ6gE`I@=s{u0lXCXuKt?1jNU%3v{<&xMg-?cvJ!GJ~^K}zw#va zoUEwejBFog#|l_G9$dG8*2jY5kzkynhasfw#=C9@OL+lJ3rKBSeCPGT=Wu+CazN)} zmxA^~gc|u(CK*)}W1mODIZla`*O1q=Ie8_4$8&NFqQd;Ll5;JKlfe6-kk`54+H(gj z#}Id8AlU(mcgP$tXx<{l4R-e~s4a>0UOA+7hG^v!j{7!XdvxJv3}s@DDM89llk6mS z%Zw=S+53iNpmXFvYnDM{1U|XYb9F*1$|A$T=ac&-8GGfR?s0+EW4SOj;B$N+<95(A z49eT!bPOvmTruMdG!B-8n4brq9RV8uKrbgz>M+=SQrOl@Wd?!IbqAfj6%uY)85L{_ zttUd!#$jOb01X51UU%d+60AG|<v%=o*CFeOq4fo_9^^dhm!D*u;tM+y4B{?GJ%!oF zf`)4*=u9+7o#z8Pn;SX@=!4-$XdHvf3q+e5eJ&<A+!VAo6;$SgL>hy}Rm)M!)uBF4 zh}w?@_urv?JkUHHO8*_!SHvhQp<@@A`4gH~q2rveauU)<Gli!)a68V!3w6Cckz)-| zx0=D)OC<DvA^o*nP@fFG_8nB8!P@5VavAJyxF3<yzDE#f-y4!TM1KsNhaqVTQU{@= zP4M0FRnYW=5zd(53#s>#4Z!6FxLgU#&8bQR-5(2D2kaaOJ|h#n=Qht5ZJq^mCm!Ms zV#IyKL2gOzVc<DG#5@(G{{<h5atGT7x@!S!XLyxU3c_C?wa`2SE2|)F8{{=Hh&c8D zpNUz3-49s$@~}1#w4MXU0lbbyDl_1HO+UkAQ2#zJC?F~~3VerrKrm#y-3K-7bEEP= zdj`@AK=<b)J3AJk`pFTx2FC<+jw1LDu;fb9vXqFRoaF3`oW$^ye9#&s@LUUQo*Ep_ zpn3`%PjEkj%dAjKsC}UN3NrTLg%++ppm`u7-Go;ElqMO6f%?CmQQ<jxi5`LZkh|ot z@5O}d;lK<h?@C8QUuQ?{fM6#aZpRis5Wj%k;|i_|QR@nLTtVAINMS{K84FH_;4}y- zD^S|2XydSudK!1xf{1I#x(isD1~M1rtYpYtf#uM3>J^|n+hAr#M)(<oLdVTuZ9pV* zVdY0@vO8!EJeGY%(77~F{{uXCkeQx`tsH~74Q2<ZZGhJ9$I|9P?MH&gA|T}kJRgJn ziV}u6+x)Pz>Y?p*@R?&dpmA-`835^CnUS#jHbLQ3kd*6Y09x<plM7A{@N$v#_{QFr z!f-cw+=IrP5c`(FbB*38<3Wyj0qzwASkAJ|i-e5Lf#ys>^#XK`7}g*5ON)T-H3yd| zc;pRAz<I*iumsfp!#02G1#U-x=Y|cEbHj2#ZSf?~ysf)iWn#E%3DVu*AoqaBf+Czf zwF8_jixWdo&d|kdLqYp#u=7<xVFpdN@I5U)&~cCy53h`*JkVGucpp?1_?|Mzo=DVk zAQ(2Dj$G~{-QnvIRFdSJ0YB3fdWK3VYI^{7PAHNYureO${$5D>Hc9uyy>0_D%|qvQ zN$(4R&iZxBN_6!qi}J{Zk9&dU*Wq^nR>JQ>&O^S(1f1V7_eBx0o({!MV#mj@_J@$y zzJSUj(EKGRzA^VkA=c@@)Pc@n2c1Rj<(!cXnrBK12hD4mW+oX0nZn8&uphy78@_pI zTzxud+W^$B1^0_#@$Tf5;t`Y)X_Vm%vJ0&*1DSgyFy;kX>j!S@<c3v(&R#|4qqd!( zWjuIKJ*fT#_g^685>lH5vLDkAbQf4T{7iEL$XqmJ&oDWC9MaBdLG}Z5?v}K9#~jP5 zM0ZPLq_txh^)a;Fod!D3Au`-AKh)i_Dlr0__d#`oCup8I$vvzRb#4n9k4WJKn~(7X z?Y;B}!xCoL+Y2dJ)q>*%(T+y32h@*54oAou2GH6A@R{sY1)%%m2)Cah?NU&=p6ioi zS)OF<R{*{rH5-vHQ2Xhiwk-&Q%X*L=&|VYJ9!tcUu}su+p}_4^Y<(7p-T3G2BAm)W z=bd8oUC`<`upOXvjo|cbnwE@+Km6`O){`4n1=?eeFP(te8L%<{W+(C-6jC{hZ{9pB z$=$LlDwyzmDlA=s=iNf_#0j(y7GV^Wlj81{mFVUKUk?cyy9jo7D~)om$Vtx3Kn`zc z9f{TsMM`Io`Vo0;sVU0b9b_$nVOdIqUk+%_Jt-62Pmr|*=yOw15m5%9v)Pl3L33r6 zpf*wlINhP89e8+x%1Y=s5UlJCj0iFS<<-Dk%k0!()V5uedl+a8y9~=cEx6bA;U33_ zh7+uu2K8sa<z*>yJ%e>V75R)b^m-e7o<6*eMIAfIL&P7b-a=`UqPP>ZUl@@t@R#}E zbvrIepuJtekozS;a{%CT_ff_=pzENK*5QKAu0mR03~J|s_VB~nhM=_@*{J2Tn?Z_) zXTFyas14-@YCmCyA<DX3*tlAl3#e_BT$!E+PW#}q@nCH%NIFFhbDvz$ow^V^Q0A<| zk;_Jdk|blNoTN;cIY{w{>V_=P95m{Dh7+Pp%*s#qGIGlV-M0bi^P<mhq_|s_`)4|q z_=jYhf-o$dB9|FRVz99f<opP3mm`NG&Nd(3wBwbN1X>peI@1VcT{hu$t;lwR(w&!c zdR~BsUwLG>38;+?US}VGEgZpZYm_zTpz$K)yoPmMETjw#LJkAuGp>==J7d<h1j;5H zVTly?NNsFnf0GsFIgt5cq`Cv-f0Qvo<S}QowiqleApDz+oPJHSqar}<!gQo|3&t9K zd~HX9?HW%P$oxMfJ{(c+Y(pz=ki!biAJBCzVZ~9Pv<K<Sn}gFla-9O|i+VukL0lni zNpM;-hKf1E&eIF5^vO(4_pU@)--&ki7_=P=tGmJL|3K%BIOc)cLZJE_v<@uE9eieP zDQImn+8KWZi1n|aaveNQRhA4odoK?(cMIA}iR4DmeI=m&fIFl=A87<yOP7*EtR3L6 zfb<){VddqKl92*Bzb?WHe2)+;O(Taf=sa`KU70B!zWLt4pfUFfgQy74{4h}a)Wf$l z(cP^IHeZF>HVHD0j0nm~bPuact~AX7)s?7sY-6t9@`BC@cn6z;=Ppso)CgGo7$V9< zP<@ZN?!?4D(=i*`*DdhLgX(jw$cf4e%=Zq4_ZwmJ!lqc&y9JdcJEs>Q!VDBYuyf`h zbpgD6fRw(F!xY?KKuc@rch*NmM56W~VdJKtb*M;tO2`NsXq^XfE2s{|2ota$Gmyg5 z6yC=K=S8gT=D_?E&|Iavr7>tdDd=uM$ar~$8+d)Kvttox90#1%LFc0z<(Nf<LesEw zak^KfW1gpTae9)mR{^MB90^KCMy61`sBweZ?!dg~5L`!R65HM;zRv)UR}$NOgxkN4 zkTcK0c@Wfx!nyAQv_}``J|Sqo7&4bTT87c93<Iy7PKM6S2SLhuXdXkV*PT)GM^tWP zKAN6%Z*U#}*DbLAD>VHh<sEm+%0#5H9@Rc9<8b)eWH|cPpn4A_kD>Kz!RgF72zK`o zxJ}~?zn2J0n+R05y602{8bkMlyH}V7hI^HP&hCTH$7dq#`O7rTkBsoc(&k3mN0ez$ z0=mm9B{vl5ELu=m46Z8+k`3VVCdH|tUO7qbmc}4|!Rj*Pegmkk!nW2ENll4QIK&KW zdtSid;cl9fVh~i2oC`hc0MyoSH#JOhFUQ{2a7UhJg7w=_+E<``NT7K!c>4-b=QzRS zN+WYE4N}}KLHCZNgZ3XK8-*Fb=E*>N0zmgbd7<>92+WNk)madKA-f4Q_Jg{=G|@e* zAj$~5ehSuJL}@qUn(spL3v_K2QeHuIuR)TrBdFa9_cORpgLIY;O1mW2t1QJMs0@6* zJv@v}!De8z*<fx5n}uXQxZmJ}X!nBR60JRf#otKkafLC`-5%)uZg~A3RS*@C0@?H8 zVt}$v5Oj`HlCh(iCnE2a!pe{^cgu2b=WNt7OhEfnKw$woM+KfgO`-GH6`@JSj``lf zpt1#?mrG&(@^&V|t?pr<`OLgTH?OiJBSWXiTuY-U(EPRs!Vl22XyNIcff9e7&Iaj7 z`3qq$bUX#p&H(4-oTOY!!ziPS;3Ol<lEB=s;v{46Ivk_K@GxV@eVL}2Nyb42Nk#^s zvu*O>`2dj?iae3_Yy0HF=7n*URen|Aab&bOPjU~-O>xOb<g;9G+YvR)J%Y-TUGmZP zr9jgpcw8OQ?n0kqgPxD)8U>oS2A}H{nx0~mfw=P$bY?@isez|Ed_8V@VuUaF&O^{R zmnV459{6s>ti*`0VsQH@HyOG&30l@5&8>m+wsR0PPQdFaa-ipJ!16I7J?DVdg@l!+ zK<8}`c^5o(<DO*fnVt-~2hlwTe7;p`Fl>CnvJ|uzH7dL!2RvWl;adzjFWWQ+Bo4l> z(I^bIw<`y>z5&gAgG6^X(0z_op6;M=#IQ=p8Dge+pz<v$7*-Y{oly;5Pnw<$O9!wy z6rWsByr$<N#$ioBcb8g%_e2<j?_?~9#IiTS3s#PR*Rp};UBLS%(ZjA3-9FSYYUr9J z^zs$F-y^Iv#T6PypndC@@d7s+ZYGjBk;Z<Yb3)6KogGU8g28(~K>PM!>nchy%1e-X zNZL*J34xr83TktQ7)9lR>ko(=M!f}IkKpWvR=2ukCK*TNfX<Wh#E^s3nW+77Q2Q23 zUFn>X85LepmQtAvu@~GH#tbv48?crM;Q8%v)3TKCl>E?K%d(_Ud~Sot5$QJ2-O)x- z!KiKn<weLHw2|rF&Tgn~g0^ok-2@2}aCl*F6JhlGl5)e0gWPi}L1)f`=IcT27%wA; zIbO(XwJ^^D2CwbGq93%L8s?|;G!NANl{a>Gf!7aUnC0wh84&E47YQks^RTS-1C3vT z(;&#*D0Ouns4wkU0y&=#IS)YUYoB1`I@mNHx@LxO`oL_9WdsC6?&HRYZ^(EM%9uG) z`2!vcfS*%<Z68v25Mr%vupu-JgZq?_H3z8jurNm*KLDNafOE_k*?a>?9~mt@ppLIN zg3A1Y<Vq8iv2W7+gxuycD1pW;WStdw?As8zjaT9m4#`Vil}K#{@I0C$_>L!RZEKWt z5KM%>Fw-_>J%u_x2}*bQpt2DWKBSFL!p7?Gjh~{XC&;)T$WBmNM;o&@P7Dt+NOS?6 z8w)!35;cB&azW=!gjI$a<z%P0r^DBUfyP9<jGau7@7Tp`JHXCd2bpV%v2Fy>&N6iZ zop%7W17}_Z)vr)BpmsMX97|Im?n26YpmH2kpPC|#6M^c*l**{^3edb6T6qaq4+#fw zJ(mJLV}U>!h8fS9rXV*_7Pp|ii3W(g1&S|}J}=7nGV1&|W*-uD{t>peHO$>2AB$Sh z8PcG(7UmcMv@D7+M$EGzr9F5*5Yje=^clf-Cxge*5PpHT5wMI?!Ot{C9T$MaE9v{u z;AgiY)?q}ICFj8Q*}=|Pf%L5~&rm@MSL8V%cfYcfa8m=gnU$ck{V?xo0k>hHYC-V_ zJMRrq);Z;Z+NR#n{v1RNXs?Q+1@tZ#_<3>ul}_2-mBko!FT@V;oh+cd03Lr1Hwwaf z|0K9=0=b`~6ml;huKN<5vXYF!?Z~2lU?>}O=K<tA-hA--vS6h9B4PU*z-=PX7zgfs zt<baSFwXQwSq}j2hd|;4l9u4>1|jZ(w(~)Agy67*wKb9B2yr$o=uB_JB#)q~pj^vJ z#F;lJ^Ln8Bli=-pA7|K|o~Bh;_Hv-~c_H}+aYisaO&B1jGtiz*jI*f-rA^HI2ktjy zK*}3%9}IjZEq4F8l&AZmjf;W$=a9W6@N=1Q=ru@(?^E!A_CdjMi`m{qo}cr{^#iS+ zftD$tId*tokj#CJ_}z)N)(gB|2_C-$)_lR&!lLe90k=mXX*38PHsJH@A?IR)^B1VS zl?=%X1)%$4iAw`WWeK?L0Xn|~*IlES;S4VqQObR^{Yc=xnp+9VS;5fp3UEHj#Cmo! z+@Hw#12Ug$ia1-t-895E6Lzn6DDs~3GDQ7tQU;#e2=_AxF){_MnE<cXf!sR>$<IWW zv9LR^TrEojjlkzWq<e$Xb0u2XV5&o16EY0<)8IM}1ACeVmB)~^^%3BCSI8MA;JIBy z*yh9aLemSR+(nu<L>~_%6z(~e`Ox)$u=6+rlCu4ZlZ^dxK=m9-TL!dV9FcZW%2#lm z1($Qo^~wZ~A7p^etq0G=8Re8lhF3uC2&{z8H-PQ}#Brwtqzw!?Zw55yO_X_%_6Mw< z0q0-v*ph1!<Q^{2T0l^L3Vdf5q<#doc|rTgLert~1wCg6bWfC9m8VBgWny?rUQ~ov zPLwnBTsn7Gcpt{o-LevvXTfm+x_8JU40K;T_>4v@=L@BS?;Uc^fSecPY?_whky8#D z?}UyYf$F!c6z62{z28v(mqr)|nI^l3!uBv5Cc(~dbWX--Yv4Qw725X!yA#SrxE&JS zUhWy7ark2Jei!$!Y<N8h+Vcl(S4J6y83eoM<R!XSfYcg9g(H>0Sk8n3oi7w(WLlgG z*_Q(j|3no1f$5+=5_oMVcnlpfwh2yC&O!Mgw<Lkodj#b~A=)?aHW#RD_YKBbZbQ-p zj(QQ&E(5KFa0Smlp}Gs<FX(;I`Cdj~weYzjMEIekv&yJo_<d=}cj!UWUl1rQf#&8w z?VTKi8KAW2h_;UlviH#^7hXpr<r#23gVc2hd3f533J0C*RbhcJAGEd=(>zeROUera z?b`+ATZnnE^aZ+G72M8)#0hFY6;x(H+kD9TwJ_5bq%DMUMlq<Y1Kp(tx<?LmF31zQ zXVpIwvi}6(e#AaIP@583_d(C1Le$f+bC}_E8?>y1&$|<O&aRIUq#O(}GKG~}@Vx?H zH(~ArK+20Kd!!+CY^Y@^%x#|7&vL|2ht_r)kahC-+KwpWFV2oAV@0s>5^z{S@*nbe z5A+-(q;!DXF94N~xX-0agSB76;ODS~Wkb&eL&@*NxdBmLW30u-ch*>rB`iOOCg<kl zMHz*G&dkgQt^bAD3n^>y)X%OMX$-YpgxwBM9};E#T|{L$sNOO_&7Y7m9jX3>tpl(G z)k`VPp!-5|@)E;MGm@a|JW%r#sJyT!^K=a=OUg_!@N|c`6<mKo&TIw8Cuq;Vr+Z0G zD&!u;%&733(x^(O{HXAXY^1mcx7o3{1ytsM)}*1h!zb6zAUU_fCn_QvDNljigJ>H= z+zKg|ApKHE+Z7V#ka3L^So+9J2d(FYoll08MnL09ptTSwpnYt`&~}L#s9sMDM-fAv zp98O-fXKu0v~M<K9g=^hQ%*`A(mWD;ofDRI74UVMP8fL~;y>cr_K6{`CP|r=pmo5- z;f4mqDD5^-dmLV`g5oo*G|H%=AlV3Z)-<B*L>_C5iU6Id=;aIBi|?O_T&98Md~w~| z?wA+mo{{4TTAu~!e}U#P4U^mhLHBSPc)Ekm9tQ92%!zU~f!;F-jYs75bI^07;CFUZ z<)f|L1fM^Tkv<@Gx}{N6gqKUAyIUoA4i+@;Y3y4HIrlLT(ROe)NC)5hQHeOm9~$n^ zdIgf^AZ8loBpdr>L>YyG+6sB0?iD$a5q>$K`NSmmFoURI*xIwGoaAiK-F9A8;BnVV zr!0^=BE$VaYa5~dMM|sAu(Rb*+?){*48C^^HLZfrCxP9w<X8lnGf767>jKrukoB&J zyay74*3+3z@cnuaf8r1KP@{~p<h(#LPt>wGBRMyv3bm{O*#Vws2c01SIv*Caw+JKr zL1V&+pu4?-9ZNiM#0kV*sNsV@{KLTK(t*|mdRIDOvmd->5HyCD1U}~iIX=9qVB^N* zhZi_4gZvBLt4vBh34xs}Qt1TVH;TwJ0h#IEk<he)Esn6<)8Il%{y<I3;o+8s(EF#$ zl5#6dA!h-A+Gmh7jh;uK=^AuCMhVvNgN%WJ(+T3v2Lo{16|=1lDuWU3@vbsR_cHcH z@jIx!2aX?<z8#|6Lfm12)Ry!xKq|AHN|Ov>`+9xR(lh2-VfZ+XbBccwC{0B`&KCi# zk4OnO&4&3IQrDo^13d>cqaZ0anG}1VXS#v(rD4WBtPKw9-xE2;9u*#y0q$2-!p6`+ zX$jj|<tdd>5pITw5neg4y&vH42Hi1HX;KF7pTX`;g2zL0Dd;?O@HmBgPFYf>Wff>o zR+4*Y9^!ln3^gSnHzk73$w#}l0@khr%}@Inqn=p>a~Eizu1_Ys?FHJCUIsb?Gs!r` zCCNQ3BRLasmmKIW3{*1_a|$T_1MRH~_k-+XH-gmTp}C;-FQEOwpu7Lz<xw8uOm|d! zQ1?}vp!(k^s30=juM)KHGSb)=Du-ewq~B$XXb&U14}9iTuw_Pao>xXHTA0D)5_8>5 z(8366W>7{H+)hyZCztv_`mtq5cVkv!)r<RnMR?u<g)!6(@cUjc@0A3FA*$W*yX3Im z!vqam<aB0)n43a(E7IA9(EOJU4P&^Si1~FREaz&Wr5WV0(nQR&fbf`&vd<fjI{ahi z`2AOr6KNa-AE(2k7P1!;sox1xi=4I)ZAYAEe-(r4rHHVC<lIn5yu;%K(mn#0gU*iW z@bMypih^Y0K>TV!>->!>a$xOeaGrN|@`INR$mt@pJRR+Pz+z8Vw_?zG+(08xJIoVe z7r38^>?Y88sNnDd-7^F&W7CU0q5U0b9*5|~;V0-`lwwb}pvuT_)2bxs{um!;C)eOm zH<!@toY3G<zYs`y2hY>sH6O5Wf!|9HIX@5N_R8d3H&e(R;N|Io;RP9~FgZ7Heg)ZA zmS_}K3fkwBoQb-&25v55{tWH@({jY!LumJ?`Zy!*B18^**nMSq{o#tpgCPII^BsJy zwmdx;bdE0Cd4oRA*v^T=<tLOpRE%_gCDu6*A7^+R!}ElXGiHAZzrWypqR`}Ax6))I z@Y;j2q)eo7MdUWHEByTWD#%z4a=Qc4_XO3MQ4z>z+M~^hAen(S&I3Bztr*MxUig{} z)V4Qb9uzcYk9?j@3g~>T;PUiT@VPb+cSX5}<wiz?6{mpKQ6la|$2E@$w-Yi3ia4tk zbe5tgWNkV|9}GNpi!i%15|qB35qGYkx*w8Xk<PEkj*JM(K%C3xXzA(dRu~zP;R+Im z^bbJgI!K=rXe^@`zJ3nLPDq_Zk)4P<3LQg)<-4?Cr<^1YzZ~?v-=4^G(z&3qVwCVo zhvheLzDG9`+{QyKKhVPw-hV>N(~x`SkkTq-?jzk3Jv<O+ErQ07pm%_oy29^x35Jac zfWj7vahm}tH&M!5CmeS{W0(s~Z-{sV*GVX4Fl0O&DP7=dUx3zYmy?{P;P-$b&MZVb zHwavYBiWCZF0qtfxbD70S~CqvL&)>>puRJfK0Bljg_Qp=`h1`|4R&YbU<?E3xOotg zJE@Wm3?jp^j6Z<JMvR@nZTRF$$R1CWG6Y+E<4N0|kb0P$bZU@fRFadF<Cg=TuZ;*Q zOV0BJ_kAJrEa0>C5%HQAgjCN{P+np4A4a-!M7paOJ&drVXE!9bq2x_a*+51b&V$@H z;OXpYiL35_-6Itm5tfq-xkDY^H}yt}ugGx2?7&>NswnW@la#C^Bg68@h`=)FnQGYP z=m_LzM@vtdgdxPw;PMTrtVEe3fS;R(zx+=OH!Vnk&FO>t+xXK<3TV%qYYyn#U!=SU zx<d~%b^__|6BDMG_F_A40+c2YZ4oT(g>-0Jx-`fgc0O<@+I%N|Gazj^Se*e<>j+u{ zg&HPArc-b^j5${cou`18Bd~eeD&(>R=Q?nt^a*PJf%-DZ25#Ar5uo$IJwbIYybT-T zo>PToFAQvb0HS=z1+{(Bk;)JJ^*j!HNv`X$n1ijp$2^w}qs$?voIoA>Ay8f*!U}$t zy&wEe0Z^Nm<aCF{9IR;%OJ9c?`5ZQ81)sylSl<8|GexXb#1dDav_`8qhm|Gp{uXh5 zhU8m}xjKw?4x*1qT%H4;AB{)@xrU&16$PNX_z1NL;r-Walst+!R||Pv1E`F~-R=jU zc>!D32);8G=}aqJX%J~$cCjZ?-x_8Ptd2krU*t9^4nIK0Ix;dMb1QO?>_MGR!YKbh z=?Wt}3zBm2tYL-h-67ci#^Fwq(<owW&J>=<vE|K>@SIZcTvHfq+~3bV$=C}PE-3SR zp3boQ3m|C}$9w~N-GDK^MrL}WSr|apWQGNR+M?hwdh*L=wD3Zy=iy_kfyRDS(0w{c z^_7!F8oIqm^(0b!x+EK;wUhDaiwqCSNcIRq<kf7ys$>Jmd0B}10<}$xEq)+vB&0IO z&@Tj(Uz2mgDpJC8Dx-pt?~-vViE{PI0F5_*&RKxm`RQihgETe`3IlBW`@!uE?EZ$Q zW01Wh*HyVlZij?P4%YEPr1B-u&@TkNOo5d(V0VJbIxOQ6M3g&3q-7jw2dCRn&kjX( zH*(toZF~(euU-y5e=pA$zBUdt)=cBN1-3Q_)b~Y+-w@E)n|n@ql6x4e9tF)|p_R)9 z=~1A2T~XG(L)yDYae&i~P%LBX=;LPKa71k@m-$pWIYqe#g7*I9czU3<!Q2fCQr&Y( z!RvoOYhY3Dk4jH50<D(?-B0TWxhn=G?_!MQpx$wliN7C1jGsx)H}Ex%Ib}(R`X5^x z7xmsG)G$l;gspjn_3enNQ&HwFFvd?&#u2f*lf3pF(mW?3{iBwV;QWs=x8j9X_LEgt zBF*^{=)YifBUycOtoZ|5TLCsM3n~|2Z7*>CfW@h^V>&VABY3<PCEbJCQ;2qYB+|Wv zpn8JTx)NPKqMj?q*nf?ZhH@e8TjX;*vD%O7c5LYq+|ETYhphS%X>Ty7-iF`Zi8}s) z;)emr2Pp0g35BntgOtU@<$Xl_!}@igbcV=(M5b+|wgYx^(DShqWWA>wXpg^}DQbEq zqTciX?Kubo-EEB2x2niU%1to@-H!m8{{gQ*GY0LEFwFy<Esnf?5PBAgOQL&NR$?Wn z{D<tbNCKVLYa9k%M+Z84B-z+0C(<Y<H!(ac8+7M#ihFu`WH4wQR|=@^L@9f~`3or= zkjw(D?aPje$OwqaOwaQPPA<SXCj#1|;TmQFTCWjl46EzBa-xht>sOo#l5(TUl5-6~ zdymVKGQsXHNO5*5NUj9Q`4y*xgZ3f7)-yoU0c3Azab&n@UP`!IUR0P<Msi*d_}oLJ zx(gv6Y+9A<UQv+Z3~?)J-3*!!0I#LX1g$R&K?*O>T^;ClfbM63=*N?Ha#7+fJsftg zL7p$@y#CTCNPHA~x`W!bVZI1E49IDhAo&xNwo9<4p9rk;Uy%M6_A!F=Y@ghms=x@Z z%E*Z9eC*+hxn3CDzIR9XAF>|QG$*Cf32m+y{cLaKb}B-@Po9%uvQc`zmr+<L_I5sW z-8DSk!u%t{4Rav&BFX}!v<nGily(Kmp5tOrzrfd}I6cW3wC5P%mXKVxlBft!9EO!f z83*P2S2`7A+kXrjQ%?e^2c4~i6dn*W{F0K~(Bc|)mK2g&kULV1q3TfF3re#=m8n?T ztI%>F6f~9(I;#hAPlgjHPZ=jh1m(ld-vO<m2d_nUb}9vh7ixJ0%4eYVC^Ub8{D8h5 z19HDwU}Qv4zPGz+Mp8KJJ{(Az0=H{C4ALWw+zcX(($l@&G0%L2sKM!vbWd>Ek&_EK ze+aa{ydoR2HXgJFG%!6eA`o=8Vt!P(UlF98oMYhWk&=-N*?(q`=pG7M!(5!?4BF2Y zgk|g-)LsC)9n`*q?3>9&tTpff#h)u8{^9c<5dT8b5mK84>>srF3q!g8!=w}(A8t+= zpz|Ui=>xfL0EIgUgXY;m_rd$+dpc+2q@t`T2g$=Rs1Fee@+YW#McgxDf@cl56X<*@ z(4OQ{PdC4^r0_6<L~woq)fYKcp6)qSm}voIpG6sHEqSDon<1z_4m$5U60{HA2y~8Y zieWPJUK&pir^+NFui~h11JM3v1JIeVo*v-4(?R?D@<DY_q>)=G$Sh**0o}O(U(@5_ znV#q#R-EkNn+^_3XUO^Ep!1=UjdC)R+(XmR!y+m-rx=uPvD$|@9-0%G7nTP;>j!cE z8ffoDRgzH!<jf@SS$BSAN$#PgDMoIUDC<^WYXM+1hFXlVFz`GXIPEy6K>MhHmHwGd z;CMwUx6;A>2!@nZkUMXR(;;aHbRJwvvS%jvT!P{#XQ$F6<G}RD+)&UNtr&N2LF@v> zsbgMbM3_O65xD+^odX8GmnJGau+-DlH63)<Rg$|`Mx;@3dWumFC@*D31%t}uuxwAz zo&n>aoXGINQslEvkj%&Iuff6vTfYq^2M)8Kf~35#97tV@RHnekN|3~Gn1u+tuqvP2 zFq0Jbu+k{!45a!JE$?A72dVvonyySC?F~e|Q-$nSTx(V!^&`06N2?D(bvN3YH{>!F zwXcv4D#t<RL?W#(0+r+0i1tgEGpIcSUONt|J5k%x==1F0enzBmSQY48O0+TyR5q4I zMI@)AiQ{S$K*~jw`pPLQCBhGs&d~g9nv?1gl#`Sjm>&t6TMk3@KdcXkl5Yvb2M#|# z+ypMGF~_ao>(3Ep!_}uj+f6Vx1R>UQq3#_6&0&Gg#X~=10j=yt-Yb+0YRgABxh96Y zWhLk47$k=KRe3sR7(_*6pzSRK<yDI^Pq(lt&>4JQ#$lz2!A_N+b|ZK`9$X)R@+0C5 zVy{Zr{^<;Z6c0x;pGwO@P}@H_HxhJ@VTljw8tF3M5Y%!B*_}z@;5s}%65G5OVow#y z`pj@6w-is03JXtnS9n;0%LQzC3}FV?@8Gi}z~fz^`96jvsS$1!hQ2P2<-X2_$q^o* z<-RT{ZV|zjpgU<wz~_>qj0s`JFQ#8Ia*{J0;rshx=b2!RSA+I%xfQ1vxtS(|_a#8i zrhwdYVVRi-IycrC+-CvTb5W2zd8J9lpncTfvkuF^XT(Q<&tk;vTR8`og7(ZM1!utT zvrBOgt4s>chVDJba&I>1o|)V*gOmubQs{X&gu@ryjtVOC1dStt+#KOml^79~;|V%1 z9^7_{Dof5pw7)$)QVPKRLZgg=BzMqxIH-LcNWT!Y-p&>I%pCApbC7j_$migg7Ds{l zY3}Jb*Gz%-tb^uGl5#^KW1*0{YtxgAyb3|*=YiXHpgoWgpuKEvl~KW<Jw-XiQ6647 zNhswEET4eaUV_isgwHF42c}1Y&fYW%O;3W{Ic*9mLqTUzM&=fP_sN6W%gMQ6CE&9W z-Q7x4gPlP8W=kOHKO-j@wG2)7g!Dt9X%KXdR$wV8?}F|b@`l`7TI}gjVhK-QXk`gF zKY-4WtF%ZDG|I>U)v;0GZdr-WQ2#kQfyM*C?O0g<3sw%n^hV`cR(d*TK+12>xdD){ zLyi}e{dc}0#p#iipnE7C%l#{zvV4LKu#7u_`WN6naaN*xPH`0I+%F7sO_L%G4IpU` zBMuzXA@v-nUE!A>72yl2Lm=S<y88-#c13wQ<jkc&Xnlm5&LDmS<v~y%ASfSnE(B8h zKEu-;V!n?vX#Bzud^R<D-b~5_wQEB``wlB3BQVaogRTF7xeZjO<5?>ON?(rYko1s_ z62{5KPLR9V-F=HaU0k95L29Fr&~5?chv4wY^vG~iQ&1jF46gv)lUfS%Z&Y|7c#lAe zM_47yf1ooSJ>8*Y5_($!(#D1O(V4WoiFCdN%-@hW2iK*L@W2>9fVAU4eG{)JaQKIT z@~km9{@hK=VEzE@T|)Ms4>;X}$FB-O?FDH51kGI(BxO34LGmfmUSF_1ptV(yav2gY zpt2oao)*LGg0&?eY05Djo0}nN7O_7W)c?j-M|(r_LW+BsNs4ne=$y>3WDh6MK2*?L zCF+@PuztNqP)>5L0Vp4U?vpA=c178vgs6-1!0N#F=7xdpEQ|1R0kz}c=fk1qHBcC1 zjQK&_g}Cb^xe}5Gz;z3Fo)MNVL3Nj7K4PDEInuZus2$=};vMX$?dfb#fmt^q_J)&I z59Q=~y5|^px(Ag-MfjC^f%+-1ae8oC0o4JZIuLYUy(L&4(LQr4O^txmttjOnqWw^s z5?)b^(hdjv7pYu<ovVUq$ARJmHBGz2=bg<wos&y_VEgc3X&x+(HZA}<ue;Ku46?t+ z0%<Q2D35^d!LqE1LfRYTpXmg?a};%c1at?amthoW?{%&lXq`Rk{20=C*nyyan_)^p zlt)lLXb&vpu4L3P>8J?5tjGwboRDz0%0%O^a{o*x*nDwLvXNg#vU`|cWQ12yN`xbt zJqW+~XF9nh<)#!TM)>8Uwg1udK+58%2v0Luo{Ne=+b84>--m^|f5s(0-Pak_?eP6- zXlw8NGabv(!VJDn9eG{}w!a3OdeHjHq=>K*#QrIybLp_S1vdT<Umq5d5AGKy8$tJH z!P13?Us*CJ|7M}@4F<QBu++1NvJ2d9g0>IfWfb!Md{8;!9#)d<4%#ad23^;Pu~!_r zeiC#R4bmPNv~m)*e$6K@C@0k;5H;<i?BfNs1A=mrBAh^HlcVe%1Esl?aMLXCTtBES zjWmylx2yo)F9^GD!4%xyN6xRHwLoa`3u;@JM1k^`5o~NO5IuiE&L?%rPxmtR$^qZ2 zmK&OfC?lMp_Z46{69V_XAkaMypt2zs*`J9<VWvLLPDYX86^2o0{UJ#G;g^vV9#$M| z6lMylKfIhl=g}GFB)R&5>jsd1SY3qVK5+XDoCZK+tsW%^_d0{_mUlCV3@gb3jngK% zmgJ;{f$I^78=z?h-7N6jWo}qyihEc#c>fE?T-bW+981u67U;|d1Be{toFYtjIc6h` zn_!NQI)m#NusKoTLE!yDFf%~$2#Hr%*$Ww`M;fmHg)Mko0jW<7uRCG>L6rTlxDSGk zvk-Sy2dv$kjJhWqzQ!H4M-#Nq8T)<2mf6Vrx?%1D?ZZt0-FM{S3rS}f=M!bX?Eu}S z2-?4gFsB^0HXEr-KtAuoDIgg%W@=;#8V^9s=QtzZ1B^Pa4?S-Yt`?N`;C_dmHx6?< z>~2{vq<aZGLkw`84F`?)sLCWGLpRuY|K83)ptI9TKxfb+;v7_7pzo~#wLNmGd~)G) zF`#&NMTCVZbpIXf3{SW^Xd4=qen4aOptX|e+3>pwoIz)DA%}@+0qDL*=(!_#Sk5&E z=QHSjX&2}o29SH;aRt3ss}ywZnzwUGMpAeXcpMEh--@~hEvGcuBMh2<u&>WYj}vm& z=o2yrwY+pp_jHB0EzroaB-!1~01@w?wg~c=Cv>a?bmlNhI|-5g(Dq8^Cg)m~1i|ix z0QU<KV@{sV>Dk!J#4wXcqYA?)l(MK8>0Zth%(HnReHLiigQtnoq=>NM6!3a3@cDcM z(ku>r!H(Hckb7Rsy`58#*2=)*5z;=!=p*286VhGspm7_b-GrhK)lJ!n5q{vc#8J-V zxd}1$jW?XYYizyTL&0O2$<FC{V11Rz1=#9v%yfuoCxXfwZ03OOk_mCQ1oiz;`!Vn~ z6MXF*+%1r^A;YRb^Y!6IU^`O0DzmBPMq<r})L)Ra0IJUr`3RbCkoscaF)?W00$%P` znr0_Pc;ZVFa6cz|c$I;|KgvC)(yJ14ULA2xF(OTa)S`zwNDMwtPIMRt6(r{v<as0V z1jyZ3%1==F4jx-8#qc8}{X*7gNB9|dJEtUp+!7I-TmUIU96{$f79_*(d_{yS>`o4} z^(^o?4lH)%C3yr@qMQqZHok(9cb$WBP~2hUmYL)pmJK?C4l`W`6(mFDQR+4nGZ6b8 zu$zI9hnazte&F#AY4ai7QJe!lj{r;9L;C7i+)ADKO7NT;@|-5>d;p|Rf;m4K2^kA1 zf%TDmGY!G}MI)V^GE%_jxq2C<xQC{L?rQ_h`9_6<=B6Qcoklr386<)4&qMF4fa<9f z@H{hQJP&d<rB67hALW+r37T_rc1nkY9mKwXu<}gs{`;`<OjNtWs-WtP6T>S&Yi@GD zXIG(*<vKfp`wmIrmPVjCmc(!q(AojeID3w#M^sL7o*!s^RF$W@WiHZOG?sZ!<oXqq zU(nk_Aio9WK-vPXpgfV0;_eE*_c{v8U8!O2Zh6U|@)+9Ahs1+pI;gCL_&+@_1)`=H zbbf9M+Byu3d;qS)K=rgKcz-phjRQK%CM?3M7+bl6t6Yl;_cDyC1hv1MV0Q|F=9Nl8 zeXposusEoX0iHAW$xF#d&NV@5>w>}ngu(p>WHs2<Xyn2A^}bp8>EN^O++pbfyjQOz zCBmy1HO|ROZ?N=~0SXVFU_-;?+zMD)t4fJ*g52*0xw8v0CT~=c?dcA>pWLe;G7oen z9VjfIX$&+s0ZB`Fp3d0PcXB%I(-_EYpu5u{;p7t$R+;3S3_jN%k^Vq(8DYt}<)AVL zbu0i>-ht0m0Hsrqy7Us#%)qQCA$??UK8E$L&C%yrp=+1|lXJszqar+^b3*VldGnGh zp?N>TFDJ#_F+DOO$RIg4Clhp+I(V)KJiZuak{ID<fIMdd8dp!uf$R_Vba5?Bb#}^5 zG6Izkre!IhzO1nq_`aqjk8DtRRT|}90XlCGls{4INUn5(tfg{Cl<}Z3&}1XjIU;c0 zaSkkv$~7s4^)12cO3=i7^85@V^ZX2wGt<j`oE<B@gB`*5Gx-LaK-Qr+2jzg)9YW&F z4HRw|c?nz=fWiaRCI^`xkzs&259OF06;@mx0WD|1_lAM`lu*96b2hZk1*w~Htzkg5 z3sIKA>N#*3g)z?y>;Hr91R*?E267wBJfwOPTxNmVJh1%-5k{aj!=UmRI{pBukD&fQ z?mL3!I34pL=?`*#Y7+F!V~n;gw2bu0%_)Vge*}%&_&7V|q`E`bq(aUQ0<U}Z330`U z4^L2fGBPzt3^z55LMyv5%4FEy8Rx*##0Wpo{)d93Z0KB$GkU++FA3z9h+u4OL~P?V zu=XNMA81@1Jf2h(6_Jwy3uADcf!a{G_gtd&#bD-v?(qQUXNbG7`W2d<Q2Lmlx)FX( zCfICvdmDD{9;|)s3iE?6xDSxxZfTGj;gsW(o05|PO7F;L1vzIFVVq-&m>&S!gBXi| z`T_1{*f=39-Qes8gYqC~+yKYeU^!}fK<^hAmVm<^l#Ww!-4OE?=>A5y8$KQc2_xdh zz9Nk*E2Dx5oka*bpAH_rNaL!Ya|A(a11qYK$H;s#EkSOtf~@y4O+mi{-OIT=Jp_I( z2z;EY*weMdEj-K@DO@1s0laPp-Pei|kI3UZ<w)mfppJV%%2>o$6r_xFMZSvzbYCRy zyX26@v9Rkk&5i=qBe|BQ@HseezY0s;<_@~c%LI9R%F+|bd}!Pu)`39NMPfMk&IL%? z%(2Xi3OCIGt*49%&B?|#&W2PTVju6T1fO|=rC!B476%@KMZ_7>{!38Z03YjtwrgQ| z5_J9?bj;s3(=;u@*v~N8J*+aq&;rs9G!Cjv3HLKdGWINuG;%9Wf|g^j@&@4t@LB#L zQ4xXZDG}g%@Nzsof-)j=b4sJ!!%V>Hkn9AP-$?SHJcKlkSqg3oWP;no;Pcy~BGU7` zgF)fpSPlt)NLhre2V9>8r{^UZRb=}_Anb<p>)c@GK<gAt{n+gEadyn}330`CE(&PQ z7Vh6j*xYAsSY>jhQ$|v5U^;ZKEvU}{PAlLrfTTI__$7GE9`$S~NZLV+vBJhL!Sy9# z?+fZ!60|RgrUq1=gV*bW$MX?-QS&2IFFgHW#w#R$quyifXbGCr2d!I7&J6>_ZzViW zA;&Q|ADO0s=DH${!d#M!ObsGI=bT4)=A)X2nI^&M1NqFBY{*_LP&*QSZ#iZ-Vcoli zI*tO(JIMQ@z-1OVtf1?5!DlbQ_n#u?T_0zteuUj9=?M~^CfTrlG-%HfC~ZT;O_AJZ zQc6VFp{jSctOA{dnq*`Gy@v|b9?<**ayrBnmxyx>5N81(xe=ZgAoX&39@1WOc$i=f zQ=~oBAoIX$S&;Wn!}lr^mj=OY8EDz+g*0alG8-D6h<lPVO)Ej|<fsTwjJYSom>Xix zw@;o^S+Wsmt)^uuY_0&=4r0R+G51VV`h?Ew1|gk`gEcS1)q(s94oCPME{HQ)2&7BU zI09&$ekr(IM3ghw(`#;675Lm8(AqO-n8W6mlPie`ThO{$$hq~Upf&s$=@f2$IjA29 zz9SWpu1uhAg0<H`V+x@4VqOKHaujl(PY`5319JHSI;ROd4;=|=!-30ANZo+l9LN|H zsGku8I%_>AITJK)1=)81+6MuVhsC28#6C!Q4K~{+#}ZtJz{}D+Uo2@2Tn`3Eg{KrG z8wY{x$Vke|P7iXm^aI@=0h(v?bO()_1r<j{V6~$Xt~WcVEGZOnu5xlEY@ZdH-`v1^ z@Tx#-f<WVAp!+0}Kx-FrO*4|5ouKz6Il=C$szmNbL-SBta&A~2sE-{L;RUWMf+C_o zcUV`!%XHK*K)5dldhRmlOfBd=4hVNb>Q`)bAkH*F_Zv<<&~*|)RYbcD!#(KX=9iNK zF3UsHLF-6T+;c$TRh8oIW)KDL-=Me!t!_2VN{IlCF_;>7qqKEF=a7TS6t`k<-Hx`d zz|$FgH*u~HwmW@5VVG55m<;ashJw~aqmAJ}*AIl`Bisw_ySjnf7T~fH-0y?drI0v7 z+;QjOm7D|?1E){V#PA?c`z#-{ZWd_|8LYlRG84H??v@?p3OOsp+c^cQHn7qs9CS8x zP)<^&VMe5pALzb^0?_$6sC5L&{4RJ*88l{@oSTz@&<`5ZN&&B@g6l=f@1Sv?P~#lX zdd<otBh!M^+)(J+O2e|G+#G`>WAJ@rV6zj$LF3h7*z#~yYPe}uAktV9BF!SF5oCXZ z`o*Yy5m-9_R>y+ol~Btb_!=!Y*xm?49|_){Dh)C6s)~y6G6J7{6by|!n4e+o9~V#5 z{xVwM0#rvJuZ>5p7f{DUAZ<BFKgBW6i|~2^cso2XJP?2X%RMI><PPNaIIKMl)(h{O zgT@Qc=L+Ftf^hpF`=OExkoM{$^*KTH1L*z_P=5<+x&rN?$$`!F`vfPadso8a1F2sI zxo^bV#S>cpK=M4U@iIub;WG!e{uycxxEw)BQ_wI<3=agg{Xpwsv!a62%e-9*EF#>> zOVivclEaNFk|W#<Eqt7_%c3gF)4kw({2^vS+~9~b=MK5QJ24!({tK3NQ1%z(WJA&> zmUUCO(-_2kp~&?ms84~qP5`C7iMo$98(9uC2A6CUR+-}JmJ6z@5N$4a+(Y94DZC)- z@*!)&K;uKub_wL(Wy|7}+^`7nz24A1sZS<So&}ffDC<>VeJQAU$px^yi_|Xz&*wq! z+eSKz33aT(6Yb6}pIp#g-068xeW0=%Y6mnwgUem$I0I;n1~f0g>_wCdrsc`GmIg_X zdkaf3{fQa=h&43j=}DkHpzfC0*z$asL5^#fYdYu-p0bEM*m~3S{P0SHqKFWS{O~Hr z68|uRLQp#N4zWz~bv7`K2re%0_HZ&ua}O&?a}P5~a}Kje3^%oiG%~bE3OBS!_6V{_ zcK0pt4z|RMJMh?RMoCmeP=1n8Ab9Q^c}*Xx8$o3Pc%MR5ibqayR2am4pz;K%{Q#O@ zGJ?q=mvNvzda`klDd_$T%s7RuH_AXY8~<6Vl~ECpwdfFYq3H~MH#4OC!8ZO2U+0E1 zt)ljQyuf2GhM+si;bRQox*T)d9h^2{aqQ`0VCm_c0$;lYD(g_^-63T?Jbkz!!W6lT zPBIQNh>Gxn<)d84`eSIiMJh{RYt1mtE4TD?al|N_k@p*T8MzszxLc5PHw}h8&c*3o z#!e=%I*Wubg2X%MYzq(6`8)6!gNL6%YIp_s-d5yrfz@4*_z#804J^-s?T4gs@ECTI zQDi<;Ex67iaK=YE=xzw;z7LGG?x3~=*dEmI2ag$n-IWL4hXeH&;!F&GcwK>1hJx0e zBJC|o1g#%+aV++9F9-FRz-^`EO8DL`b5Hl|^Z;k4V*g5~0#N=-1f3J?f^}X5;U4h# z322Vet18?mCk1uiUqy0qC1{VIBj~IXj5aMe4xsygp!<u!ZUWtZl;ZA}@9mc2733D= zi8Wut=39{TdxjXm_WgkOvBCF}ApDpfkY$jL^*$w(Iuo`I-Y>~F47xuGT#h5>eMp^* zBfj8e2>ASJ<gx=ZZzI$~%WyL4YxKS;D1K4qHBif3*f<ubZHqW>-v@H1G<19k(N{;V z%VBW=&I8bL4tczb6f?l-92~B2_rT9ZB*h#Qx4_35Ou=CSZEL{CL$HoLl2|WC8RdZc z+(GV^C9pmzD8Hb#!%^D};IvL?yaF1Y$Yl{|ywA(X57dXxiwcH~AqG~0#<lU;2k&p@ zqQ|kHVRD`qsLshp(GTu>V$JKIz8=~AR@`^fLh}-=-vdquptb<g-Ji&PTBPz2(k?)r zqcJT@%1qCT%C*c&i9noL=$n~bjCK!SP73ZjQbFqvz;}{*JE!C(8TlE4)|-RIZBo$o zCd2XoM*7XMg!C^#<t%KSK1!Z4O-ly#VGY3LC1kxxgfA>@LfcW0as}c?sCq+inGf6d zgPg8QBaHn_lXCq+Qo_9ql5@jy(EFxHZUna>Am$>4om(+zEdi+9&4@J0fSiAYw%;8- zhKkh2hOA|P-8%yr%kg$jDND+80_EYH<h&r$NbtSvDLJ6D3b7aJ9|P3Al^AU)4{&?1 zEHck8Cpj+)w9nfTw4XUCH>fP7($p^{0+gmfXAoLug8LP@VU?hL>IlDr(h=ycQLy@m zsBkZz#E2kL_4y?k7hu(cWDlfHLrR<AxlDH?cj0Mk!onm8It~Dx-vH0$A&H^oQ$s`0 zI2CAaA-NK@i~*N}pmihQ{l^(4@Nmilr7_TWT_h~MIKk2|L=QMGg7%4IL>i^%Cq;xA zM1uB37@1c2z{ahhX*;wM+CIdQU*Tyb#}X<2OyO*3d0dJp<ARcW-3&l`tdYi@K<+_a zdl*)QeXkv;eeahK+FJ`b8$KU&Zj50R+MX*=SqRG?pgm9Eb}qPo4#{hvIvgcDJW$6d zAn}BmXQJGLAo;}=baxl%42-Z!)Or?_4k2r8(fnH)86K1ktvh_d<FBCk;!KS7nt7nH zWAJ!YwqaS6JLJqaq`7?PxiiqQMQ9uaV)`G_wny<Z#+j6mac;~!o*f0f`wJY#pz~KE zJTcbzc^L!+goK)wMY)H0C4uuT=+1WNopi9Y0%~J{`aGG?a=_3Rb^jr_y$aeh8HSP; zP~rx>hYoFy9$JQBjSuvF)XpicAqIy2Nk&0Aq0n;zqMT{qPG~z1l(r!4Ias?KcK23b zC1fpgP+5vcPI*+YDbBHYYPK!V=7T_IBjkHk=7Yv9P}+--F}U*dWOuj9$Z$g}ch^G7 z6VTZgQAQ~_$(b48aW^0EIbB{ENfEv%^%?vwc{1BtuyGPlxd+WRpnd+J^}VH$#-KS{ zlXP#idJA`(3zF}_^6sW(NjZ@79+AxruS_vWGD^t<jVpl07@%#7JlGk0h&lk;c14*} zhO|dg+%5B>j4HtOA4*#b&7Gj~DJr}I)W#}{GD<0qLOKT@Z5{^8m_Ba%VQxlW-$N)) zq59za*-`Qz{BCYodPbCSsQm!TQg7$vLQvh0;&<>lH=)Iz@be?k>oCX~c`s+vf~0IW z@O@&?v+0UGvBZ^kuwzC*h(S7z^?R_s6{Mbql|#_HiHJjxALyH&k>=qcb%+PJjfav4 zQR@=Om<~9ML49sWUjgDTr1l4-t};cQ8wa<Iy)oOu82Qx`ZHxqBmnouMj2U+j`@!Mr z1W%h}mU$TSeAF!Wkmj?8N_fyBU4Z?bWb6dK_a3!xgyl|Wa9wSJHkOZT9uRr1z@P+b z2lhGuGrfY{1=-UDp8v#?4-k13wJ#4^rvN%XCd?(t-K`3=hZLNC!~G0=GYvue7+~v< zN_@gC%cH_g;NyDWHZY!Y4ble>D}~I{q4z0?3^!1p8?=`o6x$psYS<y|DJ0R2usu&? zhhavPdk_)f2eSvX_X@c`fG7hHWh=CP$_3R2DVa$gVZ@JJWCkI}8))7Pe6ADp3~=Q2 zp(V&;R6fCmu>Lzq=?``f8qxJ7cnml_1Dwt>O$(9@!09R<bI&p&&8B#G6+qfc>3PsR z0_yu9m7Soz500~KAZzN-*CSM<gojn8BF-N}AM*gKN3BaBc0k>YDBqn^;A@Zkb3yAp zlR<7nX^VsN3S_Lv476V&#oZO74e#mf1aVVHKD_;iNDmOZk=uh{GvWCU(l&$3<0vbj zab*?>I$sBLzkFpmYFiL@`vTI>K_3@`-m~Wo*N0{v#Lw8~I<Sn7!S2uTMR6bM91SEK z!0mC+StRbDJr$_ur$E95ve(5w6LkJ9s9o)c79WT_2Ud?fW`<TTBjNxhPlDEhmxJm@ z$aoj>9B&5J@iIue8MOZbG$$Eml;Uh^oammDl?WZ@M%V-DpM&=MXF$RzH>WBDT=%47 z-J1*<JAs%BYSRT9ghho`n!1G=_@<|Ml&2>`&f~BQ2zK%b3d;%c$q8}_%*1k64*0AT z$9zonVS(ViJMLgNXC!$9`GEErV9OiuHhHdJagwoL4!j+XlpbN>9TgE}0P4#@*Q&wK zMS$x8#{(q3;p+>)We0el189EK61uj&G$_<GG$_myOFF||hJfM?ymqgu02IccGw?ut zIdg3JhjRC(V+m8gz`#&HH>7aQO7ZXlpPhoW97K!(U@v#_f*^gMU~t(3FBehL6gYmJ zKxq@SHU_fJ4Sog;^8L|}FbB0qVf&MDq_MD2j6NAeFWxdT4|MiVR6&w)SQV(BlWGhb zyGH68f!zwq2jDaZ%4bHPb%5~mQk-FH`yk~WIF8W9pD@yKc2Gc=0k*xE1k(ukY(wh0 z6|y%L>~3(`gY%we@c1*PU&8#uT*HDv<F}sf7<oS=)YZ);2(<PeV;lz@KbYwe5;oxZ zKXAUxbt_H*owtL1uT{DyWKIUO7d|H`6BZYg#vfXkAdS1h^Cd~+AmA~6C&XUtFv4RW zkhTJ1J$D{x&0~5Va@!I%SAep120VTb-RExv+g}gcQ-~BUkn#&!m%{fR!PeQJoPB{& zzM|;GUnfBOvyd|hf?@Fk%PY`zH7I2=v~ELQXK4g$uY%jfh_Vq}E`!c#4+EXkmX2CK zV>1V-58zP(FPp$=A3CN0Dr<-y?*q*R8G`nWg3f0R#h9}Nr(b6$<Z*n|dI2&|l9dSB zOK%hgUV{fZ>pR&f6uDmxo~wtHWAMEj5P76<1Ff$N4o@ist)qmlB}Ukr30+I<;hUbE z>sF8qvJ0|@8omYvaz3G(fv3A$C8%$ef^@IDr@Lh(Quz(qI|E9WdC9q!hRGhjrJio! zF>?5RU5HtspnC_ZqJo`_6Wzl~L3>W3g2Ch5pgIn8*H=zbcvva)o)P%|uBdRNvn3(v z45hsU3R9%I${;erD-X19$tyE59pf%@NIL<hrZg$nGCL|1a@PQOt$}k&K&V@gSBL?0 zk1uiRJwmfB!$O@?P~7E>R7POr7uX&`<hwPY=?xLCka085aJ=(Fps)v>=ZQ6LBO|<W zz;`ov_!%a9IF*6U!HaSRuLH<Q%5*XYo!J{1Zjzp4WLlgW?39sg>}Qx14m#^G19Tq& z=!`cMKY`K|Y!1-V-7PmN7j$ME=+2rT(Ar~Ydj&LhYl^g17gSe5=ewbM>XOmUkVk7n zA^ei(3!Ybr3J(I0?<YgfHozkfU;BdnTw`z=hwV2u0j-}a_pfv+^>isuN0}qbb<2)& z56cb#r4Q7*MN0ACEn=A+1)3{%M~*X7P#-)e$`w49QWb7wig~UQxJ?0xZ*ZD~uL}Up zxuB1yg6m1p8NHx;h;qQ^07K3-hLi!|G7zE$G7pPZwu0pmWhA8igyP=HsBrMO3(WuE zx)&vUU}GQfcp((-1mYi@SCHx=@Y&dwrJz0k$+@8=$sS>#I}X6-JAnIF!Jx1Lr(aNg zRhkGsOBH;cE$EJ-4AA+t;B(l)=0f}r@h99JsO2tv4hnMq27FIQCeFP9@I3?A_Xgl- zw}Hmr!u<?Da~}SAVdWsdfc64=qK(sn>mNw})XdWzw!Q<hmmX0*K;xLudJ9+>pzmXL zwkY&Q)E9-Gu9l!P11l2|dkNs}c~5u4oD}zrGRWC5P8lf?L1mz|Sc&0&8A<LHpfkHG z6T?&TK=a+n9$q;<;gIzM;4>NA!%7iu&Ij!m%1O=zpZ%NzT8jZ{J45ORP+jAfk(B8K zy2}FIt_IzCfuz3-#)i!w`DUW7vqg-@fcmm1eP7u4ct&z=3flY^WGp^1+|M8-+^ska zKBfb@{{b|Q5SEqV;#nGDXbC!VBquq?G7V|p2U5O+m;(v}xEa}o8Oh-F&Zz4Zy^O$P zOL_j8j*xL9(B4|~Gi{wypzWk&GfyZRbUrise6g1?)Q!$yb%=5}HyLT~I5@rJrG&%R z9D(gd@Pi7Ha+4wFCPK>y)OHW390&LP!QtoWVgTy58zzD8=E*6I3dcO(6jT?3?|ec# zI}=haA?0^Sy$+5a(ETN#`)Z=XKzFKv(v+89WCZ4#RPdOEhf^hzI`AD+pg9JN@OLW# zn+==m1LrSLo(JzaLove%lr}(Sptc=B`5D|d1ns5DiE_bl)~vH5<nEV{d<cy>Zx0ST z|4h)`11YF=Bu4%O#g|h?q;Zg8WOzj=XkSm1QCOu<E-25H!`Jko`W4)k0nNoBhYQ$G zusJ_i{sD&pB-}xH4Q_s5gjZg2B`8lp@-Vh|^>l`~A8CvPvmQc}Es!-0*xEdx{w1t@ zg0qp+g<DpNM_5LZ8!RoL?pybP-jn46bq~ysB(&L~bHZVWJCs3laVY!1(B=amVFs#q zkk8K~uAhW03~;pjp#3B~W6;q44ElH$H1ER3M^Mu-Ob@v1f$w(&rv<1xNC>;KWKcVv zz}+g~dKWUc2|7n50Hg<WrVV<X2U}|oDRUroHbyxCH3w0~r{_V(jZw$QNa%}0=cq9H zYN%~?P<z8M-xGAsd4w-b`~h_b+5Sk3@B@b}sO&<SpGO-9gM~Aw{{`Cfk2dF)9~t3C z#C#Dr{UFU{VVuzd-FuI*CI)1_J7g^;di{)+&tQ24eExh+l@Hq75$NnXvgVD@%UN7| zrgEdoK=&45geRn3hSq)r?QaI%p<tQ=I;ReDXGv%YBAq%x=dTd`Zcx5RF$x9Ufsy0s z?pB<f8<r8}k(~}%tKpXug)}|}QVUyW2l96iWL+$lc_~mG1>Wm|+$OOEm-$HLF{ErE zZyp%pK3}A`2i1+>{yzBL9N1hKOr4LjlQ}tKWKrR!;ImdS!{4nk${6{~8hE<|XPFE+ z7Z0@mFcNfcVF7gADQGSdv=52M`{M|oi|1tsZHKvdnt{eZqJo{$!Q(XGIqQsM&s^wu zQ&@SXcR1+Ik}!ircgt+h9`fW$r_8AEFwp%$IiNZnbVnm7Ek%Z#g71V)axcerW?dfW z{6^6J6XY`zlR*2PBRta)ZDc1<+rA3a??|pRNe_$g%RxQ^2UL$I89U}jIC~++`P|Ag zy+L~|G0tQJosnk>S}&gw<!pk~UIevQQ0I=((;YY+gT|ALebYhnLEya<&Y*K(pzVp= zikzg}6oW)(M@x{rFIw3JYj=RsL^${?n=oi!8drS*UU!V}6Q~{T>;`Uwfz~@i>Kdf> z2DE-btnCa0%}2n_fUN?r7YGjomC;CMBK(YgW*#E^LG3BTUO-U4FA_XXfZRVpEB^?z zGmz6XIGn-tJ}3@AXYYCCrG$g_p#@d>Ai`AJ)5Q_omrpSQo#SI^?2`*xrvN@*6f6#! zbBCN2X=)r9;Z=%S2ZHh$Ts`!TMa=cBa6f0|r$hS2PFdhFrd$iq-H@PmQY9qKg2t~w zcNXT9MpdHc6VQ5aw`9-EoOGW|r>G=j>~|)58T;iY8Ha)HRs`o|P~SB<)2S*dA_#QG zTOO#6iwcI_3*c0cl;>v<74DYp=@C{1>PLCHqwF^}iVQE$_YQYNKR*<8%>lT*ikxO3 zX)H1#C<B}>vE07|DQ~GYwg5S26J%GUaabkj+?f>c*#XFRx*_I}5orTnH$cwRgzj4< zp}hwRAB=Vqq>qO>Mg`92(7c3nPB3U(7Id~M_-tIz9!Jm^Expnr^o&wy-#D<++pRnk zbk19Zvu8o1vlD!8E2w@2rBBeAxKZw5puSO7WCUm&4ss3@;=aw~bZ;zWBkZoSC}$_o z{Yc<DI+8OHYlM-{t@X)t3IpBSid^1++yq+pnixJ{Wh`usC1|V$a<&WnyfITy8o=6b zKuTxe`3cZDH(|MM;Cq|FX~eL&9M=CvQVX6#1g#BCHh`}U%}Ftg%1Cm?JWCPTOfP5C zlE?_he3%&e8XwR-br|IrXs#N5PoHIGVy3A<lA#}HoU1enekKc~E&=5WM1K<0#(~TM zBDo#X-auMk?~?~|cSdPcL`ryMcsc04DA>4IK4Q-o(iuTSw?%_;KzCjx8E0eUKU6<L z`*&z<WmuYouU|lF3nJ%LL^=fT;Q*ZlW)K<fmk(J-jXAypDc3OeQDjGf&TE73Jp!HK z2Co0gqawTvQp2HRu;BFokai<<&lBn%7HEGIDZIgH1!AXZ8q$6mJbU}0;eon$1ypx~ z>Wfm)J%;cwfz_YTax20JY0r-f^d1iAdKgH5nW#M_u(5Q=+E0@Al|a%Q*go(afg^m) z93)PHkoKCS<JemQp6@A0u7vK<FmNsQbdSnN^6<++N#CIHFz_5RT6}`*J6N6owJ+f7 zGBN#xv=<{7G|m{|We^2vFG2DObU#ZdXl)ndE-jS06~5O9DNljgX^1ocvfnWsv?m$d z-i4m0guIUhY2QjPY#sx&J_43*!29(KeX)lDW|~8BcObaUW@?z^UXI+qLQxY6I&;e% zNexn7gSY`He4S0pqH-hiy(-~jvY>kgFwI5^51(AnUPI4(FJtsG5z+S0I78YS;5~fq zfh8&K@G}z;XG-ID8!YW&8xP1&3=hhV3O6Z<4EM{5itwvS4EHLI3Pvj1u%#zwQ_#M| zN*reeLH0BeHUs7^@cCBAXBS~RX9yDJkg!0S*MZM3qvn5Td4an31HW3NbMkz0;pH@1 z9SJGt;A^`ov7BFu5f|ug291{>r7LiGh0VQq)FHVQ)P4l_zfj6Fba!H!MQk4j)Gm#3 z532;(gKs<vJdW>-vMv}jFPn`vcb^yF;a3joM?@M`WF#B=T1Gf~!P|0>H9z1v8kBXz z5ze04UX_j*cddI>Ra7OrgYLVBtlb9PQvmCygZjuIeF4svU^M}mSlf9P$;M8gxvDJi z+Vm>JWKX29^@&KS1g~R_@B-cco`G^MR+eG1XCCMr*05yHEE5YKW3a!lxHB0cht$r5 zmDxyTBKmrMgA@<Y`SL-adp%%#kwNRB!1IpDm8P(EI7lAbxjB&X47CjbjuTM-FvZ=i zASpMj5_jJj)JKG!$p@bM##VlS>R-hAeb6`qcn%lq89$(P2qmDhg|Od2{YKEa`0#Ux zKz((Xf8c9dFwH^qjZnrz;p;On#y8<@WJG@#GQS5O>&mGp4XyG7wV`qo!%cI%ol^>- zW7Q=|;g*KUMq!|JFgc*J|HI+&3s(afSHZZyEFI-MAfHML@K_FXUbZUHJ*ULey&wp( ze%!PKw2m<<A|*d6JPcIdf$ozA?GG%8$^*}*XQqUM?rZji&(FfghMl43Pvs%jKPKh) zR)Wg6D9}7*aC#o>?0g?sS?S`L=i>$m16=pE!S#UF7l6*iH_FI~3NMGwQNsJwc|Mtz z@VxC~<X4uQ8wyneYKMT%z=n^rf%d27Mn;4cr{KKvEj`=E*(uG(8PNwrz4r~N?+PAs zNzeAljVeX*7t&Z2l3Lgu(ct?_p!4G%zMwu6Xzff@qPwMGl6zn}JWN4%WrNOfcMk*K z&xXjqkU3*;J!OC}Cm`4<2{uOz+OLS1A8^czat{ODS6h}EjOC6lXUN?Ku=30oV?GOU zmNaVL0W`h?U-t*<XMompLGD)p-5C#`!-dBacwP_Me=tpU4+GtcjnD(0A9l<G^}|5z zY*2q6buJ3jr-IZsko&bW@b3`<w|^mF1?d~Rl|~wc!Ovg^)iYksra7?l`M~$i1ed3$ z8XFXQy2JeiZEvFb0o=ZZti1z|5k-cZW<l2RAfF=~Sn2H?2%UG$E(Xn0CmRQ4B<1?$ zAkOJVj0J+t1kGu})@LBq?_fE!`3*>U3QFIgHZI!w9FHKJ;S1^)g2uA2hc9?+sxm49 znxDaK29Wu%yTHL?>7clFO3w4jNQK-r1wXSa*{Gr*(kQePdR91S+|&@fM$ZHJK5g`{ zgtkd?!@y?`;H&$=;Q(qUg684fb4p?135iR{9Sh#@doU1ZRAOuA!OQ}uM^v*=&JZGE zyeTI+&#Nps6E&~H%=d)cApxE@@By6<o@-f&)>Z-M3yAuZ&_wr8lsSM1=j1$3=VGL@ z^Bs#kol}w{oRbTX*4Y?GM)-o(OBRFf!}4^uECsFM#C1m!)Gm1a1{(K_j0j9mjPOlQ z%C$6rk9Q)?bwTb5fTcG`n(%Z+KSKZ_jxi4l&WoV@>jk~*0TFlMMzFl*m*SJ_R-Wu$ zVd{+(ADDCX5Ic~^TM%U<L=IHX1sY}KL>d*RgW?x7Z<cJ7QI--8y6eX)2Q>cyK7R{T zH&r@;%HV=zBPW!#i?B1#Kx0jaeaJAkg3i+bl|_DjkTdRrs_@;hjeH&&xZH-Gy$Oj2 zkejisV}^zo<bHU}Jc-yNfYkp3nFT(7zcR@<IUO|C<>?9<^R)!^p}dkn<4vG*D8X|o zka{J#(kVB|7-{Y&D?c672F5G{VQ~+2E4XZMLfmnS))xkayEjJNVv2MRE9ib4C-C`a zX!QzueF|<9LF;T#*#qBSlMD|>sGDGACZeo_&nrX9OXNE@K>o2P^K?VLza%t0Fx1f1 z)4ifBG8}w<GpOB}n;4#A2)fGw)YkX(@GFDdeGXrH25OsSd%9a1rg-=jM7f8iL(h{2 ztu4$=46n$6rB6iN4sZ9Qd%A<}#LX!M-HnXg{_{ba&rQw^t4ImYsf4M4^I>BxuyMgW z1JE2VBt5{w0=zcT%`nB?vN*{IG?xKhds`S95tfsjmz@r|qamj>${4<{475f#A}ZLa zC@I&{7*;k!g4->YxgdU2uv1BrQIKJhJLuje$Q@0d?rxb$#!=vNg%iPN8u^uZdZgrl z&VBUs@XLtGg`MdEsgqIK8*aXppfQ@{h_Hg>+|Yb4qXNkOLHN2>(0NzTx)Q}-8D*e0 z6Zq_IS2w>PXPCP}LG7sADA0Q5T)&*;N~f|U@VbD|bokv-$ZK{yg7QJ-Uy6}im8W}w zVX|=`XznQ^$~`O_7I&aBB@8^?1v)dlqAbPO7kR$aAgK~GHw9h`odc@tLFb$%fyT2D zX{jtFBB%;9=LEig4l-_-9+jI@92H!io@^YJl?ab>i!x7lkXv$K>)wk&>r+$0-SVP> zoxo`-xe`{7I>F)+d`A@`TtREQKxgDSh4@1ICCGjWg^g=N+L`ct0&+XNUInjzcFIV~ z%PC9B4NXrm$^fPPDo^*El4N(w$`p6-TwFnlGu$okeh%CnP`lHD5qn6Iaw<wA+)c`S zDlM>J%jBd?P`*rY3(RqH3N$EA56ZR-0PPWi=y5FdF*YfKo1bY38lN@rF)FC?fvszF z@hnZu^Mjb<ZdexO5mp=pS_2H4&vo%FhnRy%E0IPShDo_4;5{|I&R!`#&R!*;{y3<e zlw9d)=9%s06d3Ai9vJH85*SkA6d3B~<Zs~S6lg$>m>Wbd#5^a;&7;IEqk1We%hB)~ z4L?fDgV8iJnubQx&}cnKjkd*TSu$FdjFu&%Wyxq+LY=<aXn8tXo{pBMqvh#nc{*C2 zk~7vfT7QhzAEWihX#Fu-e~i{2qxA=Q^JSxT=x7}}T8EC-p`&%^XdOCQhmO{v<gU9J zZAXl@BSza1qwR>%cEo5qVzeDG+Kw1)N07gUd9*Dx+Ljt^OO3XrM%z-OZK=_=)M#63 zv@JE-mKtpnj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0 zZ4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$ z+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>` zHsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}f zO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r z6OOhCN85y>ZNkwuAvN2Co|)yD$wroj$+><xp}Cf2DbAi|o|#^jN}ASOT>4sCTKWpL znmSziS_;O73R?P5A&s=syyTM1{5*}^{FKt1R2_xXih}&2l42c&`1tbFq=Llc?D(S8 z!qUv5)cAN!g=#LY)Uw1J4W*boeJzFJlFFRaVg)Vzm^>`1HB2ltWAbA1$`Xqdobz)F z^7B&jN)&9d8LVNbsS%T>pa3#6xhS)s1Z<`PcBKZII#9JGsksF?i6yCcR2y5uRTn4c z7o>WoKo!R*r6iUl>Xzvmr>3N)87C#iD8Y<PE-v;3hX%xJ3JQ6pIXN+TnlX8BZ|LP0 zfI_WUFFrmkGbdHSRv|`7KeRZts8~NSJu@*czoaBzKRB}_wOGG6FS8(3H?su6C`v8P zFD*(=E!IygE>0~e*3T-|Plg3hv3_DsYEg+^S!rsFQcPZEnt}$x)>Np&6x7rd{FAa$ zlS}lnQ!9(HsL<3a&d*JSN3ViLc50=jLUmDUNoi4@LUwAUf}$<R(J85EiKRIuF-jmK z5yJ8DFsoveYBe<#s+05cit}?)^-_z9@{2TLl=2dDQ&V7xMIo^$RUt3GM4`B}0F-)C zQxr1u6tqBoPyhu_v0jXlW-YpBU_l5=f{8g;?1?TbP1ViGPfSTIidBGzjFkdHlL8{> zu(+c<vm`?SmQIRw6iPBuD;0_}@=J446iSOz6^c^xQc{cH#=%?)PTm>$B??8UAj`pN z1{4)(i8;lonhMoO0jsG{4N8unRGyJv;uzqmV5<PlF&Z&SAm?Y~m*_&w(M>GKj8W1A zsfVc5%gie-NzBR7K+zGSq^Y9-u?nOVWU(StJ;<|(C7DS%shSE!;K&52fMj01jQkS4 z#N_1Ef)Wj|9bk<}a-b9sb*_Q}%)p}5#FEsY)a3l46b)>d0+DxNi5_frtwL%}aVo^` zaKj+JB*~bVyjo2SP~wQmgSr%20x8%c*$fqn$<x<YR)FLl-^7A~%)Io_ARk+hzpN4q z3UV@&6G7QhKdU%D&pJ6Hv8Xt;#J02~P1nLYDX}=!%tR-((#t3+!mBDV+_Ka&E5FLe z*(*0OyduXlD?ih>%C$5x&o|S@*{dqaIIJ?#D6Gmet02iUFC`~3&nY9)sMyS>(xS{K z)3P!u!mlhP!YeB(!nZ6k!mlbSBB;v8sG!Qn$geCZ!l^7NH>@<p!?!Flydoz#FR(Nv zFDxgZDkH-;*EcgF7*SLw8~Bwa<pt#=<ppN?=M-l~xSN!DXF64-c;pmEMfj$BXIdsF z<$2{KM}!q5=Z5A-ID2MzMnoA#1sg)t1REA78M$RgMR;aJ8v9lGgjbYBh6m*&XIaAh z;1?O;nBkLYQihC^axJr?!YoUYjDif4+{3DTjKOBY%qmNA&&l*L_A^KgugLKU2m7fY z$vv#n$0(;X%00{^z_=ti!mT_rF+2!N`{z_7M>u<BM@9r?_(VjO_!@;}M}<dLMdrGJ z<$c`1@>P*WmgP|}J$XTuDdC~T5pEU9p1Bzr$p$&4N$xqNQK5ciNx4x4QHCHro@OZ? zUWQQ-2ITr7C&@i5E5+TiGQc><G}%4WGTAuD6y#^GT&Q0{K;dJV0rFppv#C)^cv!M$ zW=?WaPDN=-u3M$2E7<>#ICXZk^z=ZD4<B;E7CD_b8<r*+dzD0nR}`e?hE+y5dlq=R zRg`)<JA%_fq_I~)vPU2!Eo3^TC+CJ$q=e^GMg?aiduF<3MCQ6>MunG`B)MB=M7f7m z!r~^<$So_;J<K&R!Ye1zIH)W+F9#eK{>b5;=LAa2IVm1~5V@R^BuIROm8O8>)U!Ah z91mXbv;vmTD#(otuc(R&t^n&xad)eXG72+D2CMZngX+ml&b2g7HVUhRiHAevwLM)t zbHL{07(n7bFDx&~JtsFc3^~pXEhEAVEj@!xN_{Gku#st5lzUiOQn+Py3MhY7S{kK< zhr<2uV^mQPnQ2)S6<z`Hcb26=YJ^ixK!jgba&As}igQ#!Qf^RAs*6FnXRrxM9tDNH z4<hUhqQVW!lib}5qJkX@eGEZy0tzoTLr|D{yOn2p2D_H}WLh9$%hDvHpqvOJ!?Gxk zFi;*Y1Lb{qzRa{NP7L=fOK}e?Np`QuNO2D>i8Qh-Np=V2ch9oKaMSFlh;)5u_!UHf z^Npt&IIMDmGE&@KOHwios-nV!a-y>QG9$s^<weCX3d%`}a4L?B2+F~qKeCG>+)dIw zoh=GIJ^ZqgjGc0V!x3o|S6SehS&^KS>6q?QnV$|SuR`E)2oK-Vl<*3W*#!~qrY=cF zhUG~{rl9h%G|AY>090-#SDL0p7)2E%xre3)1Un^rW?F`U(^#ctMwC%bMpCY&L5jOY zS*THt0jPXVHZm<pb`LE{j0h}4VdsXy%E&4oBe$w#Q2MR3EKIJn%tF`;D%ahLqawTv zeDb0Uqr%EFBiv03qB0%x1HtiTSsE2?YT%O_Rt58mr*mYkr>kXVVs2PginD1^R76gd zH%b{|nv-k*O&`J8rO8H?B~if{xhdhMSt;&0Wl5Qi`H4nhrryC$=E=EX1}PC<rJn93 zIjO;p837>%>7cNU3XjT239m4SaQ001%8X10srPhtwFHMpj%8X@gr6U@Y)|&gGbjL= z6=`G%va2{M*fb|O&#NpsGb7nE*EAz3JS^MOJ<KH8-Lf*p!#6!L!Yjwq-Lx#l*{Lce z!l^vT*vlX)JTN^m+$7yQ6I4Eirbp$1(yMPND8HnIRg@-%N2a6su`Jmms36J6w8|$p z$}lO{4;*)q;pGLM9wk{I@g$>)9G~2<%H&+jN>E-3N2!CnQas&}!aXEEJt{A(G}0Js zW=4{;6G|L;g36y@r_v<j!1QF}uyU|p+{3axJyHr%+|$z$`7Nx<$Jxms(LK!6)59-6 z$vCVy%Gt><*(elLu7c{eN>6u$dy^|oL3M#;gu7{SQl>?rr+Wq{Tq>i$^(-{K=jP;k zI%h!3$I#M5cS{3MczYw6<LR6Z@;5l`gX<KKIj(Mj!NKVDi5Ivm1DW9y;gtg})13`7 zlHGGa?f~lt$pwZvdHLk#lqMSoWhA+m=cCjK&~)k@T%I14>sFj>6j~4g%B$`mccy0` z^n>fQj1>2r%p~{F0#Ln{;t^H}s`osdolyMalk1ihX%tqT;+&3R7OV{R$;~KBaW)0l z{~*6dfb4U2Oh>Y-GAi87AS%o&C(_8WGRhg0_OO*_<(WRtPB`*?4%q)`!A?0z9)3BV z9wlJDr?XRjl5vnzsB3m<a&8#74FgI~QSNRAk->&WJ|TWNQSM>6zD8ad5zd~)sP(xi zJe_)nfy;MLTw8hvrx$?Ib%eVqJRG7TGQfEuxzf=R&5WE>52v!^yr3#@I?1Uh1-0YA zZADOf5d~X<(ovbGTZ&s?j+0ZML2-Iewq-z=YgjNuk7KEiu~!bPE1z6xnUQSlmjh}` zCg%B;LFx)fnFEqTZnGq1T9kRZ!^#z>f+$d1#l^P*VlF&B(<6;C43lz8sytl`(tVx1 zQhc1fN+Khi$`iv)^O7q)%{;T+oB~6K+faQma=Sh_$;i?G)aLihGqA-nL}EmzAreyq znhcQ`!UsKIU0-ky7W;sT2|_iFArezFGxKC)L!&`6M3R{c9%d-ghcR@);}XT75r@%H zlNcqGQ4=g-G&+7l<M9)u9D_890Uhxoe*A<8V+Pgui6_;^PZB}>FHrk40@OD$1lPY& z5uPPc5nh!^#$Hw6HhG9eg}+Orp=XXkv1cA^T*l8O$;i|I)HVl?;p9}5g8Ce=zQ3n) zep!UOX=PLda$n93-1dT~LG&j*!~Lp~E8*iT`mnk=B-{<ue?;w@g8HdM_D{iMJi&(G zb}VQNDml{<+Ap;<hxGSyvcYs#0l1HiXwQTi`DLYK`Bu4Bg5@(Ieeh%>zp`ZaFqj^L z<h-yP=(tOMWQ3nrQf@^-Qf?S1Tyhh`Q^00I#sb1H`;R2}14};}JZ_X+iQ3Obic8e^ z3oFkAwY?(TO^qTWJkyc;RiHKsO4~LQy}u3WdlT2^Ms7R#gqxNn=Ne`tx#yTgMR+B9 zW@hI@+N_ZNEM%Mj-X}#*Cz+AqUO7q5h%^E1uV+Pu`{hT41{EZO`hM<~l_=vG(6N$a z(D)IkuL&6oF$*_@jHN||n;Jpm6B_@}wp;{sY$i7<1Jv$?#;HMMgjXJD+!3rNs{pD8 zlrK`MKx3RxamaX1mPxvAW*9imBcSd`2~R0b439E}sspE&v<SnL2rOf5pfN5Y#|$yY z+l>4w6C<1q(8d!AK;xvzc|keJnTC-5Xr3>4oD|fjq-+d^_%wm&7lx8E4rAz-6=@t< z<y+wk9xKB#4nt8s!Z{X0Y}i4@TSIfQA?2M(x~E%tCf0Jq*%LJ80vXS7_p5@BPr$~Y zGab{D^1_Of+$u^zc@;U2`s7-cgU2oMd`lw?Eg|FSE}(G=&$6%xzno-Hza>1SATr#v zEX5<J%*W8LAO$?;>{pr?;gsVOo@3x+jLasw|AQ0`mPl;$^yHPC1nHxr^eYi#B%$Cj zln^7Y!l-aR1E1WIoYV+koZ~y*!KPJ7Mus`4{rilfsEBM(AHOmxBFHc~*93J;CO0T2 zD%Z_0$s;J)Gt)8GE7J+2KHW3Kz!DTE5r&qCF`=;X%(P&zSy;zOl5*WjK;top{-{$% za&BlkXxz)w!_P1o(ihE%a&{_6%5*FQ*O9?a;CMkA&%iQ<g@{Mgv6k%gRM2>Jo?ls# zduS=7?)A)%aP~?{0o5_!v5=sg<Q#)^oMrsz_|0%0zd<SoX)%6-)ZQ6h<2OiU7M}9U z-K5N?5;1<07#^4&5bRjx3vSa|q{GJGJl*~BQ^HM)z~fUcj^KI5q;R+LWYC<Nv2Uh- zrk7J-sGHMpTYg5u(idYojq8|L(qvr6h@^2H#6lTd<2uF$hKWYTW`lQJXLLXZvfKvi zfDR~dMn`gJJ(7dSBNUC~5H@B|jpX>!Ya|EU;|r+r%Jy{$1lL%w(UpN(8AC!(7d*;A z&gvMy5Z`j&aMw!Tswi-e9NMFY^wy}fI)(&)VD{LtuaH4%t$=2MDO)8&wEI9kj|k|B zs?n7)$)2RFl%Z(!0sCqhq#hnP?+&HW8s93%ipUVpD!&06t%2nm;#bcgmlZ>E^-N9) zbTtNO^&o-`U8OL(nucDhX^`Rp6!xPdGQ)aA22s}0WJIRQ*TpTvH_O*(n60QmYU3b} z$Uw?%94l<9MpxK?Hg}V>!p4M7BQd6iG#QC8CTS!FF>ZrnBqk-*AjKfnBz4e?#1teJ z7Z>CgmFPQ`mSp4?Wmcu8IOk-h=9P@Dv4QS@LK%|58cL&MGc+EXLCQ6hjLi^X%%B>Z z38ebiOtQOMRkAT?1#4hgU__WfqPt~fVnjhsl&fEHVt5#6Clk1@7f|Jv>F?q>V#aBr z+(XNwT%2<J+#xF`hR8ULQ%Xcoev+{lXg5)IpixBuXcbg)C8P~Q$<C(HF&oJ4B<N}% z+U#zk!I%xcJUw*AZw#}eLY%UF-9rtcaP4}cDC}^qwjq$8h#$*AE>DK!SdOt1Xg30Q z6{e4Yn_-H3Mp<%hj#*TAkV}$#PEJx@5M)K>=q@SHN>cjll5)ip52Ir|!+4Abxjdx7 z7*BXmj<0)Qc~nSH&M+I}DF^M?2aicRTjDL-ag6sEjE?t^Jl<nUukjuunvD0DkTl+d z7#+ef-jiyXY++z*Xc0454xNFI_l%D6pqz7qGRlJ#Hlt%ZG#=YQ$|01D?GRzipc>l= zrR~@b%2+_CzOQ?zF?0to{3L`xBg@hh_pnmX0b=2mUZCB|pc5XzYh98nAv<EwcI0G$ zSAj>sPK$w_K$Gc~m2B(_Kb0fE7`ihn)G#C2nfzTmu-#dZ-8`UE2tYf-h&eUGFvmaK z*TmPwx56KCss{Ar5y<Hku#+~xr_Dfj$RxVERRxEe7AJ<A=77Q_DmNz&Ww#8*=^w=J zJV`bRD+cX0NHX@+Pw~hpj|zdF=o8_a3q1wI(iap?2B>3jp#C~|mw8@PMsg;~PI=I2 z7-&0{kWNhj^^HN8xZP>sU1`vhH%gLnEi044-HJhDg2_4Mncl$};GOs29d*#%J@6eS zpxsT#rxk^JWklwN6~j+J$%5@}^UH`d%E$?FojgBQw9B<NUMd2((T_;e*`xF<nQ zknze%%7d<*@__7~f~|svoiqbI`2ZTnK^e)pDTq^U@*sL5^SsJZj6pk8pgXK`AmRa; zj+I`JF@_YVI}D>hc?abLoiNL^FvFCzU<%SQmNWo8?T26*7#cgI(DNMKc1U52M|cM# zPM(48l=O;nhLmTX&Q8gm@Y8jW-CUlD6wX=6#_&^Bs^IC}-PAD29b|S+a#A+<L=EUk zQHYZzd_X6%fKE&So%Z2Yp6O!<O4DATQ)luL!`(`gjDrl4DlJ12BZ6|0D=n*%a&yX~ zf(;8&oKe`IlbVP+bqr-ZACzvxO%34Vzd2Y>YeDQj3I^{^3W&@t$cZ!#EKM{DGfl3{ zz_oL#zz4J|C_FSDv17<2-5Y#bO?G;!u~!cGL=m*zPN35`A|t|zQ$QyuflkW-tB0R% zlNMowI87(Q*~`*980QY8(#UW_&`u}#2^=_2f^p9&^>oe$&trJHgH8_$tMUPrWf6v0 zcZVUJHiS5tC)ceQbh=3-wv%*nN<d>i@cJ$y*a<Zaj*i6)=dl>1wgoN5VnR(LtJ2GT zt6WWn@mLIMehCBZ*tbC1-IS9J+70eo6$WaPBA;}VmFN*xnrQ3`+7(p}J_R7xFeBN+ zsURsgr3!S)3uxC9H4obz6bJcNdLm9c2=gjSG7il2&-Bbp3$(>{qKz4y#$Qa#X)^v| zO3L_)u?1W;j`0^GBU5v8i{!y`q78ifB_Oq^I6p5j$1yoMwYWGWKRY#Vbjc02B{#SN zYIJ0V#v?OGd54mb86u1sR3kHyG#!}<bq}jdHnJ>@46ksCH1f+yHueimGAhYQf}V*H zP?eJ%l{<1)-uPyD8v0cwn?zQ54W%7YfuM6&l8j6<l3c;(B~~RH29+fmg_Xj4Ulg1x zJi7X3Xs*5?l(#`6dPt)TWSlun{HP;^=iOBLW`!F2Rb^z+`Met<@)hx`aFENEA-@X8 z&?zSwGy;?BRvZ}amlYM^R~6=NSrip+I=T{v-scs&5r~V?5ujl_0%U+xHqu}OD8#eU zFC^L6-`y8<KR_|s`NKo`3}fWgI0Vai94m5+MpxvJyduY(P9s95#xxlbGJ}ut5Oc;c zV*L(|5uvm+Q!|r9i@|diPH}2ZYI2DY=#ZDuBaP9HG)4-W(cvB%5BDHt3`&N3h%jbQ z4fiBdf4B!a+3yRvLPI|)D<vZ`6MX#s0585F?)Y2^7T)AWWrZ5~xx1P`4&LyDF3O<h z!W$y}0F48Ji*AhlAcx|(c!DR4L0xpR7u}35xXJXV>4F>b;~wi`8!T~8+3*Z;?xSpI z#t<!!VOeNHTsp*ZZ5GarQBbvkmEa?0LC1I#zsLs3y+d@74YVwQl;>f|o}&wEa_F?M z1~uJ{4yz2~VHM<ZjRwOi;ZeDMA&~}=A?d^IARE*?f^#uV%IIR6P(LUCN|F}SSWsc; z1ogIC+v+0lO~h8Pi;WdDG^;^(3dfh_+LmNw7F&Zk8Mg6dxq2$e;7fa5b5e6t^GYBx z$zYlI;?$fpz4+vsn)nQB(9OV*JAxJBlQq;+GRxF;6r!;*!B-e7C={0@mSiS7=Oh*v zTPegS6(r`R<|u$kUHC=OAX95m%)z5sHzPGMB{MG_G=ia^fJa*}=qhn5*mc4R3NcD4 znZ*S;iIp)*AeW@&q*g%pN+~FSWV1?(OES|cb(8b+N>cMmAgYQB5|dMPlTu5{Q&aO$ zlqcq7rswHqmZatuLzE_`=9Q!tL7b(aP>bxT;)29Ha6pyi>cy97#3;ppWI@(qV%Q=S z1;}z81;~0G92#PjG-EY&6hJWuHdg_B&od}K64iBJUPp_9MDXqGx;dG7*>Df#=b;2t za!zJ)Hpo{XgNrlr%bmfg1MC#H{Gwcl>k(cg!dnm%6#P=lAwI(Ap;%m=f}}Tmi6bdL zr4kYapp>Bja(@YA!Bb9ZUV2G}f~~Esf`O)jJvjXq;0&Z(-6Y+-{5<f5>CjY0z>|^r zr3x8|WsqCTA-O3<Au+E~p#Zx4N&$3_c5$%+)IC@N034eNR*>jS)xeBcEdH@W_@*Q= zDJK=DkHE4DU{W_JzbGZOC?~bJSOJGeb2SVwtp}y65>N=MLz7&N29k?F7mSzYffJVo z*pKjg!I4Ugk|J<ENY+p<NkKRjR!pF0Sx~ktOD!tNOis+v1!p)=qKr|>%}hzjfyNCe z2Z2)}anS@)4#P1@3fhpsE{3>R4|E5;rh>Kt-W&?j4vs2lD1b6FBID7@U&$KkNO>9- zV(@|$DOW3$q*j#ZrX=R2gNh>^NM=<~K*{5vkcH=RSOuY>l3JFUR|1bWkVh530aTP) zmY<yp2_*1cV-P85xI;@j(jx$5ic4xvYDp@V+yIh9#^4|a6%8N{)oN<SY9eJ7kT{N# z5MQB@o1c=HqmY)E0y`#6K_RiEq^KCBG|WtaraF*fT}al}1*dR$`3VZnlEkFUycAHS z0;*ng4N)YE@<HhpB$1Mtn3E5!y`TXHDyl$vi=az&ku?*q3tppvLk?8Yg37X74MXf% zoUk)MWdK?!o0eacs|UR@5n9wD6;1ezOw36wDp3HF@I;H|P$TRPO)65yE>W6;Rze}U z4!M{DyBD6^k&3CDOmHy;3MNqQCMtCz$`Yut#1<o9&!VMgtVIjR7l=X=ty%|3>VnVJ z%g-xG%z>vq%=C;%iy%Facm(BLkUP+di5R8g(xlu>aAOExDFG=s^a_f=1&B*(T4HHV ziH0V)y$H#}pqjY2B)=#XR>(kXgXRDzMNE<gxmh>8D8IA-;&PatoW!J5P_$!j9VF-H z=;o&AnkazsLQ#H>E?7B|39zX4OUz9Lmo!*o0AD(WT49D{XtIWSW?n&Q2_n)`GK*4^ zOESw+i>(x*p-xp$098AnvLQD=B^42K3JOJu<skQfq{?*BCCd_XN>i;Az%?)^P#~2T zytq%TC@4xTF3toM`!Pyz1rXOMDAdM6Rbop<&_KeIhG1nPa%rdw@&;TFxJaxlNQIQ0 zpehMP3ZfR|GYAWk9BQGCO3BX+D9SHDEr-D#1{sIuWmK&o|H1<{MhP7LAWis^Z)TbT zG+FAEBo?Komgptt=N9A_XXd4ADpV^#3I=OPn;wyz;bE#^s{qXaP~8xh=0TJ~D@ia_ zs|l*8Fp?J7L*QBDVm;CdPmmjEm>YtV^9xdosgxf;ML;~X$q4Z*a#;)(!B!SS@*Gkp z6CS&0NjEtoH90#ezXG1bK{Z{nhB`Q_gUfTw{D@iKqo!MQGZE#af&!LA3epVLk_v7! zfP4)0muInKadBpPUTTU4n6H<a0&hma(mYzx3pNVY55t#uAuY6${PgskRB(J@S^+Iy zLFo~k3>6e=kt@!am^>nCIFN2+jNE#Ldy1I0GpZrr91#l+4Q!1%jJ!fzLn$pkAKn>< z)euRgB_;WwemFD%p(UTBl01c^l03w)1hg!|tUycP#Tvv&l!7fKu_RG9C9^m;vlu!s z0B&T$6D6p$0=o!S<2dK!7vrgNAXXr15FD;9D9X%DEUJV%g&0?ZoPtQuXay&{cK}Yr zpqd-197Lgb08iS1^!jlq02eEu@(_f{i)YfB?vM`nuxPp)Bj;a4=Mz#^Vo%@TWT=bU zbO&W7&>%=OD3ZY=NI2pOlxICsi&7Obixn#KON$ipQp>TAZ0IS3WMmeD)RknUD&*(o zR4SBY=B6rSmMD~G=Hw_Or7D0%l=2jc^A%F^^VCZeK<Qs0vqTY()u6$Z+{8+Sy!>*7 z(&AJF(C{T>AVr}hUm-U!J5|9kz*C_pwXig`xTIJQhf&}Zhc%@Y6oE!gz?DpLehP#Q z$)MnnDF)Zjkn{r{1p_tLu_s%Qu3QZhXt4$=*lKkkc{T_<9P5?`YWl$nbn1`EmVm}b zVYMC7a7zYQ4CFdcj|SAN#2p$X8R}s7$K=)O(9WfV6D!CopfL=1k&~>UPM|zY2Bjtv zN<js<T2O_Hv+#!21t2wvMVX1Z8JQ_5paEe}1Gc276h0OOu3k|}$HUWchjWGr&T<`+ zTT3!aK;s5*|HGmWNBRckQb>_Y%pfamV;54aBx|S_mlWmarK6<2@QnQYf?`FCfC<je zO)bgD%u81&Pt7Y)C<keTsG_Y~M^hp#QX<xw3>+yJoD?91<v<oVL$cWj4z}3Zm^{?^ zKRw9wpI&@<W=TeHNl|7&L28PEtpd2X$^&(I(-L!vQ=wfhsNRhH5<O5gS5Tq>ZjytP zAxVMCN2mq`1#oqnS(K^~qf}O!s+*BtqFa=jlb@KPn^=$;qok=<lnQZzMvM|jqi&fl z@(x|7v8fdW`9&qgVB2bA@@n<<l@*HfON)|IeG>}`GV{_ygM4g3+N}}`3UV@&6H7Al z^YpWd^Yg5eGZKr6Q%h`1OVV^LtdkOpQ_W0tQY*cTKwBmg!!1iav+}EaoV~!;RD%v} z@U2Rx{u)fAgYF4!%L_2_HS%@GzvUKo=#)=xm<jkmQ4e2B(4jX;xj{L}Sp|rLV=^7{ zy(3DDA|pK0BaEX;0wRL)6C-@hQ*zxZJ>4wx1Hvqgl7daLBaOXsA|rxwg2F3ul0XOV zyFm3A`C5YX`Q%uF=Jj)ZaxAmbJSx%>T}r?QaV6)58Kgvbm3q2aW_dfOWG6;M=J_}~ zB}Ewd=6e|h6{KV)7kj#uq(xSy=S8{a7<pBer>7cLlzKWlrh9t$8AL_|6+{~N6@v~& z_0M!l_RMq2NXiW>_Vj?zKH*5$m*;@=Iay+u?*Va(r?XR4io2UZVz{465-7Z@^3x-n zy~-oQO>>f*4fCVI-LezIP4gn0L5IsZrl$p$r-vJ&xZ6C!-6S34wq)a=j1>2rtWfZU zgrR1ha625KSJ~%OCA(K-q=uDeg58}PRU8$Okqq0`2QmY6y?SC^SXGL9PHt+jA?QkV z1JHr^5zd}wAh~2?r;JFW(2__{7#fA;B;~-@qk-KJ;p~-><ern4lxYaMw!S3U5N4Mj z=)mio<ec(Mn0wR0(89*puRJo`1QHj<Q6)Y(mPX!g<(Uy~Aa#yl^TBQe#RD2fq|fqn z*w#KzH|Ta^L(qX!xb=hAs|IHmd%A(rm1$Z^CMZmtl07rQVp-nKDH#OQK(1R>ihE93 zQl=s30K6j5!80&_CK;Jv#6_f0MM0!dNwQ~FJ~)m0<oV?%8K<};=Z0mZxQ9Wuvu8(@ zCFdG~)2yenlO@<Z4+C)8OvyDUjWCV`T`Qjq7Do#Y)Npcwnj4xPk{f0W3m5$13i5wW zig%bnK?MG=f#n~JbQow<k&$fd3rRQbZlzJ-<t351mf4{62X-^qFU9%byqX7%t4h=2 zsBqJ~6!-M>fDi*qPZ!4mPZx`HaNaa_1f>nU_9O)xX8MGif({h}uQ3FL8#wO~ot~Vc zl8i&s6W!g6qJo`DlZ*q?VdYGevr|S=UUqsi{P=<L^hoG7Qcn-K`*FqxG@YgUXF8>U z<IgBG-#fS*693S&4$5O7F>gp(G=LpzkmMd#8f6@m@9AQa?(3YL9#H87E}v4|-7=Hh zLkWfpR9!lh2E{{VlzUiZl6zQHa-~y=Pq-)O;KI@<@L}{O>7L-YDS^7vAm7&+oEMCe zg0bcg18}?sgUU@v9!hdfM~m0&Vo&!d!=zk415o|t4Gk~Q0b$^@;Ov-=RxTSPBbCD` z?tv(NL@GB!Qao~sqeAi#Wi&W1fXd~loaDTqf=DB`Vjs|fjNvJzuyQOZJSRKKy&?xz zu7dN62O_VLmS)h)7Es=CEP|CM$(0$9c+4~fAHe1v43Z<RTm!qytvnNy4}F}SAn^gt z_nzsX^aK(E)l&l!KH&P&6<53<*Jl}##z6&1MkXam?m4B2l}-jx5g7(P;XxTmxhdc} z0lH=!T*hORm(Gr$Ix#EBJtr#>QlB8T71Fb#BBFAV@&XG`>N`jp0Ebs{ZkQ1$AHmZc zxZZ)q8MIu5sE3rX&hUB`k=}Fg*CF6|0-FId*D>AGH3+mX0(=2SQYMl(x;ivIC|)Ci zp=B?qZuc-K0L8zj3$(7tvCQ#yhRRc+YzDQ<BE!qmqjKG{LHQpZ7w&EbDIQ)`{+Ukj zG8c0AV@@_AA6aHcg35JhTg)c{QVt^5e_%a%K^c*`Ii*qVVW30Vz;%L8h#N-RBRSWy z7~}>>`y{9!GQ6TJ$`DVR0oGoFw{@_#r%IBHf-;hv4YL!&-HMZpQc&v#a5{#z`-n3K zsa=H9E(52Rq~P=lP#F%c*U-v!a6Lwvn=_M)f=prM6uA9YnE_7MQJ{lngH3ai^SsKE z^L$Hj)e%IsVRPMzqawTvJl!EQa^3`&&*=35q-_NDFP8RFW^!h70jO*O*K^p)tMGDA zxdHY^gi(1uw7$ztGWII*$qlPa&b6#eu0*RdK=p2}WhI_Eqc{;<2SMvCu)SV5>tn2W z7JSHNF|1Cm@`l?<UYQLIJ1qGZZ+!|52f}SmQ2WrJ1bP8kSyEn5MiS`2R9Jf%SN_fO zDob(?gS0)Jy})+C(igbB1lMm_ijnv8{0t*=4GTbrk@{yk5mgR*xrZ5n`Vc;OPL+_d zI><FDJSrn4yu!fSIUA{L0rgYB?T4xqcgxDCU_{vt4o7e~i72lz`VYkAE3kik!c!`f zjKj)d{s!kONWZE$GTbXC$vL?gQJ-KfQ?inb%1e^M155mzoxtS*sO<6yuK*w5jAkw( zpJbb6B!z=7gHNGC8G&#EtX~Dqr=T`LVz_B}N(5@VDGGXkbYetQPI6U#dblyHAL^Ly z=?-#Rs2QjY3aS&L!YfeAXAiH86a$2sluScVxtfEL=A0eVQ*zykQ^G^dJe^U>DQMdV zsUCF?Gf4&=fNkstY8!y<g_dbxwXiS*rO62BUMZw@A9DKw8mE4sJW!crgzRpoj1-Tc zN|0aSeRxQFq9Do*-Z!m`3U@Pz3O0nc(+r{Zdln<5yJXM2Ak$<-z5%ykFzUHnQ24;} z7StR_9RczOqHYZ;OA2$UOfq)DtY7n@GLk&PKo`ki4?|e{#lryZK8!Y#TX`lV{)52z z9O=N}d{}-&E=R#-p?glQr!zdym8Q76RYn<w8TjNv4r)#|$|;Si%uY|O1m)u(!{l5O zb5D4i8PdK1*Lk_%a;Y>a*R3Q9bcnNaP)<rN=#YF<gUAT4yr_u4Qb-yB9Zm|-hcE}4 zzdb<x&K#V11X^EIMH*R_M@3Lt_krD85@qaFmJ;EFrELJo(}c@ozp^A}!;&ax0|QTY zSXwMENpg3~1m`8>u^^=WXsD52S+aXr6{OvVw_YHsuN`S*S?m*TnC%l1h3psfx)v68 zpn4jq9M6D=gAS2~k9ollrUv&pVeJWA<4`#AXjY<oSXQEuS6M1(Ob67iMYOX)V=Rbr z7drL^Nx!J&m!~uK{0wblBIi%6_MzlKXUFs?cgvDc53jOh4`0+V8b}!dH6sk#-i6dn z;4~MSQxzEDSCtr^QW_N=m=8H5J+w42Jg@+%%&>&#cW1|Rj64dpgWP^iio0cAlu<<v zB>jZqa06(}64tLpW;<D;*FT`~AP@$Z1>m|Cnm0*gM>u<?dso8xs=g@h@^mf+_2o!w zlOfp;$s^Fd4=4@c=^No|f5Or*yiUM2uA6IE7Ud2aJBTVvG7bXwQ^9eIRL4f<g&Cx{ zTb2?o8@vpXGMzG0+)YZ54|Ip851ef^lsYFfB_hZm$;cG7UUn<bjB<A~hzvH&PK@v? zNsRCVl_lW%6jYB#g6eT_*@K9GXnO~#UE)`qWb6m3a|n(1LEQizr-irOU}Mk7V}6l& zL8YGVAb%T{C+FsrL`Ha-BG;FZ5kUsYd1(30tvnNa!3TVd+RHG-Bd82C&I}HFaG3#X zLpYTsWucDyL^yjPj}w5)ykz5`vgBM?T?4OQC>Tc#!=HYk<2CR;{9x&$L&qvd`{<@= zNx|t==;a@%-3t~YeLMiOj}GZel!MBJa6@pt0hw1IW*o^iBPTgGG(9oGH$64n(l9yG zsWd7gIUV1)vrnc|Xrg;gl_v;$1m#BsJC!BnR+xHv1QjHOgUkv{Pch0VPI7k2j0$$D zN_4k0PRewuN~(0qPBJpdOL2Ar=YLQ490SiVSpLFO{=4Orr35>bL`Gz%C*@iidwPUb zMFl$<fZYHc+Xan@d%7EDBpQXL2ZlL$d4k&d5n(yW#z9p+1i}GQ&f{$hl_%$d$GxHR zc7A11ka6%Na2qrSG<O6E_hjgJ32dw$a^#~4xK9qwqd3Okq2`o$y95@1)q&?ia*~ts z42ogpU1)9?XiTdzDAyF!j!!~rXQz8R=fLJHjgmqP!C~WX48DjcEz!jgTsC>R`$761 zp`Z(n3_;_VFg;n2c}~-`WYF0OnWkxx#uXM3M(L0;*8{apmg1g~6B!O}D?!4;IH(eu z_CRebgG5k&)(vG`#2<7S2od27(hK!}MQK`aMQ%#CDRi!DK;~&7{s+w$K<7J=>l{dZ zS6-6n9+m-`-+=WYq4gaoEQqhaj4H~KjX-^MSbo6X_Ka}$GDwYZ0@a=1Iv3U^0F@{3 z`W@2N%Z`i)%J2yfDo8dmEJ!x?1NY4$oV`H(Xw<PAi297=+?))b@Qi{e_aN|GD|lQq zFQ_sFG=@N^PA~S4AR>PA{Xl7hxN%Q|#E2m9_$;_ChPHzcV|>JnwISvrA^Fgh*t!&) z?*=M=C4<5U+Am2q4ysHtGR=eLFGL$ECnZ10$g(`S5;U%jt?%krmJ}WaDhEoVDxHi$ zV`82jDPXfaLFd7M$`^N2OCO|pGEe99f>dakk&<g*nc|*NkX!{@=a3Fr=a3nc1)Vo` zOL7k@0htRcXCkX0<xB+loSw+i2qQm>G&jq9e{kOp-j9dOuM#(Y21%>XwFyxXUdVmS zB*^$Sw9N*Zzr&xdvXa~_t3c!Z@O(m2JJ<v?2L>Ml0rvr+7gI&K=Ts$y=TsrqA3)mj z$n8&vdbi5NaMzMVchG!b7<_&Ze6byDE)>+}1dq8u*Kr{A-OEi=K<A0z9H)SUN4fzh ztq|4MhzKf3L7JC@mRm?^3|1E5tD6x=>w3bDR<Cq|tSKO>-UaoqhE7=@m1|j+;vQB> zQCW}Zt7OB*rjgSMseKiAdWMwa1j~JJd5R~U1;XnhP}~?4M7Wz;Mu0ElGAxVo2rG^X zHicj6<&)=?171^=X_}T|lw*+S=4X(cn^T_b9tOS?2$Hs;7n`}m_2(xUBj!*+^=L|X zMUGEyMp=rpX$JV31&_ddZ%95Uh{|-#M^gj#Bg&W}q`g;=oEr*Srvkq4E79H3z$d~h zC&}G1Bg)w@BiTI%w9ck9IXA2_Djak%r6))&*esuj$P(1!$IIat93ibCgN(O;#v$_z zlaq2PN+HMFT9o-zqGL<Q`7LfKZh<*YPJsr+=|S0+0b#CT!4N%;r9Q?cW#9`s!(kV5 zS{5gUdxFweNwRxIMv8lANu-fwNwPcmGEMzdL(n)YXpFT0=~6t@<Bh?W9^x<;+_nq% zGe|P_1g+nLU2chVtbJ4gC@xc749Y!&O+fuv`1yxEMs8KfMqviYm6nCcm6lmaMuz2( zODKb?e2kqkl8yb!lZ?F#d<Y(Uj_dL$(8ZM&qnAe+xH$zHxS9`&i>yZ7;^aRX2BTpB zI)`d#q=QT!XD?Wp9h_ujX#iTU?U`qQ?czDhp?g*q_N{r)qXP_Km&Yk6Bts6&0&PA6 zpNtU#+H#r)+N_Cu+!l7zz#3wdpj(#EO#+`71K$3HWE_<@RlzsALfwFGYiUMiN~$a9 z*cs3!C+J3HqBl^1j_H5~0{)W~KwA#sL4tO$0-79n^FH)k1#nP;!d}7FRzbbE6nul8 zI^>vm&}J*tLl&^Bh6e_&6BiN{(h_ySyT%pL5)*X`N^^=+6%z9@a}!HI+sHxTQj2}N zC&tz)P<n}nY*qws9fO=@1lk{p?Qk5>Zn6^4<_ySr9WhFpu{sJyn&AB;I+%MFhsG8Y z<J6SYG~=Yi7$qHr0oh`b4Qiqy7iU$TSp`X+c_}%Od7y0p#b)3pccvxLcP~eVSL7t; z1%i)_4yekm@XgB3j0i5zOg6GKOwRSoNj3maql1P;GyQXlGZ9^mLAiwl@6co<d|KWW zd@D%=X!_FGF+CE#OddR3osr}oR+-`knf3!M8-)%5fQBxKoBjufX%NyBp;H!oYYAxR zA{Vm64>D}(2N?zixdl3$2U<D=8^R<!YyqD(gb%}z+Es>yLmFa<PZ=@Odf*|OP{`6U zxEYY{DP+41$gkjOfbvY@hH0`vOA_I6NbFLnWTT9-6hqW)Fv+=Y#v!2PFCpOVJVrhd z;O!kqaRQo(g)H;&&vb+=m50Vlm<Q-Sb4Sa7V8^^<<FKqqBhV84<O1X&g{X*(^5opG zs$`=aa9BaM-N4dKC}`_Mx|gw^A-LOa><iyM1X}(;Xem`>uv2biupwmWL#0!0WVmZd zvPW2PvQcPyWVmTT5@@MZco2Np4?Jat6xN_&Z?G6>8qF9q^k7*URSDV}fHeI8QC|gJ z#se8v4$cNG8%Xv9ZK=w{Hhfy12{sp^*8sFN2ze^qJItWi)5Q}sRRJC<#x+GVB8E+j z!m^{nBda2FK||3)X4s@E3bb`D%P%uBtUPl-hE0qhWh3N>c3i_EIgnu__|Tcth`dwV zGZRryhk}M+L0befy)2b9t+}}LwY0SKL1*!B>1!#N7!0>=O;LV1r11-G&w~!I1ReE< zIP!pYO?JJq%;L<XoK(Cmb(kWE8<CDg!#q0&-m(XsBnE0Xg9Y@!2LXYP`GOtdgx1pm zb#6dfV0+r3r;H)CP%A)AZ-N*Hb+m%50(fUOsNoOlWPs0<!0Z`;oB?g?L$v3n78fU` zr-F_q!Ft9C_*lYXMDSyJ6QTm-V36UNxuBiduArN;iy>|Sy97sH1bkoxUc=MUQj@_a z3C1WvPTYhV3hg9<&$mN5coVrFmI67s*%Ry{U(h+6h?q@I%*jbgOwLAJ+oYkQQic)4 zm_~q(ZBr?OI0DqOhOtmPb(s3#=>?<#mb8gKLIUdD;+*^v(CH!Ia04G|jegPz*=I69 zf=R(GGbhyw)TtxqIAw^lAg2XkbumPW*dR!$%uCG8Ox6XTSBFt9;0rwH*ocV&h*43j z3mPOrwiR}|8*~@|Gf}7I7lBfAj1nY0>w+__637V5JQbq^4LeYupX{&$ximLL*8-Q5 zp?8hp%Pjc?pkofe2Z({PA~-hmARYiY4VE9FF@rDbplc;L<DeTrT(&{ig*DSae2Fg{ zQZkD{r&@zg(~D6;8o`NC0+$bvm^DB(9dve)j)EaM$$k)})6#;J#1cFQ3x$H^6<jMa zi%UR9=7fRH11+|vS*it}q=|?t{FOI2MIuEP(I=Tg(hbD#h@^^IBqOVV$2@Fw4YL4% zWOz_n3m#+xpAZSnIH2>KAm@*Qq#^lB7h*ZwV5m|or#;3ffei!=(pf1u78NB{>SY## zY4CAj$j$_xI1d_c%fyh<QOGOJ$<b7>Q_wY3fQ~z&XoVJ4P<NoUFyiBrL3sdQ0|Ru; zgNjO`f-U$cZ)BsPMuHj{3JNMJsX3s$4L-sbdJZa@f@F}qN@|WC)ZYsB3L2o}WI!iz zYk=D<$VdKy&W-_x20T<$R1!5&DrN-*h~vr>Y{8*`Vjsv!nNU~9XKJXZB<d)DYIdYk zg%uP)mZ+#CqnQfPYNKGFpr!^nAs5-(U|%HaCFkcQCzgO43*ggdAi<!ZP^*v%8i9pY zC@@hKl}tz!;W4o|Co?%!!vN&WOihIOiFyzTkP+GnhMJnF)<NPIWDho*5yd|wU4k8- zjHCy~1UJrLRT`)WB&YlX2a_)B7$j(Ppf*)tk|29QtskTW4H`2pEe=VoC;_K;_zfY@ zpae;0BJKhKw_2eGe?y1X!8K-XimoY)k)M`UoLYi(m^#D^^os&wlt2dzBVQ4albTin z&%!XLg2FPs4D8_eVhzwCf_h*N>w!##Ivn*}d8`d-0<$HQ93%>IDWWZkme=7&a^lPF zAU|TZS&8gZ#3(r@<|Tv9pvIMWi1a%t$C1L07$?r}ApaHQ7ncMlmZd^<fGAK(1WADp zu?#56Pfi6Lze;X4fVSY!+nV^=so-h_?h*n?KPkTg%SoL0j7M!VgK83-S9G8lgTI<a zoBBejrP1WT%`Is4R8W+k4mw;M)`P}XQKPGaXGmCO4a#>&B?2_qE#VCZh&*O)FGx%Q z-2tSVlwVSkp9`u0W0Z^x3J^y>6B`jw8x0L1P6MYR0&xfPlmd*QTMRl}Ej2|KbO%Qn z;wA}Pj?YajO3%#GEy*u{INX8^cf;*YN-Tnh7SdENOkOX!w5TXGuLL~n3oFhc7bAg- zL72Mm%#@N0STtfbp%7OFz%+pE1%)!K#(^HTjds-$I7>n%Bw;$y3R}=Ast}B|tVK!8 zkPrp?1=L<c%@YKo4HnagId+I?xDyvVf{bycEbwhQh$b<_K)Cb3vd|lMph*NCRhU7X z3GL&Q7J!e?18asPO5_lRWPBVKcVN4lCoMB4wHW!Fb&vqOwFEiY9()%P(owOXn|WX- z0z)GZq)QJ(#1|x%WZ)cP0$+ZEO)KP{fRy;e68uxru#17PnE|rCII{}(02kDDEQiD@ zpx;9VtD}o^!DoJF=B4Gs<A$<>*g?f6c!Wv=<X)tf9<+T1jZIJ`uK@F9j1qE<g*6|b z*Sk1<MAdtLQoxt<fCiF?@(t*GeMEM^aAF#Gr9(+kVsVB-W^#U>Zh1x~QV$neS%V4{ z@JaBHQUOeYdh?(oU?Dk-J_jk|D|w)Wi7_OD!fFj@*@wNg3rlgJq^1B$8sPr4E+k&D znuACk!Kpc^$t4QVu_;h==;`T!NA|F$6|l*Oc)(rOfSds-Z;%pyj1r>53{rq1h3G7U zq>7_sQDi~Kbn2EC<v{8+{ltPy{W3#+NVmEeMJ42nQHVNF(_KHgxC{~q(EI_pDFYPe zu*NQ}kIF_pAR83OxI?%ERk1Vpdb|{()dy!*;W_aia{6{mUhU9WaARt0V3=rRY&Jj( zZv0#vslMPQG29TmCOj&_vkZw1U4Rpo6PcAfY!~1p=UN(L*&_m3a0A-kh1jc<ofzSj z13I%VB{vMbuM@s^$JsF*e69&(VF!30E%H7QPiLpf$cPm1q8i9vy~q-53q&C2pCHc2 zfiHy0&8bQZ_bQGG&W10j@pN_q?d<?9s;UB=od`A;x>&>~FRCEfC?^wqo)cm}U<!P( z2(JB9Q2pS=CXl`M;Qgp@cYqe5fEUw%7OD_9X9l!)3StJ*-ca~CG8pIbf%nxy?MJvj zG(7;c@FcvVDhg&Vd_N4x4UjV|po^hk`=P*YjxhE`SwQ2HYnYR4?3WQ`6bjzsi}xIe z2(QW{W3MWdg-$rb40<jZ<P1Wv-LO0q1T_bJArjJp74TWMD2ro^AbZk?v^zH{H!KT! z?pCsAZWL&LD|8VKD14CODBLnTD!d%^JQEM}#YRB|$;M8_kr6pwNfAzE$$3G3kTdd7 z(p^?$ctvq!u3J`ORen0s-phP1=O81Ly*{8bIv{73g3h2QPjYuN4ThFAA>rUN0@DM6 z9kabWqM+y5qPiJ-8pq*A<nv>|X$873547Nj+&zq$uzht-RY~ra29P`ki65VE(B5k7 z=YJ%+fcIR(7mdLd9YGe?LC(GfEm{Pfk(lD1V}Qt~P&Y#sGlA0vEWA8jqY9GTL(L$2 zckwKQBHh2xa|#gWS|uA*l%;^qm4xj<b~c2nft*<d&2L06K8*6n0iAhO5LsymIg=~G z3%ocEoG*|T7!r5>3fg%}&W0w*l?D~QSk5|woUsHxQxF~(xE3OU&KQH8UkS^<J`s=w zm!60+6r4_>{)d$}$)4FcCE&Bmot;8Kd%pd1AZN2u<Ba4;_yW=NbTB(2qsk`)v{)1) zE<op+=R_I@g7^5t>n5D#mSs8kZ0bDdesfTogPm=Y3-u3V!D$sZo<QX;VlgIYzi&>G z3+g#5==B#gjhDj06I`#L)?wt7B_O*qlAKKopk)*|%spKU(m~}9%&nkBjqv&obfy#L z;z+FKz}f;J{a~|@(r1#f6Zo8B;>u>wetyt7%&>E!$}`d01j(MrXS%tSXZm6(!$4=e zMg*6q`-0AX#dRhH@p(QwH5_ynT~3xyIOKdY9PJ<C78S$OW+0)oi8#j#(VoI}1|O)5 zfSrK=jpM+Qln5u#{!gT{nQ@-k6PD}_I`cj>Jt!ihAQ^PVaBgyX82J3bu&RKn0?6L% zFayvTXW;r8a%MW}*~ui9MJC|0-SCt}*v>5@b}=z1AA!$`gV#r(dXl_z7eQu4hL@MZ z!qXd`r$J{uVxGN-t{x?S!1WS&28K~aPNY#uW|A@JEPYtr3Oe7jJQLi0hO`%xJz?dK zv!Nj*F2k_4X>gv?=2o5=39%~&dY+?Ga-LU4YOrZRvVmJ=a;}>xbdfQv41n4b3OQFE zR2Jq~7T{1*?CEZ5nB-nw06KTwC&V=!u~-}0HpmMr2c5kY6%1Mw3fhzJggEof9n1Nt zIhJXWkoF@{ZDsJC7tVp%k)U%FA?+)4e<1Y}K=wO=%Ep`|XGcp<%ySp9sm+3xr#VT^ zrdg0P`at`{Ez-R`K<A8r!YM!9+a1(?^vm%MK{_wg*)csaJTl$e6%x)qxu7%gyecCj zvO(>`3~%H!1VQaX5cU9_e*<a<MuOV=r77VR#mHqh?Cd!&=b!?RyTE+~Q2c<ypd92k zBXl=-Iy-^)qkB0AWnr{QL3TPjW_!73rw2GYmU}u!=EBY;MNjV_`@EckGQj6u=K5u% zIHzZOc|;aK_Pj&F7VJI`gY+m+KP4FXTx_^J#I8)o65n9QTrc?Ie)RMLiXTwCnpP#b z=VV0%r<eOc+*yEPzq@N`GWf2DP*9i_fX>hJ4bH~mCP@DX>^^Y)?Ua+`;g^Fr!xrW~ z$hmwt{GJ7_2O(jWjyRJOR0hG!hnK~mh4$e4A@KIEh`B!n))omzoU;c{6CR)qCV}8{ zb)ar8!Ft{U^o%E{no@8(+#{?i%stE`1?j#7;>vo+B5?Rw*b(rJ6p*?Pe70sNf*o#| z8<ppmlj3Ypfn4u{-GJvlmK3nt3?cWW<iO6Nt;mVWgKe%rggaV06k3=0=7Z0JsWgR^ z3E;bAQX>39LFemxgWC~~W}c98BP}X89dA8I{H7n!nSN9}%Mjk?M(V>7xHAQ%FA6<h z8YAyR{EeqS3fkO4(s)C%XSQEPQm!BP%wte{4PV+PCp?oqyg(alDnWOo!1DmEc0KBO z#8oNbUL}bU$Z3c8@C28$c}``?#z7&G5m7m?ascIwZAe`S?yG{%Oa*UDGKBSisM1e` zpJ(kG;stF7K>NwWw|gON4se<xM{hdlZWOdTYDl>Y3bVfpJ|D}7;2kO$?Qmk-jM&B( z$=ZOH=Tw<wlmZ@SL>iYPwDGJwIoC1|ycw<1)F?5+uOKoP`Cb(#O9C6t;BoFBhO~(e zb{?ytpFwJPMGodU^iCO3?m-1fxyhjT0-eEH0_)TJW;vCkoH0z^7!llEzMy+5$V*R1 zVdI3vHmpkV@G1bE$Kw+YzBkGU<qRxBe$O?`NX|_uNXj%cNHTVU_MbdWl07n@c?P52 zAbR{J*~6<W%GfI>+1R%vGS>~?MpY#Lm}aF!c!AFEF@TPH!P}Y1u)D~hXTc-P_lrmj z4>Cw}MvOP&8m|GJs}Bkv@R%G@8ilwIGB$#(4-dMlED3Z58S=S@kTMLm@etV$m~|)U zJT_1r3a0U%MTwDjVRb(=JizT2>h!-s<3UK{chEBsaozcr?CzEw<qkTx9VM+)`Fc2+ zp!Dz1HULBKi9*>Bi_K3^b?|$oKxgA6MmT}{Vg&22T*N&xDG^S^Nk(qjJ`tdMV$jMD zB)7rKQv7G?8bpHb83W%10^U@e2EUIg7c{mS20r^0xeXDOn**A2LEIsQe!ixMCnzi+ z=i3<vWrN0rkj{05x5psnn1b(Rj4*b}NO4amI0pf}y9wL5rC@V>a-nC0h6klZMg)TU z0H8CrA>+e%)1^TaXkH6j`gaF~Lue`3y%Bx|skwybO5pAU*TvY*_yd(YSnfy6MYI=_ zjSSL3=R*60=afd}TB2@<#^^6Y#tV?|%0rGboc9=j&RhfKbI6@~(0Ppva9E=D<)D2T zaDNBEMr&&)d**=ZML*D-5@b9H@7Nr9;SvS9AI}JMh8-erdpcvDZw)!K(62Z#+z)ie zpc%@YYViJkHX<E^{RRq0a6ZV63a`jXaSwA(46n%XhNJ<=`Drk99<Y8MC@x`a<aQM5 zCV3oZ{pUhAksBoEx>Y4QI~7D4S(f@lq~s??1fh)Uf!ffJvvomtJc7=ohn{Z-FL!fN ze4HICK=GCqTmdel6T|(2A!o&TxhH|n4|gj;8cP{`XVQYl^1*#ZKWP1o6rPAXFX8hR z*veT@o`IgFUXYX<RptqfyRd?!JSW2xXG7?jwx;;ZM=D>+GebdV3Wxg{c)CKz|DBz{ zX~HMdq?Cwq1!^zK9XYthc#-Z|0hKvnhRN>Wv-ME(KE}E4V6_-(P{$6zYO2Bw4KdV# z#^fS{4GoiXD`4%Tvd9Rh0w3eZ3Lhh=pFRAN(eFNmoDuD00BcJ^`skKf$;Pm|G!XeB z4VFd+^2}D_An+Zr(E13}&I6s-jDEH~IBtoES8RHrcZY)KHVEAffK7i$VnhMxY-D2e zg2t4RlkyBxK>be8SPtY2O88+fpmQR@=WYAsSQ;lr1m%Ys2UR9UIF(0*2ZF{E4U+T1 zaw6PK!Q+7l{TXGTF`!h)nYW;^62m0-&{FVOl(}x812)Q2oYNuYAovcP3^X;MIR;mh zbqvY5VHGLiIh9et8KAix!>C|G(D|7q$+=;Wc1*Zic_Qdc-(b_qDA0MApgWF1_sT-g zr%lN;F!Zf*tcVQptnvfhq3i4fw-a=@2k6|!<VwhxGAJxSIKtf&eDDDHkR9~1Ee#=u z6@(dtIfuHsxdc}_xrZ27h6aU!+Q$}Up3Wv^X_=PbGdRI#Z@Pz7`hdn2GcA$MngreV zYgi7d8<Mju%_E$>AbB?je!ql~Pe^E$uZvrTZ<eo7gtM0==uAo+=0fKvgUXUKO$(E& zEWu}F2SfzrBt?MM9R%fgLGJ?$2yx8tA>q&<*c>CaHB69mJmF!Po(N7Cjt0JNknn+} z2~T&w{FHFhqU1_P&>gejHBU+5Zsp0Kwz9ErrhlfFQ(&mu=s9~s=bXLK^EpS)C>=eg zb!eQ4N%y=;!eKRrL+!8{@OCH20Vl+4PNj4^A7rDB0rqnn@og=DI8hgA{|{_?0aysJ ztRJ!$0^e>U=-#8G{Gyc9BG4{%=ms#{8v-ybhb_kkZSR8kiG<BZ5aW<{AAv=56f#Rv zb4lNX1lEOhV=BmHIT{*Z(~+$MZ(7t*NXtykNrBs^pn$yX39{J<v}Z^i=12GrVW>WB zg%~Bsu?m>mEuc1oEkd>#?3Cb=qRhN>B#Tk3hHe*uZS#Qcv_jGtZ4e9EX$9I41Ku5u zJuxK}sYA}~gs7`UaFBM<C|H3v|Hr3lXoB`sK+?{@@1sH90$!e2l$V*84%r0)OY;~f zoW>}H!_=Xrgy8(#R0YUsMGE=J$)!c9DGKEonK`KnkPRpxvmrqQ-lqWyhJo2y;#rcK z3w8o#Y65M4L)}^e@eo)!_*~W@vM0pM%skl`w0(L&4q^3kai!Oukdi3qns)GEcp;WK zks;Y8o;e1^o_T&{DG^>-Q4xMFNk*myp!;UP2f>2YaiHBr5fD)VnitBBitsc;8oQ;_ z-B_@LHKFVFE3?xBDxFa7Folc>fW~yNj$0${Dn(iwO57R}ud-C^YpKC&iIalU%kl3G zAnHDP*xm0Xka-x`+BxL$MaX;#XnY8-U-Ka9JUt+^PXy@T&K&T#3dHPC&^&7;=uWLD z(BYr(^@%vw1470QK!<t4?{haahy?9z!GEt#iMNX@-gPP|?p|e49^i3k$h?aY{Qh`Y zc!2aHjR|K!#52p&LF3O!$m`O`oacd>gKta=63@=*`H+0%iS8z&$nXlosNnMSsN9^K zBzMH!E8sO;=<ad{?=yhRKN&&iqCj&T-~(>KWBX~zm7qC}u;M6Z=s~Jk(Dkpl<|`oj zi@lvQpl-=7Mww4=hvXaZ7+bh$9>)3_G&ka%Z$&dJyvivBygms$HxF5xmWF>$FEcqa zxd6OAIukN32AcDQANmTJBLvU2LFN+-3Oqsk8X$hm@pc}Z_x2H2mY}akOUX#iH7!WW zO~E$aZ;+ge<-lEMuZYM9uhPVD(>xsGz#&OShB=<DkT_4SbSjH9@-s}%4a@fQNXZ9{ z33|Fi$IU@wWQMRcy-tuhv9JNXFUkOX-=8z&kYUgP)+z4kkoj6j{Dapl1%t*OL1VH6 z)`Mfy3*X=63_f5u1w0=WW@s7V4qkf)9#2M$+nU1aywV8cl!6rZj1cg84-coDDA2lG z@VeTt<fL5Cee0-W&G0-1KU~%nG_G6<o0kBm<4owfTQoJ0IS=HyKhXVdZib+}jG)7k zA@>@A#=;FNqrmqY1(rlcI2C}>1L)4EWawR%Ahi&)3_;_)Mt)f-S-w?}bqAgZJ3)IA zLHow4Kw$yOi{Lw{Kx5Q7;IURL_b*wLLC0q!f<nCl14I3MJYAy#LJWi4LLqw6eKIYz zeT<_(<LTgWbkG=Yl6y|3k1=B0*e4u(AAJGnp!5La63`lQ@crBo&R(E>0~w%uqx?c5 zjr@#!tHA5X@(e)Z%Q(#S%Smz%%Sv&#tn|q(s0uI!?E?z6OmPo`-S?E62)>sp-O|_D zwbTc+HU@S$eWfMnj-{Lw58txHJm0cN@V!u$rJ(jua-}77KSNMXawam{5K<TA`GWV{ zLc;?#_Kz5^4g-fF{JyIZJzgE`iD+|%d6gv@2WI+bdS<2t+G4pw#l&c+jo-w>&v%Ii z59O5PXQ$>B>*b{8rI%zV*eMvGj_O1s)MG!7p&&6YHAewV>ZZUhzyS3RVO>vrgESCr z8L5e&Q;3jytf0|=GL0A|$I_CF{G!aN)D#8Bf`XjP<V5Iko@jm67$s1j9_}+dF2!<O z6!GIhkP)Dq)Z$`=T-_wyy!<@qxsqVNf*hTzfn%r&+nF+uphq6<0E@uKIgp1}iol~P zpnffApatqd1?X`s=x6VMj$<rKEh@=OPRv0*%q=%FB_#*yWbjA`D4x(xP>F$vfuwQa z7$pU5$S_E;2H3@V$vK&+c_n(FQ!OCp(hx8O+z-dzZKsX*pzbVA&M!#Cme|q8kYbbw zcmNhOm_Y%xA}c>LPeWZtL0yxm00Ef?4iuyTCTv&D&@cgj&J{<Dio%kXGvorL7$wl5 zT={vrIhlFc3ZRolbg6nkPEl%Ees(G(mWVy;hsY=j0vk<)VsQA!g0JmSP{2Os2Oc`Y za-|Qw2EY)d0P5%#_#P@HT!mr@s^Va9CII^udlt-42Ol9cWKK>=Ni|3@NHqbS7&j1C z75TY<Z_}jeRYl3}ZdJ*~ppy~;%K{_93=-WfD?uw;qFh0%@xn?|JRmK)03*K)U-wY( zih?0}jZqSGH>5$5QAtixo^NTAdsu0daZo;J7o;zi-BjU*mY|hK#I1q`t#k}8Pfv!> zCCFE}L_m7+;MGf@UK~-q<2<K~q};G#=qU}Dy<(&uAWFPBJ2@qLIDuADX25sH<GXeS zyy}&xQMvNSaMPS5?4y66aDt42fmSCYc1XikHoCyCYI631s&j(UhM7smUfEF*Ud2%n zepR0C1|^Z1hNYkzUtue`kyow~9APvL0-y8%8W{xd{>iZfjRb*5)Kc6ni=x6!F;+=K z#7&S^LV<diL59h>CXgG%jf21^5<t@fWc4xJkB;e{cy~5{R;iX}rsRfIrnu*1flkbb z46i7NGBSm(;PWa;3=hgioS*?6HG+*GK}Tr8E5wZ>LAMCwzgZr(;uS`_m1lx>S3<+0 z%G)ETEYT>e)F&63znx7%CtKur2RjylPH~BF1FcwvxB)z32Qvqqc7yDY!nacly0RL+ z0u*UgZAgkoPH|KS>gfyMRls>sImvlJ1(8N>#XjL~#fjl5pp~28od!wapxexmSJ8vQ z9(6S@+<$p~SxLrDImwl##Zlp=c`5Gc=>eIJ<=(-L`krp!d|d^~tDtm(wBj8!@&rC1 z1Fzq)gay_xM!2Cc$tb7P8#I#RoLoS1ScC0@jz|Tg?tCP0LdSrlRZtlhiBb-L;tAVK z1bCNFSyHB9abmb>k*7ycPO3*>37uArS4Krdl_eU5=EL$oxSR%uHORfNbcM`@&OjiQ zy+r31n7Pi5>7lt{MxZ)~G`-OH2k+W}j1;E@XM<Ljf_E!N1ZSuFXF_&CM;L|XgIAz~ zR`9~hCg|<y*-@p*Rr%@RMp1@Ixqjf&Ks=q(3sQ|iJJ`YcEy25Qt4fR_BRtb1jM6Q^ zWk+UER&s7wMv8lwTatTN31~FPAF3y^$`D+>Mi_%eogzykjQlLp+${6`AuCfWqasks zQjC?o$<W<Qpmc+6loEX99GN4Wp+<gX$?joQpwU1=c_q;qG!hS5sb5i=HWEfb!-H~s z-2=;`LO{D0Jd20QC}@;>XnB;2Q;wf|ShDB9jDnU&M)*}hPE4|NN{I-{Pcrr@NX-q) z4m7GL0OgJ3N>ihh@G$VoW<<C;6@W*|T>>l7M@S=$G7OV)OR7MpHTXJvrT92|fkv^* zK{Ff4m7Zpv*=|mOp`*98!*8r7ZS>T52#=l)$iOJ}Ax`x1zZfOx%>|HyVbgL_D`H^x zScAp}vr3CgGSez`lk@XRQuCm9i4_+lCa3BqrIwVZrskn2Pt3_o&(j618UtUX6r+@! znpcuq1R1YIUf7nbp-${Tnm=f0SHT%PZdi<Ea0d7AL?U943bOnP+YlAp{kX1v0Id=O z9Wm_;K5`b~4!8WGT*&Ar_>5`zpe|@68jBM_V|Ebj3Vx~OP`_YN2lfhRTnX!F3*q7M zr2LdhNLYhh1Rk`9jJLuEGHq>b5##m+IKv0Wm^BXXMdp_(WF(fQD&*ytC_v90S4hmO zRDeVs%n4{7274B15EH}C*xZja>o8!0@lgLDkH$lU2K8_}^7u2vxq6u?1V@~~k%SR5 zpaKni^!vcgE@1HvQF99P_fWEidUAeBDtJ}~H1Pvp>k5s9;?(4#)DqCL(?L6o4=*Dr zJE%W3C9^~W;%h37+`Fb^mY@|apz;<OgCl*=hAs^zNm5cl%XllPAJ{J7>j{VpZqO76 zbb17-m?x`x1K$~?0J+1I;F5Z<VqHi*qzg%INC`MbsU$HeGcN_y&;ea(f^^drsKJA{ zcO@k=F()6oI2x_#g0Ciq*p93jR2PFvOv1Y0tt?R60;~;GVB~7x*Z@G-Kx_>Ha5Dzf zfYAdle1|s;kg8UE1|u&ZhfVCEIoAj@#SU^gsJ);7pK%8*o5xy}l;)^I#d9<ul|H%~ zk?UHptFcwJIhjahEK&2a$dw4xSkTS`Vv;x5%b-FVDQQDJf$D3}{i`_JSs+PW@VbTk zypqHmcrwM@FM>#yAU%*q9to)uq)9iuD8IA-q7|IDk~P%P?s7$ICc`e>Pyi*&qWm0P zuyQ05V3CY}RuNxvf?8pYWGLuPle~h`5=5xszfz0rn=c_n1UM^z+YZo@ML_}e@=G*j z5SJodUX2!L;Gl*E7@i1)-97{{9a>K5g4_Yu1S*dZH-mtt(&2VPor?8}Oz_SaP=5|R zFM$k)R=hZF&(2P*1f>w<i=DxjQ^K<ws8$7C0I8^<4!K7~T_H11K?SNvO%1ZxBO7|_ zwqAB>rE`8ts*Xa860{?zqhM$Zx{(sLBM5X8r?mpO7X>mKayfT#Nq$i()C{PDL2FMy zc@Cr~MhSf13doDF>2#Q41$c`TdQm0VWzf4d^^)^*3-XI08-$<^z_1$<AMiv0y8IEv z3`ppLuONr!KPZLcmTqV_7wRsww33mUQ=pralb@UoiCJ*Agk>rM#SkbYKp3<Orz8V( zA8loRX^}!{acWVqLV0FRjzUpta(;SVW>u;}VqS_uNl|HWi5?M#LR(8X+DrH{GdStf zu9OK%g%kt|p+P=iM`A5-@i}milr}|BkHD^f!&BnGltR)6#ib5<aRMzzKqU>RbO2?k z7$polp{htLZD6KAGw^7MLqv%K3$wvr>O_Ldnnc7(OZ8%fMCcMs@XAYt<iwnuq{QTG zP-Z2m)FHov0KY{SR8fG7QqU&T(vp(=JVaXptptW$5(Zz83Qg;nEigpZfz*5`)in4X zu9VE;+)U6VsGxoYxE}z|wQv`~3U}w6{9-&eQbDXB=xS0feT5hacM;T|ct<@!)iB8A zuo@1rT^Dcj8Zy+0qox5D+@LrHVUi1QaHx{j5d@7oK$}-6Q8x6tfyUVTRro4AaCo7u zWCk}2L7@U}<beA<H0T7HV0SF>oj^1fj&=b@yMQH`WvRth3enKUw1NVt%>pfKL04!) z%QOWAlxvmI`-k8bJoH{=cp?LtgsVA*q6l7q;<!;6+y*AT`v)=`S~}67^9M2=oXf%9 zgBIn`P(myD2T9kjv>+w1WT5(fD8V)O+hC(TKh&W%d==q9_Wa<<3f8<QSkS-}QmL>( zG+iNsNYE01YP~*84~`Z!1csR~f^6^?H=|uXl>Wo8?D9dXUuf<HQQ&Sgtka64O9vi> z1g-yY&PdElPsO%K2c!h0=Leb`tQ~~=qaf>h6g*wPuEp9vEkWHRg@5h?O>r=IvLCP6 z*!xW-h^<ySut9I?-_MP&28DDbK|63^3%bB*gYXbbGGwR&TImoTSWzG@n?cP3Rbq)n znTfg?nJFot<!GS(KuJ+4eDf-JZUO96STa659d`s|nBW|AfdoKFW(jO#EQ+Cc@`f{b zIurM@FQm*t+cUC23%<bHv_Y!_^3qYJOT#nr^9za<F+v8>$ShCID^Vyf%Fj!OsG_Y~ zN0TBgk|Joa%y3MIL*tOPRLf)w17kyr7^ML^q|KM=hqR$=KSfzOAFA&gl9J;OSqfj3 zWE@rrx|l1_$g(uWJ*+gv+0!h%(hGLLNGbe~nkqwc*nuzpxdXJt1$J4t8z~oTLAHB( zdO&EO@SvQiTsOlc57@<L(5*+LZ`TBGw*hS<K-*3U+OmmrYb&mcccR>Ls*>F+GC&u( zfiEt~jVg|cz`P7KF)yqt#XToCH5hdGI^-}t*yRJD1GOTJKnJgd8KfA6<s^X)ibvXZ z7~$*%xjZn_upk9=U=8GA(PU511$B8y7nXxAgamJsL<$?k#S<tOL*U<P<rDzkLhJ10 zlH{I~lav=!g;PBd+a6K3zBysr0-F&Dy42Umq$J5br!>(J>4Gqf%VL~B{swL5g<OmR zx%{sx(cRKG(AX;{G9oAkw&f%!*RnDR93F@*Ysgz?Q$Ppx=fDoQ!oI~5W~QgBX--Nd zJUno2IfZPi0&SV1!ezwpEzh8X@Nz&~F-t)QF!?w;!M1K^!Q#g!w<0GgH^m^)+0il} z#2_7c`*t#Dn<adEF4pib@d@`VNdg@x20OHmgl)Fr;g*J;?im>=xuNMvxt0c=?y!rD z0@EYIO-(&rAzOkx-Jx4-J$y^Cr6)+(p>5m4ai|@1>pC|7YkRslLN5IUl?}#_gAPI4 zT1h$>G2E*x8FZOLZUyL)wDhE4!%UxW)3T&ow8Ix6TOUijT^vCN|3SC?fwm>1UOtWI zFhjT>KnF!49iEvFx)2Gpbqao1n6qPga&DMGN`zM_bjz**>Q+JU;emABUJTv}2|k># zJQG`-V%;{3z6BeWE}TsZ;D;I#$d_Pqi70ypV#_s^!-VAR=+Jyr47(5(T+U^Jw#$Mq z5d+n81Gf#@$TB+$v=tibWo6Lv!P&GbD%`I!Dk2bi&?DI0;Da^?m0v*qfS0SFI)?C; zZsd!DX>jpZPLz9&fj2xqLAFJM^9sCe0IBCd7tMghNhs&R>XEi>gZZvu*`Uj4QMQVs zt3l#J(k6jRWT6-D!OLq<xrgrpM9@WW&R#}Q5ncv~;eHuO&ghpd8x};l2Ni=ZmqfS| z<03dvzQ{nSCy?w#zTh!39I{Q^C%mE{DYrNsa(R?tc4W9|UQ~ovGRkFB80{Cx@fV=7 zJ<_NIeB=dknNRStJ5Zfu98{TPoQ<d-U~L?5I3xT8YAe9}OKQ6Z9JgTeAn7H@J*+qi zbg3IsyA)jw3LjcFLk?*L9iaie^eq_uxCR1g0oHeb=QHf>mn5U0j3j5!MbD6}+c1CQ zx@<HNbhvR=etLv6xX%PiGtlk)p(UWW0oA)`c{SM+e0XvW=wd1pSlitPbZIR7kYq^Q zqFiK}8&nV(UQrfhSe^-U6D02;wb4oPqhWSpxLa|O5tc(?Ni!!4cBnU6KL}jTCIzQg zfZ8L-bs6Y56tEbmT}7H*;3H^I?15h79tmx;gWKxCrtm{E2^~cQFB@RTIT-jAgSMbU z`e0}W>4pboB;}^$B<Dcm0J+QqUD%w7w|)U1NR0Pbm+*4XA+(UTAL5W|XnG2BPcrr@ z@qr(Xjs5UtJZ-$<L{L40TwgkS;p~5)<Uv^e#b|Fq4*w<j*cDiwh8*7nuA5O0U&b4b zxu9@BDPOV1T~t|eu0aX(*sZdpyr7IEH{|}Hn?Z_)R~6<((OzZXBZDA$8f+IVy}`>t zXuN}t)gbD~sa%L#qKv)DQX-sC`d<;?JW!DlnHyG2*iU|CNzR5PQO*Wcp6-4iKUF3f zm6s&ByJbd&SD=~;=}&+UGA8zz590g+cY`r3T%dIVsNTbN(PK8~Kw(h7JS8^_6y8bj zJm>6~4!)o<1YUmTpu`cV-pq9~2D=}k#>gk!uq?_wtQf6Kg&as8lAjLi&q0q=f#w<0 zjHK{TLKl;x<ui~TSRW14CNoTdUr>xEy@4(+P4Vz5L-B_@j<kk!p)sud@(G8vT@AtQ zbu@p1>JHOn(D59Q^l1<kkzoLf2T=NiyU{(UEGf*XGRfEp6z0f%InV`!8A%>tpi36b zJfRnD!|aEapJ2No2Q`EIZUDcaJITnz%oARRLh7kRqcBr&y3Wc^C#nqszBDmC!`nFp zdJ(Bfo~L_GsVCBfv|gE!>Cif($Qv$hS`-zL<C0_)l;h(J8ovnxjah;(9rtu`t?~vP z)L)4>Vk{{ytT@S~I2}??LfRjm&fueXN|TL)%93+K^Wp6zq_$65Fw$6#TX|+;xM_Jx zL=f?9EQtTIqavbmlJWveQ{3Guqm04~d~(4DQI{nffiBq2PESR+)!fqq=~yICI~0_E zVHY`vg3FIma9#;^v_yoHsX=6fS6);^U};LOTQTHV6sSMp=0V$W9{9(RKx2pC%g^C) zi?w}}9~E9v?i21+oMZ&LP#APsq+>cX|AXs$aKDO}J~ymRfzfV$Wl7;-28p1<;wzm@ zLF3Y%9${5c5nffE9w`M$?&Y8{i>xH0lv2<!ik_h30G*vc7kE~sIGd7OkAaVI0$s?8 zV_XPQE)#WpAGnV22~Vj^G7c+;<wa<ifXc+;$Z)TmB*J57S>UofJg~&K(h1zA0=55q z!Xb47nz=|}?FH(qRYrj>=XDDU4uRIK_}Ur6ww%vHgoQV99(E5iN%rspUC3PkF2CH$ zGttVs%Bb+5g5=z=tQ0qB+Ya2%MU;EkE?JHOjSEA^;X!eQTvp@iFQj<nl!N+@;Pz!6 z=vcNO)P9~@c_uiYhm~hS)FAu>O9NCa=Mnw}U3ifRDm$Dk5p{@VDMtG!w<ISu0+h}@ ziM&kQ34FP(XK;F6WL}s-io0d0SEW-yQl=xUd@S&Ej?DFhjK8NPR;I(mOF{KYAb6ao z9Mr!8%^!f<-k=M<eJisIJUxm*WddXz)7{iC$-NwVIhyBZkYwzYgQ!Q4#xpz+aST2t zF*m0)*&_^cp|d+;o(rKD`N9Nnc!B)~t4DnDf-;hGQ*u(AO|z1W49k;@{R)zDlTqC2 zUkNRf;bkBALKf8a2U1!F9bJXRd`O!Ix!!`Yp=CdT3sT_6G{W0sSlcxjIY}OlC6T!m zW#Dm!97rD=G<N{4pTTWRqQ`7ues*?D2aWe9XF6phBOj}pnNsEH?q-<co>7*Zn`0Ik z5d_M!>7ZjPlia;BB8`gE!@|6LeMqch;NwM*WByXW{ZCLGn_~%fKLvf#+$1AQ1Mqka za@c^|^<IW49zkV9)T@~(?k4G=OWRTAC*k7(I4?~CUy=+PLxANk<Z=j-rok6dmw@IN zlfrYVlHv1yptiJIF><*A9$SF+Z&Gp%N+Tdgqq-!yTULR}El|CQuWo_4fpA~O%OEM! z3FPmRWDl=`q;R)N(A+1Y?7`7y&I4Vz5e9CHML2sw+mEn|><PD3L1QxDbPQ@ggW?}r zHh}#NF7wGx->^A8{CNR1eh!(}gN$k6Z<i5QS3}~_(>*F93e-0soNkaV+k)uz2?ve8 z29Azd1)HWN1*e0LGDa@nC@3Frj#+`)94W4lwmsz1FRv=3`B&8WN8-lGGC-Hyq&Pc4 zX{51a<gy8r?sF_lyj=qE&NW8ndFJ6QCygOv7SM2l9|w)iUm$ak`-Twzdg4AB+Nh!c zREAJ;gm8qjXS#PKq`wzo><hnG4Sb|931eT-x&wTCG301i;^vkieF$*;g2wgWeQ-Q& zN$7ExptU%la@iB!@5a@h1hqRs<ubUf2p(rLgpLD&%0ft=5~(kOb6pDZyacpeo0ptx zX_yRa4@2t&(3lrwya_y3iPuk&MwZ1s;fC2hA-?JGaS>-jNPh^;T%@|jKQi19G&X_n zvOG|~iYUJz+<<MI8`9PTr89UN$Q{}baL+M{itsh_bSr`T(bL%pJT3wWYf!m~F%DH3 z8Ib~ZKUhs(WJyxEWj1(h4qhgM;w1_^{^Fkrzi<*X_eIKB6{yc=fIL=%QisF)K3Mzk z(EciH{ICM4|ADiefmC0h))PMA&~Y+k|GAZCV(sUE%OH^d5pC`$cgvDc53jOh4_}ON zCD@pTXBK>155wQXd5kJ0!U=Ri*<kOtV8qFA?XQFyS(Zda1m%O){CRrhl%+&?rl&;s z<s|3%rl%O?6el@5fyQCVqKr%nQgcH=YnHM-L6`SM_!&^rU%}VjCa!%5u7gSjYW^WK z7gT0=<wP0>g8Oce`V{XR&+shUk^1z6#;1_mP@qdSp>rt6bvyOvBT)NR(76Rf8wApq zgqHW9{*$v8V*ChJpM&~Pi25fx$;dD;IoGlrbTmG^js=ZxJ9|OLFF@m5Sn5IKu!4_k zAnFb9I39egdg#tW48bxU5$B-GNfC21!)Pu7Qnp7%IF%=Xu9ks}LFFY^I%Ob^q<4c{ z@!;;4k>p;H85!<Z<Ov#or(`YyJT^snxd>`=g091f%C#&@aSyA6wGEN_0nl+16N3E` z(3q5`J7}!NFgq$dDkCMl0yH*CuwR1G{>z1qgJG^m2eof9d_ZIGMur8+#(uDI9nk&* z@O(X?ahX7)in3&*Fvz9Cc;|AUZU9}00WUYOwvRz$QjoE@2&c-#aKnt`yc}ZM$T-I0 zAai7>WA@m_)j{*VpgA>9Gw4{jVX`}D+zxcr0eGC*5*!xLei%}JiHNx`r;x~qs2opM zzkJBrGC%x!pmRvD@hJ!mzOWg#<~}$o+!S=RlzUPhxQ~Q%dAei1cLel`6XU3o08o1= z!q+?{*R9gi%`!hA3^dklk`14K39raW3J)tyae?YF@`YTBl4DsF6<(3+lVh2c=24NB z=u!gif1|Hk#<<AY1A5sxX#CYUC?C|fLm5NJ28A<dpNo@M5Y(Ue+E>)SHYE%+&JW5% zg!;DzpleeIxeYWP8xah-tQ={4CEeRO2Nvc=Ng;-ydDSY|wK9n=kZWbUVC(Bc!-}KA z4MB6&Fg;n2crr~(HVP|_$}~-jG_J6SFiMB?h0!i@C$0?&>Mw(?p32CH3`g2)0!`1L zaRuVXj{S<0jQv1k1mu-N;5E#sbNtW?tg{m%{7Mod{6N>*n1ROpAZ00X9~sith>Y+m zhzvH&2VF516%N003^X5|11oPqc^-S7^>N8DBz(<Rq6_Led~D-J5cidrq`2o8fY&X7 z``FMmfsk=N@cah;F=<fw;+PH_zxIS(QRs#gMo9BEu(e^3c06b-8(cOFR2fhX&Eudk zp(^m&o7`kjy@s++Da<IN473);6UTK&sC~N>P+mw+G4?7;%1zFI`ZGBx&!BiTk6{_7 zL7vlw)%Bx!EFG3lkm;cCpn?>{emG+5;Q>v1;C)}vJ(tPGL6u2Hrg_jjhqMkQB|pi? zvOKxc4M$rHWqpq^XkE0YM+(?1Se}e<H?@q2FicL$H7twr2rG^XHqA-(09~OPROOQg zy=E=bG%dv_#~{(o&mcKBr##s`EE_c5l;YuK7!_7gniw9L?(GiOpPytL2%lpBm6a*s z6*)e+8D%NXrWuh&emTh=f%%XzM94Y?G&SJ%De{_HPtZD&h_C|C+OY^{FQb(3P|zAv z1D^=5oFsS4j3{TrjAVCEdojB-IXA2l(oXUOT`vhX%O@hTBq}5)%iqPZ$~OeGzq33Y zVP}{L`06VU-+~D6+E~Nnq&&mqq@0RU$hB4$Wj>YY*b;ITmRpKjV2+bhph0nZP_|`2 zm}^)tM2};skFiNvN?urwPk2QcxbDrgEKUsf1oaI{KzmM8+(B#AElZN!bBd!PJoQrz zL2KSX>)i^HJ##^AP}h=_Ov4=ia9<N&7vBnhxAM%iU{{>xCWG1x;h;4a;A?gD!F_=c zLxZSr!}26|H-o6)sDh;2pqx|}gL2Pcld|O8F!(-XA0xM_WTP;H<VwrJ<Vs7(8VVy* z(AtkGA7iJCWMjYbBx5fF9|LGR4tk9)#IH`EeuH6>duV!Mcwl-!u%m&mVMVD=r3E~U zJ>C8CQ^HM)k}Dl8JzX5Z*X|~TyOk${)}0yqX8LD(IR%EgIr$s7IRzSwUJEuF2BYa< zG%xs#mItAuVGuYP22R603_LT-Gn0)h4U=>Iaza7lr_P>co|#^jN}ASOT>4sCTKWpL znmSziS_&p6L-Fd%;?$hfWTY!xAjhs_UO!o$nNpGgxpu(Nz(5s#;AKo6=*AC)XwdD8 z@g*8DO7H{PHDh%Yj5I-qPeIHKO3h12Epp2P9Sl4)jsZ$bGc_|wv@jd6V}Jswe+&?` zDejvIx-~ac-#<Jmb4VWj1HJ(}EGq^3HVUk_-bXll87GDZ86>)arWl=)J+oZPeVtLZ zbb*JIq0=IeuB>wgsLO*mA}BK_#mCvP64XUZ3$DO5{G9^YVuYm|2kHWXw)s~2<X9Rf zMg--D8V6M-MmUv6fx9Q*?JGGE?xx@+<Ouy4Whu_EW#;fMO=+ULrGZbbTUMk|Sb2(b zI;4vT-fENq>-Ip^fV*t)ZZBx~Avrg!A|*VhGAcL&wEfF4D%cRzH7-fc4J%GEa?AD! zcPmc>4UGkxRz`ukvY_qZpkr+i-M`$ZtWYCAcUKcX&@_%S!d>tqqADTF>Oo-v!V&JK z;I1iVm(`-o2ih$QGYE4Ib#-$Iu5@w_F|Z5`3Ik1-Sd@7>o0O$xT7tXR;BK{hSf!6q zML}eyB~mvMbOe%Nd181)PI8u|d4#hUWSLS<c_wr?*T^S4D%US0(jYP<-6+D@%M#Sx z#9=OIx*;bLv@I;tv@p5K5<Hy~5D}D<6ya11Iu6Jy7qVqLAjC1lC)2VrD#EWUCBiE! zD#Eu6v}HIdBB;v8sG!Qn2(ry9DL1S%#lsggJyi_ao&(8)py?coGAuV&8=!Y#2lVD@ z(r$q^#a9)^$Csxj6(lBS$EQ{l<QJ6`$H(g^AOwq23rjPLQsd(_6{@+oluC<J6^cuW zGLuV`thrLl5_2?^{FAa$lS}kcQqwZ?QUi+e3sQ?pDm4%$AQ>B@6d#{j?3<rb3OWo@ zN1<8)da69=<Vl5EP3xFEeJzEI#G>5%yh_l0V);cS3L2n$2f?>bY3XBgm|hAl%R-BC zK$QjT;7<)rg=*++G76zZIo8y-(4(ZJ0GEv*IT~0Qlv<o$T9llM%UYN`+-k*`JOwR< zveH!DBB)k{GDAIMJ!7zVMoCFQv6a4ldS*#RX%gt_Fa3hV^wjLk5`APXV6{Q1IjM=o zsVNGjpr(XENk*!IuV;vYPiAszUU8}(NR56>9w<t+Kx~D8qWs*<;?!b&M{R|I{G7@( z&}~~~hI)p2CJGu@EKVv)%q=cS&CJs;0P6%@iKGQKu`IDjA;>k@-zUt~MZs3Vz&a)m zBIM=j90C?HgbD??`nh=exhp8xDi~RV90N-XFxRLUYNS@ACYP4v7lE&91GS(O6iPBO zi}gSarBnr51*jR;NK)Wrt6&TEIVjnuAWNpCrll4YrKTv@Dn!SEEd?D_3UVOCA0RV9 z7Qm%SiYk$BV1v0w1MXIh3b5Ni#=tPtC_PXl=9HysRDd!MOtMx-0ihS-FPIdFM(73Q zT#X_WtuRilLULkBa)yFNDvI4`dQ;)bWAbW2;R}sq6+^wERFLTkwpg7~lv+|+l&6rF zT8<PENN!Fo&d(`J)lq;Lg5m;*5W>~qVxtxun8=oc4M4FS5r`Do4mKDO-dL?q%*jEv zIx#0lBeNv6C^0Dq5t<Y@0+g1L^GoweK#3m|NX4Z&AU0BR1I07w%0Za5dO4|i=_MHo z(5uYhcY%P^DJZ~FQBf+$Bv_n+<iL>%Vt_C_f}rY)G%``52BZe+Ex1xFX&0glWK(oz ztb(mV1vK}7#9<iXJ#AYBP)>&AJeU-S26+vl1mqz!Phz+UqyvPZ&ep*6CP)^9!N(qh z7!V9fRuC5WGAD#P((;QGG(gdi35o)1g-it-1vFQH1VQe{a1BN(g{O_^%vepml8n?m zkPAT>02IKW_yy%8v{(T-3v1ddN=ycoFz^Tf@!>YW9RrOfaxx&D{7#&|L2*!^VhAdx z!Iea+ilJUXQGQ82==KJ1p-=!Wi@>=SIZwjU0-{s^8wD{$!4_Nvfc1j{8kF2%C0}t# zVo54EA3-Yyc$mUeR)A%p>QQ7tDoQen^2@;`Ur1#^s%ueEevyVcG)*WJr<RoDq^2m8 zXO?6rWR?`C=A`MVqs2TT6@pw0x-kx1*Q6!p6sN*n47LfiUI7V#bbt~VDAy^dsVP)M ztAn`eh<Xa73WPyku24|4wN(IJHVRS;3eo&D1&Hs|^TEwNbtDOpL13S&!_uBQhUY;h zgVgDPoUKuTTu&h)0;C8TgPfuW(vX^h)j*h9XozF46Jd%#G+HhP34t)g3Q*h^m7<0u zNEU=^ksXX#v4WI<FzF5kWpG551~LN~6X{-LEg&|ycmOewF(l)omAFV2;HdXOMiBBA zBK*PLfwv7ndO;Y;77!Q1B`9?b%&=lec7wO~kX#N^0&9&S*CQ~wy!?{Pv`P(F7OIWO z1C{A9d5}^8<WAH=0VJYPl$uzap9fECpiBcb50p4EGK=Ba3=||#DOh{a7T#in8vybx zNF~Hva2|nbLQw)zM#a(rY6Z+)3PG-r<}scSgg6k30(`*;kwXqfhzO{^1u3iW1Yllj zMM+3zayC+97bQ$U!G`J)P?3bK<OPLZc}8YVs)7bg1FR(uZTz4Z3{nolAh*HPDcCAt zXf4jjOe@hq+&u)+gTVQDpbl0}8Mp+7853;)yX6d_5W)f}2c<An<%YPFL+dC7TLrk$ zM!4023`SOJj9I9IT!Gfx013e`W?+L_SFoNI*5E_d3aubOo&;C7Dd3b&pf-RR0HUG( z)j*g4sV6`kOmH_#2OdA*Jg*7M)*#L3xK<%Gr#Kb4V}-5)#D`f4i+6~*NI3wc2pOXl zVlXMFZMZ@ZlJiIjK~QXhl8LRY0+}HQF@X*t2(k#C=g1B~NKpX`PY{i#DgsG^Ftjs> zQPqIt&|(US3uS`qM?`f1YL_6FVjw<JQq)lZB}<TBk(wc((gT`w(5nVW^#*R}L0fk! zhDfCxG~vNpxyT6>Y9eS%4Lp*dS5R7<p%D$TACj?<-2yTJEDB<PoEM9nD_};!iezZY zM)NwPtB>4O2iXNO49Txh4}pd*Ae|JXY>A}Y8dk;XYoUz$C?uvN7L=qGAqIv(nFU&A zKtl*pV8G2qv>(ee^HTE5_29}7qXr=BKm!l3HYZHRKPd}7vZJE_x>_=|q6C})Aqfp+ zIc%gwAv3SIBrz{JH9rle9jp?Ria;3bWoSq$*ebxZ!NL-wpg~iQ)X9Q7Ne?utsR45q zEXLq1Ag~EgSp{2|^I?9427`Z6mLA$j1H7Y$>Sd58pwWlq7*G&FjRKhi*Q<%p46+g2 z*nz48SqV+K$XP`Loa+(VV2K&Oolt`ynh9D8N{uLXLK-WiTM9A=*2F{T#_ChFt~5M^ z5ZZ|JX<~9JTr)PGg3A#^Cl(aUXuVi)f<f^=G<m>ND$X>66#F1GaGw@{voVU9X{9-! zVcFCaSYZOq|A;&TR{`qz!8s7usi}dx&3foA133V$6l@>V7O*xAkfY#wV3`V(r$PEa z`4m#hr>20cgt5U|K>{ecVbKB72~(+H3mryGO#y4dZy)v~3$_GW0)RtJ1MVNBkkUc* zK2ktq7O*hafuj!*yf9&q&tPn@t3d)_S6~ZVm`bX973^*enDLspJ(!l6mza}N369*n z<dV$%JOvF<e;Ra|J(3rpp$qm1xPFBf+t5+~IRZhE2r~oHi~;F`m6ae_5QZ8FE`gwl z2P9mJ(p5+8(1GMZm}tYHr5|)m8&-HA+Xjh2klP>)3RvYAT9TQQSyBlf1TRKZf1o^H zl$xest56Nn1L9^R7W<dy!6wnbv6-faDhMu(L28Rq)4=0i;6Y!IKygkcc;pW(p$Fzc zXF*a@lS<P;Q3D+!0;$d`$xP0M8<v^pRFq#{oLU5G#Z(r6Dndw=3mySdN7Tr09UzZ^ zj4Xx4c2Q~?IHExT3$h?NKQAp4WNT4s8Yp+CWu`*|3?vKd_d)##<ARL`nE-a4f~^9Q z1V|X>6Nuq@5N=J4f+AF)I5Q_TuLPd);Hj%Tu_#X?w>TZ{LQt^+ZF?l==N0GYq@w#2 zl;ObU!}Wk109C99Hc&k}tTYwW0R+v!DS(7xtrXN1v=u-$K|Ko^aR8NNaHoK;jwjJA zSe<|{2$xl`z|%-h(osk*L5#3L^9(qU;gX<GLvd+IQD&}2aS39a3#zTSq)5RYG!3j* zlv<Djs@nA9Vq%K5YCwdFe!7l=y1J%<m4doDRwG^WQb4BaC?sbj78QfN2FX33I02ch zrUsD$w+7)!53CRr1t5%Y3BnCAF~!;{`e4fu0fI1D5o9ztslcrTnFPWJ)6g{{WZ?FI z8c;#0>8=$88X7T5(J@L2+EC|eE5s<pYOBO3X==h;0dCO2qrN2HC%-(k2;_UXZxA*> z!xXB>Ik7lZ16L^KhZYnNHV3Q-i#eeDms#vsRFnuRufen)ln>5-aQ9{w2bUCO=B0zm zW^@NbGf!D!4mg_BL8}7t(%~_Vl8`cs-Jrz;F($#RhnocxP{=HXEH=={Ps&1fPkvGs zI0vJRR)d5=gBY;!YK#<_Ssaj)n3;#$U{p)h)D$2}_0m&I0$>vj{%H^=+1kQnky~%5 zi6FDsDJMS(q8>U82TcReAO%T-y@FKif(j#$SCBd?AZ1v51G>20C9xzCj|DI#L|6h- zieXVXXqF0G=Yr~4Xmbv!DFmv=A$bp!+Mq2b)CMkU^B<h@K$#I#3M3Y#m*%GCl@voq z?i6ekjNlOtQUnb#sJS?DEmRhFdkw=^`2{7J`FX_}X?Z#d`AJzi3i$;k$R!krt6&Qj zRj8?f)Y}kWf?SQ1%s~n@QCtiXfog@cWk6{dhr@GIi_%jy((=F!KaFaYvRo^Ob5x)X zv;sS!R#Qg-<kD(%VGMtzCMIWq5`+$9k`i^X11N$rbriBwD^cPAS|Wh7q51?o|A#d1 znV*yejV5b_Ol@rxUxVTbJTF?3Uj+AdbY?6#c)@fgsLcdY2Ewp`8Ay*B5~h&shQk@z zsg(+ud7!|-v^Gsa1GVV{cL3P4sGb7Z4#Jp@%}%X^Iv2vqPOU_CGDs8D*+@)qmIv{n z2{k_{3l=G$;7%+q&P>l!fR`3feoc)+JcJ3333#~&Ne?B7Md_)?Ll|I_iqeY}Y!$$* zJ&6C{c}GXV5aduu`b;cJFV;)TFLDK?1h~N(ki|nNVHb~Vn~nlRg^mJfi5AE>kf*?- zM-X$N{)4y;=0&*q(B;R)8W4G~JrI4=bvwjNkki146J$6vWk8${wiqN0!=R)EaZ@xX zR>4&m_Lc@r2a0NFsDSlC^Ds;uYFdCejOg%!#y+is3+7g=QB86rV>LxbAtg1n03Pl{ zL<=ZNKzcw`od#;H42eW=XlsJXU0BhCERLC-K?dS6M@>yZ5mg!~iZM+Cg&C3pSg#Ev z48urK4-$gd4{lyT^BL3!5St+qNJbK4C%Cf*G8~4{>_mwRuywE;4CR1A7#71IGmz#j zkU|sOGQgc5kQ@yvd%z12!R9071*pSd-5*$gI4D2AL?NIkH7&D3A*3iVuQ)BgC>O0y z3{rwJ77eMDRa6Xh!2LmRs)FP!P);u`0xh-z^>s9$)uW0EQppF2253VTp+K)FKfgp1 zl-LyY;~>iq?X5KJV`B96^-5BUOEgN0a!_LgVh^ZO1nR+{nWUqjuCK1CpberFv=vH= za-d;>UK2oMKplR>%E-Xd)S^m-fW)H2+|-iPB3uDe2v$Z~$bbz6)ew+sR4+TVvREUu zC`S+Ke!T*at;L!;3NX{FYjr@*hxWa(1}UUD0gn}^8K8zBY%l=YG6dC?pq3ygrGYRg zE=r4XAdb?@%u7kF@K4hKs{%FBbq&E$3sMQgU{`_DmVzy0wJ<bXK?-1L43wZD=>e=< z!4|Z>7wRevun<B8$O#Z3WQT#`R@+tq6zOnhsoSe-D%jd8=o%{6E2!J6gL<@T;5Y{B zhq{B9_zey6Q3y%REyzhMNmVE_(lgLABe3GNv?xcn1gZnE?iF6IrdAXr=B0pKtD^vk zKplm$#G*{l0z>5XDkyuD<Q9PPM?qpyaVkiMrVeOjbz)u$Xm(KnB&!EC4q_5&P@$R% z3Um;Li-KpS^b!jSaw<W~;UEssftXqb>fPfAC5Vlwpmnq00EGJt;!L>LL2(3$S&&yi zYs(W$@{2&}Ia*y?T}MG(8ARxT2z?M?4I=D8gqnIRQkbBw#f3InpuI1shl;HbL8t?< z6C?w1sTF(x4;pyzsT+_BLF!-_YBtOV@L>b}n3!sf=(w1e>X?|?SZ&RinA#d-K4{nk z9ts-q;7BS;EiTT?&(l%J0XIu?FmeaTQc!|Uttf!11uH?g9;5(<kwXxayGwI&Kp~V< znhFk2?5hPpnn5<egC3qe5O(T;267xrGz>H~!4(IVYz#66hG9m5XVPHqMwkIjF)-E0 zG{Q<$y~U+T#U(`=;6fi+J&X-bVlWOejWAHJxF9F9L_=RkKV1_`I~kVX!NH4c0x}yE zz$Li_3bqRR8qsl9F)>=PTACX6R#qA@F)7-bH5xH7TAG^n`g))VM0j=q<u_zgklEm3 zv=}v$f#OR?Aw9JuED^+nB}7nPHMIzoJHXj5+AtPE8^wZJOeMJm(Z;cO*Gs^>2(eBB zq{9$pDjC^fNG)1qVGtWRwScNucyxmn?x<@+=5(>AP>^;|AQq>BilUNy&}g)}4rm+* zw|W%oK$Qr%*hb3QAVbkHiUn#Q3(!@-_(<&|RF5b_JOWdPjYhTwrWsG_#+gb%W<!e= z(D+$tDtuT36r=_U_6ji5K~)sEhJq%Xto+P84Y)IKr8KA?@q`)Fc4Sl4bx_u&g4_th zSUrN@5~u~KdCB=Hpb_=dqO#N!4Op><CD5Q%Kio=Wzd_|dZ7i@;;KeH5Op~2jsiTma zpOTrDnF<;5h9o*rf&_aUF%J)JkAMcdKx^1hs}@jl%q(^RZ-z>N#1^=b2{8c_U!bvZ zq@V_AfDZgY)PU14bTk#5bs^I+NRoM_xk;%->ewZd^7C_26Z0@rC)5B)BTBC%AKD@Y z1suequ&@NV2o?^Y3=C(3U9W{{GDst;>5u{$G;(YJZlDyWdghgAzzot+Ff_m@ioh`i zG6{wui}b-|p9UmdfD1egSXzhHT{;Sx#onov{soZ24=$~#U=JG7Qm_KAUq-PGds0O4 zHaHS+con1&+<AiynnR-*XWak}8@;s5oRZWc4S3?fUd`l`B6f(tLIRnlU8o@20xsT> z1wd@<!3L56VdVY=*u&WTmyI)wKt_N979Kp1K#k6hMeT%v)S+V{!z4O8R!1QlB_*Jn z1T8r*gh81ELl8CB;0_&70Rm|jfP3$#+CZj){5@a^swB67U>?I6W<x8Tpm{Yk$kRDL zw;(?+HLpYif4Tt05}IzTg;8{NEK<peGuS}Jk(ku5ry3kZAI@BcnNv^$A+-`bgkcMs z!v^^m+<pMn^jI?hVw4`F7P`R<R7n^R<p7W-{1%{k8Y#q}Ow2q7%1W>b0z9azZjD)A z5fKW={)O5CG8$a4LCgj3e1X?C5HU4yos4R~y*g$AMuY=EBT2R>Ei4?)zzAw&!_`qu zfP^Q!riC`TAQ~{n?$JtOxIIu^ke~p?Hhi2A)L1|WgC=6J7>d2FhBk<xW}}9nHI`7t z9?}@r;cYj7hn=cH6V;&n2ywWr0$P-6W3e36^tV@lm>rZ_3~8%^^@HZ?A>t_c3L*!d z(*aopN=Y!wL3|K~`W%a9uu5$Ob#SHxn*?nRLlXov=#UISQ3TzW3vUBMY=Ao(`|=K0 zZ&*V$+CbORQP(X|H!Zf>s8$oyJI+lkKw8IKkXQtnlL9#agh9Sj)JN6`9Z&_UgeN1A zQV<4-f_n4dmVaoFrv^v>CHp~AEl4dikU%P6VW6o8DMG*r9h|aZBh4s-ZW=*u&I)Fx z<_4O$23KJNHYjVFpo64fM?;(es?6a%WpL9UHd+c9D1wcb>XjDdfV$-1`DEx&B&fv- z8>53K2Do8ZMjgOWj}*TtsX3`7si3)E&@467RB&em9vpCUp<#t>xH&krs0_4J3^XYN z3MHu5GxO3B1M%?m5?Yi48Z`tr;}dhy2Nyvb6hTYIGBS%n-4W2(F*M9nz>Cwsp-=)F z=Z8BElt$o-OE3o7QB0^VEy}S14M@XWU<DoV1a<E~i2@wyAO?yy$RsAnJxGJyItn27 z>cOVV;qikqUjR}McQLj((~QKtlpK^UBFJ_WFTs?66AnlghM^MB5o)+K(NJ;F7#vI~ z++QF8i0SZEG*IQ3H4EHCP%=(TF3B&d)PO1mP2oc4TVUZ(mW!6rAZZ-js)I10sR(W? zEO|pi4D3dDhAYZ}Cr!|S58$I3K%ohZ7|@g%#8hyUs;fgsSwRyqkX{;805tfMTWqCJ z4VpXxrx|1`;BG-$N(r(BE)KE>nxs>$6ksgq1cw!5o<m0gVk?LQB_tFBz{8>HFpZ$W zWblALhyhX$-7E`plPkF7Dpp7YO*%l*CU_DD(uD`-C{So9IDoySPz~uQ)q>V6fW+aU z1eOL_4bOVuH4mWiWk{%jiXOP4=vW<v)Z*mC0?=M>NSTgY<$yyClyD##^b%7*$59|m z1`l?C>j`iYg;)SmkCxCNO2BGBvM>x5hE2%8H&=pW!6^d70AY|}P^Hj)#5hd?uN4I8 z0bvwFKx=-XJruBiA=5>$3K0?pkj^5!y$y;{h?j~}i!u{)GOJQS)k<P+F?ihxDA7Zt zp~)K>NRXODO<fZ)Xs>Ey02-JF4O@a57vNxpMSK8gMg<h@K|TtJc`2}?Wim^O6_R27 z3P>6S#WOtqA>%H!pdt+<jvW8RpvXi-5~yHAjs8^7OioIEGI(*6UUE@tVo9oNPAX`r zl!kgDxDJGP3>5Nkbufl+ehTW~LTZj)24n>?q?!PQJqUwl!)z6xvaqTJ)=+{9gHAsI zPjW&mgoY$iWd$<X3T6m2XM+p}uZ&C1&jHK9I12V4l`tM6{H>r1I>7^*$cE$>l|T&0 zFDgM2&&V%^h=Ukt;(3X=sbD=IIS>a)z96wA10)2Nhj9>d5|HM-zB<&IP{kle>4UmT zsX2NuJxFF2rzRF9XMjzFFd@1jY=jr%Vq)wet5!kg!3srCNM$4zL$re!5X~SKl2&CT zjgWW%C4CT%$%Ch(H1v7^G*zynP?ihNjL^t~>p(8$K?xA#7!Zc4gH|Yz<wj+>$kixx zf*zJ;KzRm~Zr~<k&5t??#mV^vkfaIm1*oV?gsxA8E%pGdm(x)w04>&3uvI`^xdD*_ z1r9ieg4_z3qXw<vgIf+MB_NBxK;DAb1yT&s2{sf`I71YoEHwcaV~BzSqzRPA5Do{4 zz%Xd-kuAhipnhC5D2-@9TwYV70JaP^I0+gJ)>crDMV^B|DgHpVD1xm4b+5pI0*^PC zebDkNF$Fr}tOrWUpw?ziX{sLF<uKLIegnv0kW(;B!;B-a5s+|$#w^Gzs5wYk9wdt7 z7NklBSsNtS!Ho>CPhsV0giC&IVrHH~a!zJyUWtN+XI@EaQC@0^f@?)VPJU5pktVn@ z1s9m01X7Vw<P1@Yyd(m2U|DK0qDulzv!GSm&|Ms$ZEuJ)0bPX(4h4wIK)!&Q51J-T zEmwfLEGV_G6tpr#Q%3=s1wgGV=*ngV4de|FATvN1WDaO_AG*x}!~~~MgiSD2#U+U) zrJ(8`bea{aG$^J(Iw7S{PJUtv=9mV^7`PEe1|UN~LNE-CD^!!f8wdy(Wr}GOC_}@{ z1<}wD)PROO==hC-{JfO#%#sX^ij*QKzc@7{wW35vp&H^!D+LH$3$L_6MnOt05DSE1 z1|}wf&VfUYWTcbaKsJCCXlPn1py~%n<rjcY(*Z}EUT$hhMm~6J8-$;pS_10cfSrH{ za!??_tS-sSP0cSwq$ZHFKp12+R1O@q5c8lSsEHk6Fi2B=9w`14Y+)$~Ni9Sg>=!)p z;7G$G4|M|`6$M54>7dmDD2Z1SvX~j<HxLH7r8qS&1s<vCsU=SNDU}-FumY)o<X>=N zhGk%9|Da$6aIQ^GEdVX}g|}}&*&sMHAizH;Bsd<d%vJ%h<w#9UK^=79jdM|IN@`w7 zW@1jUI%ridD9=Xt`hZT(gJ(Ukg&^aSA<ICJGcq_5pfwPpd<R7*+%7EHJijPC6ug2A z)CYhpKgr2YP6Tz_!L1`up%3yf2!kvxN-acJ4@)h0(-YWu(1wBJ{2cHy35dmz(~3Z1 zH8lzlv-Lm?6l5hJKAOuxu7O#bT$Ep2>|d0bo(Wn~3|gp*l&X*wrskG{mLPeAgam*h zAG#Y1kw8IeLBXYn5?5fGK~l&VZa1t1hL^@@c0-41L3*J~aG?+4gW4hB&I2Ud!jcha z&w)ZpVo4(Iv;<l-2=W0^*^4Lgi$NxW_e8*4os^$a3F$l|JP(u0NKH&hEh^T747O;f zJLl(>q~?|Af=+8fYGEUlsPG*kFeAXmgQ{zo05sseg8lu#p^0fLNDFjS08)d(a~?<r zISs<hgt@agwFJ$PItuEb6<L{(M66$-TV7tS3kovb(xMzlUoi#j6Hp`&iVcvPaYsZ} zaXu)`5zd96oCB%DK#3ewjq1TXkdEO2aLWtaBZLGLC{5xHWRS7&RY@p52e}TshR;?3 zbxHyjhM=%juvGy0Q4i8z2OSoKEDH;H)L=sPZ*f6>UNLgx6%?w_R!31PL{<-E5vcxC zuvY-@oPkS}q*jz@fc9~~lQKvIEs=ms1o;wN)j&-oKJ-AkK^PQ@AX5m36=*0gv)HRR zKTiYf8Z6EM8Hnd38MyyI9*2c6q;LhBh*n5|Oe5;F52)v%rb4F}K)R7JJg#7Z(7cM) zQU%GPyA$L%G`C@xh8DNr8VO_;2-kvU0APl~WsvGhc*=o>FKqlBlF&i9q_`xp2y~cZ zaY>P0F6anO4bbk&=o-+{K@EGwn3!r!eb5@tJkW?vwR*I=m4bdOxSL!JV%DnYLyA+7 zbD&Oz7^$YFkeZhg4dz4}#KuCFIfEPk>!!g<U{HPtfVab;JA=_$-=MrzK-2a&s1pND z@!+Ce4{RYQWvaurZL8}jz?kUjoD*|$KwHnj>f^y$L7gz)#F7lXqQtzE{9Fx9#7wQR znWi3O$%=-Nrj7zq>VmiQL4DMs%mUEXVn|ehf_I>M0iY@d>{!q=94Iq@Gb+es$QaVl z2AzP5*_KC|!mR`iC4x>H0=F<J?-qcH8>rQ4Y6_6u<k7JBipA<uNR^AB7A-@9{01A+ z0vD`$MX9;@WvR{?nK>yM#mS&(f)(2!wIGZo6BmOH*o4=zkUR_Nw19$?q>c)@=g^ua zpjBcR{smbAD;SZh9<X90A0sj|$RDt(3D!%17bl3r)<DWY7@9aWszGJGm4Z50i#oU{ z0!f1~cC#Vvk7!W#1D(zai!yj=2GR+NT$o#+Jq`>X7N?ekK)O%xPzJjJv~UiRrC~ae zy^Gwtgv6zStpYr{(S|%B3gB%Skjo%Kdc{S_NM!=7VUA=GR2?XA6l@jLK?T2lR$^Hq zL>zfI1|p)DSX`M0G83(R4VA^yuY;=qXDpPC8KNkG`w)~aKnv<q^HQ)SXmI>N;tjR5 z#@X)z7k+3d5*++kdrGiKg>;oc+aJ`ywE=2*08<4Ws<Bl7TLP&KpkWNpaX4D}PN`}6 zMX9)3mPrtK<X%72R;=zu+ItICrUx+r(#!{?3=l?@gN$H;CK%vp5>{{!az3~Z1r4P9 zvecrY%oIGHfhr`{GcZ>|yA5Ew)YKI8<1_+7LuvvXL!3QoTwHxzLtHgg^fMv#I7|=3 zD(t?7wHd)(h6r7dxw^jKF%eyVs2|kfApspNfdvS1=t1lNWt#y1;1F0|AsA%fjuq}0 zhq#WYlnQDmL6n0=%phB4H9(WSps@mY$09jDH#a{IX+&NT7D&iFW_txxO{K*p`MC<9 z*+(Ru$V#H2Cp5rIHArx1#zJy4D8L{r@DMcAnOHVQfeKiZLK9S|!kq}!2Ri*l1FRB7 zDROMURDxm^q!K#t3vvfY83@CA-XJlE+i>Jc=x_^xwqHdCjYnQHKr8>T4gbK~V<^ca zwJbFcGDZjS9LUQc3`!=DioF;#vj&TOh!CW%N7Vq*qz;iTP6dxaRb+t9I;qG&3}Y%- zDIjw}y*eGxXcI^;I)=1=AQ~WS@EES4k&&^2y@HW}3Dhu%oQ{INzJjN#C3I+1A*nPS z(|I5(Aj&~D<1$*^FJA#VZ~@x42HLc!0dh4$Cumn0$SfobO(if9L}G!7fD<&_tn}0p z$DEuXXcyN5oV$xPG&P}%hty+Y^3+j!wnh2n7>O8UG%Ud388@+@06g}XUk*9ONW%a$ zUtf;sxLT=eYC?p-8{ajG@=+xfv=t2DBb6X4Kp0$gq6R2p=(-rvi-%TTVC5(c9$4A| zw_s2bAM#jqMv)#^0p?gVC~w2efDOQ61O~DqNTC8wF6!>CA*l5)$bBFTiqgcC6jxCC z_sJ|SNzF?w(olz)k5rb!gg|i$(g?%Qo-xQ`Q0?L$98wby8bVyH0y6{Th|&Vkur_F! z0R?VB#0|VE0oegEpQvGc&<dAQ@KK-$lR!R$g*&XdiJn_Q7C_~Y+Kf;U<P?G2HbpiV zmViM+grGhdya)jaz={!!*algPq7!sZ9k^wNm@=s>03AdQ3Iz~G2^M4rppBk`dc81D zCnE;cvAO_Vt1bAX2YkMUS5Zi{D2CB6>yaxb^$1<)IDTr1E@*lPw4w%D<3J@)n(`># zMK=)hEDPu?C8!F-a1JP}i&IOWwm`}%aJ7o9vIJ!kL<$0F#nZZnNP}}dO4A+`Umy&T z$87q8<UklA4^3=1O(1zL2Gn4I*W!Mlg&(Msr+N7)sgU+MN?`^KWpMaGf&f&9!khVs zTb)1(!S_OGn3^NP3p(Bes<}y=Y=ta20hyXwT%w1izXoy#sBeUnL*a8$NU0U13|4f) zN17o5XsVzo6SP{a7T&DDTINGlVp*VxFUdi5!TZr*wMcG2tBxRH3|VSf4f3cJcpOSc z0pfToD6OLaHP;HpsD)k`0`2dkMQ1VO3=T+Kg3=oZg8~Uw@*ssLL<rI@0<pn^D+Jp% zV3m+|g>!yNDpI2vWEBiU6hN9R;1&duHs93Z;>7e+vRfozqoBb;OgkIqCXhbR*gd@6 zfu{ux(t{RbAR%lG2t-)dBD)4$1c25}B5omrMwtdo3SRDmrm{h~3S<S?R@5H9Q(|!{ zG;^coYAiV#`M6Ms%OJ5|=mA;A3hF>bgNheu*%%Az02U)l#$x6UP~D>lpOJxC0WLK_ zP6lD9AZP_eX%5C=81Qi`h>KxeDHIdPD@;Ik!%YWov<4dr@j6HnhM|EEN&hha>J{V{ zfTtue)r0(uG|B+gj@r?NnGK?$3Ls+)(9i&dEx3k<j$t4b2OupV3~iBNnX3TFg3g!( z9XsfmSC*KQnWB&hS|bCQZCA)oQvi=<flnmV05S8^V9N|Z+j>A(#O0P2mnbBqDkQ?s zGXR}dh{YKo%iw)P5C<8fbrewQX^=X2_=8P=WiuS{fEKQB)i{)c%r8oXCs4i8Jje|V zaD6C6I7l@JLqio}7j%&qTnCXhVYWD+Q4H1(vIQH4*`i>JI`fBIG{Ds0H3(!lG)qA3 z#YkGvP7I{^2jSp|T99Gjf(67t$6yJ}3;<GwGI<F~&EQdVP*H_lJ;cFS9D$K$K&C^o zE1GHym2g!ED{B!4azk~)bwLUky;AT906byB7R954cu^|6P=qWvhK4i9dm!gQ3Skfn z;w=S;*`V1oaH4~oj#Qk&N;X7TfqEYhmxBsoNVN|sgut`nP=T5n1r7MB6$N|HkORav z(1vDs+YRJ0h*_|T2%;TkE4U8~4hq;{F=)(B0n+}3tWAb5r-KS2w;!NF8qm5G9#|lU zgGNokTRcDvu=gPj0de(m6G5k7fR8nXh=NBBpvEAld~l;kM*-Sqhb^H7nW16`9R){i zrb906gv12Yd5{$}pz;nhScdHWjKpFEuy(l1p%Is!TH=?On+iDzJU6ib<^tF}8azrd ztw>J=P0qrj8pK6d0r4y-cycm}LFzz00fk014jVxmJ|LQ)E(7bcR{&9volT$#Wzf_f zekVDiUN{IDn!)aOf=&VzAK;zJxI(!YH3&dla1g-yQlJzL$|Z1{^74yv!K?7WfsP|6 zK-PlO0cg@G8r((%rw&a}7~ygXWTXf=&Y>bG4no@GR|F1P=$0koVg^)cfZ_w5h(LY= z2|x-7B$tA+BS;cj+aT59;Gn?KyoB#^!Axw>2~nhZ1Bi%<AvA8GRzO4{r_bjm7T`;5 zxIz+Q1X?;m2x@3TtpfW5DSzWK4_aFyM-5B}elR@bIC;k+#If9<&;w;3kS(aC3rGfB zih!g*5r<rifMNrdhoSC-tB1(JGc0UvH~cDK*!(7>HU*jPSd<P;$`CUl&IFw)2Pu6( zMuY1}h~MEx!xA=9fdX|5G;>259*{HGauW+c`%F?wlT(p*Qx>I`=_n+Z7C}xR0oeq? zQ2nrp2XHn44-LXZAUf>9Iu)!G3W`$8U=^Vb<Nyp%`2iZgg1Z(qQ$mb{XB1GH*N=`% z)U7hmwTy|;RaQ||Q`gegi;0PgPpGMjh0QvFwV`ATtQVNUnya9Lq7suqN8DxRLHn-? zX_=`xDc~9aKKKK!v5@@@I*1%>70eeX)fsFE8nrJ36GcveFfk2K2OCr+qaIlg8-z#$ z?cRijA1F0KD=u&?od)YIBFPuS)^3B2x`%KuWI<hDr~wcaAOZAx6XF2GW*ksz)XUEX z9kK|q!p>H~$iM(J#t1P)!A8LtzN!PP8Y*rJn?$Io0pE`d3QZ(=kmYbw!JL{J$a(E> zg$PfBhI6206TB$^^&i+sP+%(9f`==>9s(HwN<i=(o*)H~juND<11W&(1lx|L8(M%u z3;`W<4URCJMu1eHI{;({LO;k7Br`ygFpS}loctt&a;QH+ilMz8cySF&Oi1mIq@4UD z<n#vSBbH`BvoW|44YwBLcu>UwDNL{!3R;?gY$%vdz)+9}@EQu5utzo&%*SIW$WpB9 z6k%;P&?*7Yj^yH0$eKauh2s!kK?^>#JK{0@s-vI|TKKCD9(01FmGsmSq{H_>Yei9t z8)%TiLlYWbwK|}(4isy}DEdKFFgP{B+9)6;aLtG`1QG_9Lf~>9X)_flMnQoKNlY+P zpsoOA6cWchi@?)npiz?4as{`{oYWw&0NNM?M3o+hax6wz5A`g_u^_3`B0cy(HN2Qd z#3@J_2*bJxP%V(-A3%u(BniThI0Lgl!r*X#n+G|*9^nSGAOHof9=I(IJKYn!v<9{c z7u3kZq6C!s)M1AQ;wa<6<0j}uJXjDp9YaU4(08yw(h_n+L)+9KUxI}ptDeB4!SF&1 zy08EwkGjbXTCIaL!-i)|pm#DrH#@7S7(y3NfV>Qu!Gkygnxa5@LFJPoq!R)wZIKT6 zhZebzQV*mYgh6hB)j-fx167A&4k+G0%8?2ya8MzYRgf`u<gkN^z?*u|R1Ml91F{xm zCM0P<0~ysY(Do2C)4)RL#(|6ik1T`Y864D@#z6)|z$4MfMj{J?Gaz!Tz>5W_vq6~= zR>D9PL*o+>MWDC=EgOLxG5~fNBoH(-Asdq*{)M$RkPl7(_3<<F(iQSjOUm<$vSD)# zXq{?je_vmJzjzN<M;F(iU{LB(cT5J2*QtY6<P{X;z!vF)a)6EksFc+QZxqx~(9+jZ z2U!nlfPf0ucxQjV5LdsD_>jl|SFlOY34X}V1T5xRgPL2#sU^0hC26`AV8f6~GSCbW z_G|*O5p+-jw3h@6B*@T$f-Q8|Lj$BlPX%&@03>O{k9)@qVTfX=xDI5=4U`8;R}lRm zC+Q&#Y0~cW1$3LJb^rq;kU+yt@F6CoQW{*8g7YQ9)6nD!(Wn7Qwcxyp968WA9(XAX zx*#61VgXeCLP8H@F4QncMk!7OwH@shU_1pY*zJa(`{f{)dLaw~XGM@1wa7gym|k%1 zLf8W;xnNSrw<m(HGY6{$nFPb&`3)4CU^4Ik0SQ1IkElTr_iaH2GeLm{QV1?W!CJxb z2u(+zJORouF?nE7Scz&23L%iLg3=Nz@Kz6$oCKY(DgbXB$H-?eS<pIs+?pZXWZd$Q zg=kg^sHFka>}2qQGthc7*u|M(=ObkUkjEg48Lbo`H0G=zsQf6ff~>>T0aFl;jsj@o zj}@4N%^kv~4nc#aMa5PMpsjSEfJ3(zJT;^au@N*?52@-vEU;}b28ae(0-_;-4q|}} zg`SiVt)8A*0uqCS6Nm*;2cjVc#bTLSg;)leFN3w^Kn{$COMu3S5E%k|(hM{uz;uCP z9fY9?3sk;q5U2yd#z3rqO}VP57(yxokWrv;ipc{fz?i&fbx^Va`J<o|?7;$1I#H*Z zcR(#AtW_MyB@}xKve5xD&5Xl?*eX77!c0sq0abpW#Ur4b*+bGwa}+=aVPz(#BGrKK z*n!=V2AST5G_`aTK!)V!fzITBA0-biIv~Xij#>!RdIev%2E8^9q8MtFf~^8Heyc$} z08lW2FwA;As4{5I14%(eAf|xI7YGYH(gc-5E)F3=kYOPtw<1hZuvLH_JyeQuZV|$1 zkYi$sHEWS$7ZxB0SAdL#`4_&903N8=TJ|NSMR^L)nmMDSqySWRgK~`~s4^+mfH@z2 zM+|s^0AvjagVHvbMz{c)$Y72DHQ7L!5$*=itwzYEqMr|i$dD*e1C4r3*qKhC60R1K z9^utcad~D*a)yEi_~shO;eu!(o(!4>H?jgb2;^)Sh9obLeMRZT(FUO5W0(|(24yOk zq#;NW65}8#5KbyeO@!Qw2;zY-*cw9&Yd}>X(waHQvTVf4IfT!l{Q%T<Jjh@WMs^K` zQ=!8kNWBe^77!-jM{wN;QU}90d}V;)D@=vZMjeJq$UvXEYehk7a!G26LTQ0QNxp)S z0z7RgL_=H&iPu;ih4lOq@a>35F{+@gppMXiv637q5TOADqM!{bBuR)xpjZW8tOQ;P zjv)<8Y#6B<p%Rw9(F+Vv`h+Dj@PI@$tcn2l>|kY0abj7jl>$NzygD8x2|hy#Sr)Xa z6DC<&kdjz}sy8%59VQFe--N6evicvc08+7HQvh-`C|@Hk8}S6)b)A!=P>@rao|%W} zP{Z>yL_#ABdJ-`tdw^0qL_!bTMa{{9-V6*&VUUsn8a43r2f8H`Y!W<Mhn1#+Mpq$w zouSG>V&Kxs7ThsF5``5!3bqQcI6;zywiHpWm4jP^ZOkb%wHV|YM8_3rpb6v=6>y=A zmfye;4i6oS5h##85QYQ*EXjhc0XHT<tq#Zx0{q}PPym2ZAxIkxLq``uTu`(_LLJ0Y z0fmeetPu+m0b%kT1u_oe9teqW6-b77XThR|LZ^Y^9%dBezB^EW5$_D>C4c0)0@TU? zS%^8=1PWyshQ=*C5omzcAe2I`(Sr?uf_iQs&p;C;TnQwUA+tx&v<ov9InF^D6(kOB zT7vTrD9eFH((==wJ0ihHLZDp=3E6t62g|G=6A(h+ZYU(zf&vt5s=k&&Mq*KJeqN;l zv}6a}XaYK5MN3}+vA#34q9DJhq&Pl4Iz|bqE=CE|;?_Wz7n7&2uME8k%{Q^2ATuvL zG|0ymG=gh|d;kHck&ikSVV#s%oN8vGlUnIz6cyoBl^AYW>Y0^a<>Ty?n;2e^<C&G8 z>E{w!nwaOC>ErBGm1G=N8EF(&<(XBG<e8U}6Pf3f5ouIx=2K}==96iu?PDBe7!_<- z85QAImJ;EW6%}lmofzR~fGKX8lU(Il?i&I&TR$q-*VNb9D+Sq(KqJf26!);w6lYJf z@Ji1z?@YJkq)f*`PY-lEoQ!;fO{#pd{2=n~83rjHPF4Py7G+UJIR=RyVVOR;eq~9) zmgSM*DLIKoIhgJVt0?t!&QA}`4J(cccdLpD4@^%9H_eWU@Jvr}&&cs~HS`K|cJfUO z_sdDj^ULwc0jn>Ia5qg(%Cso-hVauvJ-o`2!gH#kB7DmNgNxIX-7Sk#!=nn4+{@Eb zvRq4jgG~%Poip-NJc7!TtMbcyj8Y0x+%pU#GflISj10;m^Sm;WBK!=Z!gES}jGZcz zj0_8sD|5j9@-eI^jc_+Lij43~56un>2{EV$4+;%T4+wTF_cyF4P04ku^mOxb3(gL6 z33Cl|^>i^v_YEmYPRfhQNX~Q$3<@=M4GuN+@N{;x^mOqw2fIBt$}lO{&j1|nZczJ- zLbH8?GjdYh!?IE$g36LJv(r<-cAKPoIy-{GqaeA`v?|5j%^)h+(bCh+$t@&1$SWi} z**wA>MU7Epc!eQYjYn8%lzUiiVz_BeluHT7Kk1&%P6mnYIaNNnK{-*mVU@|bVc8%z zhZ`C|+?MGGQUmsHGAvv{_IU*5Cr0=pt1(E<gSZjoJ_vR~a(_l{O1NoOihE93Ql?{m zsx!J;kUfs+2s=!{={LzED#zO+y#N%p5HmsQoGg8uolwk!g%3gvNFADa;RQL7#)0|C znc46#0;~5hK$!1gkREB|W)NwVp6=})THxsc3n$#>MFk_wOAD(g1>p#H)4=3h%aX(h zzZ@?Y*V5$Nu)?TtKLb$MM&*T-Mj8hdBpI2cdwX~y+2K?f6%k~ZoNJPvlpAL3iJBHr z{hJ$Bm1I<56ct>a4l~<3*a^*FUO9=mVOc588I|6kGzf`HOE5bR8oxQn=?xL)nC?uc zsXLR6EQ?ceLqX{R?uRsRxSCpm;vPLbBf~3-(cK6V^LEcMh>Gyah|I0XK@N}P+%SWb z2(MC4chj7dN+;yF$w!S3uN<gbiakAG;fJ19oxu4a(#X;<DG!qOeVjpY=VzGY0pdF) zMS#K^TpmHvji<9yK~$z=equyWPI9hWW|DhoX_9+bX_RqLzNd?UC8+#Bb}u+xI)n6r z%`JoE1FxK9<FMisXGD4ftMf2SPC~T{DXk#%Cue39;I;#j?oh)5InF_DLB?Qn4U;^A zk`luV(gT8>OhEAjb`RLyNNU~v%2L8j4LqHTEj?Xak;)7tHDEoEFoK6`h=HXiQhfU4 zR^%k*rWhpRC_4~#gWZNd%)s_R><8sngkGo^DE`3t1<DTtmHUu#6|B}hsw_FvF&|vs zyJthn|4OF<PnYs^Y;o)ll7sjkDIY=12AhYH*Ae*;IX#CP<)nBAn;Im#hn0GJz|v`0 zrMG)_0XY3Z$~Qz=2KJ+qC9FQcm!Fbz-Lk-Sgga7Q<l&VOX%vc_W|7<u3S&r`p-Ndb zXu>lTIp4#}B5)jm@)<ZyIH8uIkh;Cx%f%Ix50J~2Qc!)C;%;e>8sU@!${!K#rXY2o z`T$yfJ6d|8hB>VK0hNW|Iv-*;xcyKLt5ZN_Uy6H1L2^|IBJaEB<a#=1z}5KV`58n; z1m!@=7ew0wqYQxPGl8mu>&H+BNlyle9$sZBl}@Em5y|Oc9y#Svp`dnyWu>=s3f%9W z9)39~9zn(6HXNw^=j>FF;^CK*<Q`e-RY|b?f|jpt#Yygv_DEE&TXC{cC`Q?l;^AeA zUPmK^7dWqg!Yb9-G1n{8$t1io1uW);(!N2;hp@14cC`!$b}CH))ichKxt<<DrpfMM zWl@<<&~S3hOEU5T*XdrBV6(w-oMaRUYMbRGWjb00gcziI86onMS0#Eqf@H5pP<~Xn zNok~!TXB+eh6#H623LCt>{m#<fa@2}aKDTs_lle-f@LJcZczFJx0QpD${dXL7DO$Q zUGOpmA%>*J9p(l{OHYrW%9L=-cthwTzAcBOhjPC{%1X?(AUG_M`~uJONMcB8!0`o5 zqbVL<hEZts29ld0Wd^wXKsO6smZFw7V0#edH`pu!?NhKCa2ig}fVmBOK8CmfCH|pd zg4~`3n}^LE5HVPL71iCKFhgyRz{?b*G6}i=gr*<fCI$7Uic`WvLFFo1`@#ufX0B;j zihE9OYA{ki0ptc)8#m7}+ZU9+A^roIh1x!Xi03EghGirhS(YM)7r1`+fV&5z7u;Wh zl;x22Kw@}gx;H{iX|i!pMv8lAdH|^Xg6Nka)t!*Ahv@UliHz_A^@+gc1tLDMmlY}Q z8I?)K$<Y1*xJ+_O&hsiu&P>mP_j`k#s-hx-48Ucl2dHnG4r-HBMTJ-7`eY_!X&-?4 z&k#3(;v3-x<o+e1PYd!pNF4+t#Y0|HMv_MusJ;R9Nx)%=Q!R0ER+?lSR1lR1YF{Du z_nctj`J~2GQf`<@id#@Yq){<yyC0*xgtSGmghd9ZTn}{(^AB>(@ejgLrl%NX6ePKa zqNEE@-#aS8t1>D)5Z?Ajc0VLM5%B;{d+w<HawPX;M}<e_B<FeML^+#QCA#P2rZ}e; z__%?_L=a}6n(0)Qlml-!g8TUhHw7j6x)~J1+KQ<9pys(-mWD$6v7mZAAlM1v2Djph zh~Nt7m;zKixQsxsli__<P@4zgukb3b6awz9jDqA*Q2s-<vkJ4Hg|H7)_oSltiP7BT z2`(#fwwZ#1!u$e4+@joqFwzH-JxFFk@-#SKg4zn`;SK8N<stR4^6<q!dK@6aF9XF~ zpIlIVTb>UdD+7&l<%VVZIAi8ZZ*YGaQf8r>jo>?3db)>!+FFRVCzAgV>X7^o?~8=y zBc)I1xD#4i535;dbsV}H4}<im@QSLaV4QgpTy}<Lhj|Bu`h^CC24a-8SltbYdw9Do z$;dPqlFov1qMS)=zhSr;md`@-QOz~Y0*_N5kHtBcBaeH*!VRsQMhb5vyV8Q4a*{m! za<I06k<=ml?*z+BG>R)j9Ay9~UHN6CxclXMI%lAa%^=){<VX0}OGXZOyb61}2}?T^ zEiHlC0bsr8eKv5L0NfV<^$(EpB((jGmdBhSWhZz%%{?p|Ip2cIX+-@GDx)yk2vi<_ zLTdXU%2A&@C&Of;^!#uma5)X>Uxo)3d!m-x;QlSf7?&H;7$`X1AeA3j>uQMlG*Ejt zr=m33Ij{m$4uRv>#ULFyJiSrvN6MS<b}uN*LF3ur`0z%{8>smQRGz@b1Wn4kGYdfJ ztq^IfG(9prC?nY;C?`1++^#8vj@g6z3@M=gYPe-CvU+ek%{j#|2|Na#QyLW>h*B=6 z80C~kxmz0hAjV2TaSZS4dO^mtEOC$JhXq9D=I2L6WaLB|hZ!Updlq}T`;{f-1?8lA zK+7svdl^zDA&r|m6(oWB@!_UfQK;@l3P(u30gne%n!?itI9(&`gtxJAl^NLdqmAt# z`=K;4H>WhpIU_5{$kZSzBEtZ=egTcC!P*i~bK&Yh?uvxWE19H#<{|PR<CpOEYp7*r zVy0;ZXuc*O7`fetGJc8~hLC&?>ytp+$gs9MBo5$q1cS{-8Qb!4c7nSRT;{;~5Ab*g zn}K`m#yJC8c9*Ba{fFFc@bJn>@d&F-%7l!az}*7&Zw5R)`Q#z$j+9(CQ2z%szDKOv zz+)1iFh<FP9<Y7}<!%F)fzBC~pgFoEBNGzbhGmS=Iin!OJ*+Y^+^ZNgmqB5;VT@Pe zj8o{C9Vnbo;{lw143dmNZ8+$-MV=!xt%KUFi18dxl(dhSdm)(K(b6ecJ!l*cmfrFl zOF{FUpfMzru|a3h99jivP8c+<1}?|JaRIN7z~voiz7Aa0MdgJRN9E=~#?U}xSfFu6 zchEd2Xne>tGcnvW+Y=-XnaeB18upO7AU7o(ZZD|pL*_%nCIejOf#-Ok<r=*22daZn z%Qt8n1l-O7jmshNNpcsGKG0YbbiT$tEZZm7s~{;iFdrPYm7sZDXc+~nuOQ(MDX$@H zyk!Q|40yTflLsEF1N9%_;fol52l*+x*b_5ML1UM&xvX-WbtSCbgCkC1bA6!xmse&a zsGkka@1Q;<q&$X<MMCCu(drnmUm<k`vN-|4ur?vc?U3;I#_E1Z-vPO7$JMS0G4d*e znSs<N$cl^z%1Q*69iX{bkbT62Ra8Mzu3K@E2l_aGV?Jbz3p7tr45<%c=?qcULeeE7 z&XDF_A>$RuZ8=0+)Ct^9kIZ$;O00yn*}-$(Sli|BaPWYb2~Ycw{DV1Pjb*HfV!IJ@ zNT50joGw7~M3C_%P`e2de_(q+c@mNy!2W@?<9sUf3qkd^ccxQVihE9RVnmQBav79d z2`*z`Z7T3MeR6JCE~p$$H3rWqgT)fv-Ks*2Q%XT)YqEP-WeOzjDx<<9OR>m-@&;^; z1V~M`FKCT{TS*Ei93ky%zhcn350E_|`@nPRMim8-kU0Ucol)*#nJMAP;PNRF)L#VU zbx1j1n&O_5l?W<hbD(Q9+;d6;^SsJZjQw(wGeKnssJsV{?;C^4MbH?VCusZ*tz8Im z4{ZHMSVT}k5@;O<s9c4u-vFoWNJv@)hcA4txHKv^ClBU+a5<S9RS*So6OuZl@hOl$ zKw(jeBnAm5h<b>hDnWIUX-=v~P-tSfUlGWC;P`b9%8ASi1KS5G*FkoJ)_8!$JSr?a zo!vm~iQL5S<kDoLoZ_f(Qv;A*SUNy%JER!7RVHO-lq4G^Bl`<n$H3du;P$Lv8EDK4 zTeyMi8K|2u@*6^LDa5Yyyl}%P!>BNDJIF9O7u3H^$w<yMP4Ulk%=2_EPEU&P%LBL3 zAYlP2%Rx9f33)Azdst<1u4SdSyJ1xn@;Du&jScVjgTe>YABqZg1dr``86&NeaYptt zr0hhfHwBHql_f*N1{8kaum|NWXqy%}9FgKNKhg-?2QWaH*Flt7(74UWip(rek2DT4 z0s9q;nJFG#1xdjfRVg^ukt7=jReHKuq=RU1yVAV^+(z;-G)<21@GVSpt4L0+%+K~Q zN-p+vPR{cVb~FRgAiqG$c~j)Ea)adDoRXk$(`;`KKZ9hD+l(?YlJk5a=>k^vLc$m1 zrgTsp6$w!T84pM4+o6wfBl?4w?ghECINPVPJl(4jX$%__)+qL-XMps2LeqGnyIW;4 za@<48V|aZJQVa4cJl<etA>sn$4^Vkpp5zW{zh;2vJwtQD@`55V%DtU4l09=ul07pW zi#*-^@*^X>szB*8!r3duyD})*GZQp7@0bUf^EAawqaHzJA?}vOQ4yZ`Ah#gr4Md#+ z3TsDwPjHx<8YCH1l%*JjRR$WlRYe7-7kIklgTe$<HefYBEW)XrB=Zf!%0Xo|PV*sU zYC*DrTV-;tn<=PF3ykopjEu-GO^on!O3w4jNClO>ITfYI=|3^TF9e)kbCdHy{Tl3k zg_pxdk>TZ#G~=971=W`aiYsWk1kZb;neUERV+QJrl|#}cq>O;aIlRmQ)z#R>`9Nhd zmb{i2;TI5@3u?Cn=7Z*bvAW+K)OUrHBT0E-#YvEPXLwly(g&GmN18vzZC_xLyIVn0 zwq+)`o$s7c7MYum)lZmi1GfWV?k$Zn3NrxJ#jv#qAx4o<KRANsx#8+SZ8ex0q_9RV z0}7H2yo!^IJfZp#{T@Vmg~y?DlDlQ5CwMO1F%Nls8aihV@=tnVIC!3^G|~uM|AO`4 zwmYgUIoHrNG9oC$8ywb1We6hA!oxc#*RnDx6f_^_nvT0(0>v5HIEyR79vp5lhOEPZ zwD%zM_3%CtzP=f_tpW;X$h<pv?IvW6sS*140w@iG)^38@Zs2woyl)p7;gy#XZkUsl z7gU8<7v*T->4LnT5K><u;srJq0_xX7+Jcb01Yu)Q2knRA>34$iIhMSVWb6c9&zfAB zk(-oRo(@X)KF&^M$sR#fkbDF84_FLThJf@WS2|gwIXjud+9BX_8B(7VBpV?5-rnw( z<tZM%nCsaf;-Iz@*j!LQE6Keal2$=(g_H%5auULZmkUYZVU<xvq4`m{Ca^xOxtB*& ziGQXOD4iC2ItPKwEJ!jktpbUG{E`-&UF_)|RqEsHWbOsB8??SP&)3Wo#P;xm%=u#p zpQvy*P(KJ_E_97sio0bcTG)WoN@8$%dZJO7DJUIAK-czy=b7Ads-WdA#DBp^c>z+- z<t7<>rhB8UPXosVY%QHjae88KaS_B`NIC$AIYd8XYzDmk7}^H{<++@af{0*9oPyS* z`8YcjfZHeF@Pwo}P`Uz}gEn`ASx(_{b4gBWuv0-2B<zvOJc#*VvmxmsKQh8EAjJs0 z-nKj{!pk5v7|E@fkg)T{2pbf0z-vZ9;g6hN!i`FDQo{^D<L8-)IVD9=5jiP7&Q3*9 z5!v8A6W9&laDtcx_cK@wF%JO}hs7H_kAcE53$!jAGWH4X<G8z3B^%}BfyaGZVP(E) zMzXPAL6nh6dYVUhdV~>F4M;Cq{R&IJDei8Spz<CPr|^6RPD`M2BN^0Z@PPEEVEzS( z!^;zA#|m(K!rDS0^Nf8<qjD`PgCOY^sXlPbPd2gyx6vW?A*CTV%aW)Fue_+>3<Hq) zQ4xW~o*uA03FYbF^)g6vlF;>upz(ZAIS0>|F#mwkKO`(s+N7ZQ;Ea^;3WMZIxIK{c z0&~9yc<o$9a&Af$sGLcL^c!Jotw7?2N#S9oDIUJXo-VH7xP`?R$lb}6rnyPRUT%@$ ze)-<0eLd)24Cp#>n0=7=hvYqo-Jmp+o)~VDjx($vdLVr&P<R`K89>t?qz#0(-3&>8 z;PmJb1oBT#iW?-oLi`JfAE<foc>u6_h`p%uXvl49=-PN#c)-&y%pRoid*rqlJe_6^ zaGW5ONfAbdImx*xIo>e0gXUdfX&0$(KuP;ZZ3<9Yh>8fr-p(eF)}!3Ra*~nf0#Mew z!pl0;^n~PgNO>QW6BXeI?o)ZY=TwEdS7aoHo5I>|@O%i3=K^pa2&s;Mr9GHDt}+o~ z7ZK)z#*Urc3X%<-iX+2wN<m|Opgj)o@P(#9T=sy|A1p4QYC-80GLD2)j$lip5HWCm zf%iFrGoaxYmISIVBZ9NRVdWW)s3&1%2_g&-?N_jSz~(~o6Pj93n<5Fk-UKOLz<NOW z1zijyJp@7BR1Pl#pl&Gk1g-Ija0Hh-VDrFk0L_;})?t9-16FQ^LGv}ZP3?p{X9+3u z(A|M0e9_VYYIy+n3#k5r_E(YjR^?ijr8tB3PlV+rMx>{Qd3a?c<@tfi#}btNSdczq zWs;F4=AIW&+X&K5%Jy<`Ee7q$z?cVxl$(ahx#gg6F9pvpqUr;O7pz<YhY=`G7zb4* zhMVSr+lL4{N|V9vhNg#L%T#aZ{<MIq{DJ_(ie#Tk3(!8dsubr8ke!(AO3=I=Xspiz zWWJ#rXl?=2UIp#hO0En9uP+4o)yLT}&!;lE05k^RRcQept4fLRDhAbE;J5{aFRY$G zlr11T!Q~1_U4%RGytbQRRD_qQr<+qoa;{rR6lniQrc-Egu3Krc5vY%1PznkI?@UW@ ze;C}3@PO*UoQE$5@4w3PB_iA_0wW_p``~;*;SVcgN<sN5xiTXxIk&tN;eXR|s9Mlm zU`0xJSY;|`{MMrcH0}-Z8^{cTaR_S@CwqYQMwwQ5fz}k{LHwOuS&q7<0MvK)2+M)B z$2`&YX@S!ND9)hamRxCC0Gi)Vb+yd(b_bQW*^qkG*`NZW-2%yf5P!h(n~Om@Xv_k# zmKmvR0>vjd&q3Fhz~dGX2VoIj#XfL<WI)UXw|n4iGjKVU91)h2oR^J}k3s1NymtnY zHcLU{(@_x_0a2Ohc>$ob=3-#!>1<E|8t3z>vdDvs2StL$@`^m6X#te3$V-1=!6D90 zp;6(6pz$w*s9+}}-%OKopRCAqSRTT%$1@X@R+Ei`auUN$KzmS&eIkN#k|LanLHiNB zA^SWb`!-R>YfX~f-9T#!KxwAf(*qIrpmd!W4%#;rhTeY!w`)_}4a>n}@gO~UemUNt zxOWEi&B7pN!q#Ym)q%##oiadqIN9B;GBVt-3Z>46^ec=aBfJX0^U@K}@l9|%L+gfI zw@R3MpzCf*BO{#3lRUCPV_OJ0XD0)YzkNXEVV*Cz%)%27IjJ5XcLn8u_h(}1H-g-o zY!sTG;vQC#>|Oy{XADU%@N@@m>z0AW?;=6{wmfkDP4cQN&I6TAo|WKn-cm2{II0C$ z%pW4A4-t#Z1NH5Y!y8m5qwNQUx6MI&Qo;U#<QY(yf%?WE8Wwh_Yf9ar@!^t>lAog@ zGRh-C<I3Q<0Hk#>NMR1P2T^7kAkrjg?*ga|;+Ny?Y?&P4QJfzR9^WoWj_@!{@vh7P z(H7orC8-f^73L9c6_ydf#RcFoZ`AgDnvb&+C=Nh-Pr>`JeVm;@b6}u7d&Stx2}pVX zmp354f!0DA`+@d$qQ(n2d?0GU{s8kKb3;kSP9XC^>w>`LBxuixkFyhGElC6<{=n@H zSR8}(VweRkLl9<pRr!F{=eUQNfX4bj;R{+nnrsBxe`}fr8W#_Y2+a3&&MttC&z1P% z>mwuCiLk>H<X+V9$_0;sJEb_MmxJ>Zdi)`o0}cn&FvB!2&(AP24>bOr4(XHPF%Qx= zL@Jx{+f|xu42s*pe4onlvZ%^zoc&uwUV!%V@VEi&CrI1HASuETv@fs>l<xd<Dw4f( z3<|x2)Ajwc^7A9yDzd#Rb1b~wDw4f3vkL+$EkN~SPGn^UBJY6f2t57)`wyN@N|Qap zsuG<|Gm<@=ic^E3V}}vG#h&gdIVo<CamwUM#Ck38cpPZ$4XB*REKdiOq2X0-pfL_m znU&<5V*nm=fQb90Ag}KN`x9(GMmj{eKf)L4rVNOAVURV0c=STX%ScM+p5Qh<a+-vU z^ClO;_FIA4N4V_-xgU}bla0c_?HJHF5U9-asw@Z3HxQv8E$?|k+ZM_CFgM`0ALItd zbkLqTQ27onw=*3rJ)M(ty+CsV1k)Sp`e-a+kwuX^+$}-lY8jw#fwv>D#y!Lz1oI(S zFJi9G8`_pjt~3SBL+7Qqr$ff-T^!Q`DxDB@Stev|(mU9($P=NbFv%#V)Z4=^2N8Cl z@p3%*1~Ddy+V=sw3*rYvd?DNkY5#>)`Q#RqC5D^igVG0~G7eu@;97@?up8nQ_?U}( z7-)@FHe_BrtTH7xEZf_?0y0J$UXEy6p!);fMunIMHXk~!17?HOgZg`rFawXhV`+PU z#uUTA>k-4Myb<*@XnYi&KA`RKVo!I&vMBeQ+{ExOtYg}cumtbx0<A*;uOEf?hrx9y zXrDW1ZUnLh1eOOO^=wX65bPWa_?k;d-wtLjv<yI5#|!o=q-_VEAA+fet^tP6GlIuX z5PLo$b#X9kPk^amQn*)6a%M85e1xqjhNel_{9a_PWm%GYSVmGN<{AR9TM+7DeT&i* zcgqmyTxUKwZDA=3Az^?BU&z`DWIkx`s$-rvE_)&I4fhi)FZsagT2Q;8GQAwMhXgdA z9Tl2Wn&O;Ml4KNA5S5#g1Df~u4ROR6^N08eGM)`)gYAK&IZ)dJG)4<;E9XargVy8) z<v`L?Xg*SzRSb8Jvr|E`K}k+(D5CrU_3J_BJAld}?_fuLPjFw((ah7`)G*1t9K%g` z^B5#8Ao&X#zm@rz=?2L!;P7{a%zgXhB8@G9^F}D<*a4DWaJWF@-6uDyAPKxqJ)<Dm z0JM%Dy!O1nCpW4rIXf&P(kLCY#*oPMYLIXSn-8`RRBnOKqkz@HIZ3&GWl`>7;gIuS zGLXvEa#;E+_H@sw3N{Ke4MDU?k>jQS)W=LT3Nr=uF(LEY*ylo!+ySZ6vDRUTF)q}8 z1cqPG#~+|+7k8U25o65<x|t9@I4<3>lqX>&MG?W6eQ|`pAo>w}a>6?-DbWx#zf_Eo zZV~1p*@LYd2gfx;4P^cVQih}J2h~FuVg&aNLE1&2_8+J{gxUv$*oiO`vNsDlABk88 z0&9m75th)h7_?5V7_=rFG{%i6=W)k1R3D_jg*BZaxz!`6B-z=tJS74&mjkO$A#G#i zvIXA%3LZ`0kT?d7V>qIhC1Ii2IW9>?hUG~{ra4J@f%%D*gu;u0xB%x#Q-dT!KhQd~ z(x}Sx0wVh)sPkJ$c?Rq^jJ6Q68?o1CV11DKgFqdHKEI7*HrO3F%MHx1H3~BYw|$+H zExjs1ZD4R(hO~d3lZ(CZg*~Fp3+}6c^0W_Z4S+Lby^=5T{1n)21l<bi<CZ4oS{5W_ zrsw%MC*vu{5baBF*n!PQ6N8s;xatK+8H3bTfc3M?arJL-wmZVSyaJ6ZOOo9!OF?U2 zp<}{mZD@o$!1V;Q-iEdBAZwT$k?Tj8dvd)X>sXNLSZLd#$|4Wfd>DytP4}*J%nJxc zS_=scQ`r7p>~6-M9?|VaSz`$`7uE&`)g>@Cyl(<)v*VZ#PK@w#je_n?hV}Q5$I}qz zK+0msm=wzV7Py}eE$bouLr9wsJa2-r_l{6I20mW^%74&vj1X-eSUj5JjK|8zJa8WY zsc#HR7Xg*YINU@`eFIys0-BeE&ksP`JD@QE<aQf0O;r}-bc-i=e!wCf*4_@y4XcWZ z@G^=D4+M=<gZGw!+Hx@YF!X!@P4g&y5lFcQTGN10=fdL=-d7C^4i5DzONwwROUebE zBbfow=UklbRb>E~AA_`;;eByjZFacXP&dKHB0%K^w*D%#kAduG{A+AYtCB(eY3KAZ zZ|ATiUuOf;z+gl7$Y8_Vh=}6KwBT&;IAKz_TRGY~5YV`h0djf<mvP{5O3(1AL^CTG zKGz7<ha*qAyH%!u<{Xj3GB^XG2fkhbQbvRFB-l<!UWJd(gT_R_do022A}34lU{hFq z0a-r}4L9U{AEDXh>0yZZg>-K>FZaMoM<c(G<Z|y|LUWIZc^*)k5qV7rsC@;Ue}tqP zSl<>hUWz<!2pR`Y0?$K4ctOtjgU=6G!sakbLGxnZF-+)uA!3dV+@FEZ!JwpFkX^Ys z;PV0Ttm}cKQFs{v3F9dDuwu~sD|l@mWNx_>6uzMOBk0%#QW^%0LBaDcJU&2f2Bll@ z7)wq?DN?wHfbu1Hj|+Hhh*KCS9uV_9Ii*pkdvB1|U^#*2WAi~~L;LI*Nw7I9)G!90 z0RxH`$euRnT1(JcK4aK=P0(C6Xg^F?Ws);^jTU@<ALMRWxeu;ekmuVW^KFoL1*bJg zm?7qfVdj>A=Jw1y!RpJ?Vd3YW=>$sGpmSHjd*r}r8I-SK?nj;b2c-|#+A{OB;PQ0v z9BVE-ZGhI9LCzXO=mU>aLDOHh7uq^6u>QQD%E)ljD$qK&qzK&W-4a1_l<pNduro(t zVFGqDIL~JkB*WXN8Tp`jtt5BQI2iVPjxY~2-USMGQv<~OzF`tvJ_oeF$^?A=E7&gN z@PXueaN901!Vh^JJVE<Ykk)X3(neISTNY@1B{dk~b{}UaBsUo#!q+3J1f0K+;v7^K z!NLU6C&iKvknBV%7vS*%H3MmXKPX(l>xaSXZ&B8o<bdQ%;cIh2et?fBfYKRce*}CU z61*0~B|jZ9egQkP2A2MO%{)CyK<k6S=@4}-2FM=da4@XG;tu3+0;N-PL>>+`^YlQJ zk3P;$khK6I`RUNPf6%(|vLxd`Gf&W2yT(CaH(*JdAaj$vj1gvm=WdN5YYrf6FOWHT zuz5qIa>flh4pimo?h4K~uz7Y+*_NE?1RDc|tSbTMzx?z-(7bxCTZyMf33Mzb$kG$E zh7}?YnahX712i9l=Pi-SC`afTWwdrpgeSZV0L5E4cswMmD$>ZU9C98dtj&bhjsUeY z!FD^Q!`z=-X_^t`4nBVs#a_^O6;gj5e69^FeS-55EYBjZFNd}<aJAK8?a+W===>Y< z*<+Br2uefHwXBe`5L{+L&4siTA?FKXv>PD$k=lI8;CU#pTOo27W<$zz__zi%{4m>E zQ4xMwkr7Tgh&DK=o`RGqusR8B4`@CmHzy;>J;y8x(&hlwDWEbmGZB1#GG?BJmF0-} z5zrbG<hgl^9N#R*vMBJ{gJNj=15~Dg%tAW98?<N3C^S7X7*Yp<%1_W)ywI}~3Q|0L zLFX&L`);s3sh~LZ&UA8wxWgbl6;=it8>EBkMu<FQofITbIb|g0`GL<XLusdg$_!{< z7^DXj9-uj3P`?V4Mx)#<vmk4w14|=~LFXz2<phOS<bc-@JE!MGLi=Pez2JCv4=Rf^ z4l4omHGOgs?2vHF>?n+Rcc+{rXVZMpK39-^Ah(0+UXVK=*a=jJg3186I=DP?o!}l; z?2`*Rry&xg7NiH%FM*~>M85}KRzlJi*k1okgd0%L<^rD!V~}LzSC#}?!x3H%JL5Df z$*3GOUk7p%Xs<j(jWbI8n|V1~pzJe5H#^DL%K&P3If#uWpPyvx2a^Z0vB@Wa*2#tB zr$>dCmnOPfR;9R`W+a7&!pnbf7<xEmq_}64Mur>a!0d~R2+9ZR4MtfX0qYBvc~yeu z8^XYAxnO!heJ9vDKahRN?rsK&Snc!6iHz{dN`!@(QCLQDu3tWAJRPhL%E#EF>0(g^ zTDJol-vI4>^{Rx`SI{!W-K`2{CTL%EqBGQuxfvPBM(IfV7SqcjGJR3aGOQ?tgatSc zg6o<Hca*jDxsl<121&+Vrrz!u8A-W8#ZeKUeXF4LQ=ql{Q6<P_7rcLlx~2wRFN4<e zA*+Yj4L=hF-cIp>ooAK{8XJeV=|F7*_*zj!dWX0jqyLY$`~t1P^(#w;o$n5>N5E^R zGQj&6LF*Th)=q==%y@&&S_iMWHUZ@)%yrM8`Y;o;<_sM6$ayUXvUdQq&y0w5j4<~= z^J8QLD4iIjCnD`Xgw{V8YrJ9Npzwi}Kj3hN)NxgjMwaE6<qb3~f#-D$(vywAVFMmt z3a?BC(fOdYW}y8GpgkyvbOu^Si8LqgoRWgRUIE&UL$q1J?nuvo*#X`k4B0!1(RTp5 z8`|!G*6pw{i&98F1^4qnV;Hb=Lh+B^xr5^chdq8d$=K>UXnhTx*T!i+Y8eU%Pe?sv zSml%JmL25`u8ZMwo7mdS5dT8f$Uwslsr{Sbnq*{{0g8i2qlyAhJ>uz{;RQNFDmm9Q zC&k&xE!D%RILR0^FP#l(yP>QJ&d5&A2JQI)jlqD<3_$Fq^8}q)5CLjC`WYbSPegu3 zJu@G)&L3_31GHWaa^5=lyhTub4haL0pTKpeM@BaIoCV1F`;kHJmL;G)1EINLpf+$7 z`0Pq&CwLhEs`pUqWUrhk=p7g!Gm$aGe9)d#@OlF9nF-)MzMwIZ9JF)WA$bbCW)yr* zt4A1kPmnKidlIY$;(l=54PFNTJ<ruSr8vpREgMuGV~caJyF9?>ZX1I4S-E(YgUv?j zA3@ZhuGs;*7rwp#a&7_fc7)=v1N+<sXsj1<cSJ^I6g1w!^^P%Uj4mi5F(N468ysJt zy4w#lw^J1r240g{?CDWb1-f%2B?8n>g8I|g0At)Ar7Z~#Pf&XUlE!>M_a7L0VeSh6 zwYe%m>LBB>sqR6QFty&!+2)=e;Ibateu2afM2%&6RJaMK-2zQZrl585`AJ5gI?5{t z+_y3g1n+?cwfnrCA#+q%%15N|2r5Vl4=YQFfS%8W5r3fcY-*4Q+JkEx2KGxbJS`){ zLFF(wz9C_N(Qb#jzck6+G6Qtxq$i@Dg^wkH^+V#LED0&>;Nt?Iy?{vWgP93BYc|Ok zyhanAuh86M66N7p3Oc_H*&l?=1?^pq0+lnyn0-7@`2mi5bob=><$%{)Bf=;zDk8`^ z$tcJa79S9QLd!pB-bL!Sx`Y^dg?PH=fc9yC?msFAjZvWVzd>uPGo3=h!khv_481}_ z4J{#hTns>a%$<{SEsc|n!YaY*Wt>xtLFqiu*efRrbia{%PDYZ4Z=R=n4(yJQ$dJ$q zPtYAf$Ym5L{9xz5L>gIEg7Y|Pdk2w*oSi^xI-zAMtW1Q=VI_u}!rcQ3GjRI_Da^oS zn!9CXlp$!$0X{AS>RVSu1!oi|8G+8y1h3@<rTbj;`UI>WG$#{=RX@UwxuCV7AT{Zb zJdE1*0FNhu(lsdG_~bcNCK(5nMH*QaL+5A8l5<l)V~;3(08kqNt|vF6EZH~^I$s0x zk14qAj?LeYG=Rvnk;YzS$;N&G$+<aspt>(0*vTL{FARK_0$43LUqQ+Okew;vVO1&4 zra4IwVc@+6!EQmJq2Mue(7ci#SRYEh2kVE#iD#H!Sg4y*Kxj@-NQ8l3Kxhu;x_^Y7 zpmGXUo*~t%pnM9eXF+ueQk;VIg8FAjVxW2+E)ENOcX0a}vi=KpCLGcpEby5I!A{wr zGZ2W#58%C7*y>Ygxd?AldxFNh;cfumB>~!Vk2r4ul%7C)REz^lBXcdYQ(<d5V0s{7 ziIlc7aw5Zna+33WLHAC9$IiW-Q(Qph4XFL%69%rcA>#lrGtlO#k=wjT@tX-QH-f=u zTp-yOR+179+7l7x9cp0dk1c(nn*j<JXxawvuS%{&suOd)%A!0Vbp<$%@c1v;D9iwx z-#~pg@V*fD9MIWkpnU;lsm_MRDaOeq;Bn?)L&Ie7JUn=97N}hTFZV%d1D007X9qb$ z&bJ4buc&heVE+=4779V<+k^a!-nPP<7C>_*nNHv}lOVlFVVEBk?v@R@v(5)pjyR|1 zA?}Ma3<ceJ0&2s6$^$RRoG7&JhU7OQ;udTt@;(MHBe!zU93AM6F3{dPAESb*BqI~h zUMKJw(3oo&kn<@xK0$pqaCm|4B1i_Ubu<Fq9e^j^L3tLIKB0LNBm6*ZC(ynlEbU)- zI~tUKpz3_UX)7lbw675~29RQuk&~1Oas#xz6%0ME5WI&8rL7KLD~l~{gVQLitqMBR zF9L2BnehZESHb3j`)wIy#0PkesUX<^98aKqOC~9xJtxRz4LDyR+2s*bN$}iujIacs z4G4`_$he-j2e{3O)@MVu2mf7fV1FaIEjc%=3bbA%*(elR{(<^Y;B}|)Jd3UeIS(V` z5bH{C_aQ)ceL0nZ?>Pjg6|n!naSv*PAk2dJ2ZufIc}FC-BaKTy^#*6B`)7jk2{gSx z+g@NhplhRGWe#$>PmJ*M29+m}v%ny8Td?v9(*6MT4<PM)(7d}(t|9pRZ*ONy&_1lB zG&j&0WX1Ubm2RLtTLnIqps|y%QgA!iqc|_TGTF@2*)jz(W|(5`Rh6IaV{DM^13709 zR+b?AXdIN0oEHdQClVEInjLNou|K@ZDJ24&pZpA<ZUuz_v@MPpcMi_+3kb<^OpiqL zuaVkl;PxBJxrd2)pz}4IT$0>#Kx^MX<qFEY1EQRSgbgG-;p1J9bHqUNJmEQ2QIIo$ z(e*>l@P>{L!@?F~4tT5zJbsB*CWFiPWM@#mbIe0JA2Sbh7B1-QdB~ZTpgCSdI}7F) zggiul1h{-PEeEeRa|Oj8XiU)!bRKqzw{teidUfBb$O8Bp^33!~(0Cc7odC}##Yp`d z&>Uh`a&AsJczpt_d<EyXp)?KvZi9f^BhWT6_|7Ou`3#v?0mm2EUy%HUGVYKCxi=JD z4SWp@Qn?G6Gjhy>_UrJjQAf7JF9e4j=y%$I-3Y0h;rc;mJb0vl_D+|j7?vQ;L^U+P zK8^-4BReX*A_sH_4(#moa3jzi6&0D0;eJKnIZ328Fv9On*-1uzkh55vO~GLb8ka~4 zw={|h^~+BTuK=Ap2uU;OcOXLSh308UIK#~a)fLeDB@uZNKDLn^2ELyx17e@ElR3=q z{+UkDu?{~=jCH11#v-u#6+DiNQh$TS%0Tx-Vh=xeLTwcAntrr8%?UbokCfg(eulNx z!@bHt<s$l7>e$mLBJX*7lz{7d(7Zz=#Ed-1d_J;0m}4?XVGQc8g4T2-fyZkh_e3Jn z5NK~3YQBf}H=+GF`1lGAw}S3D3WbebfX=#wwqr}7?gh=K!^eM8+;d8z!YvJnxIeQh z(%7pY8FH5=a+=Hn-4T`I9_E(h4w=jIc20q*h4f>P(si<tUu9y1lYvj3Uu7it%q2v5 z3*Ji=;Z+P8*Fr7V{h;aF6dd-TvK=(fpXw1<mYC~i6d3`N2dyzgjt7`H=)9<$Qiy%9 zyVtO)D@)3)D2ogS&zIvGAA<P}G)9yIxn~Mgmc!?QK=mlJ9){#Ol(|uG9}&DCH76-I z$R*J|r#Q+v17;>74WqR&kj8w#?YU5AC+Il0Urw?|P#N024&bp|Nc{!cZ;N_g03t1x zgYE+WwLMYh{~_bMh<Hf~4>L$~w*=jdWa;Ug0<|A={}#er(=4R=A5!<aLdOH({eRFp zXK?!gbgmU-ObA?lVY$b`)hh?oFN_K%?B~ebFi_tf%ltLmKZN@BhOm35QSuJdT+Fo( zpf)0G%me05=vix!^TLty8&dotjYC8GPvG$?EMpsx@fs)C_-%TUG5C(Ff++XU^x$w% zpU5jKD#8i0R~~bY!`(0^#XX}8+<qiuOb#hd(Z`Q+y)qrkA~G`q!@`0rLS5ZL0}V1P zf?UIVgTjK`yn_SF65;Jjc-WW1(h~k~M2wL@#}FcYLNh|c+#E|nplQ)3)Dm<rd}U&I zP!4Eq50X1!;e-flNIi%&CV~_u&MAQ*hJK-lIXY6(CDfgngwtiBdss%4dsro?>_YA@ zAf++v=@K%|0Pm}U^hZYcRV9X}lzKzXk^zs$`s700lIIKB4_lHHZdr=D4!|)3DU7m` zb1kcq4J<1Y!&3^9G9C3jT|sx#JC?%SnOtd_l@j4+kYr>4>Ia#pq1|H^>=9&;>}(2m zSGY0KnZ1bdY<OHmfX_Dpm4~3UHSl~7odbru9dvFaJpXyZ_pyS?DYp{LIa)}&%rgR! zzL4CX9~t2bUAur|&l*yD07+j}R74<DAABwqJuSia&OqvZxPS1MV{RFKA&_t;x<8fb zo>3VH>wBS}U4(EyQo9LM9zo`cQ17V$pQDPlcM^P-IOvXXh<?;|2e=La*$+x{5VK(J zcM68hk$Hp1V&HWjMt?6VA_~+G#9}@uEjWVqSXP48F(pICfIxO3rBhJ55H!~YYmcJT ztMIn0vtu4oUmh}F;gOM_3`*Bv8s4t0iUOVGjV^|m$HQelc&;9)4Q!I=;R(6Z5;9i` zy2Gx*H_NjMG;Zaa<!As}0|N>>(0E!T=>Gc3@^qg{i}c{oP*c#E)eteK%#`pHqU;QF z4>L(|$xlZ$6SCLAH^j5j7qkw?ImJJz(g{A6>{aOqT3cC}7;cb{qR$XA287ba0+*4H zI022DAcZa1@8G%#C4E5DLeHlH?L8~;hJ-6<4$CRYy&^aYHr5sj&)@mp!P)RLM!XC` z>vobs=VPJu@hy$9w{0PIBE>awd6kju;RKyevo!X}1GP8&a=cv}LG^E03i4T3&dFw= zePN*cNs^2~XZ?fkOvne#g`teAR)O|BI~IY?zXbaqsT~UrA7~p5GaNyA&<`^A56Yv^ zw2f{CZ2Smp7C8Jt`e1Ddw@lDlFHn9!sV^|*gEI)u2cx&=kmf2O`4Zh<kp4B+`Vw@{ zr<XyBTbMIu`wz(<;QSF89+Vvf&i_Hai4lGVQQ@XJpgUQS><5j%AnXCnr5UAw@;v11 zDRg(C&4c(Dn&gMNT84yqR0M{F1r~TYTNe1_1?40g2j(M{A@Di~Uz&pCkFavcoU>_0 zlzWg{3TSVRYefO*%&w%|FwkAzpf!AuvIcZM6ew<?{YfN0q16?TG>e+2klPp#d9eMt zB+uD{?$iO@B@MO{B^{#2VIIM``~2ig#2h^+-64e`yw8a`&Wh;|jI;(H9}WZ0eL&}# zL2(Q!*FkG2Oq1P1k;-hOaY1mNKnfqw9bnMB1ioV(G>(8A2WWPY>edv{n1`!hWmI?& z=nU}!(0wW3{cK2ffY!Dm&5dKvKag?|+gv)Re#A0Yiz6JJ-4J;r*RL|k*sm(Y*sCB4 zbhZn4P6eqC3l1yf@&jJxmcrZ6pu0oB=@oRxkRf<Y3#jevWr$g?L+)lkG9P)q2ajE# zej2v(kfCevKy6&mx>J1N1{%MBw=aUB?PhQ2`cc?97#L+K_*^JhI}9n!<XRH5js%qU ziCjklDsL@Iq2rC9_{23%04@VT^SZFH7*L+Vy^bWK(ueZ(AmF}$r#q<b1Fvbz56K0u zrN+`PGzFb|LG(C1tZV_#VIa)61h?HH!U~deL-W0iQp!@CA$xCO>f!TzkTq_B$+?y# zi4lG|<gJ$jt;s+gqsKjF1fB~3k6(hq9jPn>wNGGcY*6Q@Abl-ZeF2JFr2Gf%Gs4F& zAZZK|9`L*d(gWUmg%Zyw?I!Gbl%jm&4zu46c}x+qR{}I|g;bBC_E#W&fX(ed&W9{d zPc;IMx0-oE#$7?@7D2`kK>LGW{cmR{c;C-I6Twak2F-tf=WXHn0u=rzZ5U8_YU~Ip z15m;S;vR6Ag4ICg`at@T;ty7L!1@GWK4k6~bZ=S-QSE8i+#bArZU9<qfVLhUT+Tt< z1a8~F)-Xca&+xW2xIO9&zOTa|CBn}yD#EWSGCU;*a;7JeewcZnvJ@#!z-B|nzA)YH z4mtA%Y6m>bA$Mz-W`XzaWjeyv0OK!T!S;jFA9PML7}0+Rl|3oWkhT9l&anMEpuRd% z9RSe}IlBf+yn)<^SVIZ317rqjxeVHyh>{+lcT&OD!h^~b=)M+s8uCU`1DgMU^%uQE ziqj!!8sbg}8|xTiMlxvs474weWsMxpvJiB)RSKy81!{X6BG%5r(`hKI|LX-_HydsY zTGtl@ufsrlc0pki4BI0KJ%1D=j<uWsx82e+kk^7BxdD=IkkSuA4m1vpI`<B0cf!hI z<S>VgDIkqMVVFy;vKySfk;fk0!%U*Wee)shan!T{RtrgI@VJNNf28m$O?I~|hs+b; z)DNCFA$8v;Hv3_FFA(8e4!UC!x~>*9HWdaMLr1Mkz<z+_efYd3XnhA#ydms@sDs|~ zmLK8l<&~5d1=?qp4O)8%I`=2iC=9%|)6?BD*Au#)CBoSgybl4qP8xI%GGd)9_^j;+ zXVAVBLqpJ7!^m9l-Z4Z!JEuGoWBv}w&0x17k4s~9H>lkT$#-D&VErI5EOCMo|B$tO zpgaLxI|502SjrTzx#0W&Iu8snX9!NW(7pg{EE$&0!Fs@MfrKlV52{ZL5c$+6FRV1# zD5D@M58PLTtzp6JM<JO5k4LzBVE2(AuTg@IHRAFM*gS9<><QY#2igOTXU{!64?yw? zdRQa*4`D8(Uj^<PrQ}1`fW!QUKE4XBJClq|t1!n_(alEUBhDL!yAMYmf!Pb$lLLwa zXq=(;&5+Cn`vby<l;wE*jC1@2q8}3PSi%704kJtOxF^URgwhSTE<#&R4mKO?RvhUa zA_u;+98yl9`vZqQSlI|_x1ppVC(ya^@N*#%{U2m=;OlNmQzEeJ;Y2PU(8?lE`wFFe z1)rOX*z1mLA99$%>j>oeJ=h!;@;T-nsC6PZ|APCX(ESL|_&`~23u%ud&m|(Y$6<XO z@S2?bM5MLjpfOm`cnYkJ1C7Ndf%-wAFg?g^5^!FGjMc&WHK6<q8Ha<Ek(hTrK<DH< z;cGp?ag`6*^9@;Z50?YgU&wVYtWTR<nE`LlA?I&My8?W#F67Qv$UGusUKwl;Xn!|Y zz7%xs3dnrO{UES%*NOCb6{I~TkbTpE6+XG3b)}%SXPE6mPiWqQjbS4EgmPCn_+DF( z`;h$)+AHS?ZEGU?8=jUxXEVEk_ou?{sxFC)a746iA@_WM*A#)$A|W?``iSUm0E?lx z0UmbXd5<LboGS1+Gmx+chjX}5N=^zMcY)XNz~cwLrmYw>_6bUp5Hn$C&4AYzlH`ZL z@CwMeFL`0`^DjaE0E?se1ya_)!;=(01cUOEQxe!OuzZ{i>tBM-uJ$T}-GvD0Gl1Hh zh<X`xUUQ1GBgXt0IA4R?5KfT0r*jQ6lHE#5lZ?GeBEu^RQgg%nLHmxq3B^6=4pYcj zP(cK!j&m!4&OLzkGKA%Lhk@7LK-d15!t)?(p9Z+C6bxH`0bb{UXcJ{R!R8RsF~*xB zO2BuCfXjVIxde?@gLFuKF)fLVa7qHjM+j)IbujGicf*WiXHXjvG=G@`zPlM#-+;$T z-9h8anER=qX$5j7Blvz516UsqvL^)+mX@IX_n>|a>Y7<-80Y!r;Oo<Y`UV8^jyv>x zAGEng*ttJmF0Qb!DuBDeJt!y1Jq&a&269~IMMVTb;utAC`Zzm**J~0PZ_qV#VNOZz z;5%@T;|@j6+c^i`9!JCvcr6U%9z{ZF8*$z&XiNv$9?<#{@V#fA&KZbxTa}=*;z4ax zw@Q?Il_Bi_aG3&eM_>i0ECREU*Lp$w`C#!%P+9_&cS!llIRl*D;NgWn{tML)NjKQ{ zQ-jJ{q`ozh+mY9+_&Fu#Cd2pS!t4W`b(83xQw2UFs1kaw3p5Ra+Xk@kM6UCZ@-nEN zf|&(!M+EfFMtB*8xZ4kOr(l)0J1E~|gZAoYr-b|EpzW<KPtFZ90<GOmiSUA+r41?b zAo&ws_QLN4hUVu2$a+yHBym5(<UCLC8NQLmVU@|5pgB`en;;UNen8_DkaKas?FPtt zN)&&Zg7yP}`fFxUp^$nDytWT*jWRgDJ6k42<hqumW;vGlhgBr|1p8)t1xMz2XBL-6 zxK*S^7&%#_<rpB=&OpmL<S>KyF$g?g3A!gLrP2vJw-OZLRheY$neSzg1K#_c7#^4o zzGoVIc2QU*s4wXW8!OCo0-Zx%90kpP$m9K>aseZLpk)x$U!b-KBpi_TU_skNh<V>& zaGi>>J{)xJ9JJ4ep0AMf!PlLF_ANvDhLE%d$w$!h&p>B^_~eCECc(#KA!qX<)^b3` zilZ_S<6NNj0wnyv<HOLktl&MHAiLmm`q<U^LHDK@fcpQr@UcV4cpxZDkm?9X`wVnW z2{^x_+;;_$OEM}3g#p41SqAC8S&rr4IWpK-V<qVRT3@8S%<!_^0J4Sv<VVn&{vboh zJ+VmZnxW+^Y~2EQ4FPE1AIxlsyTRwRL-ry;@({EPg11dU?gy{`aD}%6@)2PS$`dI1 z;A8IKb?(Uh7+Aj<b_Pu)B%ZPM-=S^?n*mv$0SYUy*`T<ArBBR0IpiK@us-a2@t}1Q zXpB1te6KRde_-{<ZiSTFurVaCI!O4Tx*437z-l3VPH5PH-3d_-Y9E2z<ONPU-jFeM z@HhiPFQ^X(2}4lcgVo7Mc?GtY6ukb`Cl_QMcn>pjy_5;LS2`Uzzrgo_K=)E%_#LI} z&OzE=1DcCB4l0ATm%w{$K;eYkj)#niIzq?sAnu2k=N^!LH)eQ%(hF>S))XnvqxBm= z`$$0deV~jRf%i+Ldqc-z!QqD(i!g@VJq^iQ5VxgctSy0vXQ!tk^>@H~Tr$D;wSo2# zgZ+vaSBAS4dd62EXy0aTVz_Az=<aaPol+?t+4(r*%Goh5%H7Q%G8j~+BDEnwbtCB9 z8??4Oir>KL3RD+C)^j0;B`6O-{BKZ<*eC4-TDxZEi5zAg;5HyQJz}dv5+i((_HBXk z1SozWaS2L`5$>k&@qXmEj|8og&H=9@$_M8iXk7<!6TJSV#(thkNFN)V-ofSt<>nNF z?)w1mqs@fu|AdtXF#92LreM8+5s-2lN8SUgiHZR4`3Ik4fu7DW;{=k|LF1S3`3~@& zPft*Lr3!SX12|uS>nw;`Se}Ns54xWpyw?QfY@q_kJ@Tk!1ybJ$o}VFM4p|S6vS!H` z94AP7Kf(PuaQyq^f%g`p+?5AjBM!O~1Kg)}Eb#@Eftcr?dWN|L1$w$6)>(qW8|8jQ zgdC`xMlP4&^C0MF8iM@=?=M60EyQ1-G81(k1Df`sdnds4HKZL6(+|HV8rtuI+^Y^g z7ZEhC1iFhH<YsXAgYp$@U9?MndWySc7-;QSa%Kj~xlBH}&^ce|zOf*Kuu!kc9OxV! zv<(cmAG9|-J;NJXZz1YOr-GzBKZD3{)2t}a7(Jp6#k>;(LoYZSa#AXt;Qd%k^HK9F zES(|FXFx4iLH$$E-fr|X4i|S$NA%+mWh>}B1L#-`$Ub<P2#;H|{xztt2cBccW=|k^ z4}@dBH>ghy&Lg<XI70pb<v~z;GRiHb0CYzZ>V6)Ox!`$7=v=WQw5%#mM?HfTY0VMB z&)~8Ksa%Kag|ELxoTCalhYQ?}N;L+Z0}4CO6_Tc5Ve9Rj1Kl$P3qRyLP5p9`^P&nO zjY88wYXLyxC`q|N1xdNdpgkG}DMpr+iQqa5GA;=_-_Hj;A88717Y7<x`h|pA`bQXK zxCMp=xrOFH@`;y$TNZf!$QiVEGzB!qQJfeKJ1fHyygvifzXR>N_Azz>-&^eC>{#ei znV$y^f5><yc;5%;42Y1NAh(d5ptLZzoWLN^7>q|T<{tN|{B#`q(#^qr642O$i=knP zdt`~fa|&#{2D#h-uVuksW<c8TQQ;N2pmYW)Bf#YycnwA*bgma92OA3p-HDat9$D%I zJEIkze?fQ6xEUsS1XZEgi4?DXnCIt0)^j7>`wGq<urdPd2T=KpJcmd8d=I$)1YUm& zD!0J>N96N`k;d~e>UK~Whjw-pbj^MN<a{jXzM-5F_#6&+%nzI&p>-CxeuA_GK=ymW z+V2L4aS5a|@G#3Wh#O$z_ux4RWcBbi3`8BYKMArMt!zc)Ntjvr;Qk1r&H>#wU;sM% z0CMkeHfS9vc<u|i%>tftfX+Wb!V5Kg5p7qm9N78-pIpl#(AX`koB@rs`DZ$ztYZSL zM@Y;K%Sr*C83rzIK=Wyk{vbF!!E-lAY1<LBJ{4(h45?iR2@7z)1KG~RaPaz)(nzDQ zvZzcaH^{y-q;d<a4-|He>Cm-lD0biuYlt4W-`$)llZ*@tl8wOo1wieY!l-c29&tpN zAlf$2c!IVUpy>-<hl27Qd|o0OeSZn4-wIo+<5Zp!5oqS=S`ZRqV44<aVCf&`8s;D7 zW*HhD=Hv$7$Kv4xIyZ+Hb>Kbq{+UiV$}G^jbCAECpks!igv|uq?G|oWmXwvBj-{N1 zpQ9OR99EU$Zdu}=>0}OSKZDE9oQhIt*r4V;Q2)lGBr_@;bZ2!aXuTD5pIdo4Y@d{W zCVbylv8Owz|6^M2pXmfHvq9s^;PzWqema=WEC<&eNuYB+b1f^Ag3Hrk?GVHoEzp_( zzp~^!Uo%g45bXypd$GC?x=zK*2)3^cbWd&yY<(Q~o?NiKd5#EnCRhz<jI;#2w$unZ zW&jb-N;3AU@-hUE(I+S66z4@5g&9E9!N!ci`oUul5OIi~y$lU--bD%vD^NQRHD5b{ z%inM#SUWB-+ZVFm79}r&#%Pew%tx4mRQ4gtAaEbr8`0i`r+1J($a-P$9pC04bNw^H z=h9+bLkCiyhJ2S2Z2xo~q<;|MZkps}3{Lal@J;rBhLthsoL0YlI)n+N-+<PZhJ-Qg z!^X$i32eWACWOWxR(RS{?$Gnm!u<>q!%g!%Js@qx(Cn~~Fi>CF8Psp~G6LN*fYz=; zN++N_Pkv=75nfqQ!5N@)gHi6{2Av5Dsej6`wk=_O56IjuxE%rNCxO!vQkns+$AH=a zE+4^p6Q&no2dH1*R+Vg&lb4j4fw4Ca)MiaG4y%j=oyh|Bvt?;A+8McUvtZ}lqO3oJ z%^!o#yw531$^+e(i>UKGoij2bjY0R(n;_<7LF)-%Z7FbF<OEX#@+bUW0+c)fJIAyt zKONqthU{sC_45kAWA7;UFqEgm+zzgXQ0+v7UswrvUI{!$2#VueP~2OVdO9PIkAdm{ zD2C^6$NXfYu;Qpplk7zB9!GF{5?qdW2ZQ^ERo?E<aLFuBkBsojgPeOER0UZpfSfNt z<s5_$S<3=zZ-DwGkTD%l9S@BwP<sK=211!zuq;pU@Xd$$*~b}l|9cA7``%IeH0Wsr zDcrzk_CoG>ht|=>(6zoGH^ADiRiOP4kw)q1-tKOdQO3TdN$z2#QN}^g@jjSeAmJBj z<ObSXSLu)aY*AQzg3>}pa&Af$==>SfHVM=mNZ-)X6Ktnnk}qUF7wRU68c18z3p8$1 z1Tq7bKOo|M;B}t9Aq9xBcyM}z=moc-oh?(nL1)?-23dr<g@vZMIXQ*7`gx-4Sw`*K z;n}wgF&APtc>Ii@AK_!xpgaR^A0n9nb}Rhe1;S>bx6vW`GeKuEBqGl*Ld3Ho!Rvw? z%@AXTNOrs93R76$C=k0o59nN!a|-CZ-JD2c(Ebu9!(?YCgQQBwN=RHn&W1>?bV`Ds z0SqnQLF-_nj4Ta2os-kOD<SC{=^nNskT`Na!?9Nzr5=W^2M2{8qz-|Vb7=7ja|<XR zpp`+W=H-Fh<yMkhiMXEyrTl@HABg)nK=nH)eS+G75$@ozZfMzV3N0H=!Rv)n!F_m0 zIRR=9f!dC+HVx>U5%9Q^F=(6@q9)nM%_u4)KRp%Jt^wWUVdxYPY8aS@*r$!SM*~G2 zc<)|{C8A9oRt_4U#$sMrm@~3EuN?51GwAjj1i6K{hJ^+NBdLYW|Km{$PJggDW8^tR zNI$1I$=Rtq$s-JOz9q`u73BV0vU`PL6lgD$Ta+Pe{UWR^0OxZLr{Waw{&rL77+ghh zR5<2Z3s~O=6j$JU3|gNLt5@8@3=+f3^TYDOa!}&i4P>V&s2u=GW1#Ud_<S))txqnv zzXOs3*Bx-PA^H&Y6lnYe)Q>f?G)&HgoW%)t14JFXp9xBzp!tR**tuAs^@uPxBIeGs zq4&vw^nvc5Hb@K)tMZ1J1=_o4kYo%V0|uR0j9xxwL+fU^KfvyQlpA?bp#B+hJqnt? zz*Uz*^uWie5%p3=cuIIE?2amM+Xpo61X@?%lNkihZ{RsyaC-!j-jUn^-**od^8n=u z)OyIv9UShU`)aV%87VoSJ=Dl)2$bJ&jqgM3fX`*X-3JZNe9$?#aQ8by=Vg)o0Z9XB zbA6EV7E~sH&4+{)I6uPDE<`*Ckw!rI2v&Z9)kDkxx!pe#`D_;_P&`5FXY{ax=z*nm zPe__T*b!`+nHX-G4IN)5*Ug|b2HxKVD#K9y1F|3NKGgXs!s!S+wh0;A!?AV-DNMj& zhbW7Y+V76}Q4twAk;Y-5b5aUCJ&Hkd_y#EvUa+%`!D$no$AUA!Yj;y3KxgYf*Y;Ef zR)FUPL31SN^){%?KoSGRFU<eYwjZ=@2bw2<oEe#96qyb?9}99$nqyu{xG5|TXG8AN zbTS6T3uvD@s9Ztrd%^Vj<Uq?JqtJYKnFw+tbX+DXA_IJHh^ITe9#4m<1C>i~d5>c7 z-A6vokbbj|GjgBD3ECGi1(zE>l@?{#Fz9Y5pGv2Qpir;Cz)(LQPuHk`5JS*dH0WM8 zi*%n%OKl%xkb4c0(w=2DXpJPMxM@yum1ntcNN8zdo?miOrbU^jyJ1<BM_6%Guu}o} zOdFR#L#UmgJIf7|+(SWYUJR3ROTcxjud`Q*kFytOZC*L3@0VQZY37;j<`fv}Y91Ks z<`fuG;sm1o4ba8>oWNoRV0A7Kb)#Z|p`&3i8U~;|Gnx)Y)4^yu7_ArFM(f7V(J%-c z4Fgbnax^cDri0ORFxqEw3LFiC(J%mwDU7Cr(R47H4o1h)M#s&ZM#oD=$4f@XOGd{E zM#l<9=afeKM{c9-;?Z{TXuEi{T|C+@2Cu;wolhR^AC2~pM*Byj{iD(T(P;mOI{l;K zOdn^jD#-q#u;3)n9*eB}OwT+6TP00vE-rm7EiHY8T1_1;eJuqOGX*VusE|flX<l+k zW`3SVZhlH>PO6SVYDGbQQAx3mLVSFAYEnUBa&~-CYGG++QEGg=rb0CrS87>ej)oFk zqXJY_XkKPnYEf}wjxX3Cm(;Y(yiBmkMfv$9Itpot$tC$km6{6GF?lg1nQ0m&MWv~l zAa+a%#BM#P)e5#S#TuH{AO)#8#i<G)9hC*C`DqF%Afr<iY;A27)M3t7S5Q-fO6Vo# zra;YwsMLs#MOcr`K)Agi6Z4a@Qj<&6p(a43qGOc8N>hVNiV_QAlwz?u5aiI95|Cf< zDz4SkD9Oky)=_}DTmu{;MX4pFMR^LKcmhWiJb0n;Qmm;^t)Q<D3v8$S{E}j@Yx3Y) zVoLP&6+$vn6(FIhkeryDks5<6UzS*;keOFpl9-c|ngWTYVg*};>RM}rG6YKjZXh)N z;Z8<T1M>&A^a6FfXA0PlFqfie2V3Htk(!*XkeLQ^dS<agW*!y~fYS}S527Ld^-PJ? zL^C<21RAWkwZPIGt`LAYuP8OKBvm0%AuqKY=0uIeycC6k(h`Nt5{1mXl6-}dj8uq= z(Om%wb%+xcY%zi#;doF)V7MQe{HzqJYjrRrGgGXfuJKI4l+DRcOi4|#Qb<e8DMn2O zF(o)79PC}!iqz!Nl2ovdpbm#cGMXD8vc(8b=p`rS<UnH`7PLB0N5W`?IJOc7Z$!A| zB&H)fE3sGs;!UjX(u2q;*eZaE8oUMvL9!nx4xvG=ke`NR6Po$ZWCig)%s)sLD8!W1 zBD7#*K{6M}u43eXE>?gPKMER%uz}c893PLGun-EM*)u*~FIT}98ra21u0hz3!&XST zMNx*$^kgjQ7mqavBMM5Bax#<S3ld8*;^PTgQ=nk05Tg{MgvV%~{KOQ6)Vz|SN~m`g zK)DebE1*CvDk(;>2P%bd5<JW_3_x`ZtY}iGMFg@I#Xuj)4I0rPj)H-L7F1LpUYtVn z3&E;4CJ$7{sFxO}DioI#WhR%XgDW$TAgGLq_sdU7^~o$QQLx2Y78{v^d>T`Nq236j zAv3QewJ5(J2vXI%q^2d7=9Fl_%|z4cn4Fwnl#-dB2hxh!PSCIfhbod?a1Hn@gDXO} zEiEmx0+&rD*c9Wn1!Nk!rkvCwT;XPk9&U~x#dvK1DL}WOI5Q;`haU_LFgyWLjn@j0 z0yHa<N=r)e^W2N_OF>x(TUs|Xu*9tgpLIw^qZ#0wSd?E{oSK8nYlcQRG~lxiW+=K= zP%|MZA6HT^G(?XnaJwQYzXGpaP(#t|a!D*nEyzsHPA$UaGb41LA++GL51|U(#-jX! zl>BmBS;`P2|GGdm;I$2^2F)(F{GwdE3B?%Qb8sE_Y=bL8v(7UQ)KbD;EEyV`VpEOJ z8nAI_ntbz95^*L%6ZGN;tQwycU<GJa_$8JlCE`pDCg@oUq8y(k5EW>)_!odWO}G-B zDSEs>l;g7nq5{p9fW$o9dDav?M!>4^*#TC7Zbg1Uei`oUV}>3l0TA_gt$`>(x2PyT zy(qP~7*FJwnc>!h*FuERXa)o&rex;hiX}7jv;bC(&myn_G%JErb5fIW)k=ou=ye7} zIX+7uD$s4o$xOi=OO_b6fR*F51*`(ymV(T@JUrH*m)yY+^?2=pC_%F*Bryp`tQZ-f z=bezmBzzWxBqm`Rj<3`-GC<EbA&E&~4Fs$KtHHFZI2Bjy8yTYKo{+?(;?xoX_7ta< zpxct4pHq^FtG!@kh~XiKdc5{Pl%QKwS&*8Tk(!u-D|U=9d<4^h*D{zQgmtjKszN;W zHf?@V7HBX9+9k+O$^s1?<tJt7#mA=>Lq<gu>_Po71uKPW(3ldaC2R#2sI^w81vQ^R z7}Vs3jR`^e?lC0_3My6#@HVrNUJ9fctpif8ppXb_G+Qae!<)Joia@PXkOB~mAqi?& zf+RsSh9sy-2$BTR=#oecI4gyCBp$lLWN3TNN+BNB3d2wWZ83qAK$+-DQsAv8D}{JO ziw8p)v~>bf1ZAQtNrSaitQ6wm%?orznV|NCl>($;fG(K}Y8hB5#DlAJbjdt$oeqjL zFaupWA6yw*Da1o6QFQ47P%Ubu5D%{YFeD+B6-XMw!cc&yTtJEtJamOcpt{CNAs$>w zpi35mYY8ibcu47vAq_5#LDFCbhBTxQ1<6BL=n6^_ldKftK_w+xYA%5mZ4g;-35G>) zacT)f0jO|7Hvv*mfaD=84E?ao4N?MQ!xe!t6=)y}(#wR5lEB7d6l@h>c@xw}1`mSj zD?rB36bu!#^ugn03Py02F`Q)rXPLrTpaFA;4s*De1)OCGXBmRJ_Yj4K2wMyh))*q} zF+^Boh_J~JVU;1mE<=Q6h6vk?5Vjd1Y%@aGW`wZK2w|HM!Zss>ZAKv5KtmLui2_&= zN`;XLfADZRDCRTsQUi+e3sQ?pDm9>EG&%|~N{CW7Mo9-UIiR3WmY7qTY6Tv*14lEW zbO#l?@sM$Sm}$6b6brn%@YO1)=A#*tS&~|mSdx#cBVdBw)P$+WXCX`tnpNqkCI01k zFn{_b=B9$i>#_ChEzsLGShV7E02bwFZb{BbEG~9V%*g?Fs=;Pq8The44|G&*#-O;u zUM<I?szmosGI$K$8RQ6@cB8ktk@VoT7|Cdar(t=34$TP1qN2pgfTH{oP=^A{(JKJ) zN-7IdLB&@IDADKTr=+?T6@k+oXdVL0)=&>fEG|w>QAjLGFU?KOD=AjUEiEolNJ<5b zUxNk&)ge9tnUIuITI5=mng?oBmgQ%rC>X#E2T4JP4x?k?qF}|K6bBUpWkq<fWEO*r z*C<QO0Z;CL8b8n`Ras&VWS%2088ls2o|%`DU#<sI4K^9vf<iL}WH)I>fpjR;)PPC~ zWXnLd;E;m4!z0Ak$2mU-)U^VQUt$^ojsS#9Q9NB-kds*wo?nzwjN)35k8MFt(JLv+ z%+=7eMudc3PHJ9yNrr+wSh^^+ASW?7RYN}}rdV5FM?qadT~iNis0N6sV5I;JYSci= z%FoQhv=x^nAk{GA)FETUVB<hO0i^?Y7}>&ypcNpqkf2C}#|%uFMq*JqX!;SPT|q%X zLBl{t0WGr{gUWYMGZ{9y3DXNnd@!9L%R$K)l%zn0f&&?3WM-NI*p_I6Sn#wiB&y)) z3Zw+4FB&2TNu(f&S_SCzu!06CzvQQZ@<K7pBz4e8d0x6YR<j^>8peXsQA&O?I0I?w z6_%zJRYDq5`9+R7IS^F_u@Jw2tW*F^RYHUfV^K_2PykKt>gAV1`nn)bMjImBssQOe zfXqO0wgG6e6QmT>5mAKZD-b{0AXXD324#bo>X7854$}fw0-jL^8LFTF3nr)*cnDL) z$*_0?MHkp26u+nC7b$3fqBs-eI81p+*hFW7rq98$(V1972BHp@Z)_o6f^y;hfd(Iv z&%pr?2^|GnXwe1=6L8Xp20X+AkOYh<^pR38EZyoTM8l2FPOY?3P*2X!OHM3Nhj!)Q zEfjcefyg7W5y)y#V1Rw9V5<NwRlsGuUU5!law=q|6y#{+bOkpqEhn+0BsEVXv8V_o zkQI;(O3N>DO-#;!7?oI5gjiIdppl9wmO)MdVNkR|Q&(z^CYrG@1&VcG7wcu_rKDE) zr-97TghoL@X>kUK503<p9t8zxR3J<TmA@c$SZsiKD>Vn%*C2DC(F9^DDAXd$f@L5v z2a<&+v-q4;&{#RV=7S~?9dQ1Kg}4Stm8OnDe0FLjI9WhgHVPndYcNM!8_l8MyaUnz zN~v(;qroCben)c`QUs&LOFGhO4{$k$W*;KtKxK+1nk*#eqDM<&QMx8dynqCd9EU4f zK*}&IfW-<(5}O(DtN;psQ1&d!FIRxJKb*n&0u<)p;uEF)k*EO5PdZ={lqhr*P%B>@ zh5RB&dIq&tGzcjMhp;BJK?89LG+#qFD5(ZoIfBdtS?v|90Z!LC-~t+vyugvDpim3% zc_=7A@_R~ZPHIUi?))APQGhMOmjtEe=9i^{M!H}j3(n_yX_+}CsYURmJy<d+C@G}o z=oNttz=$Wf40K%-#M>xQotmRpkXV$OR|4`lHUki{P+OccGILTu*%dYB5gATF0UDOD zDpD^gKc!MHIX|x?F*C0iO)E+yfV`8J4+{@y2GvwZ&d)2(&q>uQPb|vQPzSjb6h&4F z!TGtVkg`T0IlnX~MIkRA+?0g`b&4KJ)I%MGFdpuHoN=0(n4Ez-MnSTu(TP&jfO;M9 z!T{<OEM<)mw6FmwH-Ho{MhcMP#t6#AUEmmDmN-TjbtEEYz!?Hkr@)Gw#DapHO6UqR zP&tN3>F{U-rA5MF1xc&8Lkl90C%iyCE+WFq7#dz6<<RglhK83hB)p7qhnF#Ccp2jf zFKCj1B{;8O4df66XHGqg03^D^NXyJi!53b6pj?&;>ZGCMOXNlZwDAwg*Jx!2q^?IQ zJV50cib*JK15jlR^$bX1u?{$6VK#14b0AJaPADjO7#e6W*FX&eB_c>O7oibnz5|5} zxR@zQ&BGr;FjX2bXTb)9KtTcusd$jZpcP#inV=<3kg-3IB&3>zYlFHPq*@PTJ={Pd z3Sp>TuvL1QdC57YDXE}h4qCFhLPHFmhtS$9Q0=e)13Mu%u>dLNFxqBNEvY$r$)M7> zC^ZkoaAJZOl05K)E<^#I3~Qobi>StN7jP!f3=2{Y&9ElW3~K_(uqL=OtO;g@HNlf% zk+Ubn{m>*03RFnpiwGMM3piNB;tn#H3Rv3FQ2;lJQSux#=ITHWLTWRE^At=yJT7r& zkle%q+|B@{9TYoJswGq6V$Bp9Yar#&STlvjnkgjKOmWAWDQ2vh;)yj-KFv)mC;+#B zkfJa*v4EK9gJ{(&&d*IHBF`W?G@xEQga>L(U^Gh<>=j^H5@G|iU{|nGfba=N6Qu2g zJEkD=s96k}Kwwsb(+Ma>;XOT&Ly=24crr$5%E286Dr}%Ghl}A%R|WZa(p5ozfkt9( zera9_O6mf&*<b@HU|9u4(6acv(%hufBGhpd1qFzH1zQC}xMNV7<e;Pgt}zsBVIy0R z!Wtw|kPn)7MoJ(B`2~7OnRzMT_6u^xF3-r!NmYQlR#z9rz0ffaJy3<G0rHb3vd&s) z_#@T%VD}Iogr&uJ+KgaJQJe$v7`WyDH2^`e4GtJYn++xNnh}?I&7heVq#T-g&7hgr z43c@xaA#gK%*<<sC-Wjj2dqsAUegU~Od^jjfclE4$rhAwkVdaGH5E!SKpjO;c!N8O z;E;esKcu!+tb>FUyx;^GstM^4LYlRp@P!O-KvaUue3bY_=0M{b9_k>waORETjLbAV z<2hhyXo^FLV30RypFfCB@ksFnb}}TiKtX^tAAlmG7+Se2*xD)>D%gV?hTs8HD|k<x z<nA(fObd6(2$n`I7*R5UIdK`m9GVe8%Apy-9GVf#AsN9OcSbPB%n0UqG6FO)Ar&0R zK@A?lBfqZz8uCxZGr9ng#}i-{#08iIG{8X0p#f$A4KNExfLY)UFbm88v%nKz@CeOR zuvIY9Q2?#R1eF@l)Ml-asbHg!W37;hVIwF@A(b4((V4M$OAlzC24!#LI4Qs$DM-Z* zG)_Ue11<_R408miG!LAia3^Z00@PT7m;ay+E!-kR`45tZYJ`nZLW(-5AbJIe&<PJ; z(9oqNaq({njen4GX#873<KGez|CSiB0g5y5V5cQ!{9EFQf263OSIuFJR&zkZ5Il?u zk6=)X35i2e8c0k@aRyB}<4y!H6&m2_>r~{4GI&c4lnnGr^3&6EQo*Ld)arm2I3Q{; zoJkQf9thTp+a*YfU>2ZMTu2_r?ilb+F(O=p<P+SkK~e;BjSgrEv@{jPQK0OQn_7~Q z4;n26ulfK_0G8%KmSCiS8ubX_ywaQ;1$zZ`h~erARuB_GLWwCUAig>z6d<#npaKHY z(tuXj&^Q8Hfpun3K>@Br0aOM<=X#-nh_FFv<btCYJbH+yQ4jKH4rFr<lEI)JKPY{H zmUbYU4tIwhG%F$XgpyGL5adUY*%^t&;Pjzjt565B2c9#MQO$*fhaz0LnwkPM{K3t9 zXz*z&fXx6kzcjEKfJ;9p8Zg|a05(m*7EBQ_00Z(9JoBXHfIA?`NLd&nk1|RH5`tzQ z5ECuW!yN#c8i!1zgZzgYGT>SWEUW+@Xm>0rDauSLElJf-2d4pbO>6LMGjhB^{e|Q{ z6qg}oJGc_4OEK%5^i(`e()834je?^50+jFt#eHHCXfYDX;2}|I669lO@Pcv{in*Xr z1n&??&4~tCid^ucq<#g3#G)cd?+bNS4_hd}y20SdN{|~7QGhc{it&X>F*HoDl`SCe zft(JSswgfgDh2I72WNfAnlv=;f?T6VC>KL=561W%D6rtwGiatUGfx3zGny43We^jf zYOopvQk9w$ot;_<s((SofZ6cG1CobeXpliTAQDXgg^Lm$&^cR_i9Hem0OTmpBtKU7 z!xD@FctuPpWCat*br6ilQHZt<Ntp)JKgC@Ufn-seXz-W<HKYs;h-*n18bF&;U=7f= zl%WB%F=YrBz}=iO1TAhsjIe^6ScV43`3f8~h(G{kZD`qyx_$uEbA|NtKy5Wd76PqG zC<0|iY@;oZAPvdL1g*Y-Zioi0_W{KUQBe=dPN_MdMJTB`(GYjVA}_sigPtUTk?3K? z2viSr3@|kZ+?g*%c0R~0I7$<c6vzcg-cVChfR<kH<^qP@uxbSAZ*UU_Ehm9P9b`NR zW6KywB^<&c6hn}VK*?qh$3o{%!A`IT&p#_z!N(#=DG4)6Qgd-9bdanD&Jk*)erz-- zx}(7=V`GUP2+M~~-GI_32!ldPUtb{=yr3{6F)t-2wWt^-0dBHcA(ofr=V^cy7V9WL z)~n|i=_r75W>R8uHcF&{;uzXmgXjR4*f<(%FcrvcHHa8;szQn#km-sb?}OTvU<R~z zstJuGaP%O>El2~*onV(BQUL1c7eW!-he*aKzy%d-6+m?@k{r78U?$;m5~x^61Fd|4 zDMT_0CZu4Cu+Sb64H~G8Z%BEOngc2kkkSVthCm^O9FmaAOEEPEHiU!{b)XahN%2T7 zLTf94v=SQGhd8Swu_zt9{|VIAg0D5ug9xKK3gRrNj6zx-q-+EgFrf2nFqRrY+^7Ii zkLpxpb8A7l6k4V!V1!&+9<&?-g^`XzbSfkxp{x>w>`nj$3uw_yW--C$1tjfaY4d|6 zFajHtI6;N0t*ruNRU{}?L#9ALvkDmM6+jK!#FP~9x?a#ENornd5hP<GawF)doSfoR z<dA^)0IaJR($Yg|I6$ORbF36nbKvXaAc7zg>~<?iL4idYmSnBq<pHb^0ci$dlp+-@ zfUE*V7KH<gXV_FRl2*)?cYazL?xHn6Ee#S(#fWf130-hZfJ#Ep!8OGtiIA1gIBG<g zj}>eofdZMx2DuJ|!NCQ}k+_QqxDqG>e7p_BO7I|zf<4q=1uF&IWvPNamSR)E3cYv& zrEh`>7m_v<Y!x63EPXtb-~#y*9Ax0ugdQ{vLmC$vitzBMsez{naM=r4GzqCP)YKF- z6rujFsZpqdFyX!4R6VeOCgy571%*^Sc>fOUTtrTQXwp$YvIwPo0J$5QstC3uU@Z^u z7!QgmD2Wt>12r2I<ZvC(>H$lN&2!2rEy9y%!SWig&_sy<P~d~BKTwGQW)M*i!XpM( z%>;5c!K4D)Y5*-r6rkk>Jf;!l0NOH8<Pr(&evnDv2t@Ikf&yF|bWRtn0EY`=l;jW% zphSSB-~~0R(2NHq0#F?csXstx;*_N3f|3+sMI5Y_0);Nf1b7OEO28u*WEKd6{R1&j zQvs|47HyEa3@ik#(4cJO-~btcl8_V>kn0`=1^CiEjM85{IVUqYTU`ecYFH}(JO-5H zmnLTvmn0UI5HJOrl0l9oEup8S5lHC}1=y21Nr_Uy790+c!~k9phBWX7N<tWE0Tgo} z2~bG}qTx{u?kS-bW?*?(#DYsS7zbN11q~zO3!2m%lyrrXAW%3^lR+T^*8z<j%wi_7 z7+j|y%9(V~mQMIcCumR#B~YM-gEc{BHo%jAkaP^P5|MCWcETG?P`$9WDA;ke(8aEx zIv<qn{CpH_;q#Pe`=mf>;4VWMYXa}cfV&f94rrtgxu1;WVCa}D#L3_e8r)D&y9&|p z2Sq-P_7+G=5p^UMyyzZeEu`o}9xa1*J3*Qt=7CZm$S$~(LAeG#aFLmUb@T<<?C8uC zc(8)>Lc<zuu`qaO71Yo`u?N%zhqS%@eDu;&OTh5}G6d2Sh8#=a=c8AQAq7g$py=@d zhaH+ea2zPuDu8JuIcTgW78St-p{|9eTBs6O!te^#0Qpr1ViY7nfwh1V0C;-`mi>(I zjl-Hq%RV)+l=<1Iuv01_9ShK49e8jYG<pm^Xc8`xoL^8Go>`KSnTIN#mYI_S7V+}| z58i<@JGQPPTpnrF16T(%D8Rmg1_LN{K-&3w!Iim5`QQ>J9=3H9;XPRT^z(_vlm(3` z`uXUAJLsTRCL-BmQw(+m*bSg8lag7cV2h|rAloaU%ON$?Q!>k-3$)?6r8u>uB(=yL zOrj25gNy?&=`g`u%n9<RpATfz8P?PQI|LFPDVb#uIRb-EFe8v#0r&<24T&5GG=vQV zf;7O!{S09PfrgN2RYOBO1A&I1NPw@6h71H^?h*r~Wk{w21s0YuevmLEV}OU2;Kv-o zM)eTI1*o*}^FhhukWMzJ<*nf7gSrz763md+ID9Y{sgHr9TLbD{g1R)&`2uM77}RJ% zAEgBO3RK2`r<ah6L68K*b|ild&S5@8>_D6f9X|rcguMbZX`>DEK|~?N709cwHX5|_ zhj*&MB^YD^6t?#pk-Ihge00E*3rJg56ch+l%8=N`l7@&Jn1DnIbhH(tz5w|JE%u@L z6(WN+1_Y@^utq+#q=RXL1}#cWj@pC(ZQVgc1^BcH<kAPUOBZd%nN%OEsewZql!a(C z-2wMBxS$0S@T?1)X-UZ}gJ)mNQWYH9wQ!FkRg-W{a1+6k9-zgE@B#?h^@9w@!xp7z zK-9s?I*<lfSqIzCVhG*PVrYa?)`4<6q)fxIoy8Eop9SnsNYp{28MLb%=5){!4(QYX zSRu6DLuveZ1%v$!G6Q;^1Z*2Js0ji+3=^UV^#Bkf&~X}+opph6+(@-Tj1u&?pBN=8 z><4gySL47B8G;;d0qLlrxes*42W9TVc1DCT^n@i)y`ch`0|gz&faMeiV`EJ{hyrj3 zV|W&x(ohR2jm#1q(DpeUg_P9dWKC#!28~^)ji4yXL^=rsRSVcUaIuIQBF3PjPACfz zu&*KM1edQ3Aw{#kzJj5po}r$Ro{56Kf}yFNk)E-hnF1t0(B1E^qY$8@0AD9i3_dqp z1!9i|l-3JY&{lx4-4wJG6tP8*38-PA4zWdDN1+-uY_TUPV{=WtG)Vb@7GR(QVJHu< z^ql;p#2ip@jQ#LNV<WJC6%=$7lJkpFK?)Ucg|0C|X-Ne{B`&2VaHScbQ&Yi;aX7#X zt~4OXKg2&IGQd^ARzV$peg<SE5U7kmO#rYY3_dhKM<FjUH&sWWIKQ+gITe<0K^i=R z<K6s&oLyZ&&D6?*R0TCeM1l+jIZa2wGdSMe$KS~j)HMYSxFV@?M^P0V;uzxTjA>Rd ziYl;AK;ejHRsf1BCr>{Y1uUwZP*jBnIR;=;6^>8^Nvy?SRS2KhLt@klOhtpj2YgO~ z1}L7PT+q?+(BKE9fYgctaEBk{Ca9UwV6T88B^F^HWSk2Wa<)hzXRiQFY*rvaXh6XP zp%z*xXh0M}`872P)wP;fEy+%;1a}X06!J@99oWn?4Y>a_A#n|wj!Vpitx-tJFVX<@ z?K1Pwl7a&0?0wky9;hjhmspZnmJ0I|<kVJ0L}F1>gHA7jhJ_&h1^4Q}{cU(Z5M0`U z!XYzF17w7n8mROH84nFUO^}tDc}Qz0Kr^o33mOz4E&%PIE&v|^19wX)=zJHDarRI* zKy0>xdI`*f+pMpzP*4OODu)GsL4Hn7DfkFdP?G@^@5Kd)$*J(EU8vK*#wZ|1Ajr>< z3mQ;8jC@IhJ+dQUF4osq0PXrvD9OxCEh<(h$%i=w<N)x9LRwLNF7#pw(B|Qi)C%w^ z)}WvRrxtKlP*Vd92PoJpB$rfZ<d>G{K#hT?P|)=WMTrGaVUR(vRYAoHAgf>jk(`m3 zmkvIaJr@)gIhjdCiA9w#*Mcns=PHng!IPBGu&@OsH3fSG_>iH7Gpr~9xfE2KxFK~$ zH4=3cl5`Z{^(06QsGSYo{es-LMKJ}Ws<=F}Bsl}rM1t(Ohc@7lEdwc2P)JTJPE|0l zg7!_o*B3a$qaLCJs>l#kkwzk<Duk&4(O|=j(ADWEKo7|TDS_Zx6#L-bM6npI#u?gA z1U2iyEl`M;kgW%|2TCAjyCG$E1zQDYBrcNq&?bi)Tu5JEAvZA_bZ&ZLNoKMF=%SL$ z{5)8+=a=MzOIpYR6?jUo)dVFYO$Bg_g9|cnZib}sd{8z+xqt+c@L-)|@BkRN@BtZs zD1*Qy2_z4J`V}Sl(B+rlbPp<9^;Dhx{enY+LY+hWgH-jPZqifrbM$ppg(X5rNd|Tk za;(G7RnsfWEGj8Y%mK|mV2FWBZB1yJ1tnQ{D3R(mcqNPGI!G!;tu2E<VF#}v)YKFd zVH~haG(i<T$f@8O1lo$sFNGdg3W|GhHvrm`gro?4eemq2LQ-Z)Zejr_Xb^2I(2g_( zuz%9>i;`1QkY(LL`xC4ovXJToSvFX~R>1@+TU-K4F37S03bqOsP+73|ktLl#8{y2X z!PbIGG-SDO1zQDUBZyo%=o*>4m=c(CLltZl%s_VP>nju|rh%&!m|PIZOd|_xPz6+! znwW!<Xu!o*0<?fiPypG7(N>2V1d3#|CZZ7$cM(APk9pvGK{8583W}}t_0uy;GD?&5 zlJj%*t8(%)i}I7R^+73DH>+4bv$(i4wOHT6Oc~5d&d&vHc-J*FG&MK1G%&INIT2J4 zLc$$>T?Nv)ji8*Ep9WjdplGY04zDl4BdXAzpl@PH2518lhz1#|pkNQv1E2IRPR&VE zz%&6QtOwEu(+`>n2Pw5ufaP8db!ZU+DwfnWp;HiuD~RIb(?OcmVY?#1d}zf2j;hq+ zoXoru-IUDY#H5^5-JHxk(8(6MV6TAgaR6O70Y8w^7<5h}p~gBqCP2Xl3T|wHR}C%M ztQ6FZ^i1>&)FC+q+2NpzlN68~4!V>8WE>gJ2AwHM$l18=kpcw*I8{N8SWV1P&{rtV z%q_@C1y#(T8Xnvz$jnOz#V*LtiLl7Q)oXyBRg94X(x7v|8fkf;MLLNkItq|;qF_ZQ z++>ZkJXpm83bKsE610JPXsSqq?aznS#Hhw$RH<+WB*JV26=-m?z*U7tNe0MaNcAox z>Od;dYF>nKpvo88%Lb{#ZX!q#DEEVFP&7l0;ng{cp=hlVoaTbmVHgc9s9~C5fv>Nn zpr@w?8XQv4(no{?Oc`Q16*w4R#~H$+1LAHliB^h%PBSHx2;q4LciPA-fw>73^N>0| zvjkjvz=B3y6SAQ-q_Q9tyrESivqV8#L0uuU7<^JqB7C8pB6K1Iz6K-{(gnfhe$WxD zgxrrm6M-^E3aFC@N&}$I7q-y_V{>RbSVsXeZ{w0$47$(<n_3fGISH#`Lru`udRR0= z?k|E?;NV#%ShzxCIwe3aO#?+0!aW*>uyy>9ct>7>hpGp~WQb|tb_Cj@bEusV1>ls5 zEea?<`W6%giFuH*8%QkRDx@sn(ctN75%1#f8}H)k=II9-w7?p=25|Ky`2j_lxtXAT zC&&uy;~^%9p%bJe0Z|We9@+pFI8Z=EETm0Zte1wv<tE^G#%c!gLP^w7D-Dd{F=%lG z3oH$PNK7jzfLc~aUepLc-5m$lfHc$wc00JSi5ixgpo^iP7QwS%N&u!~pa#?`BqxG8 zRH>TP3i?_KsksFul?tHy5<%etHeVgIF$dHcMA!~$TdRZirl1OAlo9HV$;qk3#rZ{$ zLZY~|0Cc}%Y6_x^$V}5v2d8K7sg4L6H2tFkKr@915y-SH)YZ_m?GNT+OV*T+a)Xj} zW-%nraU=_4=%KqrmaK{}<1{i$G%>;otvt;G9lD>IT!IKHsGso^r^F1MlT;l*t%Np9 zGa)Skbx4V#u3!(k{|~e{05mCvSZ)bZ2Cq7BMUn~S1KSuOk85-p)C0pVXQYW3vp_4Z zA(4+(XdvBAhqy@1#8?x$2tY?cJrOj5jWQ{zp;-+Z7cjS0sIAr1O9a)f=8%v9mjb9Y zy9wn(*x(B>6Z5jwixoUwEx^4c(EgXS(!9J%(9I4=6A_@SPGm@u99q@2R0<K2dTbcJ zfh9(b)QVL2s1vrLQc)440@~>Ttr&tAkDyQjRVJ`ZQ3M~F1h@LIltL!N^lb>YZ(zj+ z?otTiG#&Wz6kIBeH1%MM86jHq^+6?geol&lrz?0s0d&PI^fX{SNZZ5}a^x4Np$E(P z5WPAeAzKBQ>oi~{gOBaS5Jfc&oaC`weG6+zAzGx+(9SGYu!nmO)htkH3c9WY90B0# zJz-5s=$!{9ROzdk>lx}9Duf^!A{yYEHx#0E6atD;(^89yQd2;!W6({kG2m0nVPSwP zHlVc!I1Y+SK-a@S@7;6_Hd81rNQIBp=_r(^Dx_ql<f)e^fV+vHaRmhj2c#wgc(@Z3 zFZ%l6`yfHLc^0Q8=jS1gM_14VZM;fX&;^ZpL);6Fa!@oTf^SuX^fz(m9ngGbFszKs zOw&NE&|onIY3@T-U4VL>Wr?u0nVD%C!JvW|TAyfuck*PG=#}ILmlS2@rE7x66<}Ev zJmP_{0&>ncY=aA^2GxYxh++Y{+2F>7e;PH6R-~=t(K}c%O3sO(7*Ed6D+Aro2&r~K zQv?O@wlLUtF-nl^1kM0x^$3-Eh>&4MSO*2#yo3fnl&7GOnpc{eS_B&NQBbf_P}G2E zQczPc)P(PSNzTtp%S<l?t3pv@giupnlvx5X1<f22gc`8NL8Y+*NDY_=O8v04-`IkJ z^3Enk&LCppg9-TD9wHV#m{8sm!`g|0UP^&Y&K!F47>2*FDYh`w)JxM)hb_5;^zzYC z8|AHTj2m7-&2W{(5?oz-6H86VW$NIj6etPk>nj);>KW=8>lv9VK*|+8@MtxtWQcZf zfO#NR1KhjB=2cT8O$~@n9R+m=LmhGcmj=Xy)D&1r2pT8ViwDg-LewG@fX5XfGlC$e zL6={}gANHY01c!=6EK9**H_3(tpMGqoswDsQV#P8Xc2~?f-1ytPv{LS0kBIlRP{i* zAfBm3awW`lpaAp-+h7ac;Hei6pFe~i(g>Q8&&Vv+i_Zkv3R0@0P>`RQ2P?=k(;!=G z73^#k{9*HLu*?t6dR7YH!QITf)D%!7BoBIh4LBE;C_oHTuvJh=ECKaH!MkrEMHV7N zv~3~Epyq?46W)KVhS~yl70d?k<^YHl*j9m<5YrnX-1sWV_slCvO~-kCpDALH0@D3Y z0k0*%nye6OY(RU^6%=&spb1nt5gaG_`j8vTktCAyQ&Iy!ap4G7fss>Tm8C|Ae|&IA zkf)zJEZ(6J1XlnVV=c%phADv5(4ckDkd&nXbw7ACRuh~#KxqNAx&f46;Q^rmG6R-U zK(e62u3(#Dk;OrCywG?A4<vxjz%l?09b|%1QVy*8hPxbelnv+{8+clRYfc31>D5cl zNGx*BPf2ww(a3})A9xZ;RIpJns7SFe0NaqLU<cwQrKLga(^fD9k7h$=1wpqY7NZ!a zpsir2sR=P68Dc~d#E7)CG=!h*6_6bZF#_xw1uKO_gfc5MW#CO98ksr@nF`tpMxZ%S zjYI`qkOM)^wXsn!G|*JgR?tX-2qqhVxds)61_lO@dus61Yo^5XqT#)MeSHN`L)Jtg z1eUHr&IXkc$*Gw+pi&kzIiv^TfFwZCo0gLgzIX>L0p@_?1$R=!(s=hv^aBkT+bU>h zmVky#4HT>tKmv9O2A}~{unkrUAX_y-&3Ui|;H-^W!I%=$Ek^aLk)ELf^kQ#FciuTa zwJ13=DJK=ah5($@iSZ7oAOwwpAWA!oQ5<-qEioqtI=iiqpQoS@qokm%kO`mCg=S9N zV>zb8ba(NWURbMAA5W(s$Dl|^#s)<<)`AMLTn##dieJ64Avg#@iKQqNQi?z|U>~S8 zMGVw}roN$SK@@iN#)yS(8Hu2^S|Fuhj9tB{Dcn7<>Jq98hkAthDxk{U8GJtq$O0Vd z5%USfsU;!M-b+YgI*y*6IU+pMQ%m4Aw?D4oW^*L>hqwkghWH189D}oBF*ngfZkWL` zu2ZPHJ3OXAajmEk9jlj}T3HP0gsFp?4d78%sGx?XCTOBPI591;C{qCx&`G7~>6M@@ znczF$iWSQB^A!?6+7e(^xVgo9BDv63K^@V+Qimz>c8v^%x*tT@DyW0p0GAGP^a*uE zD6mz43<wvau3m)X81NPY#MMnm<7%Krm^EZUF@c)WDX}<JM**~?L`T6nKM%GJN(bEf z(ot}6b#n~$2>~x`40a9CQGl$0gw>iz2}A=$H^e|t=)meGP^p@pTH*^k;tgIEXJ_WY z8;{_cQ4tbVpfzxrdEotR;1(;ah6Hn>LAnqp=0Im(L4q)+fdUsiT?z_tjLA*V^15QA z00XT!NAdu8<&};C*gRM`f((RC=t3e1(@=23j0|JpYoK6(qL7+bQk0oWvQgk#q6E^G z32}6XI2n}KLGb~ep@bCy&;$o6rCeOy;vqg#u!Ti9XzT$Z21&Odbr62MQz&TJ47k0C zkOM~w#5!9AP?|#YG7ySXpeq%@Sr@D$8kS$cD@q|kNVy0s3QdBbTnbSD6+l`?ssdea z4>lNPOHGXeJiTc^^*~EPkZ)9=K@8Rdl~%A<P(%t1dj+_`R!C;4Lv^Zy+Ai?s8Im^> z^D6zot3pA$4;+16L4m0b-d+cqCIEXv4{8ReK?ZZMl>(H7FbcZn3p$Aki#vFk32qsH z7a6%_RzTN*LNsTlX{f-RfyfdVCMei~JO($=A6Xk@H3BGSfFcy>5Mj`oGxUxZcs(nm zO@WAdgvDS-2B(&Q$LSy~Y)}nRk`Hw?qFjZzAC#0(YZDC&x9cc`IJ%?G4T7|R`VE;C z;30m{`7#Qi@!ZtB^vpcO%2h})1FQW(OVBbBi?LY%OP-pLRcTn908^m@ozei6$*>|1 zx<(C7L0tw;3CfUOT(OP<qK>H511+)zjX{T5DCjG=xk17rGYyn{VOdm74VFwmIRctu zAR0llPmoNC2zUq|nrT5DEohoiK%{L%4FWkt6S>rZnGafg3oaBj5yc^RpdTEuE~#mt zWlf;g0_Z+exU)4BVPRZT1FJbeuGWB*@HI6GNY1ONQBVZu4Md@!iSP%gX$0ChT9U7$ zfCzI~{)B}%!bt%+rRm@_09_LYaT6>8i=#mWB4|n#W&$)=5DG#Z-D5!|C!(r_DuF}? zs8&R{4w_F9w||2YBBVC3QUH~yu-L;<q(FiJF`x&&d#cz9WQu2Se6VW>h^2r-GpK?? z)(S0JtQ25H9K`RiUK7Zu%rp&XMUJ%49qI{$uOQh(1G)|#95<Spur@6$GO|I->!Dh~ z3ol@C0h%rXACU=dHN*G71fcDK!Il~{VQmtq$uL8q5e$hGXqN(VY7V&SL+c<BGvfsB zAYt@*V7Ud&P|D{|Fl@rs?J$Pi9*kx=Nh8>xCRavcG1A4spafd0hbjh6))-ELwM1Y$ zxnQXR8uF+{Kxzumga~NIJlH^N(Lv0ZGw$f9#%3ht!^BuShLFiVP)-43933CT3Leld zx1!7f&|T0V4cOJ2AUZOrRU6@s60BH)SJdE$1P3%IbA!f4O~L!rK(lhH7^+o?8|gJR z)5KN@VoRN9oh+1*R%lHK9$&SF9o++RChkOr)bxgBd~n|ZI-7zdjc8mb*h1H@VRLge zNV^qy_aP)+Knu!1Vw#ZA(Gt)(e8`<u%<c<na~V<qVM~IP5A!3o85$wB8Jfbj8A8&c zhCgI(6?|=aW@<5FVimR?3U|UYMoOpw(7r#o*^4b^O)a5~WF7DnmQ!iEH>i({JxQA* z#yUJ*<H5TSa67}yLQ_K>rc51fiz|4M6-XPXx`mfJ*jHfbD1a>i?IQ#G0NeIHeSHP! zm<4o_uspLQLm>^c>mvcQI41$Javn4TVx>@8oT`wSR+N~V3Jq@su<GQT)Wo9H6og7p z`URDzkl1j^Oa{$xAUPH!4{i&EWE3S9XXq%DCl;5af@hzL^HcJ3E3H6_3f!F)l1jnr zm?3>MsLj{|7rcxHq5>9LppHu>ET}*;jL_(T&J#c!0aBC$UgHbe|7e5M(@Teo+98QT ztZ;!YbO0ABpqd{PCVIssl{u+;DVfCuIf<ZaQ`PhG^HL#W5eithHk%u1g7)#G=B0pd zaMOSo4#_<TQ;R?gPSvv#%My!|LHW~49XvUNW34<yjc#dC4#b1{`p}#YjRuGvpu?R@ zQu9i}A-9Y}`XW%@=<6$Fl;py$)5PsESRjDT@&YFcG(%ylI-tfvEQV>)%P&aHgRhlA zlLJlTrfTGXmkC4sqpqN>kPha<Ox1I<g}53d1yQPxtQIvC;npVS<QJ#H?L|qTXpVqw zg96_vqmikrs|mSK6Dc^6woyeRC9vqsSlDO_v;}~$2WmCAY{Wj=1o0Jgp$e$W3(GiA zi$U{X(DN-aQ{huGpzKzZT3nigH1*~W?q`B>F|0wNpa3pFklYPAy#=}g7qO@mG&KS; z3bf5LwH%@c8jDy>09gT-2Q4E>Nl}PVijN1kg5%?3l)#+}sK?O8F$?l@DnaM|KvFBr z=4e>a2kLe})@s6=$PjPBYcx>0hK4FgcS&hco&q9#z;ie7aR&u^1*mQ-g_M9|4G0Ic z3<p+KK#~nOdh*Z~1DR51S`fa#7<)m6wBj6IS>aHLsHxIZOTZNmj>eH0^auk`7-O_6 zu+?k0S1o6z7UNvE3>t$2tz0gG2PU*h0`mwWg@KYQXebw4FF{?efrvF|eFrX_Q}fb6 zdzQe1kQhZbXnN5A<SkG+ucHtEO@)v=3)x?yV5g9&30^)Aa+`uJ*r4c4ZS7d(c#jT% zpZf*PvyfB=NeL+Xj?9ReHp4%`f@s7TA{~}sXacQP!6WS&{@_pmg_H_3s6d{?o)*jy zZ40D=2uE@-ht4L0!VM!iKyxYB#+n-V-VAW4Y52nm5@;BK9R@0pkSs;cL8#$I%oH5{ za03MfXnFw@5MYcwG>~R-O7cA+J_0GnuG$Q78be}HQDUVh<PLWnfoEo_sR16(1;-93 zg~Ey|kPWyrp|<A0sT6DI!^(R2wvD{RT+~7yvLFMr@B-#Ds9LCdKrVu}dXTaPq^JWQ z-3PK6<XG@XDcCIvpaL2;cHys?nFeMn+A6^OrU@GJ^9O4HFVcjV204)r-i-w}>0I(b zE6+gb0n~a^P*cdrOi4-21E(K|#gNPi_82rjgR^L6ng+rWP|XAKIXIspjcnB+#}K^u z2Dt!KQ{r$H>Np5Q5!l<<GB@S3r~3M!m3H8zDyb>ZwfH&;CHc^F2yQZ`CFbOSPUHoJ zyFy-mo-Wv5x;dHIsS2*a#?UpD;62r#G!IL|I1(^ok`OY53c3{tTd{5m&G;CZ9-izl zCg7nq!&i8KR!`y#J7R{A@Mmz)s4sz_Nz4P?aGs|NN@CD8gP>9CFbniROU}nNOKN5U zDWovM0TM+T>Q(BRpuTfKYEen0XR#}Mb)tp=XbA#D6;d?_T6h4h>YxQ<a()^}5ImUy z8Nmn5W@MJ=fp0O=PzO(kK+FND!x^H)jGw_rfj}t*wjdTf<^f+G3pO8=`!IZrJLX{~ z!N#jJ^&pE;EOZofq3H-){vl@2jhHl0oC;dY1R4GZ=OuseY8p`HDk@C{uYiI{Lav$y zc@Gi-&@_vyEJhUfCHX#()&(x5h}nJ68m5#~&;dL+@*u7Sk?;Wa4378obM^^!afL60 zh9(xc5*5%?v<~Pzcm>ee9pH)xR^vkYz*tIuuqJrn4=Vnl?H*eNnEy23YwtjT1S<ML z%D|xt8b*NnO#^Nxe5Wt6a_|T}I3a-y(AS3?y{Qbl?in;VP^=J~n421wm{Xb>m0Faq zkXl%pn3GvjsgRhHo?nz%l93BD5Hu@>2oKOS2l$jch148PNc8~qgB|qpXlU*N*$j4v zf~|r-<Sq_vZCGCmB$=58IlE3l5qgadY$6;sJ`L{F!yOOxxk6@oUVc$(u|h_EPHM3Z zy3ce$`&3~rhn_kJnhLN+b)+@Kt=ih4`V%R(K{XR3tTXcz;4LVqYoWe~1@}`@;Vav) zYOkqLfUW5Qb%vm+2XuZ8EMb8HQWtiqFgSN&+tpx3%-Ax)JPKM2W@xGq0?k99@PTGO zVpl!pX6AuH0o(@wFA>YlgzOL}p_Ixj0WG#uuvf^<%+mlxCwRprs7%#SFsLw0Lk6HJ zXan%rNkM+OhLMhfsj;SlE_i*Pf~A3hxuK<{k*SHfiGii1A;>%607RWrFr$17ozy@| z1Qj}<aI#f^1X3b+i7zMzlM{fT#w|R5L$ehmb%M$Z=!#Xys$EDW3GY-xRM~*n-Q^}$ zK-4H`Lr(?JQ7{07FDM$o3gLEuiwtZ*N%>eXC@70Fz+;a%N@Yt;4akxqXaT9CP?`x^ zW{ac1H-~nVaVJ1fQxh6$(EJB+0C+YJl+!hk`L-bIKy7L0f&gs6K%G$q_{kvH+I_}| zDlgc>F$jDtn|gda===)Ztm1fxi{s;=!<;$_#U<cV>1?4#b3{Wlffty-P7;F&fse%j zM=?oZ2C@Jt$PiqFd04{AoS2?BN^>X^)D(vHf^-xLDiolZs3<WnB|jHBY($F7)gfm{ zYp8<;JChSjK#>bByOGD3)In>J!E?Rpn(^v73L4tlnJEg|3I!FK@Ftmtu^H|}VNOg} z8SYVieb8{Zg|0#hYTpaghX<8o82-}$i7F_lCnK$4L!G45$t;FXpZTZhfX-7zZwu>` z<oo0&C+4I=+P6Be_M#5Bg7!}XrzTBUgI5RJt`Bp{J6jlj!;${syB9%KBzz1R#(?fr z1f^rt^4^^CE)A%VN=e1l6#*Yb35gCJ@XAT-1sT$a256}oc17TMMp!h2B&I`x9Q!CU zyv+%kh%QM?2W9%i5?EssvRoOq)(5mLTcNllu>`Vj+e#s`1k^i%9RCGgSfr_$k_zhZ zfH^t})u?;5Ky5GR1~4mylEifAtRl7yPE3CXf6D|E+|cq1QfXpK5N4oyp**`7HdO?# z7I14ZN9@*s6agTmII0n2BTYSsB3R6Z2D`=wNBTPX!_K<QPg8)X0Cy2#u>qMZ0%-zy z1G*Ljw9f(~nZtBwfW}c^(FUuLz{M#@0#amyg9Cc@qb<mAkkgS|q^1US3sg-_je-V} zv^`W-!3tEHX=*@=Kt0gJ3&;}WVho(vVD8ofTMXKO0df$Q%te*HBJ|K%OT=uj5o{P0 zb*cerKoxlm5qn-j%5d<J8*oDvTXHf-^b=tNW}qO(Zn7EbSRf=mbf8WK7rLO%O;T2B zGEy!B1s*tTF%kk~5J3;stDuGmJcYo!9RA=@Lx={%P&{JX4d!;xx+U;5ia%l+2J8UP zoFw?<*ZedEe^3PoTLF!lh(SfHKk`wGC~9Ge72d8ykwp|NP#fXPeNjyWhmV3iO0Xea z!iBADp<b`YSRn*Dnuod*1e9s1J^}}gFQ~boo(-g3j?Igd_fD`TZ|Fu)koTbNOi=R1 znH`Xto1m45P_?*~Bjq0GN?FLd3+(yF6rmixr7E7RN)gnD2l**EKPM+O8FY9nsHlxr zhn=RbuA`vt;_n-hpPiZqx>*Lq_f1X7OoVZQK@<ML8L6oyFcIhA;Goi+R4_Ldv}?;& z!N6Jpw0+IgS|L+g8<zM%)`C`5Lc_*Z0m%)~nMkX(o#Ac+tv&{yD-BtW2`M)~y+H6R zE5smM1tj%qYDhece3h97S(FIMtk9*TD8U&ES;Y%BTnDi$4HVLlRY#CisGtB_K!sQ) z3K!7>kI;cLGH47Qt!YJh{}1bOw8WH@ko?fR;^h1S&{l9zlwwWPh^0HlC8-6F@Pm@r z6P^X41pxOUR0EE708&y#nTG=D!fuC|5hPeau?t$LW~2w&j%)%MkwU~FY(+d|?=C{2 zp)rO^P$vLgnUN)iGH|247+s;U0lGrW#c>!l61LC=?TZE{1|0?H;(nx6aFC_Ypbfy_ zJtWZXHE1jpvNswYc4TgkhMZXnTF?d=p#udjZ2NFFXhJwMF9qA4YLII{YGL6E-AxVl z2P_4ED{Ro}D2g^ygKPqi#DX_dXM-#Sr4fu>*4o<O%ml8775zcAJb0`Hv?&%o#0w2R zm<K^iui$-CsBU=G3rhJK(7}B8%6ri4A80R;Eo{4$f&y$56|CL>>MTe~1-k|8evo=d zGEzrZ4;$r#X@NIXQwu=1wm?R5bznofvCye_(D^?w1Hmo_g$rnT3GA3dP%(>~AVKGm zsDh&h94+w>&8i9-mU<?7CVFN%3J?Zl6CNxIi}f5~27*rJhE+jGg%`+P^kM}zt^{@% zrX<8_Xb%ii8oKNpB9B%s5;GtK@B3rqK6tYaeN7<9p{O=lkTjfv+oqKKyi{oa4pzTG zBN(!8!wRxh0=D~JQ4yp8+<d_{I&DGB*a!YTAfZF~%pvoCXrW<5#KFG!?ZpTpB2M|R zFa})~L&PZ`7L*S~U@Ms|AYoAgYLP%M8^KYV5q-T0mRsaN%~oi^1Wg)HyFeWmq&4?` ziMgr8AjP26iZyjmK0<(4d}9vnK45hOWcdx&AT!m}03B_J?r!9hKF~4(R%6UG_0k~z z1ec3w$&o6Z<J|n>5~wF(8$cA2Diy%TL}lcc=A<YjCMTyBlqkRt27<3SfcD~XB?iQT zBhWB1sJ6o1qA^A+PDo44%mKCRu`4uzHhnNM5xhk6c8%0g0G+W03tUi|P0IsSoZ$O4 zpqKA}szuQK7T&Ir;PDSg2PzuG1r_8Vr-F<r08f#F!(Rb(O9EH{=q9#`)MO3BiN?@i zfN#h_zmx{-Ddcki71HuRRjNX*rj7#QUYgX30&pZ_P198AnW8Ky@pLsb1g*bGuY|@v zwj>T&y$xCR3SN8-IV2nuNT85~H@k2o0i<<P>HYzJpl}661=gevx^M?%E~vi(8=(X# zuC9d-h=XGSqy}U+#3kU;05oU;IanAX2p(&IELI1f^92=EQ^Vs^kg=en&LK$wTUcm7 zi~&tyMMEZ(L3%(=Nl%5Yl7_hko*og4Ww0Fw2nrK;Nd}s)#dRDY#AdMR&?Od-lmcy# zK`Kg+Yfy8B9%x7z<`&S#RP^EqWI1Y?i)0h1+XssX_zDkj&_+YTRspg!JQlQW1vLmj z<|<ezfc*zgBOpPDv%&5~Ups3-`N#xvu?@dp3cg|zTb%<b!9j5dUZ;pJfg-J+gsfKs zFQ>&`P?;NQg2ui;lRxT^6#$@t0dPkd)DeKR>A-_^$n6l^Ne@(B;f+W503NLB1o!Fu zb)ZY@Ku$#tdXz<%7R2<j;jPISCD0a+;*z4w<dPUAc#eemBOcyN0cA?qDVCt52~z>v zTaL6%Rs(hiCd!!!5GzYSy$1yiMYtN|QA4DSOqy`zpl(f3emVG37SNfAkQ2qhXQ$-l zmw>NBS4dPy&PgmTR!A&XKpZX(JL(QOSE1Fo#5BC|Hvq{FKTsl#hYaySS3!d|kYFoH zji7^Zpisx63v}aPd}dxrYEgax^za&&)U?FXoDvN*^C3wFWDGp<;n0|$l%=TvKZZ6x zDGOA1<R@k6A*Ba<&_YMhS(=~&VnNnffdy)<6+k0DD7gV!8iB_z+$|`90a{rOISdVQ ziDxlfJ$U7+f(9rgz-z%FgKePsO4zwlka0KI?Y^Kw0Hhdc6QV6><5EE}>TRwFc|D|s zhPFtX<dDTd3#AitieVRGfh<8X0C_eHIpctoK{7y$61cw@qXgQ|j?k%zY#nG*3}`?L z(*#f#8ZB~>E<S~Y8^T!7@^Z*!gP`q1`9+YF0CEjDuAn&tlrrE01@LG=-TDVE^gs!= z7&3pDnGEJ2#SZ9JVuUJ?hd{gEL8?-VN<h(yl*<w0Ti{p*ol%-!0KLu<<T{X9plL|B zEf{G8$uLw0fr~Pb8PFmWNg-4UTy2#=uT4iS7%YkDC*v;|P^)en4Ju1Wn;I1GAg`k8 zLCS2J3aC;TSDJv%od)GWkV)3C2^(}hwzdi}O0am1Q35TY%1<fHNrhc1qX)TS1hm}) zRja06NosCEPGSk@4is!flqICe5Ap+Kr933_!5hg6u=}Jz88IWj#4*5A!Bzo!B(_G3 zQdw!LZbp8IZc%DZeqxGlVnJq%5_tU%M6DjULdnU|K+zGS1UYyPWUC@nVRC+ML1GE$ z#4gx{*q{&r*$Q445~HN6n3R~5nxm+vucxP<m!Fav5AkZTKFAFq+f$45b25|ki&H@} z1o=gJS;h9CO5PT-)l3aM{AO#QsHg9koSa{jl9`{US5}%DqXe=D<_hqcP(i66d5z2z z9kkd3`wU{OUPgY29;8F25lu_i>3|Fec@ebHPZ#1(G6DgX4sZuUEMk}!CD!v&%l!*r zGcJgDq+NV~Lm8AdkZe{{12rR{?m)?3NQ!Kc)j+E*P~?JAQC@0!2qG&WdxIWf3-%H; zjg=OpB$lLtQy0SRpmV9<4g{;Ng_4kQeo$$TR?<;E_J%Ph0}3o?;}@m8t_0m%mS0p- ztOMRFm|E-$E`DN^;5T%G>qN+XzaT@P%SJ#<P~gXxmVky6u(#1Ip@Rt^#h7hVXs-y| zO0a?yPN2F0l(CVx3g9!Yt)K^O!p|XAK(uf``yN3yfHZ?n42N7HpP!fNSmFq}mJy3# zPWkycsfl?=rX_<;6->2KfcQrb!qrQ{PzOzWR*-`};nqSJFxw#;O;fB8`?jDWup$@a zRB-5lrdL2siHuChksuIrK+S9Ld9KCq@(iR1*3<{-25Hn&$<NbJ&n)&YNX>ICOU)}m z8v0VuNY2R2NkM7@K-xIqYuxn^frFwz0dn`do(foRQEHxET7HphVsZvjrIA^Znv13h zVlr3{c&{r~B?_SPl5+JRt_9sBiPlmBc?y&jz)Qoy97KZ%+7?0)1*@$EHyiZz6>Olp zj_p7J2;##EMX&%=P(i^aC9@3DEwPPJDoD&r&CyLS$}cU5Q9@OxpkPy+lV4(IqYtJ) z`axJ<UqL~^Mn5I93|YC2K89sb#Ws-o38WY;hZ8f(4GHDEm=c<2W?0@#Pc88Z_V)wL zaYI<(;6;)RPA<yN$#F_73eQXdZwF0JEkPAS(NR*Am{**W2&-X`xhU#VQgae3!6)=W zStzn$rKxV26<}!?6D$wfQxDFypi9@lC#)Ce=YmU%Vg=AO2#F<$3YmE&`3i}7`6U^t zMPMmV%z$zpB!hzo8bMdu6hm`7XfzU}1iXpP8G3L#>~MY1hB8QrkgKQQ4>Gbm6Lb_I zv^5JlvL9Snf=Bc~cWmb7r(~vOCW8Y2bV0L1W*TU64Ae!2n3JcY5LODhtrgUnPE;sQ zEXvEwOV@+A0ICG36oHC>HdjCr2RO69tcMKGfsfe-O#&8!kK_jp9KnUuL4zD{9%w-z zNE$>dfM<umOK8=>twmI&pduDk1U{JwG6AduY6RFIaQrAJz{*3=PLC2$CMf|0VKREK zLIMpGQ3`&gxk;%-*h1F;8Y+-m3y}f^B7hbqpeRnv0nNH5!e$i_yBrNcJ!iOhv|%i` z)Pnm+!CnDH5@|sbs06|h+z@AgLIV`Q;7|YuC&Jj88qf?JSP&GRpt#5^1|6&m@if>6 zpp9)HcUwV20xU>WXqMzdcit%^=2e0$Doq8AuY;!*Ko<mqt;{b%9DNH7Pe?LB3Qvdt z*kVMb4D~d~Yqqww2tz=gfC++auvY*ty9SAAE2u+OQlcb;fW(rL)S^7tj7Lyvx@$!N zqJ63Zx)d7X1O*LfN=Z!tB^!uJO{BB|JGBR7G1NB&5Yv&o0~NvTA8<b=FF7?o4Ss_r z%vVTK5Ze{(K_QE{DhcFGP<W_ATnvhR(BXp+#Skk|QV&w41<K>FejjMu*elrIPouOb z2cEG(Nf^|aO)Ul`W00|sfn&W0UmuT>67aZEYH^7MteOO=PXU#ApvC*pBm=r3TR}s& zI5W2t)Kg3WT^*92n^~L+Zh=BJvw>$|K&}BL?vjkuJfy$_aW&HN40ROJ@{Hgv11W?i zhyp#(EHX%mrXFYxMgyb{YB?g>L1&PbBxfKQ91j_WPs_t@DAXvJ*N{z0%qdT-EJiX4 zA^@5zLL^uChzZ<%aOWYJ3Gp<f4WXbAtq$@EXb>4>yLv2^whwrnEy5O1XhRq4+A2Wj zD?njW02hQuFuL<VeW0{F<Z)Km1)-V>2xB2TyAiWsAj4q+j|gNa3)(POP=NXwl%Vtq z5{rscVP1x&CcXT;qSVBcO3)xqD)hc^<dI^eC;>SWrVFemxCA`lU~8*jf}{+Rkcv`^ z3-a?&hTlMGG85`PkmEsoaA^+~gM>dw9I1VYVl2d9&<IC0c<Fm-G3W%_!qU{@5<QUf zON*f=27?R%VPpqG6@c=m5$HsAXnzBw41`f;i$DS(4D$nYBm`s+OeiF^0&=Pg!r34l z(4o&v@R(s@Ng_Bypm_qK4(xFSTX6h>RYhmUf;P{C0}T>K=te_Y))0-LqcY)@304b0 zsU8vqXg5hh?1zxxA_&5SkZ1zX`ves<Qj3bP*aAwN;GB*ndw}u{7A+uWffq7^<iW;* zV;^EWgoLME2p6fn4-$ZG_C$+6GF$@9I}mq3LL6j11f#hDDOhS@cPN7tLd9XF1}t}g z4^mQhcMVb3Q2>?VP%pxyi&INL^8l&EB_64XDXB#o;F}c-Ks`3~#DanxXd_WSt2jRo zI&}pKHfTyu%}aq7^H4t&fGq$!29#*v1r0`n9MR<j<qg<Y8~8>X=$;$BVsOjeBQ-NU zqeQ{R7I9S<Ob1M1a!zJyUI|1YQe;D&1=|@5b{Hi0X6EIA+wL%fpl2#U&C^gXfcqD$ z5_*1DIkbbJZfIbj3Ts9nE69L2)mA~>$iSeW0-^*I6cAhUOH1(Dnvz)tw->AyYHvY) zaVDt00y>8*F{wB|r?doqco?#}lKcXY61dF@pv&k}i=d|Dq^5x?ZFL;dWtqj9Ntxh1 z*|rMmkf~0H2T+ZH2Lh58QB@#9!O#?kW%*^PMQJ(t<sj!`vnsKm0CDsgD6SwG0}_<* zNK493sYE#?4ICH{rH~LWHv}C)1~Nb|KP{~oG+&=mk^xSpsBT7f5G2{b{0^!f%0Y8y zkch@K29$(B_So7glpAR(fYpK>q6bNq;BG0{N^H(AO3lqLONAVz2G#{}K13-r0hb#p z=qi*Ofz1FXVvwx9KCGz;x)lP{&qMCYf?BK~G3d~cLQY~{dTC;Ms)9ypUV2VuaR#`t z1<#?#S`nEO<aLln&`DsJJr)Dh9*Y6K9*aS&f|Y`LY91s|LC%N75BOSgTjbVDWwC!+ zcxr04l|r<7a4D$e<C_m6L%{6tR4_XOM7kA$$lyfvSon}x4(K{xD+P5Q5Uo&@nwXrC znxddlT@99~tpyMF6f5K=R%q&}BXs2_rex-&gY-dIdU{B*xtV#8qadsl)O|Da^b{aG zg!bJ0ypoJ!kbAun^GXwoDnZV2OHC?*v3(PZlEE%^EGWv%0m=F%f)#m{=7Ig=Rhk3l zJC>%G7K4l5;M9VWR8X%Iq}o5ZBtIz?>|4M5GPtlyYBGe4@PA%@NicXiA~nTILESIE zBqK8~T>&P9a5AU{$SeXY0@VN@CPK0}735wk1@&Ms1H4%iap*BDNkUEs3@Zig@k}i6 zNz6-EuvdU~29QNHKnV!6b_NvH7%3P!v|^=DoLYi3Bd-9uR|veGs}ywjV;ZQ~OjH0X z2BjT+eFcYt#G=I9Vg-034K!<+lUNBlSgrt+_`&THkRW)58?xRPHO+&KODzIlVqcb6 z6q1>nifCMbl742IUm|GS3EuHW^wy0~)4owGp5D3<DD4|U@7w`7UjZ=$3qF=WBNfrX z0#&f!c8P|5T(p6%WvsS}zFrBaO9fJ759@)0I5jm2h6<3L9K=)w1xVQeZ>fMh0UB&B z@=O7TJlt@2zDMMBNPYy5#Da!((Z_y4y>;+ZdVEf59+vVz2Q)kZ+E4*rW32&F1zNlc zI`bO5&m|tjvQYquTPuJ#+S*7JwE|doG)NqDsvkVSAtF$>L%jv_E2!9odQMXTe9kB+ z2J=fxG+?4|eNX|=cEi*Xm@2GcprDYJ2dYtWDmB1C0r3_rSV3Jr1xS=35=>1ER0uTs z9SswY)dcm|!6^u)8`3&MF26yy4J0a*m8Qb`Tnav!X{pJT$vLT@(FKr<p}vuVMpkKY zi2|rNPf9G#OjbyR+@4wtzAP0qaF+-w>v9yp9jhYnpdQFE3g!7l*$Vl2IhCL>zRLX4 zA_dURU!c)G#Plb4Tu>n?zXYvDfQ@Qul$EB!V+xd@%1To~wV@&+uY-Jw#0B;5N;2X1 zbAt5bW>#c^QVqPd46?tp1XKXQg%m&mVT9C&23drhK0ys#Xz8N}@}8aw=sZ=>J>&3* zh9(h^N^m$MiY-uTQ3RO?_Y1TeQ<|!ml$w@blnOcP7D-w`0qksO(-72qK~sxlE%f}) zGF&R4u0glcH@`Hm1jR}u6Y_HlGIK!POoSL%Jw9tu6=2w!3$ia2bpi%tI=CAR^&wOZ zc3aRTp*Em*hCrbWG8Y=M5TD@iC)mkQyHV6*cL8=KP<J507nHy<bI`mBjZcVkK*v9T z+z3;N-8u|e44c4Vhv7G9KtcTlR)gIFR4J(GPzn@`phT+&b~y6NCXmA+g5YEOphiQr zAtd!m^NKSv(@HeJYGDNtG!vCUubKwwLYoO9W<LSM%Xu-F7cR#rAx~+=piXMVfTp!# zieh5G2mGMUXhDUclUd+JhG-6>e2G7FIR$k72-k8O$Px3Pss<DXsCrPA1E5L`y5%;I z4Y43UfTu$saaICvG@&fKfUFmQ4l-pHr4HHUHfd>@6@zoB4Z>wQv|DC_up|~Sg@F>& zh;<++u}#e-HV8+68{ME3h-B-KTV8|a9Y|Kuqt?<I%J=iod^R3b6oOiEkfkWNicO@Y zHDJZC?eaL(8$nM-gc}Z14{BiISaBQ=Qv<2ZKw9A~c^q1(v`CrA6&#S^EZu^l%)Aol zGJM^NVi>D97gYb{#ekPRgO_e7DA?pBA{Kxo73-$tCl~7$XQrekB^JdfDOiD*tlP#Y zRVRXyp%s`+O{oP*f$tRnN#!OMrDx`a<QG_#<QLRp+JSHJ2x$38ULwl!5s(l$D@sbB z^(t(cDPrjY`id&ZI2x8^P>_jd_~49!0%TPL`YI^M)Haeb=t!590`yETcwYcE;SU;{ zN9taHxX9fLXsZaRKLQPC^kr4B#unIaQ2GNoF}DD%J5!QhfMi)oegU#w@QygR9|H*r z=wXG(BH9Y-1r?wJ!$6bCP-`)~1-;n`DI`HB<rd}VDrA(D6ck(O>!)XyWRxc9CFker zC+3ytrlb~Ursp9ulXCKt^m9QMZ4~K)8oc>=sd**E`e6U-gV(X@WffN_`xwE4HaR0T zIUBOb2FaI5qNu(F7X~1oVH;WiFKdA;LV@HR=wW5ai8;yO8Dh}l0q{r`B(OofJ5YV1 z2);;7PbD=6d2AQd83oydBo3JuK#@pKEpZ0V83d&!mlSJgLPvHqp$#OE6(9^r6Y!9S zhdoG6Umr9>4juARfQ%V~x5`0#=L+yq`;vTxl+=>c<PuOfJR`9T+_z6kRmjUP%1z7x z4OW3eIyD91KTv={jYOI`2U!b}f!TmXst9Ba^iFnA$fT#1IOUh-fyOrx9){1`zzhTp zq=O~_p?8<)f%r(ij#dxJF93~1`lP0nV4Z{pt&c<tJCH*`^9>*=J<x%0<*7x^iAXnW zfGmfMIu)gY6ha0RqSXr$(^EkQNP$<UgIA`2tp{D?9SO<|>JjRipi71P!2|m0kS%!- z!yv{%as+5<0TP5D!$7V;@)4w?2olUs0}Z2thws!OWr{kQM<D4l)lA1+2Xv5hVqQvO zQ3`0Kb}AyiK-NQi0iT?JF`#ow(GXXmx|TF&fE`j;npu=xjKz9znSvgPIBW%V`M}Gx zK<-B2Kte3K1T+j+lnR+!1}OqzXtIMyA{1&XfD#=@R968qY6i-C(dv-d4_M%X_uGQf z6;=u8;hG>@6ku0fK{%jfl$HrPoe^TA9%z!w4mJb^=IMg3$buFENRbRGB)~-hG<$&~ zIW4mSEq+my*eaxDRv?)H4;&~1R+)gi?MOu*n2%iOf!qxqLIkyCKvsYag{2q`104l; zO9p924kQm~>VekKLi`K5l_awYG)(|+<{(=Gj&;zzCJ?*yP>Nu%m7rimnnng)nU<NG z3K}P+#6ZxQu2AD)K>`_>aY-#MDax-z3K|q~WVgeE$QWC-Kro2X(lpe`2qR-cVFZq8 z$Y3p~$%nLv7i}=YjEGYqAZd-LQ4&byho|9)Hgtm2YK)0dLT@+5fSQNUmSYTN+Yu}c zZ9Rgd(b|uwR-rc@q2n~5Mk2V~2<77$x1oHGFV@{ekZW!*#$d3iH8g;nbPLLXpn?Ha z(-0cdF*F#Fd#G|!i%JIPpbo-iG#u1HSTcZvItWJ$i$NVU?@)PAhnU^<_;-ft>nngu zXy`6HD+R}tlwt+&W!%Zd#h?j7(3GHyzc1+Amc$fL8($$&!3M0y4s@C>sH_8FeSHPc zMn3QiB3KrFl1p-a9_X$=9OE;VmXJY~%rtOYJU<PzsR5!MX)(VhLR29-8d|P`HZwvE z*HKVchu(SzI-x5i1<4&qo&Y%%)FOZks^M^vp@E?$XazRN5jqOh&~{B`8ca+t2XyXq zF_vwxP{%+OfSWG*`U)QTB?^$uWeP#51v!bysky0n;IWy^H0WJUki{u6CHndb;TfrU z$c~4sQ`J#`IvErjNTCl7<d~AoGz~>m%OP!ol9&?s+zHa=&KM;{EZZ%Ui;JPD0Nx+R zq6)ON5ERj{ovENRD0PccLEFPqi$MERGgEBi%XEzl3{ox3j11M%GILUG9bwsk2m`@u zOOUs^f^0zE;t4Y=MhP+W3~Ta%{2K#4Oe!z6+!>zmpleYyhKt7`Sq9=+M8-k(GD_Y- zmO#xu2pOat1Thzq;4}~_5SBu-L`(^|8H<{1A$b!t{|}lu&o2g@s|Z<t22RzOX&0ga zy!RNY13q;GidAUB*8p8+4{-s=QnXew<ws{g#}qLp*Kn2*2C%iU`uYl)x!|o-pwb0~ z_4PsB=h7T-{~c;LWK}zI=@p}-mzJ24staBk2U&hu9RqFY>XxS_WoMQk$yq7n7bGTw zF0|1zE>=iQ1g$uSDn=N9Q&BC%V2FjOpd&hTkVSG*L4!tc+ac>Ktw1-vK&^n<jSzwv zm<Z00pe{39H*8qS3e?k0O|gbpq@VyEurxL(sDO(=`UF-A1`3I#CHZh+&^l6tO$rJ{ zpyj#90#&-;F+(c_LjzL-s5T4->4LQ>kl`$_Mk@u-(o(453JTb*R08cEj!}Z183~Gh zeSOe*UZAbTF?k?}av+YO0WqgJKuYhtm=b-hm?DswF(tm9Aqqa3$*Fn8so+6ZD}DX) z@^bJ!w#E6SMaijp`9<maIS>`a`nj1Ux=@Z@K}G@06vxt%jQk>nko=^~#9{^S{DOki zqGAPy;{5EQM2H$KeFzQOWLR9Rkd#=Q3SQ9zI&~9tD0pfLs3icZh7k1yL<ck@LlZk_ zr)y~*_*i35HijsH6wNuA;GI37jUy1xK}b;T2N?_nmlR-C`DxH>1U^m&)FOdwID#1m zQUpK33&~0a*x^#hc0+83T)+oi(g3wNrUZ5vGtwz8paB)=m@WJe7r1(eS)dKS&~XLu z`7KD&;5!UbbEA!7L6M0h5mN$j0i-mDQF6!yo$0I)qokk>UOF0W6sw@E5TjI$5HW;^ z)PfHYLNW@zBnC+g)p(EtqYXic6G=%eEc8GHI9wbW^iaoT<!9z;#3&)#SZfW{2h{>E z_!JTqK=A<DdkRSd#gOf%phN<afNCoNvGqU!3>y^EfGXEf0Ea<fX=+g=N@yYKHmFMQ zP;HD7G!ZCi!i)x0S#Tu^(b1sE4A@B*;2r)kN}%Q;)a8)KOUwZesCj}5@6;4X6Rj9D zn*{f13E2q)wDJd(fTA;FqYYwVAqQ@cAv^^-1_XQ#3S>|ibj%3cg&-eccVTp93TWgM zw0jlFT%<?^rDaesLy!K3h6`~?8LAjPHG{ed*_j0jP!~aKyj1WIHK>w9ayICSyo}6Z zkP^reLhvqNP=f%piV(D`L7^bEC=E1+09x=_o|*|7=?3S4LQn!wNY2kq%FF}nDn^c9 z&`f4IsCAqOEfYXyLaJVnLrQZ>G7CU!8Z&cKiy<oxQ!>-iQj1daN+9V=0c3t=YOx-= zsh$cM`30ce$eAFGIXMb>sb#4}3i-*&r9}!F9;ub!!C!^)#7c$oR0Z(tN^x#tPEKl( zLQ-j7N=|AqN<u`6;F8qbXy~H#7$sONgJy{op&^Nu`l7)Z)*u$M(8x^FKx7io%3wvX zQY^(wObJv5)R+N<D>z>vB^6N8f)*VprlMp$kRoK0Vw5xx1roG~(ge>%LBx?92P(ZZ zLFcz2r3#dy24pt4FeoT3&H$aNovVrBJfyS?XCm?>w4eeR0M!MRLqGM;(17yuL<X(` z2K7@R9cj-zm;79CxugS2xw)yi`I%Lqg`4oQ6tblh9^@eHAXU&H0tGoV;9xo+%XQ!y zK)px>SRWju6I#~7x8B7lX(~X(5et|>MI3njaw(`!3py+d$vmiiAU#N~fJRnHOi3-= zJDJ7)IVqm5-~<cy7)loa=4nvX241(WpIe-nst|3aYZ)68lLTG64w=@_%S$ZFOiwJy zFVZV5PAzgwPt7Yqof$+VwOUQM1JYB$`_rKFXjt5V7FbZP!RFueGEx&$K-n5Dke*rs zHLTdFG9)n_biSrWj1ov)jFKjDm4M`m;>^7CoYa#1Jg8RCHN>SkIdE6P<(<K6Y>O0Z z6$}uPpnft`W3gvmacWUXYKmh?2zb91T3ZWJ%EOM@LTWc@fO3_N0`%-HqyhnXr~)3v zh=LC0Z}9Y2j1uGwPf&s>$pD@30NTV2J1Q|GBNb)HNg+8g4^%TGrGoD8OaW~tO$6Ub zoK%!wUYuH_keXMPS(Kj#N?<6>5oof2x(4cG1zVWoLD5l-NNoE03U2vD$*BsEK-4Ws zOjiK!a?8xmQ^?O#@N_lPwbW54&&W*90N;d_sE`4gg9Y#E0Vx2rW|To~9B3C7YCWjc zT9TMvtdLovP@b8SqmY;b+H;nlr;w-snq`J51I-6O=YpY5)q}XCBtH*ZPQ#)|0h&!f zQ|l04Lr9PloGM}G0_i9urlcT`(7{LXlJZMR@^isn0Hs4acs+>4ZJFQ%<XD2wX$Un6 zF-j1_5v4xVX`o^VQi>_qf?J6p`QU3yioq!jkrxwFQXt|X`7Zgn8W1grga|7?pr%5z zAG{<(j8%Zn<VQ-jkd|I<Vr39`3mg%xeu&M)HI^W1(c4NOFQ??^g1rOU4g$)T#o#g= zT)XRKrl7V5VQTe?Qqzicbzxoww-w<ohx8U;N)h3PQm<yFfre`^f&dZ-d8y@KCxKeH zpj-}*h`iKtuoe`H(c%NH88b>i1vxB{V{I-Y`~W$w7FTBq<~dO53yU!Hu+2=<fGGn9 z7dUwuphP&RrUSKrLD7%}Dj}^EvJ`9-;Mxiji%JlOb7pC4qqN;Xx>1!zXT>5i95_;9 zN}yXYAn^~0TDT_k=!LgnkfI7!EWzZ!$r_%T(ZU{L3nJhZs$szm^CnVbAEFp%@&yG7 zsC5WWm#6^@l7@K%t_0#gkS?^Oixe4XF#t0I97mvAL%<#cg)Jh55EnNH&q8#=O$J9J zC~m+GgYl3v22yx~^nwBlk`xd+;Nb*H2KcRlWI$NdfE%sgO-RMjS+R(?!D&CVy$z2# zkc&W}4R$zsv4k~{h;%jBKnfijQvyjws4)*}fo7(Fu3t>e)dS7FfXXW?1w$Rsp0JW) zD+mQk+8__Yl6MJ|0i__x7oOZv3L_8)DKUY92;vshFan9g%OsG)5Y~d?86=IADL{t8 zqZ)J#7IIXB)t01!8rUFpm>B}pONWfipmgLx`alCxwh%c(<U$=J2ksDoc7}ucfJW%D zkTE;oM9^k>P|QXfqpJW#B*<sU#l=<%$;HLcK@uxSUlz0h4>aoMn^<6_05=Q~3ZT}! zh9W$OKw}0d<s2kXA?XA~7060(ET_QZH5%lUSkRz9JR7Ix6sJO>5fslcB`8Kf@&&|f zkXA&dfF*zuXax>&1+?OUNrEkbrw&LX16*@K8@C$JrV;3f-O8L)s3=;Z0X1+S$GL&d zoq(!AD#t-Fl#^Iof^0B)qZ#Zvs8-Y#bu?}%XgUL3?2U*~Py-9<YS8hqsYNC5mQ_i9 z0jQmfR4{-h^YA(i$*Z8y2YD50suOsZA*A&Lb-0cKSUxSYsJH}t0sta5VoIQ;Qf8V4 zUJLa=msbU6Cgo)2rITnm@#aEP0mw&CXCZ}2ObOT*$VWCHM*)hT5a|+G32FpF5+|}e z!U(ACc;XD!)<p>mA{_`d9m#K)T_n%Evc#Os6wr}drKt*_Q8MsO^i<Fmb#+LFa4b>R zQ}6|C*-c7SP%p_ZPzSB?Rfo7tT@On~348W}OwA$Z0+iH)<U{1Z0_E`3yb{nh2|b7j z;G~7B6&|6Wyq1{)US0`m3qunoT7-b7bNthA7y%khPpJT1G=|#PLv|FJfyJQ1Wk6@r zR_G{z?id3XEATb}_RxTwR*DiD&}@qo5Fqa$+l#y&7GeO@hZ>-P>dKr{<j6qQs0Zo~ zDuB+x2Ax}=pIlsw=suM|q8Xc0(8@h{Fe8_#P!~Yu@OjoJGcOye8dk8P`85Zj0-skw z%8-2u;zJGAD@x4)`xET@V$hA1MEVrT5JU!rdK5_xuRq~!w)~_lL`x0P1VE2Z*jfu6 z1xV6{8V)N~kjn*l4<0GVAiXWHPd)QeQo+d{Hm(C5w?SzUgH=KU3e@I?sf7uFu0w{~ z0~54WfTT2R=>v2jGBmNrlt6mMpu-dj3UVq#@`GW<ha{%!C1vKNXh5b)kX->yU|`ql zK+gL`1U_gG4s@CfB}Rg#E)XU{OT^4H4bY_y@V1PCni?#~V@g0dB|l9eG{^_s<3l+) z9=kf|mU_t1&!p%pN-fLJP9;sBQ%-&oQ4UKg$xp;kh?01aBSHZd&Db(2ELoNyMKUC| zL8@`ZEh5;FA`;fvLY*vyDL_eM$j(DH3*6pBmek8AN=-v)a>kT|2Knfr1usf@57C3< zF+_V7nn;kUO=Qd90fpjLSkaASAS8egX%|l}K=vJ^AV3}`MTs+#LJG-G(DV(>tPr<> zG6CFbs0_5ggGCc`NetMppaCC$@C7MQ!%Dz00on(PCW<7k2ky7n+Jf##0kffdWs|b> zpuHBT9E69EMPyFU;esgH6)mbEPDToOSSkhi4>YcwS`KnHk^;;ah6O89vmIW4$AE4! z0|yUE<pwItiy({aK*ts;*dh+^K^egZsRLEI!Jw<*QM#63GeI_kXByx^t^sbJfT{%e z3O<x105=SBnJ8$27U~YrxHXbDApxTRSFe|rnNyNlqyasdT~iM{^R6Bf13nH9>Ka&@ zfgH#O5d@QP_a$N$?<iRdw0t8awF2Y;Q0c7$ih3jufWiZuD4=zog1rK0@?QabjSeV@ zz<dC<6_k_|P>hEh{|3H`8p%}XI0CfNLQ(@V5gI?xPy+E_VVqoyG?9dvETC=$H9j%h zBOr4?G8!m`K<Z@hLG2((&=4qc@u7#1f%y}hji6`AgS9~8RTDCI0rL{1V1P7!5r)9j z;xr7}Nkj=Mw7`P2|DYYZ<l<tGBXkt-+JPBVXl5dJpP)v<iyGu%TxgbpQjmfLJ*9;t zrlX_)+$joFOe7Z<!vg~pe~^L&QUHP3Fj;u|g3NZKgb+%U6{nUsmXs7_CY6?ePLTi` z0$LFYX21(06fc01EsC3wQY0RWKz$Z)%0^1H$o|0$_VSF(oK#eskow<<mM5sMi{dHd z<b)!Dq#YJg$PtDoo?$a{(Do2Y{y;=NG@PImT8u*~CQz$F1F6kTT7)Cj9H62{56*{q z2NCgbDU>+T*M}{8D=tY)&W4?(2-$J0Z)9d>U~FM-3UN6oTtTIoHmGkE6O*T}rHmLO zE6B`C4-N9M1?|nY0u`IcN03^B*1MUR=zy0xfEsHWrFp5v$%zH28mW1pgRMe?Je~7% z3&6XVHNYngL)Ic?rd4Vn9ImMe+C3Vh1lqi%1oI(m6cpx0P(A?diiXsN3ZOQmMs#v< zajcF)HTcMWD}@*(P(1<Z8G^SgLP7~bf|ohx=cEJ|C4=YI;QcsoGYV!aR4r1(fu$8} zL5*o>qJTGcH9+oxrwXW6P{SN-3p`h0Z^=QN0@DpiN|;MBh`9g)|CWWpcMb(~$s^$d z2|(Q#q)qgwSG<7Md4e}mf;atxSSgvsxtYbqpljE#=z_Kw;Hp7K1f&)vlYf^B+@#`+ z{Bqh@2<rL4tx-@YDbEj2tVG<g1M)O%tEYlON@)>z6&Mz$Q1Ji<xO2dV&SJ4E7<``u zX6(Qlf`s)zG{byW4mwW`NfRWv;T0^1t5KGSd|o4D&pCMeEp)jlcykHFSWuvW1|>ji zarELr=Md(XmY^S3m;t(02POyB4AKVK8xA_mUrkK`nw}sh9>BsL{j>rUOF+XF1P?m| z*#maD9>`;$J`~0UIJG+91$KIHOOYH1TI~<sMh<0wDXcqZ!CPuTK?2%Q3$8su_s@Vu z_4O4X>)sLT<e^(`Kx?c)m)jsDuq~iRoTUP`9%>21Na#{}gc67_Y&|_fTtNY8Q9ZIS z^2&OIIEqckYwQt96yWDSz!%yhOCqhdM;1n3a*r$rUw4lz2we;hIpP}XcZ}um2o2aB z4quCpP)MHhp{{`}%||v2ZGApM3fVz6`iPVPN++PpSwJ^LASV^bbx9zPf-q>=se*z+ znJy^#+Quk>D98nSD6*ijG{h-7ASn=rYF1EC2gjhg6{u+fF9flu&@C=aPEIW@R<{B# z#RFf73=`4>7gg9aLGRB&)&vv6ttm4vEg$3{ghgNx+!|66^U_m`P_;nCuxSEKN?0j? zJRDP^0WU1UqhH_&3mkeN2}K>G6N@gWEO>7yQb^Qd#0Vlo+r}t?HrZgPDANVU88|(F zjyHmo|6mf+xT5@=RNELOa4ce;d}NbUS^`?f1y3YMHFt~>xG`rNqXbbDqXfT*D>)~> zI2FTP3JMO%Iho1X(6k0CF)?igZJ94f%(GJimFvaUHu}XN9w<~m7@G8K^dZ)wCUB5e zTHf<zXh4nQ9b=$dj}W;p2Acn3Vw8|2!4Zjc5CK9CDd)wM#Ke?9@*dn=m^6WGhp8Tx zy^yjgOh^;DuL@N0!OaI}EvuNA63pC&X*e`fp(=+8qL~iOWMIF6Ovj$jkgX`mFMwtu zD+TO2pwgO%P^^tX32@}R6$8y(C<;)s7U=8;aJI4nlW2xPa#jp1Z=s$Ffu6BqVw8}x z7U+ZtP@CEo<UU9`2eDuoEG9+?lEqLQhsa;h)CA9AsCI+$2q;6LWiNPGB61c&2z+ZE z?D9OQFzzEO3=JqhYZUuA6p*t;F_!saS8NV1O+n2_R82$b&<e;=9UxDPpp!^JhxiT7 zLn{z2qv4?y2ulX=&<cbjz*z~D0zoq{&?|<a^Cu7<N`^vGG?*^>Me`1I53MjXp!_IO z&~`M?uq^bv0{Wj?VQ63m*^G|Z0s%dL0n)yO3<|1`9$Nt!I|gs)h3=aG9U3xdkFBsw zN=`GhFffB2TLH@m)Ht>RW)^6Y0yfqIo^S_sRKe@YK?A~w;}%ekO{V#I9dz+HB+Ed0 zgouoT?Bx-4Y=xl#F{iuX9}I^MJ%jd4fbTCy+S7%-u}7_QD-uEJSr>Hs8{&KgY)4k0 zh^6Hh<tiBH85hG3RX}tltQ1I43f6|-G*l%z_)Ui&9Rc^1UPfZEE@*!$q&I}alOQL6 zhOZ&lJ*P%!=o%Xs6jW%!{Rim;Dk#8RgGV)rBM=s18771FET9K!z|Ow_*#%huihNQA z%1E7wC6dcvb7)qmXKyGdBqb(igRTe9OR-W=PD@LJ>Opaz9%!f#;Ybh<*;eQ%9nzs5 zsJg-O=-QD~V;uPb(_WmD3EF*=R-y|YctsciOFfBsnYoZ@1BBAdJO$)L2MQ<<Ca4tC zQrNIAGzRcl3c3iJSX)umLalXxnVy|mnO2kt+SZQZCHT1}2C9f)P{2&+s7VgA10OSe z;!L6F%8>`Fp@9H(u7UzcE%7b^oyQ6_0TdY!j6I*AD22Pg5SlJQM<#;}f;z-uG`x@_ zm~eREOJ|^zNmfEbi8Dy#;!0#FN^v`v)C8srN{`4Pf!`Gv%Hb|S6tK_~2Bokjw9x=V zt_PqY1*P=B<rlc@C$jj4s3ora#-bLBy~LH^5VJsWNkkEjO)=DFTxB>!OJ*LTxFn?z zCoN&4tHzzKNzGv>85e)<LQx8L0kK8+XmDkgR9Y$E3@#icI3(CWsd$JM;pj;he;Pwq z4Nqpo7T}}d1v*|3Px%e*^;xCmCzlo@N-pp%$2pmKsi1pNP#R+3#h3~jxrr6J;He)g z1xriA0`TGZV08)#dSDZg&C1QpgDN&MF({~jO+rD-Qz!+|hSmoG#~xZ|2HG!yn1ZSq ztQ=u8n2YRnh*nUa1dDE{!*x?K6La#@VLZ?tz|<mynMwIYDXB%euuhp_K?Uf{k<1hY z<y2D;gg0P8o`$UsF*MUNF-AHfu^<tA?5>r9SwV$@p(&CKN<Yom*gP@G9ByKAeolT7 zr29sy^Yy@!W(Z$E7K}jp!Bz^o7Dz6DyUnDaLIGI<$$Gex((?04bc-{qQmqt>ki7xV zrg|1cI~8=x1Hy%f^CpW@a}rB3%TnQ%!d(aoIiihE%g+aGwuG0OD5k*81})CiP0Yzm z&$EJ@PzjfTMm%^04o0k#>I%K2l00n?f$%UiN+3xTIV_<PuoP!Nj$OK-zJGxN$VPnD z>KejwCrZA8<ptE70S!=)nYu|i`N`Q}lOaqT-ooZ~T~LxwDatQE=t0DNT4n|MS)+)8 zA0vCig9sjJkkCYEL0V8`f)ItLR)i3&_62ud!N<5_TSNve@rY6c@+K%2@=|nRImy5P zZ-D3_w<Y0j)H8+q4zkb0N+B_)AR|!&s>0UP06NWI3mTUO?fC#576}@XhOCT(jxU1F zF$Jxo*3!~f04-zG*HSPvp!~vx!MBtbGzJg9GzG`uzr*rMIdDCUu@(t+A%{{mq!tI0 zpzDzeD%3HTN<sBNm*XgbFFQk8kOa<UXv<VUVvx(>krYC5ESgHNAo#j?B$e3Q09vL8 zT|tH6D=S1Ew2e`MEO<q;2katE(0x$gE-RR;V5OiA=0P2ygt4Y7B@=PU9ymau?E|c9 zw=fk$rx3BJhO9}1Eo@PO7!GM}U{|i709!i)Ss;UR^%-onnL4=ESGThPuOdTT^nzIG zf+!haO>qSUn+y{)hm~ZOfVRD(hYv&x_Ryu@74f;#+OP*A9@2A^M%TBJ~myo?iK z5{QH?w!!K!{R|UqZh)@H!PJ6$r!X{(K@AO@A&j!z2a9p~X!jd}91ObA28%EjH(?0b z=wmEbh2{dA;^d;tf)cQ2p+z>~-3Xv8g0u`Bwi^Mu4jjDL6yjj)w<9Ly=jWs*<{_zr z9<!eU8gMR6MUue3&L5ujus8;?_#Vk9_!W%m&|H`o16dvpR|82>IL!iu7|2_oY7C+k zT%2K1Pw^%LW5i{K;KZu{t~)`N(qIb!sOADCR^&aAAU@JsdXN&xZB|Z+Md6t#B^jU% zvY>0iN=q_xiuKY{OCa|x!lYqm+=IdkzE=RWEejgxAaT%Q7e&an08pz1)Hp*^p#WLk z9}km8b|K^#1L$^24fT}FGIhu-G012Th6WsniEfS_xQYRttO>e@4^kw;>`+JYwt@mE z9Q2TPKccx8Q!&_R(6M-Wi76=>>bdzTi8<iePBiC%e2*5Sing{2;8RMF0txDbV$h-$ zJ!oel2y~`BXbVMhQGQMiEXbkNDvFCx!a!eN0hG^Di%S$h_noE|m4J>XPAmb7W)`Iu zE94|rf`)ub@<B((B&ULo=LU<wQa&gwK}i90GzDrv=t1t&gIs2b;sgwJiN(c;;K>AU zRz~tKu8Y-Bje*=j2VU%~uA=~36am?&jbs?={d17sDQHhPk`mD2RB$eQLnd5AL4gzp zAzBBic`5iEhRayUh8K8>*92W0h~{L_WJo1s7YZmsU>KZK5vdQdBNR^p1nC3o!J4+z z4Nx-zTs6d8$i`)K$D%|$NC%n%(1yj*oE$V|wF=3geN74)shSGaC@B^ta>&iZa1)^n zSn&<H^0FAI_y)IQknRQq^I<D(K;D5m0aX3Lmj1&10y7<ySIF6A1Sy4}%Oa3l1c*ch zsvQ&aia|>Uplcxz>cG~6>;~;vLYRfQ7y+RLl#ZarK}`njXF*ztfKZBQIwbu;Ed+%P zMsFIS8zc=L&_LS=1S;D=2g`!T&QO&j_n<AoVT@!I`tk!*t)PM&(gTJJVj=6s^apGt z5ZMe+n;pYV;6?*%j1Zw3i-};BXyF4f5;P=;>>T8^3OI}ecN;*u;nQ9Sg$fGz)*&F& zp|}xYAZ$Jhp%A-)peg}8mxWM>Y$DdVOz@ZjLcM|lc#;ZP0B7ohj>V&@g^oI4#0s)Q z;B!!@TEY1TlxI*9IcQc1RUO<4L)0ijwgQ=r)!(47LhZK_?Q!y4M3Sdr6V*68j+Q-< zJ&Vl7HW!O*B3hyZX9r!_L@YufE+dIZmJlOBVNF81glHl^VGh-F3Gp{5um*3!Bs*+T z5)ruCgU>M`QW~iK$uBK|O*A1Skaa_E)4@9BgwTOB?}RL<pa7bOfpiBUlTXO9$krgU zQRkwNb%5gxv$9c80M!Jb$ufjuECzygqg6m)F^u99VjQSi0#&adtgo+tX(INKc}RB| z%^v9d1#FBQV+sScYz2iH#_ScsZwd;~9uM*q7P2%-T@RbbLRJ7915Zm!1NjbwN%tY7 z<ACN-=zIw@Tp@E?$Tq`W4xivcmPK+GYKUM=bs_75S5bNvAfJFR3BCa}_R&0nXtW`w zzmP42djdQMhL9mPi9jcBPzxRuLs5N?WnK(nDX6&!o)rbRB{5PKC^SHrgb;x`4>Y#~ zo>f8%9cUCoG6{ID4B0VISy)Op0ND+~<k^p9>I{oz5T}6W&k(XCMh3{Ykm)n9pCL?q zKF9Af<cT$eo3JcBMwSG}AX;++nv>8(;lYcVP#^(;rWU!=fF=dcIcVbG#v#s$H)JOx ziW-!OHG~q(Xn+R|WQq-;Q~`D$qm=?^o()+7_hcJF6|zl8#}c4kZE0vg%pJdw0XL#< zfCtyEpiQ!nnPE_+3Z1Y44<LYd(qf(FLD@qK)dC);fM`J&2aZ(um@Z^L6i7@RX<sxX zm7pmC3#uawLfa?|+guObwTtQplqsDU3MO?>_W&bL2!OUIgSQ7jX0}20+aVl_Iza<h z3!BnGH5L@=SdE5M#u!F})kF3-Lk|;(fgdLT+5?S<2k>AANIz-QI?%akkUb!bG@}Fe z31m(O(;uL1(mDAh&<ULw$Q?(iMIbkz1P{nuwD}x#TlK;7Dac_8(qsdk#X(UEof$zD zLz+*6I~r73Vs#0463PxXd4y^ZWYz{r4Ba|ZK9r{fD%#L9FXb20qHf2=F(YkgXaL@L z3aYq3BhsjvP_~?+N@469g3TI%OtJ=_RRF(&6S1`jd}kqSxHd*f!5(@cA54WF^yF0q zD>MmBJ=g>mPLCLZJp%H?$l1dU$=U8j`K1Meawj*2`)IeH8^fxB+trQX6nM%++O|E^ z_I6|U6qR>)8xnKJG5&pxgKuRJ(bMW>i8-aIRtn&A)j`E5s1Ab!JMt_A<+JVZnQ+jV zHZY4|(;^BAS*67#nQ57+DM(WzRJ0UaI%C=jT5N*FLOj#>P;Y?O^nij2;e)c&qLR$y z#2hT<k-tU(YMmA2Tzj|&APkt@=+pDiC<S+bL2gt~NJ&jC0F6YWEOW?61YHJOgf#aA z6~Q>p4>|><0zS{TC^b(nEx*V$F*yT%@1=r9D(V4%AZtOjVrq^aXj-HIbOmf`j$SJG zpg<@CZH5tL-VNN_02u;hz`P2XfKNekGgJh5#tb@bTapK^qd-Rx7L}%g+B+qny?1%w z!?+>q1#R?^R-)iPU`+vWT$*}PNgkx@tZoI(Dmn-;U3gMfw}LZ~<zWd$-3rF4jZspt z0-f-xTauri4nDdIYOb1^I+Uf3xvU4ZRfy=SVOg_7)LI<0=Aa=l_t6sU%fW&TbgU90 zkf;`Lp#B7E(82o}#mIq&+7mzxIcVD%Ps`Yl@^fIZ?r%3V2G`OUtz7JiA;%<v@;)eQ zp=ugZt!6W@uR)#wm&=eeRDx8RKt({yJ|LAn%JC9qrK!3Z`6aqVsX6(HDY}UTnV`GK z^I}RMYC*S4l_cimXn+=;WEO$W+b$~wU26lkRS~K%IX|}`u_QAoCsk7ca?(90a6z_$ zZ&8a;(p5}KOiIlm=Rghc3O6<IIsCQ;ihBCaiADLP#i==ivdN6<IP%)du)dORQEGWn zW=U$1URJSvW{PcmnXYMKTB?OXViM$>5@gHB2w9jtIKy_}+Th4OgC<E(A|Ip;a9BVN zc!YuTB{WMyPT<i1UD${SHXVh$)bfzj+yc;A5wPl7D5(LVK@0x%wUC$l8xnJ(BmPGH zz#rRWXaZSXh&X))IzR^*rW`%CDFbxIE9?fWA#-dK?&46bI61!{HN_UxM<SzW1doa1 zEEf@L7GaHL$k|4q`VRS2BiPbRjTj}GALKMZK>^8D5bq;07jhtstfQR_DL>g0I^cjY zM2l<a)PPz?J0(LKR=S|Fu_!+$8mYk%i`aOVTv}8N+G1LepP5&ZS_Iu_M*2Q7L(0zs z9DJiipdw&o>?1>-$5MhN9R=|E#26(7a38!VGX=EQ2PTQ$@3v9Y)m8A!O95TPl3!G; zpsNes#{%j(fDf^@$<KlBFM^q&n+aDRql7q|9a$9B5CsLBoJ@r>-L(87+Zd%xh0Ht! zxZ)Tk*lbyh5?s(3bOyJE3b?<a3AO|Ilxd~v#AMJuV=IUPaPtAIv^GWwx`hgQ9=DBt zP9~~TZ1nSU&_qBX5MBh@p-==`v=0eBEFpn3#{~~--ORka)S?(A1;|OtN}yY;lkzLj zLm4_x2cPr8JG!Bu0FD&r{JfH){2Uw(flbINLCc9^<fF~e%8+7(jLejj)I8maVk{0z zgvT#vqF4bQ$xwq4euE6%AjelhQEC~ci6GAwB<8`5P0y(;$jD62&r^W2bdxhu%Zl>z zbU{|eC@CZsWhUxE9BCV)1ZppUViL!h>WQfFr=Vbi@B(-mn<PJgu2-ha4`4ef^aOOY z29YkX2*7$caPLDiDOvl^;8~5X<KoaXMOQn)6=WIKk!*@LnVEt%hC_F{ppET<3SXpw zT@V-6Pz8+yLk4IdYlc941w@Hxr4Stp-%tk@Ppz<0FhCY6c7z<XmzRz{mJS;j2CD`o z5CsMF0d;UuiR3geA9R;xSYnQjLViw47~1_e;1OtWr2<u@U<XwO+M^4~!s?*yx!`=D z4({C|n*?<cbg&w+4G(kk2s}-Ki+@xXLh2{51mvnh=%5-j?9vn<JBc$9A)`=J1KIlq z_8+2>fDMj8CL!RigU$*d8(^ydDv2;uKra>s8w;0&4e2XDst+W`Ljo=(vnVyWBr`t` z6h0LtItrk&6U7hURtqSoK|}l*nZ;nEAu$N@BxvXbvei!oV|D_Pn7|r9O5s5b;(&}* z0lT3Hw&4(Togrxdm=SEjfu@GKUS>&Zt~&HCAdn46rh%=7nt^nCA~fBDEFt88;?$hf z<dW1B1zQEEInkhUHx?8}Fad*DBr9?4?SdJk3ECRyoRe5wtN{;Ma1^UUlB2zXI>-WW zx&(zZ%FaP*?BW9jD`*cN%t5$z@8R-DG|bx|*Tw26z|4uo<}=7%J;Xvg0$bytMuYdg zsiW%BMBTRuj&!78$Guk%<~}6nsY6;}C_$^B0NJmGnvKBY;z-sYO^zY*4Jf{lvJHrf zTwp@Bz`}C?DCK}Miyo3qDA@_VaS_9EM4m!70F?6(lWU-a4N(Ek@!AT83N|?RGGb;R zXiibEM=pi5Z50d^tdK=)6(H*=LAD_R1C%O|0t3VyRDl7yg4h7nYqn&BjV^j<=-PtL zS%a1=h~R)sBzl6ny5O1|w*E;0RRUwG7gTbAZde03w=^#$H7zqQH3co1faM`E5)W%D zc)B2`Rz!jUnFmf1NGj2cOU_A6EP}ZdQYj%TMlu&Pk)4xTl1hTzAh)WiK{UYJs$hq) z;~CwFppDL{C8&-9<u7P)4>Jiejs!}GNHqvrv!*CDF{KhIWrF$0NfT5sg3ACSP;Nr6 z$G|Q_i!@Lri?AA3feF?Ls+jch^FUj2ON&#%hY;i5BMhmOAO(_<9-5`#QUPIWEu@Ie z1y5?FCYGg=X)LN=;N=`FB`2k(<rk&8q!yPH<s*k8ia2s;f_;tO=|lurS{ibQDIob0 z76RZ{CUVcM0%TYh-VFh5mqqV2LK?Q9i~}A;z!<JVbacQrLlxp)iET*CY3-1lNYqMf zn0q0uHP9+m<k1q)-9^woG*}903=X{D8YE~J6O#w+siO^_fW;BRCP;=M51fFe`eB{; z7^I<(VvykqxNSrkO95#_9Zdll3%kM$Bnum<fwY_<116eaD=?RlL+W!ZqbeXnvAPI+ zUJZ7~qKv?Rg9JSC0%qYEaRJLCjkKVK9%!ru<QT|kOH2%WyagnP)rH_#0*y$3mPun( z0bhp<icaYAV-OSMNR%-cxYLlL4c4IrhbYoYaA@j*jp8DYzz}pQd^7{(ztpr6%;5}> z5%3^@4$FYVkRl$`VgNe|tDm8v0ty$Tk(!toCHM#puCW@BH7KJsG0^cEkOWq{pa}tL zrHy_fB<COx+r-2ufjf_6`4m)<QQ4<p$AHbGidUgyIWc)q2Da7ehLj)ZhJBe0<X$e+ z<u$lwF^mkr6VRa27}U~1)ijjW<QR>_mF&(Lsma+%`4xk6O%96VsJ<pACE3u@G&$7- zx+Vw7GBPHfVFRtmbI(X7#wZQonj92&fO9J-ry>@YfR?5rcqn-mAq+Z1CbirjdMO%o zRW2ykgBtHhi&Ie6sp%?$SE`ld=0I=$A{?@?fW)#UhrSU84k&7`$suNQ;GkcVV+rX2 zAeIe)S~RJ7C6K|i(KR_kb4?EJ+(qp*IVk1PU|f?kKtTb?R-<cjKqDWZ1B(qQ-;Fs? zYjScxi>CFGp(!1-AP1JFkQU@%I|c%}5+8b419-06O2H6uQakkMZdCIX>=ZKd3Q9|G z*prlB0XoJ#6EyP&KPaREy8Z|G$biJ8;{2S_62xKb@U8v2h?^{+P6Hom0(C9&Hh-uP z<d_D8B3$m)15NVda5o}+FdPOx$w1GjC^Z-E4bUVG!afCsl+5CSoWx2i1@Q6ZaAlCw zViXMZOprChPeVZ!2Ay4_3zaiOR*!sQMlyIz5pDtOaPiXO)FNHT6o{2VUVa`TR238y zbaV5obn&WC(9JC-paL}NirWlmOcy1lWR@0NDd-uSB6|SoT!o_4g4DzkkQ;R&Ot@E& z6d~dQ;#~y@g-t2s#sE_TRRvQ6Rj2~2(QlQPU!tK089~xiuv5U77Lc3*JH#a=B?W3a z?1&O81*GFil9H03(pW8r<r(O~MRj;>M;v1WH4>|hW@d?LsfY{vz}YS%F(tp;N+C0^ zIJHE<0PH@H8;jDD5;Y8TKv2)X+*DJ?K*0cXAA<r|!qC7-$I#qV$H>@NM-OyyEjUwQ z^#(Nfhz~tT?0^!p0*FBP2Y!d3Zf0&`da9K|X;F>_XbFN9n6F=4mabiqn`51nSe$BR zq7&d^X_6FPo}Q8$R+(&+Q<juvkm(z2Qtp}Ql#`U}R~F@-QyNuekeLz@l<O0co*7VO z;^&-IQI(RLoSy1#Se%sSYw4MrVUXhCXy#LCX`Eu5T$)nlTbg9-mFH9CS?=rNSe9%Y zmFJo1WSkftWRU1$km*<HnV#q#RuE;BVGt1PY3!M0Vv+3bW{~LYl$#h{Q5+ELnH7~A zmFt=5lpPT4RpJ+HV(eR4Uhb0>TAAc*Q00^5TIuKFS?S~ATk2aCSmBrDR_qhvTIyTn zYvLag3TFGc_*VLcc!AlzS%Id0S=q(D!6sF{Rgp%1;pLS+S)nHWE|FC}E}o@+Rgors zRZ+!$&L&lURlcS^&ISfPS&_#6E}lk7&IT1eS)K;|A(0^Q3ZE?BD!;5q!z35SVqbTV zn;b!Ytn_hlEcJB(vE9r(GcB|OoGn3Nqz$_V4R5T250!!T#n1{-__cztqfL^)BUE{* z#l;%trmC9O3OFU8Rzl8oK&@%?QZkDZlX6m1P;7%96oRG{G|iKrms5#NDahe^SQQ}F ztHRuedI5r&DJ*0_d9Xsa7@EUSN?3S>q-O@ZPyy;Gh#Qki@?iNt8ngq}7FJWoqBs`e z7DVxfQ57ZUWENN{fL3ZiGc@Q#L2!lzRjuH8GTqd&)Vz{nP!S8S21s9bYc#q`8)auP zG~GjX^@2tsK=mQ0?Fc%sTR{OFrRck<%k#rQO#;xA8>SA(s5puppu}ONK=s|r;FVS& z=fbiRT`dJ2<&VWe+<U%3TjMc<3zmJc7)84PgG5L*%r&qL@<h5Fq79ZtK${;+OHh&s zq%ndtR}B$Bo?eA75&=0SKMgXm4&HFC06Ixr9eT{ZI%rf4JQWMs{%x;N2j;01Bo?LS zmFR(W=z$l6`KLkV{J}z+u%#Z*^a~zT0qX=y!`A}9JfWbFS?p9=Qj(vC<Z74@c6VoF z7VAOMI($V8#Er0J0x&m16hT&%fl@2NPOy3;3&DKcwm}Vq2MLs~7Z3JiQho(^pE?%5 zfx_4sax)fU{YGU$Dp(A+eIRXczd<d-upFjH9a@kePTmI3FC$hRqA!L7I~tU1;7)>y zU|mZBvWDnn0-25mUyuL_aL_m{IPReqfc&6HWIED>q)e#qq3I2DK{j$?g9kaxHppTr zB<m=#O$BmlISvb<p$uO)0!v-c^9+zu7gPi}zQG|=S&)hvvY<6P@C=9&mXL)VaPPwH z28~`rawK%=i5@h-;7UO@K~<=!DL`0y@ku4nvlZ0T6ck~CpuSc<I4Psp4U-0kDlD;s ztV3Nl2C_&|1F9ID*+JcglEl1ZkS`sJiV`a|QOpIM(}^fc6l@iuk(Wcly$EH%f)`Y5 zBd;R?^U;GAk_@0hftF3d8H)-*5ArWKal@<u`x&|f4#lHjRp8JAF9#(uNy1|gdcOeN zKB!5UR-ifrXI?=GP)L=6xiA@Y&<9cyjtB9PLm9F*k&?oJ!cc+dJ48XJpa8xp63N+M zKB}|9)~clD6zhS<ob;ed5TOlk+(6bKA(;jdKs62&E0EL%YYU;o3v`J!x+SQ^6(|XV zdKzdtp?aaw4a#t!nh(ac2cP%@t8Kw)5AFw$@z4kYX#v-6pt6@hbYa-9pa3dgz?D4A zdek%qmO`!n(HsHw1d6ukI<P*_N_uD!3t6;WTAZOCi=(s!c?p_uK}@9BM`1$BNwjtD zP<>#E`~_c-t`|7?lkzLjR(l~jSa^@bMHvvqz90<E8tBj{nswl@nanDTAyI^ppw3${ z^oUYKpAT6cWpET(0(pcKSsdOgg{<BMl^o!eZb)OL2<70whAP4E5_qHx%}a<7#O_?= zAyb4k@UyMK$qs5C=HMx^2DA}WWGU!SDSUJlSq^h76<HSBfGV;)mT^vGX&i%{C`u3m zT##W-P<I?Y;)z2gB2XdYo$z5#9O@yXYw)p8geu(8iFFhdEpBm*ej>~V4TgYDX~rA^ zMX15;2H0Q->R>3EBajC{5r$&57&a1$sthq$L*Z~J!dTp1LK_%G^9xddLZS>b7785@ zMVPLjfTRvQ3OYI}>RLL$qoRoDAsqRjVMbkO_fDZ2--svFRA>Q+THwM5J;5y->`Guw z5M(7F+u?(pXbBL{;3m{5;Hm*!Poa!(BFn-n6!0)7LIyKna1VH*xeHO?VXsB7j&>q! z2GyF_hCC4}kllu~cDn@6*>m97K%71o4IACC2c4#-06L0JT^rOg0}l#Vse><bf;Tge zq;z0=z`>HKDLSwgrxlE$1B*s07^5~8zIj;>v_3X9uLQK)7<@<_<`!TZaFZB%<g*gk z8t~3;1<+j&py4La-VNIrrTnxsj7v@x6v}i{bF9E7fYKNUgVO-0xn>16D>cP7MhP+^ zg+;p+xD9I?qXee0DF6-p*~Tb=C~VR&KikGA!I;>T!2-)RMhV8mP^OQ((jVjj$g1x$ z-OM!G7$rqm3?gkn2h9U3fG#6U$uG}?o&pFu6cD;VS}7XhZ*ZLJB1Ni|y1GtvQo0p9 z0odBw!bfyKu?N~fUyztboP*RLwy3FLH4e?Wxc8fb&&7r<5=W$c(6NNz#Ek41at<am zqWEA!uruI!DkesW-nl9UOTGfF3y0(^kZgRJE^N^R+71c@1(b{iTJH~CX#rV)U0RZl z$ZRo?>;^Isk-^{wDj;$e=n!)784+MZV7Vy<mY+ZdSb?$*STBeHQ3uN^U||>sA_dDH zU?~^}EQQx^pbLE!AXy~_IkSLV0L>1dZ5p7{5zsRXND0z;ljLR^kTF=Dh_)~vhfCEG za|^7YISIrB^ReeBkWHw5!W};7mP5B^U?vh+&I9kh&<7`VyBKUM=#6M}s-+Prr&<~f zms2f`M&hZKE{P?n1)0g&sYQcw4L!Q^$Xi7ZS;mwPKF|`Bk8NSAw2_v(quVra3*OOP z0$#}t8fQdW%|6u5fye46Dz8pA8V)B$8jYS93A)f1)O&~lb*jQMQuDy)LV}M*ELKP! znyb^zQ_T&HQccVun{`lg1K~|2808l@Fz^&!gK<?lor7R>H9G2fx<*6zgvb<lBc&R$ zst+_y1DoAIOt?T-t-)7LXXb$i?U5HyLzmHkM=A6W#_B=@$}>wcbc<4pQ%iIqYe$e) z&?Tm%Wag#of>$A0DHwq-_5)i8H4@1*1v>?ZcK8*LV1>wzMvP8DrNGl02Jq#qP-_qZ z@X>3Og@W)o93!|+xbKm@t)Kv%^)NOmK&+gHO?RLOf`bgJ47NEAu<Hqi0CZd)9(jm? zKbX5QjnFN~FDNa5Yr!_K2eusR0Df|EGCV-g=2j39hdewEyYw4sBxFiU7aS=@NFfFf zZ$kqEMBE^cavCU@6;vn~8WmJP)<T1pNE_%F=oy;B7k*;#EBHu7xL=`hWrVqJ0x6N{ zg6<lFYk|+%85)4BH-Nhti)G0rML7xu&_%DvCW0kEePS$fAlno`a&Rl*2@Oj&gQqtm z#MTc51(c+PA_GfrD1vAahe)|N{e;M_&>%E3MO(p-)w>97I8zxGE8!u6&`v@Q(ap`z zE6E4~9e<4)tWcMmAO{>QcuW!TiWZtCh-8h$sh~5jbfE({2-hM_4ng-MlxJj?q$+0S z7UUO|B<7XCvk>eolf3*A-Nc-n{PNTk3{`MzQ<D=@QV|}rO3N%NF3|<wJOfWx=xTBj zF_gfId|hPM!%aYwPA^KVgr`iXZ<H-9VY?Zij)PPl$Y}sn1%TZOu>~^dW0jF#mRf|x zDy*up1*jD$^J|zI=qMN(TIeVknwx841ek&X)ScKv9qMFc$08*exL=V=Dp1~scoDy5 zP&UTmJABz6EQhVkfCmXU6(hm|mSoURYX%pvI6MV%7tXMUxB$O&CQfNoXA)KhNe<w2 zfbbJ~hEcFmP)-E{XimWr?B%Jc+28~Q4j*{5fiG+>Pt8ovD6vvV%Flsq1;Szic>E8p z5#0@-ipwI+BFzHo1kf6&yb@iQ(dJ0i6ugcwFQ@>Wzy^*A1qD(HEl?!Doq{MVF`8ho z0?Qa@frTQ2D>R6395_$tCY9vDorT*lY+Kt<no}6t+R$WCceJ5MA}{bjlE4z51x2Y& zNX~`q`$IG`u;>6C_kyei+Bihkqokt{qZFeQ3+?qlF2{oI9tGX45rcL$l+oxR=rJXr z#cl9I(?MsqK~Am9F9=F4EX^!RbxBQ2EX^s=fU7}-E_~@U4lVgfS(*yf&^w6~@{_Va z%kT1&vXD-vP_PG!TPaj4K&SYvzyh__3MiAzu(3+yNjKEnf0aO`8)Og{=bSEdl0qph zzbF@WL=))zFX-SeqyvOJVOgz?(Hl~?QUD+I2U)KVy7LS?m>Q!5DndYd!51uN<maTM zf(|`L;$cj%g634Mz@r$pF-pkyKi6Va3OnUV3EWQuAMAxyU72ofeoAT%ViFm1A{Wv# zgU(MWA^8UsL(r*b*bF#CEz-0p<ho;|<J-X+6l@jLvE1$kJ!;BMtt2xywb&Xq{ewK8 z3Yt-cSb`e6IO7-6D*_)6U!0L&4w=IS?GtuMtPIOcEys+1+(v;r9oRJB)&gqtV%LFN z52((-r3V^B@N?4<30W6XOd`(YLa>NANgZ*(enC;HUus2(FQ~Z<PB<C{nmA{^LCF$? zA=CY^JcHyaXi<!C41xuB7PxrEaX30YcNr4lt^$Ms#pRhL$r)gOL1VtU8gh6^W?H37 zVx>oFVoGX}MsjIU5oo+ov$obozW_a%fjkRJgejS2IHZscrb8-cbm8q9LQxC50-+pq zXdkGc&`U|IEcQ<ePfg8^QL?M9E(bXb)bzvQ0Lb}tsJRB}Y#eR_#TU5EMXcLWKyE|Q z1z%X8l%iJ*P6hDUeo&4}tPBPp?yQjlZpi9@mXw3yuDUu!59C8KJp?@}4c(_$g|Q3b z2oLZ`3YIbhIqiT4+#$^d{DC{7N{z_W#G*l1Xds+LR+-@f?tWty8X#k7TWWw?>x8l< ztic1nJtY^EJwX{u53C={jUJFB3nC#Uw*n#uSF3|EHl%f=3u1z;hxG3t-F<Z{jKmKz z35GS0Y>qBSEGkX~?UO4_)znK*g;XmVnz0JteU7=B3TkS24TF`&AiZv-IXR#p*U$uO zMmHKEjlE3-bDsjDN&p8Bv}}T%d#Z%TJ$BXAxq8K=NyQ~a8U{MX;3@)lNerqdU~xlY zS&g;00-1-U-odIC<<=iiEJ7m`SJ4IvS7-vq@INlIMpVfLDFX&!*@o;eqDnVA<Yo`J zWTRIZrjP=*4qTw%X==do47@ypXaf~$5EcOgV2xzh!Z;<0i!?}418TNF_SJ%mGDLX; zE{-5hgS2O`_O;N<AHCv|`~uq;rOMRAB4`<eWQHbQGwiCXk<{XEKY@x3Sdh}U7{Vx- zh+6wv0v(2d-8`aT3t6+SpioehUx0is5V$jm<v0S2(*a8Go&y2u;)4!ELONvtKER;v z>#LuVqF-5AS*Z>x7(tN;+gS_VHU&N%#Rc9%$Ko3BPG0an0gz_UiT>bG5~O{S@lfkf zcS^z!9>B597j7hU1_a6ZpkW3p1&m;TT4SZ4Ze(CkP=UomNZorZKEXWZ0d6ArtbEJ> z%1HzrLPmni@)FB3(-TYbi}XNROB2&mF%3l;C&A)Kh_B(gAPiWPf!6Ed-3$#L;sRxK z=>ARkHaSq-fyDLVlX6Ny*W|!Qv@~GrZ$L^QyGX&88|bN|=75ig03D|R8Z1$S3+sVS z&`iwCE7nNWD@iO$Pc6~Zgj_-ZnE}^;44i=sgzUcrvB0*gfMyXBOOi7*)WI`Ey3oDy z&}(@R`oOATttY5w^f1aX@ZN6FmRE>OUTV1lsPC(xi7*J)-2vs9c`5njkUJ5QL3i;% zod5|Sn0{EmqugGAl=M-=k<&jxYe5$l5VjY5pp^nVu0UL5TcF!tkrF5@$gDs&Fhc_a zp3@Y-BY@!Q2kizfNNJ2!268SPbi4_A7Z<XL5P5jt5~m7S6Ah{WlCTvNU<m{g(hyOM z6D*)(8b|>T^Cxm>K=&S}r<Q;c0oXIhDG_2e#2(OOTy6o{X)2(GKav$7E~@d+;0DKS zX-Q^Iu^#y9p`1j}tyjgGkgd$1j1Nmb@V&|~TQN7@gNGQAYz6aCtp(==P{zqg1P%0n z+PSbC0TqRZKAJcz%oS|Ww@AZd5HZ4v<OqZy7MH++9%dIL?|~f&uF;6em5_1<tOvsj zuuILL5->lY?N&$D3r(CDzEn_vo~3}4L7<5QYB)kCd{aNt=qkAM1eIOzctk#Y06Nl$ z)PO|_K}<=Fw4B6r6i<K(Yf$S67Lc%jMeQsiIRc~s+~+ICrUje`kP<v(H$SNJgiSRl zi$E1aG6u+>pjF2pXM$UV1}Kh&h8xU{kn^=61q|2^x(bE{Itmci>43`_L?*x!4>--! z#%~_X&9ICGYF(iX{9?uiID{a5AdoLn{09nKut#hm2hqSBMmRFCg)Z18Xz+ppmfCRv za&19TD%cvB{pqPCpu7SW(*St|8XXF{3WmsWfhQ(mM(RPd!@1ySB`#J$E(494gPlRp zY1%|P4Q?jXZ3sRt$KgyOpily*0?ZTwmm2=L6`DGViHlZnaSO{67@1#N!4Qvem=OU= zUXVT`QWPKr!KoJ|cY>{lmf4^<g4TiHW;;>=iL4Bq0HNwY2k4<I!{r(1jbSipQ2qxS zrJ;#M22zS5au=dFN`cK9Ao&n320ExTRYw8smP=6So0<b^cSEi)1YKYmZ4e7CjFCq* zkrzm*qXZMY&xIZ^IO{=}Hx+EbWj0bEL5m4+l@80t@cAZ4QwOFQ;eSwBha3rr`W3@P zn5hD7h6^d+&}6VQN}y>2w|&U20>>w|q=AS&h>eiC9i$S&F$gK#u0gg3-T%n$K}yjm zDHY)ya2bb@V~|9#+!%{&1F<eagdd7SplJaX-^lqNYzs^RlvxntN;;qme^V<+$~MTA z7*d!c3xi7sXmNv*`a$^z93%>M3WkO#QVI&7(nVVvC4EEGBHvC4Z>S)Qvcb4|5M+|B zE>@Ea4UvSwt2#g#0-h_Y!LG0ZlTZ&>L7GhPZV++<6Q0{3X$>;Wi4-VU<-tV@ir+ys zGRV!rC7^yks6B`pO?oBykU<BG_6m3@Cn$0Hr$L;cU<-D8a7ht#8X+?;9n>3w8V@}T z4cy>R&<3qJgI;q9Y5ss#eWIBL?mKwqm1tmCrK4bIps4_A1tJA0v;&5rSV3DsT~}Q} zTLIk)xL!n7LWCM@&Kzry!Xz=n6Y2<X!Uy#cp|e!cu#g4kHP9T9wt~6>$Wbr}M9#qC zEO1DGwIVqOAxOS6u-F9;0#Iz=PF4t6oVF9?HMn(1K7)&48VyRXkTFdKTZP1;^wM0= zX~eL!Wv5^W8jOOAM;pe1N2%a<pDNfRG=U_cSJ6UD1P2DJ=7DrV6+wQ`1lNABY7QLi zD7gVt9zYdBqhB3y{w5@KgYp2h7DdfpU^^k@0LW{wQU_!$NFg}RHNZ(7O=U`AC6a-V zrUsf4uwj0Qxv3~lhZqU608%p}JPdU_Brx=fQo&=98sPC^{d660=GH_A`}+F&f`s9= zpvs|0p%w_nnkY&^DmBy%K$!t-mZn~DPG)kdhOQB^x|9?obt#FJ*i}_lf>eP*8`%mC zd&NXekOb6xxYxjDf((O)9HJ-y$1_r*1oKg=b5M*Gg9}c0ibJGC1JsmgfG;H)#A2S^ zhlm%DHK6!XuvI9_&rCrnIzef#xTFYXE$GltL$J+|Mi?Y6p^d~8U0+|_O3-LOd}tI^ zUf<Uj9NX&XXLCYrhYz8GY=le|gUWa_aB-}ofGTRNqhP8DD(%rF40IHXkj7x))hfz3 z3>F(9$rX}UFsskZV!uQ`aCrgBH;B?yQ^6i-v{S(foR_ggH+W#M(mB60uLLR5kwkH} zEWpu|nOp)owA9#8N5RNKM*&0|8=%pKItr*_$VZ%lA`+ZD!I6dDKmo~uQniArf{B3v zScw5B5@BLc5j8b%E>%!fFf=d#mwf2sH1OtzktIA3KtYNWph!$;iI9?+ToMg-9Kywj zi~<g$638wO^q_+ZV`dxhbOC6YEvTjhy9ANmK|<igRNzrsP_QDbg*G;khNRKuLD2zP zWQmws1Njfq#)B63I9j9#7brj)URabvN>5Gr2r0<y6!0<ZpqU0_gCRvS!c5p$Hb@7^ zji9K5w7Nj91rJ=%uCWEmhu}~K*$&zkP^6#%azv&AsD-PLsbHgEXk@LBsjZFDI>ZcZ zJ@84gC|MP<FyBf6Tf-|8;eQ1M_;t`AM}SiqLKfs0Q0Rff*A28w$OT-%!HXPtAn7Q8 znc(E8gE~S4G6d`jm&8iYl0pSr1q?GmrGraiB}SbJ%3-K_ZEZ1H_oxaK%#nf=>>rTF zAQgT}BBU&VRlVR$0uj;xyB`$&$X-D%-7wr@r+{7{fV>JDfkUzb)G7l9A$ChZ$pG0R zh+9Etfq^x-;Bhp}GH^oGQGj#7@qlV(T0S&&#e<TUp|wIhD19M^9Y_cxsX-i*l2{p% zS^+9dF`cCgNn^0s)dm@?t$^IE0!097@qsnL!jdf1GL+m5G6GclAWf3NJqw96I2Y`9 z&=48e$*6?_$Qa0SQ7Z+E@fpw#HTVoQNF`e4K$=p3GEs9%d`^CT0cb{}G%p!6y`%sZ z(1_18Ld(9OWCHRGN~b(CHx(L-;FJjU1xPbedWOUXXk{--GqVz<<qJ^+@g{iTJBk62 zG9G^7AYvhbURr*UYhrSS27K;P18uYm6egft0I}cJ7Iap5aVn@Un3@A_ZD=YWYz27` zx&#bm^b5r?D1{HCaUY*)1g<y1p#W+H!q#GdYzJYG3!t6=k9460E=UO|fWdO0;vRIb zFevpIK_{b8^rE;1q!na3Tq_o%A&!Kr02N$_W(~sOpfm|;YN99vXJ_bILa_J1k&M+6 z1?(XS3RH0Yi?TWr!xPZt3GxpNBb9_8ArvkO2O2zZo3Lh8P$$|-AwJUxEt7(DK^k*t z5|DIZ1@#po-=JkNNOg>mMk=&G%@S~_Wu#yO8u^42+n_Sb2&2$KWIUvx0s9hRG$^7$ z$pX=)fi>4{6il$?SorjXUn=;JcoQQ9UC6`}$k*UlftrA1DI_n#wUSUNz~@;IPDW}X z#Ag~S*eZa-!x$7Ea2r650|kmPMxel&4T;d^AJ&M4mBI0u#%M7JS&4vD{=%(<7F!5D zI9cl`#Ah1QwDd(v$KbeyBp%Q)pZdkgMVSR9@U>^4AOwknw==;-_4O6Nkq;@Qz^x~! zLgaHG5IZN4m;FNruR-^&f%nWqk8(gL0lNrl9C&UX$tuWJE<KFhTac0tstI)W0+s_U zu-kxSIOfq72rbC|LY!}bEDt_U0qyi~@NOCK#fQi$(T=-7mV%$bU<A$ya1X%)4I{MR zrx8F7x<EDzzEKr?x&X2aIN)(hgUTq~#GK6ZJS!}RY9q%F?$CoDi-Bw}%GnqQ2^=Ou z_JiR{UD#s*a;^f(N!#G_G7y%*&eYHa-3S7@eGz=R0E#^PG;+`e<g_%@s6gJ74&J4T ztQ8)AkTW!prHDUB1EC97z<^hCqXrCgVIlNf4Z=o%cDtdP0N+9l+G?)=B9J|f%PF88 zaG(P>5H=#E30<%(Xw^NqNQ5S5WCb8+KzENLOaL#|1T9U$T}Z%_J>*mkWW6Yf8&evV z>@j5^X$PJz&~gp_06;5%ps@iyq66VJyheaR3C$G5CUk6x9hYhFAVo8ctXz$Gln25) z@Hl{+=YcE%3uMTl9>_8%u>(2T10jveOUTV&G+$w!8Gv!*1j2j;Q2)6&zX)`_0M^q! z5K2*<f>;X=POPZsejqgIA&=vLBGd{rM*}+_1X&&05g*X=OK{~9u>V1wEYuteJ!1oM z76`(0xYM!ZH+X{!xfu*QG6G=)au&s^1!pV}I2{CG1!z@b4k#+{#24Hrs0|L}M2Q+A z$b~bg1OtTt2<z*k>^n#H9=OQ`Zi9lO7FQGyEXlwM3UFzM2O`)Kw9vyiPXrN4M1%l1 zoq<pDz-2kaY4~FqtOkC@2*Lr#L51oG{N};cLJ}I-eQ4fB&$`G*jvyR>D+EAYX+*T4 zCIc+TWDqtGdKL*np#t(16R^AnI*tT%APKTE6zjmJk|4{%>s9E{B*=2)mC2yELiI4B zroi6lhLy+0;4@2*U4T*^V@jiV4RV$XvThRG56)+h!%UD(AYcLRV@;3^!Ev?;suFAm zoFJ>fJmmx-iz^XAHu9s!1=67>gbe_7{lLecAe1U7K)VfStxIG#Al=S@e)x%*f|fq) zL=@O~ltylTN@)&g5mp80_^V>bz)4<A2}E2Ex{F7_Rv|_Sc?V%k4AQoE(Ba>9kRzBt z{YU6A@8BKe;6v0wb8om$-vAvZ4%_4v6Qe}L2^=6DC6xuKV8cNP4deg?EAT8X>>Q4m z7$qb=NCCouAV<QE;Q-kPX_JA;T1=I&Q#e4Ux91g<mVnnxVk(0l!hwADygqWUK#shC zp1}b+{yrx)u?TXi2z*!zWG?g^j+huFhz_tAA~eBE<H2G`E(4E=fd?i*GDx;Ux6z>= z#{oSB3AC#WVhNHKobe3lc7ZHVDAR=;!~seNnZ=+MIdshwNEXQ~)B`d=s*&0^d3mWt z80zuq05xE-XuzihR3c*40u310AsnbqgXCVsDHjM9{JaZLW(FCokXV$NsGE_Ql9HMS zNsvXQsbC4D=z*?-2M<<)(+}u4ju@l^IpFaDN}C`I+0l)Nbx^Gd8C21QmJA3tAy{zN zfeQ+-E68)6p(aQ({1y&O=OK>dh>1~xEE5F#4zx-TtQC2GDtr|YXp#yvehl7oU4W8K zz@CPjdVyve?(_(+>A^OlW^k~1pcW8p18Pi+64ui=K+%A59tXPhBsvNdQ{d(Yk&Z$; zh67Z%Ar*)4qc}j~NGS?w5iPhO20e}g;u-V<If(EPbeAWRN^}tnKGL}xXt@V;hAGJR zSc(bMM1mY;xT6_7r~xt$Ey3W{G1LnR(Cp^mEhiAJBd3^vtf9nKPJqmXti!`NzXvH@ zf-^RWc@o^j#G5H$d#jO33ycFeK$#0U#e!S{!jQ5Wary?RO@TZU3NH~LJs$Y^8)%*a z83n>5AH9LY99UtCWj+nE#0%VLK-&e6r2zzT69glbKj09BEXCG<9l8+{ql7JZ6cliu zxPjqx<jv)1lIR5x$W54H=pq<=vWhKG(u5~jWKZHQgGOGd1<Bcix7<Q@AK{XV=o2=G zNT&E&sNkFgE}KwJ*1%ra*kCEAAVZ7j2Ww#04{P-zwJ?Y}R|CzDpsWYNka7e(<%_K_ z0ngn-oCiHp17{HdJI@Dto<<Dr6E$!ef$KO847by`jDeOoSg)=!C!!CoqYxioo|;sU zn4BG71UZv4J|5mN$0Da;Xk-DtE(fF2j#aU-0a!6;^b<5;kE#jjs7_4<R4D~pGy&Mz z9w3vfH9$S`{4_Kr;1m#}1RHLMQBtr+Q=yk%09x2ntN_{r0vd~ejX7xQ!PB}ewh+-U zG&Tf#1mp?uz9L8%l^`v)fr^0Eu0XEcQLt5j2B}7jQdw!LZbp8IZc%DZeqxGlVnJq% z64*qDTD{D?;*!Li91Rp5F-n?XH6U9Rp$b9w)+Lr?Cgr4RLJvO$1qsO3%oOm@iLPQ& zVp3`jId`6bXWfx6Jt@jB0Nu7YI4`b3aU6NqR>5Ljw<xu|D6=FLe1BDDifw$Eu9=ZV zYNAm}GW0$fB+JMMS(rUI!*&4g!b0*HG)aPz+aSFO3l@+A9%0~o3C)tF1)x^9MrMi* zXi>aBq>KTxLsD}KauQ2Y!K!Paqy~fr9U6^xfs6&kCAPl40(g;(E~u1AEwWN@Oi3wL zD9+DKRY)!_Rw&5_-}L0-@2ikhsQ|ffMIlka2CT<Up(HUKRG5IUzP<v;2(WUnY%xd_ zRLp=*qDjpIttG`;;u~2))~#ly!Afbk23uPNb;vFxbxj4hs6uo!wCo23AXHdKL0vr- zvOry5ALLLZhamX^<|arCfL01()@B-p28Nm%aC57nYZf!pU}AbX`N@en#aOB!s3xca z@InNAeFcyF5(QuIP_{x4WIGRNyA;SNnQ0oxmBVnlUJG||s8*buUyzz&3);R)M$rgP zTsX_c!FbKq00jjkTg8-sAR=?+rItJA=aqmnBuf55mO#y72pObY1~N6K1d@+55GoLs zLbFXw31kKc<>oj@{#D2<Rsby#%P&q%(NQQ$&CM@M1!r5N;ssoaz-N3i@=HJqnG5oZ zQ{fFM(5@B*s5>;RVcQ!(mZHxwSyEhDB4(T*K7cg`aTX*7n$VTn`uYlxOI#oxLd=^% z3<4DfP{Se1G?9zA7$v>p)a0Vnl4zu6Ml9kI48$}lV!;ixUx9qNx`F`+YQk@&0NtpP zmXlv@r2v^AfJ;D@BUmZu8p7`^Qc!@+#UhJ=XQjZa*5G>K)5ZpHA;<zH@Onb9t7>CN zy&A#TfZ~`_FD*_5ZH>!JE`jU{1%<eOQdVkm38<%#nU@++lwXiqR8pw{jR(;64e{}* z#gLL4<Yw@MDQJOjPHC!@0;u=`83Ie^dC=Pnz^6{(ND!7r(EI^Y?3bUC3OYjqhk7G( z9O^-fqjB7GFetA^$jO9GEh=Re`(%O-zD~`tg55QZI2sr{r<982IAI&m1?UQ(JF;!z zQ;$l>D|<mbegy@aMA)2}63lSK&F@9|IjKmx5w=!C7c!+-fyyKBd5fT{6dbZsD@zOX zQj3#qW0XKsilDt7i8;lo*iRO%t_EM+qEHJedrCk_Lth`_Dh1fc2H1PHF-pmaMX4o7 zGi-?B0HVQ0KM~z;up6jRm7)X-+{d}8d8OFgXj7V_0J^cfI2ALLaOnX#Jtw~eG}{KE zK;8mjxYum-OLK^EtBrn6CaOB{=p@uRAd39tkeZfX1d0?Q!U!^<j5Tl|QqT!**z~p% zJfxCJ@)VLv@^q`KL4ygkwF>ayE`i)IucUw{!6;b4(wJ?G5{!w>843ziO-B$<p$0r? zVjYy7FhoIuusjC$9j=4{N=&fyOi(fPQW4tm)X2kSh^%3Qv>yOkoP$bv(A6=B4XNm7 zy@GN$>S>=yXS#wHsX;O)DEh4wFi$E?&QC2$PPI~q2iE|45UyTQetu4BVjhxyLMNK4 zgF{u_N&$4LCtM#a&7iulvLKa~P64f7!D1ogEE2fWkPe&$IT=(ufI<qfHyILQ(CQN; z1rfk)j5;)o;Jfp{MJnRp70{R#+R2dMKuaw~+WHI?0kscdPJ-{dj;>b7FG$UUZY>7I zybiqRhYG?1T%i_rI!;bvaWRw)s>KxS71Ut~UmbRGKxUpNXdMnn4!jFQH@zsov;ee# z45UOIRDgg*)FFLUP+%a!391>%4^R=TegKbbs}v*_rRJ6B#e;1F_c+naEcVGnHn7+y zlL*uD63dbji$HtZQEUN~1sH<yC5cJJsU=wK1}R6f8^pzGH{@VPs8=w|hqwic@x`S{ zAS01%fQn$X1lc2?B~6f{8K9Qxfega18EPD)4Tc)5prR5vv4Q!x?TrV?L;GFD2(LiW zB`g78o;(UV2pGwGATFvMpz#&(20rLUGqBMRQ$g+p`?)j^q7N(w5`}IIi_geR0Ub(G zoLUl+nVXtlie+#bqFe!baxhE>D3>Fd29pM5BUlp&NxBxaRn!1mAVOS*<Uxo4suw|n zi(r3%ZHEq;!`uZvO&aEUBvnY(qxlxi?a+b+zJU@J7sMaq3~GvlYzA8i3wltzfDUK2 zRREp61aFcX!D=DsL9{BVImLRgG6WGqDycbo`FTz`rA6>wt^(Q_(BMcn(!(0$&>jgW zj6f!(W#*+gXJqE26s6{As3+<`ngnobq3vUJ)N__$lOpK$rs{z<gs0|}z;0qgxEiuk z7V0oq>4_F!(4#ECgI?eO133~N_#h5cKh$H81Fa$cL{g8{7`)yt%|Y{^dQPTYqB>%@ z2;HNo?m%@g+$LCRK{;a@DLtczBPVMrq>r>TZ~{SuKkm2&c|9!+IuZd2WK5-y@Ig`p z&KN}QuvCDI=pnZ!p(7S(Yv-|zR3KVy3JO?<E07gnj#(hfq7Gaj%b<*2AWI+*VIYem zk7FQ<BMoLCgu!72%KD%^r~2RlN>Es!jXxP15;2Ma$uBt8IKz9<pyj@xel%#^9ZJ^; zyvP%@8V%mL1+V2zEG|wh1`8vNAi>qz#l+-+QU!8n5_N$uK3&M2ZqQOY==2b@SOHrK z>3E|Wi9E><D=d(^-yp9c_oqNBIWzLhVf72xT>Q>L=}AF+2=Qe>Vjiql2MQf<UmRo| zR^woI1i}mecg-OjSa%c316A?R-V<^-fLazrxE9o%0!3vpWaT(m2e<_bjwV<gp-ZG` z(EgSJE-!(*@(_1}dV`=YJcNhrCrFnaB#zWo2RjGsI*@DOeRhN}QpAGYPe#In^yl$K z36lHCPPLGF5Zd2IO`KqdgS|ws*AH?fp>&GW_Xnkn%wq5m6F3mDMi4YVf>JBeU;rp0 zKtiCnr7#IYybjOz`k<r>=YcqsrDH_!4N$rT4-#No<6>+?L>Y{KjSFPJp3um@u`zhk z7E~#K8nCFEhSWM16R<}>o&Yz3AQcprt^%k@1DW3*`s-NS@{4laK^^x&xsV0Tb>yvN zDF)w{nGasT0ve97g{_o8np#D(XyDeIpg9DdA_wWB6EeaU>?KI{(SuHAf>t*mJV?g! z5MyJC3%k*2v&{TF1spSNw7*dtR25^HdBHO14XS8By$^B*zRMDGGE-28d9jatLq}yH zBhw%oLCq0ZA6P*lHLoPKD7Z8!H?suQG#ZamXC~+8(bYoG{XtkP#66yk=gu)mFv0>6 zbbA!i_yLHEJZu0R_dps+2Vc=u1RBYXjzt=f2c0&SUs{3|Q_v9<h-DCq(eH7BrUm%$ z510?ST~$XRKPLrR`GcYzGTKv?m;+u#i!KKnXouPe(g5xxgBY*@ImpO0Xebsme5Mx< z;e)O}%uGovNktm2fNF)fTR{PHoHQ*z8FVHN+|^({a==0D1dq3YN6Ph}O5hHJ84jM` z2Ri^M9>Adhb`xYk1L6%(iw7(N8hkA(O@*5UwG9?GdZ6WW$Rl|<DB%dQu}Gmz!B!zP z2kv_Xdt{!5rh*lm4?a;A`7CXiHi#PNg5VTTz$(^7tE=lkCXy83T4MDw^HNeP{L?fb zI!jX#gGeBsf!cbCWts{wzk%C*NS=d5u7V<11(FPWU<_moI99<b6l@`8A*qC>WT>>Q zEqFNvTplgLp*PSWMF>;`If}v7#e=qUgIjLsaRQ1gND2eVfR2fU4*kO|EziizNmbB* zDpFHZP=qk`5Qd_}8$?zCd@3Sn3I^Rgs3#y91*%w04RnSgNHtzV_25Yde9$Y%YsgUq z;=}R_+<v$}p!UKNG{KQ<uxa3k0H<)MIWX-gLzqZ0fFh0@51`ZoHWHelH6dr_L3s$D zsX!Kdfu~_$o&!4_>!2h0SegkDO&dsT;TTIpsammi6-|k-0)JN#>v~sXGjLlEwMU3! z{g0tBWbXv1tOkWEs-_{;jkE;&8srIZaRP~(Vcv}dPX!OkE+mr6$m>4BdW%@r)ti_Z z8XB3T8bLNfz-=O9sV~eDq%JAkxEQ5@>y9Eh0-mZ7JvC6pi{PPTQiL$%C}8N)f7q-b zD4T=osl3#3*hT=9u@qfJ@UEbe+#Kj~eZpZ13&H`6CvXr^yK76#c`^74=Yik(U<_T| ziCCNs-9G?sQjhL@NX|&iOHb8-F7C#$GCVU)LlGKm&}|pcss*$_9a>+4mW?MSC#M#a zXv8QfV#zeg#l_GZr4Mcz>tz*VQ3c9;pgk_BMfy3JNsxIy;`0@iw>==0L5N9gSUU{l zcgS*N#L9e>l4SS=0;CBE@i-zwA$xyh?RGGxd^az2<s`<|T3n4)18VJd0CnOZ3+F&P z9$@VWtUDeM2ggD87Jw=6p?GzWo6d0<0Y3QH2z-hzSW7MB-~>JJ=m5lWJ3Y|I5)S={ zr3`3JKspAt1T@d5o1B`H1K$h*S#Mwf=fjWQHHHeo+yOpGi=f>Y8$Q6^LKqJ|Y6-FR zLO}s;pApnPB<Dg;X$A)e{FGG40nJb`*fI(fLDaMOz~|3Gm4lX#qMyhNmV$XQBe7UF zEj2X-bf%&L-spmQ#0Y#6Ak++!w~<i3U2=3hd_c#;k&Z`ELKG4)O7PV#O4YD|46EeC zyfDzfc4A4YjyiHeQ?~+TYlv8CQBi)8I<i_dHLwY`wzlAYDnwavX>xLEaWOW9wU~?e zkyj)rfr}#0Ru3=(whIQ#i9u{G0JUI>@^f@y;;_SPl)%H3F-msT)nKXGS{r>Z1Iw%c zXv_^9LS?#{X`me|Ir$~UdXRCNni|k}N3mXFT1jdVlD$Z!9i~4(3k`DeOQ353lprR7 zyaHV>fLH(pvRXmG29)0ui&7I|z68%J+N#5Z)sZX)#~#$zu<bx#$0)$hDpUfW+7Y7! z>J@=7e9H;wFr)mOV$eRC{G4L!3X1Z}K?*<=b_LL_L?8;gf|AS<@OGiZl9D0~Fh>)+ zLeKzPeqK(cZHy9(iA!N&X=YJs3Roe8iCrOVJrv4T5l|3-Fmf>DCRXI6=B1Zp*v2Tq z+1SlQI&jh!_4r9_0qg);GHe^8ln-7z9HXS*08WTt5ikpjC3c``sfrR%0syUkL)`%d zJ$DndW(aBb5rwG$6nVBWN+1f0dlVF`auX|TW0b%#n44IEBmQzT^Wcgy^Kd9CE=er_ z<*Aa?0_;|S(|U{&h{B;@M5ia{RyxoOp>2#3(oCV68fcY$W{C#&fF~y*>SIZMpqc|# zE@tGHJA;ll1r5|d%NV2z1XMYIYX~eQJE)wq0iW9lUE-t!Zl;0qM{-VPa<**@q|kyK zcB+Jauqj4?2{|baLm0`iAlD!jn-DIh|3F1GXiXT@iy&pticHbg7PRCYxsHrhN6vSM z23UGdWkCi=tGbRloUN;_4VwPTOtDwb&sMimhm6{*YsSVXp`I?P1l|y<1ge+{67w*f z2t9cS!?U1@30B2Gt0#~d;1zzTim{r2eCSkaPH`$0i(&Q8Xtji`sJDVm7>-s;uuP4d zJ;-RBfa;^sYH3I`a|XIv0@o$bLL0Q@1*2YqB}vNa8Dwif1^nQu8$j(w$gxN0g*Qrf zCL_PxBQ>W0sW!|=%_-0Yk6Iwtz|i)oU3E1`9@Jw3F9$}eOOWbVP{6x_I)Ye@Rw&Ob z$<PIN6pOK21C|3_mx<Lbj9LqeccJZivbHUQTQI1rk;q!Tm77?SoPlZ%c-<DBRZXQi zIUtvVT1Bws0-!xS@RQ@Qm`1y8)38nxT`fgw$kNwdP;$j$BdL)E$|2M+CNm`!lsByu zsulG0LFdV&DwJoW<|$+(mZd6y^9L-UD1bLyP-W9PxWSnhQ-YfQK;;`2FVQaHfyZO8 z*hp$zP;*rwd?{dVVsSQP6(EX`OKJ}2x@@F{grJVAm4aVsZc=IyTq)?bBW#Bn<e@8r zuM9ObFo4B0qDaV1tRN<QASWiEAD{p^01nAXaJ#_$8jSddkAq;bl49@Surd?d`csVf zr;`6N^B`kBwD2F6$OE-zu~>!SI|9*CkXTZZT7()-*aHNrlK2=$8rq_QLt$fhSd5}w z83OBr(bv-a@?tC&Qk+SQF-ri@@EI+v!k!-?Wf?}{hC9iEho}*Ujlh#0cq$+fbObQX z3QQwYM4p3$8?4*}E&fJYa0%kV=J!E09&`mQk}tuoMJwzT6o_65j_ptt#2gBeOOR$( zkR60r77Skg32TpmM%f?-e86%RNCdp>QxBHx;U{lE^FExPmspZnmI|B4feVA%s^E3d zpacM!`UiyxEa(&<Z4OYI9Le3_b_hre)zzRCSKvl8Y+*2%16>9SG8Lo%tXIKSAsXyA zFb{Ep3uK8eXf<?cD#&wSH88(vLfis5)=ynST|pbNAQm(#1rGqdl6;^1^3)>d#Nt#9 zO$BWQbxn1Iw;<+&odq%;%z$1!tzZK&Ef-cR;I%F{GtUP+Uw~<!l>*#laI-Mo0ZnvZ z|LbMtXXa_BD<C-(5&q!09Hg)Z^HIYcY8E)K5DW9+;f^p1H4z{giYkHCbVxb_+YU-S z)wP;>$r-81+2ACVSyBlKPmQ{0_0pmobsYuu)ZE0(9CgG3d9dR^#R+PFX@blG%jIU~ zA=rr(h&V$yAJn}B_v?{d4i`gpw7$NA3uJdNc(oJwbQ4|3W?hB+JO$U3^i+k+G|;)3 zsd=Ea1u1$Ev5drGg+v8Na43LvDL{1TL5dVmDuxEPhJH*;63C#K7=3-clGNf7jq=RA zl>Bl%#3mKcopO%psd*)u3ib-%X;9elMqslc*McET#^q^npBl~6U@=rrLmdVVPH@5k z#R-@PF3`Y>;lPf-k~Bc!2<dph_kO^Ha9aZE^nmQpfD}t04Pa-1A`&75IvEFKELNX^ zrd5%B1>)nj4CUk>kPX$4_3fZ2L8K8-VSr>Nh>O)o@M$uT^TkSv67!04z?D-m^f(z% z4+5K$OF&ak$i{>CSj`6qJ2(<R<s`_tU=eVL)zm1cL(a|wyB!k$FfX9*BLbJuNLGUR zpos+N>O7DU&}}lQWr;b+n|)AgUnDcY$pK^r?!8Egwze4il%Uo?Hz0r_9_%M5AHL%T z$q7gY(!l%&+N1+M_7k4Yz@;#D*MKSv@cA*&8U>tiA>jq`H)s(&XyX)i$AV<R4g_`G z6u`&)=Ow4+rzyCV<|TugA}ApUG7n^yEwma)EY1eG2^4ecNCh)U8Kf2g8x3|lxc)3l zMBj`AQVMrNJhb(o2Xc%iq-a4sZV5#J*rOl=U>Iy0iXjTN3d9^Z1u*~|h@coM1szmX zmY9QK0qpE4L<NFZIqWPqkaxgMIz)DX*a+T%0%0Ph0+0aMD`;sINeNUVEWKdvQ3K6F zBPC`K7Zg*asVMOYEer|l+XBZQxDo=hu%!|Od&Gt>1uM}0E2Ir-Fjp!lfCo#FoCW5i z77bvJgKJPco8~|PgJeuRh>vOvJX2sjFbgSh!jlWg47_O$tN<xVfRZhw07q(~q69Cr zEC81zpv;N7Yp+%TG=qq|#Sf|;#Yse`U~uX+0;NarO&iEu<egTa#0A1od33u#EnFl& zf(}81<aMwoz~w(iN`@vzkXl%=16j#|6h#mLv}46UAqb9dVgnGgkq+t*<Q<zx83P)G zDyg}dB^v6WbtURL3P?K+5os|$51jf?+z1vyb0pY-Q1ig@xD14>EI=|3B7mAM;a-OB z-@~=t58l0jSP$9I2Z>zt*n|f^QmTe!prTx~1PRI)nR(zaELOmMUYxofcvcd8cqH6b ztGxUY4L#7}Hs}g9O?B7-m7r57!CFvDIFN5)wn4iPXzo!^fXjnUj?+*FyIcp<Bmph$ z(SaOppspEh5Q|YBfRZt`Oax5>V3WX((u2hWYRZNsR;1*ENFLxIN-Rl5icgpjW{eUl z2B76EXb2g}2}ltKiWW%WYO4V0L_m1pR*<G%Nl|7lN{ay$u#g@gT6jWjf;b4)Da39k z$P94m0=JgH^)o2<V>b{<p{*@=gDp}4j}(BAGzfM)G{Uj;8IeX2;OQK-&5dCq*nUWt z1KgQPECKg@A^wEKG)hlPLle6{h_MDbEP&krutT6KaMXmzN{}KGw5u9f3ep_{i-5xm zIqM)L4QPy_q#dX<EVV-SCnF_Qs0eaO1zQ9;xD~xFf=EHzR-hw`5uFB5!h{q)AWfk1 z7g}(^)6}5Y$PDoT+@TN#+=*zx1sWNuL<%f0A33N%o(9*C#!yd#O@b8{D0Zo-L8?bs z`ySs`YH)W7b_PHC;hf+!3^^4OR?EN}|7bN5G(|vMsE4O&f*1#_1aX-LDh8lN;jV_E z3cw{GXhQ}l42<Cw14_{Z4Qx>14Alj7A=Dknl`$;I!xA!N(XUHtaY<1=atxt}BgYiT z9q_&BIO77_=5Gc3XQjfTgNkQVB5G7fn-7$pz{_i~ZSFv<9{`6ZR4sV&54zI?%@FWb z49E@>?0PZxnxL70-x)|dH;^})Anbze;V^(_7O>~wTR@DF#gRP)*@=PEF^Ekk$aaCf zi)Iyc*9Mv>+yO?&4nXn_cu5DU9Aw{&0%YR}vbCsNQjle^>`OtG1~q8VH>V)vQGx^1 zz(U)mf)+SXk3zPmU^m4EvSARk#0C8@17a?wfz*9C4l@8PW`V90iittq838(-5a~ch z%6CU3<`!71fe3KHL&Po#kXnQW@D0A8Qz>Day1<7lf=)ujar_`Se}Uw&Yq9~$Ll<_& z#6WjjfP9Sz4(Kie=-vvD9Bg+5IINOO;U}YFItu5u3&>%NNb8e8=aYg)0<mtm09lG~ z5V$0RY%#;_Gx!;h$h%2Er&OXGj*01F<O4iGB|iG5j2Orobz9_Z8K}+!mx|Cp1G^8j zXx|F#Xn1TPc4@>wmpp@2S|x+`Wq?jq1?|iLnQH~wf&tbCVn9@Zrj)@#AO=JTJVXf= z0}qUVxtb6uP-6hHzaj={hXurJ$PJ_^V2!Z0HAEL|`Uxxr<3Oa~D+IuDa2`YwX)+ls zjl>5lfG$Xnf$xm~IRv&l0xSw{EP&O<m+4}QAW+Ez>Po?qyn+JC?g+58VEu?BLrI)~ z0vT*3hygYivM(YAd1nO37gpe%5O878UI?%-Xz~_p0EhuG05l~676LJ#LZCrqu-IUa zL6k+GF{rx{;KdcJg9`Q>#gUH4&7h(hvfvX`Vj#96z%7Oh)q$-=F1f+Wnm`2MA{3nM z!Am|72?(-&6cn9Eg&(++1KFzplEIo>4^PKD0U5lW5>f&}FOP=%2;@Sr+Ywg7g|M0r z4;j=g44@OPlk@YyH3ygg*Eg`u3?SDc1rC)qG=NM^EXqvOh1`b*PRpQ99@sxv9Zx7| zkoGo!vK4sq9mp13hJiOdKmr!JY!u3Y9peGLz6tC!+|GiB>1g4Pe%>;u=z}bu0*B#f z;Sbst2TGEog?|aSoB<QGD*VBPGQ6w=O+14a1}K0n1rtc6KcWPsX5o$M1W?%wwiiqc zfif0(@jSF_#Hdk0Gxy-a5fOr*32f+20Z?K`ssjnM*3dQ);Ib0DegLPPC|d|fwI4nk z58qt?as;$`z;<w*3FWtCVm-Ld1ahN2^h_PZ;UL%*50~@LO&}-mfyU&(Bh`?8_%J`X z&Nn|LF=tR7T!-W`@(!+pOkd$Y_Z-QRfjeXl$r0ca)Icc^>HIh~HKe=a2l$XV62lbi z9V#CPXF|;7I)nW{I1}jgz=-p!K*KPYS9QZhQSa%73L{<8t*@_;n34isO9;M|s92#S zAIx*{_XQ1LgQis=r_F<=5aP>IlL``(v*V#7De>_dh6aY3uxsyi6sn=;`(~!W#NbD+ zVblsx$3PW;2XpoH6+H4w6d)HWD+Hy2hgNb^^S~!XWTt5#m#;A>_k}|pKSU3NGe}J} zF*Y(xh8&0q&(}npFo%9e12`OzPQ!$o1-hOZHk|~Uje(qn28v?jQ_vKkkxP%0@aW=k z$cz=lvxtm??B$Vl@S6$cSKJ`lb{N?jYh#aU2fyWl+8v0C?RCpjld>~QbiqqqGeK(~ ztrQY-auf{ojEfag6N^*fXP6OE0XuLEY=K^89>NaL(PN-RHF+tz$@w|?MOF$$=}Czi z20CD<XQ~Oc1J#78{QO)6J+NuIDVd2m`RND~QCtlgxV2I!PEO28)iBUAgqfzG0Cq8M z+57@41!DumX=e%w`2~r|nI)CThq<BHgcd$fXG1N*E{W+UP|%R-EqtCrl0$JU#N*&F z$Vn_oHBJG|#Os1RtfK(BD-?Xh8`SZ{Du#!UA=LA=pkgsbDMl$4T1e!9s}*SSj>!W- zeJw35eFe~Tx4xEwp~+CXG9|OvGp{5yJ+%l|<!xeu@HeO)h==O{t--``s|i98nr85_ za~xJ#LR&7dMg{!FQyl7zphw?gsK@6pzx<R`pUmPCgu7r>-oV|^0vddPTyLlZDF-kP ze=5^W%FIiFjaDmxS6YF*4W5fvP*4XKBI;J4foAZ^cVxM=#FSKZtJJi#)Z`NIJ_vQN z2!=XPafGT4ECMnLgrQc|Vz>=784YfIK~+HKGf^E3aUryrgE|x{mXoe-m6KSMo~i>C zD9%;4D$Y&J$*GM|Qh<d^esU?em4|uy3^Z)O%^KSnrE2Ibe|`a|tWV4d&rB)Fz<LZ5 z*rCwj9VKuG>Ovcw*p9ISO)VfDWCu~7k(!tSItvdy3_!Cd&{+*s3-D`DP_Th)xdHEQ zw~bMP@Q{v_fQ;fPDZmDwU}s0!flrh|J1fdYAEF<->l74hGE881SVH{|o-)Pmd#IO? zW+Rjcss`Pj3072#yc7ar5{!h+H6s>0z+^zQjedp+cIQI}uQ0XYHV}Ch9O~hu{FF*u z{>73$pvtLZcUpcv_#j0b{sWZ?sEG%^2EvI4b`K?Vmo@T1B+ztaS6!`;oS2uKngiat z0~#$Pkc1%8IMXZ4%7UWI+{B_v6e|;RazG6y@WGS{`PoF-NOH(y)qq71LkM}07@EkS z#UNQHtU&ySW&1Lo4aLErgD)Wc)nY6gixCk;nz7C~`NgSN%me3C(u~4l3TQ$C#Smy; zF~tgeJrB6r0p)DU&+sTgI-&*?H6T+#Z7|4T9?)t4TvdW(6cnJz9<sR^Q$sQ|J)$@s zv^2pAzH17}@o>Ws%?GFusOt<a?m)I8+ykkAu^5g!0f5$RW4aTRXFyk?Vlj#eXA6Lu z5SVs?>u1_n2p+J(v=Q6@pofhRt6}kkW&b)#Ljq}iF^V`S(jg{+VjVQh3SPqsPK4k_ z7bq^F!~P%@APimb3z7j3ZGprT6rfulKt_Q2Gl-Tn`qE;s**Mn2BU!Gkpk7dc*m8-o z1Rv@Gglf1upa~cjEa*EkA(<SW^g&$EJ~R{$f;$T!qp_{F25p5bQb^5#%IT@3B5%tB zX$4ia3bqO<(1xELh!1xjM0;^^QGQO2Q(_UgjR)KJ0`6kyrKgqzqeyF_EN2D<FXpyI zaDc;l2uR_bnxm-)*~bFy*FxKg>Y7-0ucYSafm@?`DVfCuIf<2^)iL1ZsL0WvK;#xi zXdK~lT4G9yb53G$F=(3&+J4PiNKY7gzzryc;W7vmzM6UnqaY33{DRaxG$TPlhZgdn zO{fMakq@#7WFj;m3KCONGV{`dGSf3kKwIBXVg__V0BRCNNu-dyC!mC+2P^t8tit6f zP{ifuX{dt_R#ivbaiM^=_8#P1h&`!#C7`|tq^Fdcqp1L1?XCw(;jnAtky0T@A9Oq$ z!~|hz&H*#AYz4#}C}`yX?v?ByBQ*6OXQ)Es9cN_W3m6m=GV|0S`wGD0Dd3@=)Vvgw zAR{f*)6$^94jH9_n+WN6gMtTwv1OLL{Jd1uyn+(Q@F0dVV5Jo1epzs{7OBhz^HIxc zaKgeGy)e^3<vL{R4Cr!HeWcq_K{6mQaBfF##zTq;wDsMHki{5*gf=ks^%cODLd}Jk z0vb*Ow_>283JRcXKw!8LuYsU`J;uNzLWhC^mSHyJ(MJ@ex%pL)u~o<j8*X*Q#3%!Y z5q^`vdj!CveBg`-4;A>x9okL-6wiQ@AtLxuP0)q=1+Ox&8}X>X5`~};2gM^KMxnzX zXvqV`oyb7|8vi65<d~|k1UR}PuvhTfg*<u=Q3%$9eZUpjm0)Eg>3~O|A#$`JhbHdr z4<^Li<%oak7Gs*CS|LUW+NO_DvQof0Yhhxl2{JXc7&0LV>EkGXOAE9O8YVQl3ev<3 zQlerwADerPjWzWkM|0`HhjBrHjqX;e+>B;qpl7IOq-P905D;Ob2IS~J@Dx6%siy)N zOvf?IYmAg=p(-_?v|g}|f;z-M>N*P5a4+GCEOSjrJ%a9C%C9-n*H<9gyP3uQNm<~* zSgdKv7;?*{f`X1hT26j`5vZE9Rq#zL$<PDyLGe|B5!>*#I6M$EGD|eU^#*)1t|H84 zkQC?)lgwhb%)HE!R2Uy@K9~dA4V+m5whC)vCgv6#NP7X#ZX?LpE_ih<X!Z-V^bK-> z63ENYVO{75SWJvkH9`(DPz)VLMiK@OY-1bhhRy^jD5!%<Vr-+_a24RC@dz{R5KQoR zAf~e*j)9ixP&Yxv@C|K)mhd400NTqz4FUxPsBPf(1$eD7j?wKH&=@A%3#cQ{F)`4w zPH3kEWCxP3Kw*tMFbY==9jZn*8mt~^Y?2uD=tGmBEl8y$CHZ+Ex4?#=K^uNRBU4~8 z*!VWGAb~M%B=3XVh%&qlcO-a>3uFUY2taipjc$YXIDvMf;8ct}xQ$`Af&y$98bb;) zq>UyF9ezX+#cBf9r~>r}u(}hRWD!{i(oKM?rp!|4Xf)C31CM%Q(+6xc8CENU@(|XP zf_oSnC4@n-jymIlD`moLhK*yR+YB8$1V=)3HMY@gG>eH0dvs-}d?*j=0$yVFgMyka z80)og7u(oc6o#e-;CdX?3<r%2pjJ#MYYI`NFm41yzQER612piOpQeDW$JSOMMhRBe z#V9G*qp8q?jLH=&SfNR1>cO|a*kY}A4NW0SlR=&Uk4ZwpVVEz{^-C;EN-P?bt8|f_ zM!RLY$hHjJI$dN}fU^@Q6%OHrx)}bU@=9G(%C{%b?-oYbfHIE$&CpuL0_mz1!wPHA zu`-~dUqPXuD8B&tBxq0pj%EG^_iUFsv{uJ5rwCu<OPYZQlORrnjT3@SK}H%B1aXna z1fe7D(7qF>jgXmQrJ$ZvteaYqm|KvOs+$KcH9>3rauN%QQ*{m1k!A*y^K-zWm=m7h zW;`g2z+)O9gTZ~P64()I5LaTEf&w*5i;-Lm<|8{9-o*otW}+My3hu*!?SdE&3k1x; z(vtl2^qf>@sPmDmLzO@qItL%vl&V)ylv<XWSK^YImROoof-=_vb`v~Q6l@hB$2-AA zaJdkA+7XgNpd!dV2OAy_i4f3a65=pEm`6cd|B+9f0rQcK01ZKaNBKeeGct?8?tugr zWS&U{G~Jq#U!Dh>VuIypq$whGJ(wc9Xi$REg#;St_Qj(70+8kyrC8X(YAT?43CL+i zNFfEcMh|()0%0)JNR%;o)Po=KMgzk5)WqZr4Ok;e0k#Yu+TH;r6%Yp1K+qne9*9oN z%q!M_&5melDuBdN^Gfu<y$jHaIz5PwHPkWYj39$9kSjJIlMJx=7$nc-rskE}<z(6= z;_)BNy#SdKA;JqzIi*ENL5La+WH=Lk{X8gG2?sTC?gS@fP+a1g1p;RtaAJg~IE9k@ z(&UWdlEk7C&{@_wnULcFVToH4Z~PE*C@VOp>A^EUD9<7CEXc97ItoSxpyj*JNy}PL zlEE9^pron@F;^uu2Wx6YD$HT0z2b8MEcYX&Tu><iIVT9@Wblz`sX2Q2X=%l&B_64u ziA{KLgWLlST6nz$UIL(Al3$>XlFLvgw^64`L-Gq0Y!#puqRrvMs}EcjCFPft<mVD? zmlIey3D$w@A9x&U;yiOp9jz#Y1vz?A2v2=@@;<ayhD0-@sDV{g8dN=e3|D4BlvOCj zcs_ih6EuOEmIh9#kRf?cYKBJ<)x!+QUTDe#rwd4v0yHa$JW~nc!#cpo6O{@IHhGC< z;1eONpp__mm2tE>L_}Q&oO?id0=mQ(DxsU1SC(2-oT_dG?yf6<_Q=45G{G$*EP7zA zJS06ZA)I>BGAmM3bV1q2N&{P-!etjkA2c^$XoZU7w6(Y-u_QAYyR{HGb#Pw|?#bF% z&@e3WBpB*QtP-?vPc70-%PGxF!BmZ=9uoe#(2-ar)QAJ6F2ukY<Ujx=Mbu;#ql9y1 zCe&<5PEvs7%#;`<1;~}GsTBo@c`4wFroqD@$V)dNnqb)vn>Rp?120L2jqWNH7wLiy zV2V+)3jwz?6`)rIWaj6=PC!8oIgk;cMc1G!X~B&Q+ZZL#Q3JY3iA9hL#Iarx3(|&a zGwn3tTVRbmP^$zBUWmKFC$wOC7DY!=QDPn_fxrfV(Un7o{xF0=Bl8$J7~WG+*Qtg% z1$4|7q@RK<*@8o{GzT7gph5zgV)7EpaK|{vYq*>Y8WS(g!J3FmbD+nsDM8XN_$WN2 zW$&oggOW~CVv#OX6*dz=2?uGlK1?O4PQx0?SOjhK^AgLD-9gmqVYF#TQ)0FsL)s5G zCe=W}1U_gD5>@aEsbgZ4kPCD8P&9GnIEHdqd5ygY$50L_h4Gc%IJ7_uXe;zGA1bb? zgP5Cx`2<of6DYHx*44&>hwBlBpv{(`m)7Vr9caoSVXg};tkD&tm((#a7-cnRP60G( z0-orDtg8n(5S9mHK$p~mMr)z{K%_Doq!Yc=2AxZom{XhzHUepq1g-4GbSEh5AeFhG z6ULxLH%Kkc!W$Z>pn?O0QHo&bL0sUH8)OKqz#kAjh(a61dgRg<H0uZ*1_1>h{3>yL z8XyHW)OVm_5RtAx1s~+Nvm(T)TF3=8QvM`ZRD*0lHd;Z!22oB!(g>`41eMg7%0cl9 zav!WLMD>(DsDwrpf)~!9qyRpi5>lLkQXRBn#;_OW1h`6!`Bt>>MkplCUC=@p?ow1f zv^>T(F=k5n)@JlcDID`j!{ziEQxkAA7u1shw*(<o&@i7E^9OGq9F!Ad$WEi(#2B(I z12-{-><V})9KsW082+L5#27Jq&mkE&FQ$a%b6_aL4mLTNkbwr!ctd8IZH!V*ej;dF z0H{|4YWKtHSsVSFOgk(sXpm`0tFH-8MM2KNgY5SL@6HG93<C|$BTXrQxX6<M&|#)( z1*qGQS9HQBYCzL1i79v|6+opWcnlDFv4UPa<bWec*n`KyAsY@LlOZrw(B%s#s-PF2 zpeX^}BZ+)_BzW)#)bfJNS%A0JAYBuuppcpaxpxxH9G}Fb)SOtPG0kGVGQG^aywoC( z5MLkY$P&n09Qwl&b4pX;`oX8cB56Vi0;uO8w^*j;AO^{xK7<B2#y$(^mMHKj6v!o@ z8>RD#^K(-5$`gz7K%@1bt=`27pz#HT^8BJ~&<!4$DX9vH3Xnio0L`i8=cVSAAnj#= z1{j#aI%tO8JtJm`F(l$}bkES!Kj^G+Xbu21)4(kvlspiFwE;t;g~X<2-~yJ&#tq~| zJJ8S<D5axn8d9r%AggUbo)|fen}Ec;)WLZ)ACk*x*R(;hWZ+shNR9yKJ5UN7!VMdA z?@+s4LzNu~-~|}EplT+y$V$O6C8b!QI6pU4A-Nd&P&<XBO3;aSnR)37i3&DgJ$4Eu ziRqxi4utjf!Hom(8F*mXVvs0keh@Tb1U_jGM~@JCU=8AgF}McM)JbtkQD$DcI(%v! zRKrI@OV-R39oUTf=+S)e$?}~1<iwm}NS#{(I=u}VS{eBzdWp%&sRbqUIHArkH6_{H zDA^KnG#@-8P~m7kxLKexs9*~=V69b<e`88O$qxCPI(i<>M;DJnT8R+PA~FuLmr?Q# zvIOeMmIxW790V~Ja(tx*LIuK7=n8<C5^y^aeDqg%Mrs~7^FvY_=q7E@M(_OM)D#^B z$jS_`G*Zz4E+JxIyLLdy6RHEgh6EI=3Q%`wS}Q=U1zC#T45fUt613xlu>u>%0!2fr z9nF`RoSa{jl9`_e8^VU~=}9gvDh8dKSCF5XSCU!;KYI;4z6W1v0NFtb-g=4Ss64Qo zl|pV}g)VgMgq|s$WBzcfgB@!Jn=aE$1-VN{0pXUMRM7D(a33IyvQjWm%*-vwFDgmQ zD}nn&Nk@UCQ{+sE*<yu%0YA;V_po{|9(?8kj^u-UtQ$1t5neqCnMJ|5+!JIms3!<p z<ENmIS?phsnukRL70yHf?aart5j0hU#Xj5%Tv3dHm<Mw|sDD~olA3~KUS^&nEVm#H zS0IUkN(_i8ppbx$TOjwhK|B1A`Fio0#c(s>eRP-;6ch?Ty@HU+0_4k4;bK^AQwK{! zH0r7=XhSbK1%(Xg@^EC!F&qO^1Yh<GDRV)70hM}4V=cH=sv-poWKs*&jbPg$$pXIS z6vBo39Xjry0xFCXOOi7*)FBF7K}%Vot9)=e3%tP@T;70|^ul5SR$d^*q=G^s=+YKf zPyvGEW`v*y=$r|p(GAd84RkeFZej&waT(|g5!53Q;0Gt<m!%e^<>Z&6D?!Apf&%2K zMITU+h2#VzQ6k-dw&V@l(H&Ub1-T6e)dTwa3PGvKi8;xopxxvOF8;nyXM$@_@XV4z zdTL2As4<?Jq6Z6MPzr&jb~M)@#Va%k!4DFFg#~m4F;W;nMUc}Ds4Iq&dTebKK$#cX z&;&UEnsOk?1(CcEc^2*#s7t^U)?p^_*@+;}frmFsDsxhi7ZQNlvFLRs@}duniW4CT zwi0SEqS`_vTeR~B5E3}*PeLZ+tRWE^6_9FXv}zKe2-)38JN`k3dE4Mv!-hPWsst{S zK;;<bG8OQYJ<{?Ruu|}pJ*elUQ>~8PLQ%IuDse#zWuPZ7!q&Tk)+8Y!T}=&E5Mf#k zopx0KU7%(gqXenouqi{?xC-%%E@a!P66kn7h(-m_(R|pBMug3tB7zf?T%oh0Xo8?n z17|ba7^pq4(hK8|PtaE6)Ep~tc!81>2tyYGf}}v_r+|V2TnS^*j7VFyF-VJ{K&F5& z)Fk9|4{|lyYB;dvy5QZb*q6c~&mn+}1!1Vs@F{q-AkYWT%OeY71QnKv2&lnG2LYlt z(uvu92`Nr+j1`0829{7`pwR<P)1Z-J#QZ->f(9=mfP@k#l@OVvLDTq<^&yBv4O*~) zHCdzDj+&-p;Hes26-ttZ`39P(L29e36+jM7ErKU&aJwIx2K2%4isWZVq`{Sd!vLC& z;fBLga!ia8LMte(!jm!F0FWpo1%vzzNyBK`kP|T4>JWtKC~F+Bx(b|lK|V%k0(lZ; z<R4iIni%0OMdd?z*d__gDBmE5b+@k>WRonU=c@;8&f{qK8=4K56%b~o@FCg}G)a(O z0BTtd$|Vp1$Zn(IL;<oj12|QH><oBH9Lkdg7#^bXbb%Q$OKI^Bp6Kf<fCu*nZo0q> zdLBMv)N^#Y0NgbM$4jvS<YZ(W=%^`J26M<YGfiWVO&6G08k<`hBtmcUK`P0pF=2q5 zu@J{y!aBE*(e8nqGN7C1A;UHh4<j-VVuT;EBM(01hAc5Grwz;~U-pV<?Ge}fquR7V z0W?*Y<QG7f{OiGla#GVu(8a(@iO~fidj=4*2B0CooWx2i1@OVV@KJhjOIr_oh$Upi zAE5(wK4W5DW^N*A!I2e2S!SMsfu13BmO(c&4{8>uT@S%TYJkl+KukrOUBG2|erXA^ z?fIp!2?vPPAQIhroLZm`aDdsBom!bzl$e`ZtN?Km@{LCZs)&HWcU~yst|E|AAQ;@2 zf}9KqHdq6+*%ut}AbI#HkOuI8ggQ(?!O(z6dqGDA!c7F33c?unqNsw~3%mFSG<FC! z18Tj)Xm~)nrm*n9l}<nj3_dM35D`W~LP1G-phN<~7zqVM6+EF}Bv4qupeK|O93Z65 zdYTclei?tmoqn^P&`QWRvm!IE80R1e`u$lby6|09g`yDJp2>?Tfvp3f@qJa$+8%SN zHW%z&D~0HI6bHi3LWu?M#>R3WP*G-jI%wS$(o7d<63|Kk_mnC0;C9e>D=1@vX9hs! za$ZacIddsc2kU_w5{N-xwAKU`322i7iwwM7fsj*BKyO?i<iI`vc}HJg0j-&VP^6%M zUT0&rF%YV;7zt}UAQWL52`ZG3+AZLg142Erq1Y=vgjxj!a3PN@fO6>`qLN2df?SXy z%OKkgFUpY>U@;w3m7^+wn~rjtG&J!*V*uGE3}1o*2%J=*iiz_kc@81go1lsahd0qq zJxBH$GMmT=wPMf?Q1Djb5=gd1pPNA)vPN|ic<39f8JgkXo4Yge%dyN3!R9%XqSc`q z)OFy;Jj7zt0Is3IbMLk>N|2j%FqEOY7;QEwv8V{-7(3`7I;syq6Bfp>jkiirM?ohn zlwiJrP0E4N2MEKbnoy@j;Mb&8SA%tcX6_&}8W?u!XBZQ3HOwi{ksuuNhalr&6O9O! z)z#HdPAxt+V9bbNojZeV;YIj?oOv=cV)j%Fmg=6^MNXjcmEm=FCC;`0#-V?Z!UARS z3vwL~$|m579NI=uP=I7!oEqTjkgo57++T@l6gYR`Gzn8ZG&7K(12Rd8MFSNUnPI<p z3tkLju@q0U33S*3+`|wCYy}Kx!yD4_7Z4XVJP3*z=*k*!#RuXmC=}!ugG*Wz7bqxz zui-F2iXR09&|r*}f&s)nkY<>jAU0@%)k*<8eFjqiX~LnNen|XcFVr*Fz?lxTXa~BJ z4ZQvaW)Wnk9r&a|kP<y;ody{L1Sf-v643c`>Y568kI(}x3{unp8v*hTeBBR-gZ(Bh zurom3hc-MQOk&PS19=Eq+Jm|lU`tg}bBbY&RV0%kJO1FFf?in!Rty!?OU}s5NhwOr zi#9;sGpL|YT%K8yoS~orIaUjv+8|34pt}@7Zca`tPE`OOU}l8~RFDMhG&NW%(E}v{ zP#i!?0_Xv0KB;LX3c3nV|3C%9K{vB1=qng0Xe+?n2{}&<E`#DpkabXZLX#w@A&+4f z=;SnXs~~IWFicA-N=?j06NUH`<O_8wdlk(hjF2k<ANhtF5+Ki@hYrLu;DE#KPmmOb zWw`wc?%Yt|S#<Y-V-LfAB4ZBSFlu`i(qE&%x9C9*_AMyHsh^6mhXqE+VvAYm5j_|w zI5{7A<7{|QeqOo)JlBKI@I~4o3(9cdz5|E>!m#`co`8d9J}mKyc3dH*PEhWG7iy>_ z2ZmnM8|<LYfmJNvvs{sCGcX^yIs=uW&>RISD4@qS7Q<=)cvyl<cBn#41!yG*3#`<l zqWmHab?5xjoD_w;{1OGwU4XD63%sRWAu~^*GQYG4vC&weBqOmzp|m))7*^_mhl%u{ z!3!%yLH2@+cBtKuDk&{LxwKdvv}9Vb4l1Enl9=R~my%k6QZz#)@tsSXsFRsjP+Fn` z*$J&vl3G!cSd^Nm136#_w8$A!QbPuqKyd}BEft|=>*b{8rI%!&SPSZag9mdIAPZyR z!H87LL1PMH7}P8jLqJgjJ~J3JbXE=7-3F<KtrXOeD`g#p4A4RpE6_FPr66yB_Fd%W zmlmgjSDb>*j0A-j=!oW=(jo<D;K3RfARpm6(h=q?(1E)Ur$DyIL&al3i`bz<P&x{b zXab*Iha6U5;drPHP#S{-Cp<`?;Q&jqkR{hHsl_El`N#(dpok-<V0a3F*@64GO%$hS zf@)d#>B3-FfP(~WrJ@-zyU8K(hGV57mZ1Xhv<WESQAY_7!l2cSSOy3{2MmFR2+$Va z!Nvz5>l-1HfhZ#c=<1P&2V&p@1SqQTt<{4J4S<&EK?eum4o4Xm0IfBII0ia009r{2 zIfoI?<uTwOfp*SOlwk}HAlnKa89){Qg&@+JN2oi%*(R?9d}tM9vIZ0jAdF@$vO=um z0?2luueU_u!v+Gdu0o`I*Di5W&1UA{Wl^9~6_j64H4UZX2+SboDu6rz?kYiY-Y`FF zDWE7ny(qP~c(C3?g5f?It~f*wiUC}8i0%|{76YZsp}g`CtEZ^F`jGN1y7ZgGBz9Dj z=rO>&{Bo3`BFOk3<d#OH;iBaH)S~26D+S2jQ9TG(4{|dklCq-I!qUtl(9THg17ta% z<BPD^M}-kNZ~+XeQb6@5to^0{K2RBpg^<xWOy!^@W(6SkBMqrRf`oQXgiIgO$5M!o z5$#LxHZ3BL9tSmIAa@`t6(BNZjFJM#P!NVrslXb5pa~+VI?!37m<N+9D5%2>0x8ff zE=^8OEiP8K0);sEd~%owIEf)yfvyvDvJ_|o4MHbOgpkh6ytI5I3&C7MdQuYe(o>6& zbU_6O>4PRNbt@<Xi~7XmlFYJHbt_n!0Qnh&p+O7U(+1*#FjUA2+`YGrQG#7InU`M< z+UTjOUW+!#hCW$UT@B8T3ib+cEeci&>gu)N<N>z=+N!2->WG;A@sQ>dj*bf=^?_RQ z&~yblTpZMnN3@<{i4W5IfGPu}E>QAAY9<q(@^ET`B{6J?4yPt?0z>EkbD^srK?N6j z!iJ_Sga)Vp9xc$sg_O#W9fOg;;F6F7mXSgdny^5Zxt4<lf2|Pd1m)UQq|O<hBn7nx znwqfoKZx0ehktqz>n<pB$eo9%-3-uxRy@XSiW-LIM&O1MDD{IHPpF!PQs2ZJvYiX$ z32@a2$y~#{ZxWQ4l9@j!_dp@JjCTDIBufUaCxYY%a8?4Pz#-fRLH7=odmrYMZ~Ywj zy-()QbySG08_*Fe$N)L0MjAaTEp^E4eKJllGfA{GF@PME2G0mo*!cuEYj7TwMi-Am zrX@!AJc0V^`dSKx=9KROg^qgA|ERPgP`g8+8fo=SQEE;is4Hi!0NrPx2T^0E0O@qu zDS#*X5c_gq6RTDViAlxzIi)43@EtX|iACv|c~%ODEer*TDWIdck%izZXc4NabTdJ7 zkX8!1h+Q&C`4zgwnN^v2=~fC!`9&$IMY>7(6;P{iIaLpIDHBmn1+O#GGc+wq&4ro? zUuXp9qp!Dy_6(qX3`0E=WX+Is;j9$Ugh3Odx`{cN>3LQP$>51axbd)!E~Uk(MY^B~ z$m9}G&m|8Lo(c*Iy1DsPx_DJ6=;js^Pyy<&;Wh&rx}az;Ew)n7Ge`DTQetv;dQpC9 zUW#r}YC&ou*ojak+$Tti5UB&=TXat&DJ{;dO0`ljHBbd%s97ix3%Mf_(h<~DKqN@C zSVl53IX?$<+@EqvN($6K1!&^2QZOv2P$<sN$xKmDPD)CGN~73^WCb|QTY=|%73vhw zEX*%0$;r%1MNZU^FhsG$%q%f2)e>qC$Qc#7#Tkhypkd6+yyDan1p}~?K+Y;kPfFA< z&;da`19MYN9Rmde1&e|T1+avnfsu}(xv7qkv9XSx8Eoqtip%vNfrR7%G$$j45hU0R zi&AqHKm@{ph?vgIO-xU<QYbCT(Eu&vvjX$=i_6lrD{^zJlM;(l%}jIxTr5qJ!pqZB za>FW<jdIG8vJ5hPgH6gkGo5mha{bDp+;d8!sthtyB7$;#Leet>s!aTxvnr}ma+A^Z zRCs1OnIwf*lqOdhWF~q986>;pm-!f{7^hU48v9n7mL=yVm-%Knmiszeg7jwwWL0D( zMtEf<xre4l8mC)&W`$;Yy8D?11bZ5KW;#^{1bZ5IW;*32hF25^1bb#h<woUtW?E<m zK=f<l4Me@9l004LN*9G{1z0vs%giYO?K4RNFKo(7EiTqDH&xZNR=_C%jUvcM1*BNj zOUW!wOv*`3L60ivI0;l0Xu%2i*m<->4^x#?lBWk(1K$(}b4X%NK}Mnmw4AjyGllsU zH4*0JBb78z#a0S>W~R^-0d+mN761i_0<<QG1`T@Jf=Y}0SfYyB<eba`D}|!e<PvBa z2W>ZimZi{xIdvh+Bv6XKT2PaVq_Zu}Dc_7dgeOSAcO;<9AVAYF<gN+OKoO`O0JUO3 z7gi`JBxj^1XQPkim*<Crwl8C!6@e`7L9qjr7_1a%H|GG$FLbpObeI|z3n6nc;K6WE zNFuEr2OZ;w8Njd{ip40}1sEhks$s5yO)L@Vc8E4u8o_dYD5Ro6S{nxuKweq|y2hlW zv<P&Vab~d|sPRysU=La61iK^zoL0eoZt&tF2-gat2EwtmwS{n@sT8sB2_F8C)EEpp z+7QV-NTRqM1yKZAhXuAD;zl(!h>b8uLKH#nZ3o3SEL0Q}!0M6g1oLs*1~m}0@D6Mp zl&=>LE=1jn@=FV_cn=hj&XD#Dd~YUP47X(<C2)^HZNjh_rU-sYD#CuW6i}3!2tGg- z?gT6cTY{F{L9U$#EmQ+9hJ<k8rh<mn6d_`;WsoRx5GlR*q>?;vaDW^PRj(HhP60{z z6<`_Y=rAZgKu60Kf$oY&3P+FwknjBl&k(`30)P@G5%=q$UY&zvI98{l#3(rJqBs#O z4fa853dnItp`!;@jg|}G!2-RV1{8A0W?&i)jboT;kTeW78etZ4q(a!38zR7sU8F<} z=A))FutUHb0Kn~IJ*X0dJ@C8<Ij|DRG>8DIad5xE3V9UIfnp0(jKEDtS_KL{Cl%d( z=&Ddq7{kh5QjJ85D%5a9G9R4f(F}(K4>T=<b;4pC%)#anSo#D-3V0nQ#ymGj287|q zxGEGU=NF(J<_a!HaQ5mE6QYpTB~sH99F1rPwjz3Pi2gmo2+&ch@J>FmFmg{HSsdQ7 zMB7P<(&tCkfUDz=Py-G$XqaGl3D)sJC`aCFgxyOhg8|4IK`Y9^-8^JL^kD&HIkd3> zWGVCk0%SRCqXfwESUT^>(vaS#E+`ow_25xdAUbzgy74$vB2ofcUmk~gNY4`9p+~5~ zj4(o7dxTyE1*E<!O8*{34S0kIrT-1?<RjEzx&b{OV08BpniUj~`~1k_kf2Ag7}oJe zRYtYmKf+i{FX0{sK<GjVP)L-4#sQ#%0XWowM*xQThycRtxC0i{5k?vtfc3aB#suId zpcGShdjAN^Atf53dyg>$fTR>{8~`Ds03VgWG8llY3|!hmhovAR0?4xP!W%p+fRKTE z4|Hh}XsH}1TyP8!AaoHfh_Mb8pc(+a$OCP>0HFfeVMLxu03P6gZN7)J`N4gP7$x{c z=StD)NhNs-pm8B}ZBW}8+%DIthV*@`Ae0WQ6=MZs=)f8wRxk!=Srq0`-;lNu=B9fa zNc9Y|&^AU1RJ!NKC@CbCmgIvvW;v-PskSjn`Dtlr%cnqXWAH8ruy#-a1YzhZEX1M2 zN{TR7VbN~|Z3o%LC_#LOO%1qJV;iFcrm-mi^`mV;_lxJIVv~m15As}UVhU)$3!5@n zaN5Qw!I&7z^wHOhfj1_=ZaoC~AB4eSV51L?aa0ZPvn7gCkz*Yk=IT127@$*>gWU!{ zA|k&aH4iggC@4^nGC&C+HOC5j+E7p+CgK$otiVx@C+Zaxtnf#^f&x5K;E#R<1$chK zmjDzLFp>c1ybREJBhdXUO5nMnl%o8Cl>BnoRY5439Fo%QL3v#lDW6-ZtLs!JrGuBY zfm4C4tu4Ic49d}<WLA)vhnk{5xe#(&J!J0=G#{y{!4ng*F)>Q;I0rcsbakyhXa^KF zGm&puN0fYE`>-Z$$i5ncN^(xrFel~!El76=$FfLB!iI!JOpFq8K?_<KiLxA$YK1Mx zWGsi!LknEcRxHTiJUH;cSpvKc+ZMFb37q#q473tA22$ptZ2LmVRM4SqkeOw=pgsIx z;}E4SnodNHi-8xm=t`j3Ee2NBqRT__S`4(PMVCdCvoSGBFb>FP2+yPBvKXX-7R4-m zq!pB?1uWFh@Uj)g2Q7vL)kR3fDtN&wIB+R0SV@XrNCJcw2B1g;m93~r0IgsJg%)VO z928VUB?4T@0J&Jj8OexJ6<0LF3soEujZ&t991p8hQ6dqPE|H2<oRJMKQK9h&(gP{X z5a9<ZrxehOQ&5Z`XJs;rR8X|Qb^u~H0bYhc498WXf}DctT2MT~%W4#3k&9Hg1V&<p z6r|Wz1e;TS;1Ko|!H^pQP#5>&ToF86b}L$r#1+B8sX3|1C4+KFFtXFgTN4bsUrDzp zwY(^^B(+E{tJpp>#Wuc7*C5R}DaqWx9I|!~VHFvR_h7cDfmajR8Yt@NBg~6Y8n~6l z$gUXdOO0WHIG|Al4kT(XU?%2B0{pu+2EhVm(E6Xen3B;2%q6Io=7RSC4cW^Za20}T z;JKa@ThMY0G73a+px`JC2jevk0}u?Oi<|Yew6ydUK#Lo|i<>DwTVtRWH$#RL^gvet z=z_L&6y@jWq4iIqks2Ja@O5*rnK{tNDs=H1Xl(&_<+3h#wV#!Okx2pC;$u>+vjX4D z3bz#G!qmJHD+P50b%dqR6X>w4t%kb8&=~Fx=wXSb2C8uVum#w<pjD*?Nb9g6(^R_P ziB6M(3Wb!!;*3=EHL?h4$U51Wn3x#k1+3sj*id(X41uTupNa#S^oF|wY8_<y6rWP) zB165TV%_4@#G>Skr2Gn$NW!+l5WZv`Hhux~HpnImc=%v5TR|^5C%-tApcRODVrX{| z9CC;i>(Ed@2*9Vajo^WRK2Hoa2|7h=j7U%l3a}K2A_!Vz483mLN&!U%+jKG5bgW(m zk87d$7&6ldTTEJ<np~7x0ufWtR)C~y6!nNmK%NE#+Xz}y3QiZWsaeSErvk=R<sgMr zn*#+~4f8C-{Wu&9Nr~V&e6S`31>`v<1<*okq~)lvcrb(~BE)(JP@aOvE$HMh(B;Th z3Xm&^;S$KpAfOf^rqMA{6*Mg%tb_Uq5(joz6RQFwwd+DMmuW$THB^&cUVcetTBTlo zX$e|j;N9*4)s>ltq6wBbAhLETnPn)_h!jECca~<D1(bn;5t3kL9z2~JnIQ!|JTQ$5 zDilCIg=Kiek^n0O<up?egvS6Z#z93Oq=ZsVH3mT>6+|XPq?OZn7b=4z8XEj~f(l%Q zAbSH|Xu!6;pv5FwoFD=nF)xc;K9`i_=UO3!6U;Qwyd`+Ol5SRMaY<%cW@?H8dd+AD znr%RdV#pE=aB&G5*a!PjK>?a#LHBEGfbY%GRWP(Ds6Z?+hnISpdEf#pDJMTU8y@sH z^G$h1W=X1UaX}*J@Rq#%@}k57xF&FMhtQdtlapCcoLLN)hh_-K8Jt!Mx`>jMxDWuH z(Tn1Bg=&~TL0+_0AY&=|P&%szG$WOt2EH={>q!F^&_;4zObKYIXFNo`F=!kTJR6^1 z5Cl0+$0ao_u{5Vd1F8ag(I9B%6|9fgGl9U0{qj>%eKLznK(=6Um617`qhRX6-oW83 zm>Psu__Ee`>{{}ZvNRQ{VJCOyCuM<FrsgMQAsw)wV6OlYw^FE9fG@ZQ3Dknp4brR| zY+wa-N)JBqYz5f?hM0W@k6ou0V^06tKxzl*Ocit{4QT=qxdDtZK(7Rf4G;#;g@eZR zk>^Xs4m#EKb-#Q}++1-2No?I;rsh#4hJvmtYDwlPYO88;10EJlHD$S5t)OD#^e zjZp$kmnqmn&+|q%4>jaKZbzAuPy&^6&}MZE=sJarlH45I7^R&2M9>~Y&>HmAiV{5- z*Gd6oSwK!=a%x6?PD*MK$kUKWNKL^z0SlT`hD<^zCFi6j7CDucl;r2BsexzdilHZ) zB1H(e42@BOF8lypRSwbx3Jg27lFZ!HVr$r32O_zEeWwqJX>@<vKwJqvA{LZv6v}jS z^HWkmeg!)L?0JyqpaB}A1U(p1sk$08Q&?Mz<Tyy{2{aF$TbfgnS&#!-R03mygkeWz zfv4#qr)EKfAuBe(!Vo4%7`8$KWv(9G0}2W@`30c6?qJJqV0M69o|sb#asoI8Agb_b zPs=X?ErNlVmYJsj(NPR?3OFp_lF?9^Fp&ANH8l`!jFMe-HB=K!g%4;!6I=!O?r?}= zba&Y3Lm~o0yfg<sn-A}Rf+`uzysV&L11lF`VF9rVk&Mty2d9jjOqlZI#Jpf|&j~3` zk$Y3v>;xMD?iRob5l|HyqXap#8Il`72Q^hg`eY%g6(uz_ASHSb0h9!UT-*@5JPG6g z=wvCxL{NzY!thcFrUI6*A<Dp!houaGs3yK7fvCr_Vgw`sDO6xn_ev->!{Zfuo`%H) z{(KF#L_a5!K+M82g_@coQZWO{7l{fE;Dd@m3t99Eiol!a5XB0pib~2UEdm!X)z!$6 z3M%5j@tBui0-2OZO#vtHL^~V24#JVm6l$RB44o<!P{YY8Glg*01I0K9qr|!m4&OoY zng%3$!15|MLB#4n1T}G`b=XRvGF@nu08tM!1U18h0vN~I8&Jf-%mP=>wlPZSIh6$& z;JI)(OE*6ovbjz-H?b%iRHi|ffhc7b!$KXaKR_P9UKK!X)=$KmX0S#bmSsNha7JCc zfm-W8FEoNyaG+|$58ST=B`Za6viHw}_yVcKfpilUGV@}T6u<*Q;JZC+W0cYoQ&K^q zcGcB6nYo!Ipt1yXO%T@WfJ$@Fy$5X`Wu`%^GK5nIxFo-{1gBF#hGKIM^vEyd;J^^V z5~|P?Y*U<Elvz*$_5r8`3#!>cmwnkPR6}-lK*vQfuf9XS?gm_Op>7()yDbxvnu}3& zR2HOKDL57tC04>W<sfZXM6`RMZC2EsIk3Gq3em{-dVm+#f>I)Auo$w36xL9{VmIx! zI3ksXbhbCYI2D%oLG68geFe~>RfY2WqU>UY@{H6x1z3Q95(OxzVEZp=7aFh@7hQuQ zClPcm2PwNu6U#Ew6HD@o^gvom6Vp>+A%sXw-~s}RH^@EY6`HiI6bucFOfanjHHER* zM&wRec&>uxK5!*Ml5y(b6=~|24uhHquG>g65nOU$F%dF6k75=)a6og5m~H^y-T`R| zqG$v4{qbF`IS@OcaoGv!tYC3I6*41sJ99Ikjd3iNQk;t6H(()h45ZBkEs7j-a`MZe z&9Kb8bOjCcvI&~56cUS4L3gs0Wu~O2fLB`3r=Ws37SsU15;~;jy3(Q?@=bvxcUUlj zk2q0)*N7l4a%~8`wFRlHgN`6rDS#3Iyc|$~20b*}qRVA~4t@b2aEYuVBflKdq=DXH zh9p;(n3I_Tu>;~>1qDbu0=AtQA`03HQVQOp4R;}=rJS0AwEY$)gzPcM{a)aUcA)!I z!8=qT#)6Ure19%9;Xp?=z&n-=Kx4vrkVXJVEi{zW)xl<fL{PTtf*M3=pi_iAOHy+| zH?yELEWjIQ!DUx5X!_PQF*!p69v>Q+C8@b+wt-w$7p)FC)>~aiK^=N>U#uQ@>6d?+ z2B@6MPg4Nt1-n<hG%qDJEi*4QMP0#O0hwo|0KUfsqQMx}I@5$$i+=qYB+MY;fq6>} z$lD;Nfx}b}qN-T0I6pTP$vgRIet~JqSIEpOE=kNwPR&nK@K4H0O)dcqEk>gl22NbD zU>||KW~Go1=U_2c0XnpyV5^Xi6fqzxK^Piopc()}7T(wcDO6CX#S94r1w@SM6_gfd z!1^>OE(X_&;45z+;Q<+Yg%}DVQS3qD)FLZ{Iuyyito+P84N%M@l)>^dXo@efxHz>K zDgA?cYpKPk$scNJG-v=QH4l3H1gOKK1G;J%d`u5i5Z1<0sD)nG12zxJ&MfxH1f?n1 zP>;F-R99x6C+LnOkQ{ihMHey&lT?xiQUcy)0v1t6G_nzXfNDna15^a7AHX>Xb`n55 z*fw~KBAHq2lZk9#u}>xursXA;B_)DKM^S764QPSK6F}ST;Z~O<CKacaV6huMPKD$E zxEO9%z-v^{@GZzDNGgI2k15zej|oAjg9bjNw!z{Ma4Qp13&G16xEOASfQL=M>hy|I z!L1_=b!eZqwia~X707X5d2A^Xl&X-1nvuc)O$N6Epyeav-YjsYHvk1c<g^O-SUoJ5 zz%GQe-$1IsF$eYn^2iUQcEJ)xAeBgN1aYxC3|w-8r*-tey?)S9g86yHnvlyZK`ni3 zfdO|ck`-_<toDGN4{5|Amy+P_E!@Z8xe8bv1x*DIJy?7Q2~8viKm>5x4wlDhIYbs} zDTJeF3%SJ%G;RWRKSCH@7b(~)K&}P@%f%{KA$Pc;g&{2amM4}ZXCSqCpcw(l3s4b_ zcqjv<LIBmk;DQ-6K?ZUUI8YFkJxD$|19V{k=$sO8Lj|k?R7OM2y?_~u83<}>3NT4% z_@h{@fRN2iEI_IXQ*+SNK`c_#NX<dE1X3AdtAId`2F<m>$5<e)g^>A4S&+)p2v!wC z>mpl))Ep$g;ZhB&Yq6<DgcR1w6I!$6CuO181C3LNmGDs(H0PjHeMmY$O$(^SXyFEm zPnah`6Q<AvfMhw`7+7*r08f7*r5;d0q*0cL8YLhr(Z!&LuYk{iDNfD7I0XjeIk1DE zDnQG+;F$nP42woAt^_yq;RQA5NJ139gDom8NJ%V7h2KgCYaoLh0?t@Sz6A3zya`H2 z;LHJ<)CL&|4mm{T014@-q~>OpXsAPCKwU=x6fR(OAba3}0#*ZSZo}#Y7#~p@LQ*=| zT(Fan(>tVCQ&R)k0L@Pdc93&@AQcSc#1@FPP>Vsa2kA+G+VaRpAc2&Dq7gbCsRuOz zJct&OnVXtlTB3m}hvX>*1r#X-TLoe+8OGFwUY>v)1qpCH6qjSFtJP63G&KON(Sr9j z;Hd=acko_yaBf9P0#G?{FA5YSpz0aS!IM%z{VjM>11kol6di^9oD`Hq2MW%z#2j!X zj4lVu)JTDd?%sGvtpv{#P(J7cr%d#O3`v8qOpAGH6KJ9bDS3mqsC5`PiGjixHmweK z7|c*mdpR|+2+0(1+CVi1<Yll?@TPE04J1jzHk6`-5D}pON%qj@8-#<@0fOWKdxdCF zr3mUv!<`L{SlEgJxHy`3AX9PZo`Q&?dJXI?NOKXKh!kuUP`a^Td3@y-lFgta6~Tre zTMQROwHF?wurXs$f`Hxwjy*ikt3a^JAWBif5p;MSD9qq3Kd2g8TLqM+2PkZj+aK_- zMCrSO+zDxAB0ChxZuDqFO9@CSkzENZ*`P-Qf}IGug<L~Z0j*t%;To`s;BrjCM!^u9 zbr4Bg1w-6k0viIh715c1q-d~aY^H)$BNZm4sd~jZnaQc3W-!<|h)!&FBGL$A4iG7g zAOtnaP;7>_B*3PFtuKZTag>41L<XIh4J{ZERzRv7B;z3h8f7{Pi8&=G=7S;^VK_!D zgrXKwXVoE;BRK_4AvBYMU96{4l$x7gma0*PT>U91Ku@@X4_kri1QdPXF$Hu@kOC2+ z7VdbI$w2H*!6+|4Mj(~U*j$6~se-M7VqLVlx(;N_50Q-!BTi+S3ib+R3Ra*XMoIxt zA7QZ`ZaE_2AgYie4kCbBZh&0{Ezu$Q62yU9i7*Y)EJ893B7kZdyy;^CP1s<A5TOhT zV~8!KML8HJAVPfy9T5eYfZFr`<qYUmeCeqrUcvr;(7qwaFujtD)I6l_0BGbDE%HFF zgEnRrY>_)hpx6Vc$1+}+UyzJu3MAp?7bHXa117MhGPtCURRHzW5aptpngXUuXwLyf zr6zQ6tr#}=m5i3YQMuse4%}+ch#Yv)65@POke9%r4fQazfW+_%)F5!)0yXwQ>A?il zcqmQ9$iJWtCa9DL)dt{*1z7^Z@Wcli+S5zSDNn2{Mv4kFOQBXGq8YQD233NiEr!&k zL8MP`3oEfC6)A<ngizBcv=D?OL)fwyP`|&ZG!-`31_=)IstBYA+VU$+g$AgCoq_?X zE>N_hgb*}zU`~aed5Yvts0gw%LD8TW4=HKUGXf}D!SWDSg6d~Pf~%=ffcOm3EJO)< zWKH0r2Ofz~Cqj}oL_ayzGl~TWj$Uy_W?BhSa~f_PSPj-#hI<l}w;?qttiXZ08kC<Q z-UI~^C}yA|hj10;8JRh$3K~#FYHAAbb6`OW&2XIot6-}D(V>TK9^By|=Rwqf+F1~m zUOYZS^^!9(b5e>@^B@@<<a6XK4dUxT+wO4t;r@Wy3rj+vRx<L%>|j1}@&SbmI1iaZ zLk4UTtQ-cHqp;=6Mu<rYup6LlQ_%SVntJ(pPN214@NSGoDoTQaSOM;IVRi^$zJoa$ z<@R`_)Q=*L><Lg9gPjBo7EMSpfbtOG32PC6)WR%PfXu@X=gG7*urFbH!GR5#9Rr<{ zihNHfC<H+mBo5vWs{q+k3tp!Km4Ga>1yv=vxONVLTPaZGi2YiS9fQaVhM-$kP`3>t z6o4HHHHHXVVS5G<1}G>%S2#mA4kF87+lqrM58bo|*+Pgc0oj-W+DC{i3fWcxx|F4$ z0<=*Io*==?$ROKn5L*UeI|`9aKvx6VjsxCQh(#IHd7w>v5QX3&Wk^QFYByvD6hZaK zVUDuV5HgGcjSb|(2@x9%k(~((50Hi6U4{rr+*UxgaN)EGu_Fv&7<6AJ+IhLq&_NT0 z?;tWl4WX3G;({E|LH^L~H^`<#x9~uA6e3H&cE4fDfOqoXmIloapkH!>Fc^2>faj?o z8xO$~-_WSggRDu1NWga_qJ<&yPDF%Vpk0Q9wj-jdCUPqn;agb{#-ex_;ukc>Lox<< zS0X|iXdDJ{QwAu<DL{w4py7fjcfcD4k#)k-CS;Q$vJ7J16l|v=vMjW?!f*+pq6C_T z(A<ISaY*R~-NL9)jcwN=!XePTbD*t@#2jM{S#7G9nTL{UAfllCcW9waq-VhU6cKJh z?EHjmRz#7(*s+K#3lCKIwnb!Fta}$x6kwiZ4BEb!YK)r2kxy>Ld!Z0$7bCLy*taqw zR3OJ9G-9v>Dx}T;ZPrBSR8WAIN05ORXu`!}qF!bmS}dXLX+$;?wyzJoa}pteVkl_q z4|pz}&=yCuU5yCi@NI2GRs}CvQTI0@E5V=Tu<mq3)($RB5oRE^J0dHBWO!Xz*g*C? zA{3AiIN*7Fj17+nqmYi#%|kmYf|$Fq@t>#@qf}a)ssLKOlUx!5K3S~<lxAQ{rQ_pM zi+%G`N^?>{jbhl)0!Rh8xePi<3bdva)C<P4N6-X%SPq7I&=e?+4S(@4Ga*e&xYpvz z+@$;*92OaxTVhp?&mM?@Xxbo)kU)N|EC4M7iifCzH~7Ib4lzow#(j(us4D~21a~>Q zYKR#zN(%OfMQ$3X8ylfUfaWU|Y88-L`e^DvbFH9jQb=$eXtQK;eqM1&QE75Xei7IQ z7~TSnxg=$Q2V&6W^a_gdOY%VuRIpcwQG$EM3cPhGKMl0`(i*xl4isCkuu;Gf!KfaG zdI;o5q_jrFj!sw#g)XBdG0LDDWHm73OcNYHNdCl(G>|W0^D9V!0M!T|R{%$Nj1n^6 zN&#juC=|fe3AWfqu>cxEpa{rMQ$UX$sHLz#ha^Z)Xwo{$p%x?i4wO8Q`Ph65@-uoV zM)_^-x!@v751J+vY!#{%Vw9jMBSy(e0qfb076zK2vJqCmL2l`SBxE!fT2OxVGIke0 zZ$ri^X$ft6Vwc3L6T0skBUG>%Wo)de7Yr_2u|$mp<u|QjT<E5+ui)zJ>lh5)tfOG2 z04Y$46^b)5b3q9oRI#Mz<R>NOfQCuI*cNL98XG~^PU|RSBo>1eLJ92ZO(AD_Dk$hE zxVQ#82YCjB_y+}pv|v|nVhA^11(LErYC#ygdSit8qEyIQSCC=_1ss)@sR`VCU)K;v zs9F$(-F!m}BTYST*GNzxfjps-mYA7?@Hci%CWt^P&PXguO#zt?#@N-HS;8F!T4<0D zSr#6Wn2y5}=8&U8LGCHdL>P|K)8+<n^UJdlj>oMY5lH3P#jX`4V7G$^?C!TfL_&FX zu?u*`F-SG8NHDZOcpy8q(mxHN7(`;Xz|aEWqSU<7T<_FMm^W}~K%~3OV#u^Q$atJy zHngyShf!i4WbGAR4aNxdCHbDn8nC;_43Q>E@&k%My8<)IQbAT=S8sywF=W`?CAByi zq#Q?@FhO`Y9-;xP7^jC#5$;d-5AZ{ZWbE#-FoTDWio1V+3(R!fag0dRDlP#C<+wB$ zn<Fg9M#L{p511hmbvlZB6l@j1F4RkdW!e-J>p}7^0SH-;_mP}us{j&kttdgLP=S=y zFh#ZskfIV=gu`r60ZsJ5)PQ^mRRt1;sfh<Q`t#B=(<;FVZ51Gz)YKphJ-9SXLqL#! zh<`|AfGb!%XpsiIWeDBzq@&>B>Ehz*2T=eHuJY_+4fS})$cH*SR73pZ1A;t#JwrUh zK&II$fR!O7MugJLV%NOVTqF~#Ye6m2g4CjtN>8v{Y7uCqILwuh@Ciyy&nzw}ssyc< z0vCH4>X3Ryw+JeOu)#4W2cij*k8Kqo1tm;JF+!z(0J1_Pv-1mdA;u#s2JavU05zUL zuD6A5DTsy#V=T<cp~0^4evZ(v0L2!xtp|&1TU!NnSOX6p(t*hN9Ha>v#ZYljWe&Q^ z%q2fhy+i@r$4f0KNi8Z?$jnm+EKz_|zd8yTB_##LR{HwsnI##eNqWiox%yQ(`I$xe z$=UkJ`9-O^S;hL9#l@wm#rlTk#vm7i>gQsxS)e(2sCA%)E{ae#k`HkR>!oGpr8tA; zcEHXAnX0c3I&&lkG&ZA<mR|%~@ulFHmr|6UnSyX+a(+sxUV46hdQK|Xr3LzB7BJVP zq?ROR=77#LHnT7XnFw_!B*wrcmMu!X4@&6Z8WcY3s-X#<WPmsAp@o-5N`OXnt&W0v zqPh-b$OIIh>8T}%ZkmQB{D_*A0Pxytm~!xZqm_brt)^Zg^gJ5Sgs-MvqJpBWf;rg# zwV;Iyun5-3EYVTOPOa2YaDh1o<P&gKgZctg#%MsIADq0v>LDFj&}^gzT&-qGD(I3L zXvzbtjm}Q3gza`n2|%_C>=ab}pw4Y(3Ak5?WSwS80EX>4p#5wm`5*^E90Karqy&J? zghdAENGZ^iS7}}{=;#rRlEidm9~M{UD%dI@GGlZ}VtOp7hJjQe8qnN;l)4}`DS%p# zdhywy9$;cR*hY8^7FXti1t2q1Fo$FoLlT98tpZZkLv*X5HtE4eA{0Ow5R$(^dzX-6 z3g&+3{5Uk<W|ko9fH(lDPp^?#f~GIC1bN*6)Ov_MFbQ+G3ZzvTP?QfY{*VF_bn;PV zUMfrmIbNY@Ix|fJ>@HY21WpZ_XeMgFOE_?v0;NH)0~8cs4H1yzp+ecIpyCy&(AEGa zThMxJSj@n6xxhp+(=;*?i!~6@47NxU79imCr|6;wYFR<bb%YE=4x}5DMIbeeCMYo? zxH<}u!~#l(8iqOw)wP;1i$Qrdvm_d#Ef$;&Kq&?`qy>`3T!932Ey4m#NR~h`MibLm z^wk+INa@%`N1+<wJu74v8|Z)v!Qxa+<kcDq(8N`oS^`P7V9$Y^1P*R^$kxIXV#(H! z^baaWP$N7u6|@x)mY`7+QD$l}I2i@NVgMeQnI*751(^tLAlWK_yaZ|sYXpFT71j*Z z2+)L9`U(m<3Ynl#wpD=dqt#IW4d{UkfUXPyC3KJ)aH4=FGw^x@jU3SBW*Es88VU-w zpc1n<I#XLaR!1QK9Jw$jLPIYTvLy;BARs9PIS)ZZP(2OR9snNhfDdjc*ek#)hs+Yt za!HI})j*QhQ3!yz2FZ5NkrU`m7-Y9#lLzH5SY&`g-c`X?0n$9uOHRzmfz~_tvL(bB z;EV*C`3HLnsbmKwZczS0&z&G~&}n37#e=3MG<1-YJ5<OOT=jzt16c%)PffTGhWRx$ zpe{Vr1CT5V&S@aMD0xl6UcnW#bO@GhkwP>*wZy+X4^{$#G70E35YT`pV$>Cv8gQIv zr&hv3H?suPqJnp(NGtTPmb9QC1ce5M*Fg(xKoY1WFDz)Gc>omKpfUtp^FtFoQe3*= zH62{wf;1roELxGJsfk?Vf-*2HfZ<iC3)m?*!`m-07qu)w4QjA7C>Wu&5y(TJ;~$Da z;SB2JXrKf(QkhYdT3ng~I)pG9+FphiBp|IwMM-vQCD@4y3Xl>5Y&^7F0T&)ntHG%s zoSM<%0<@hN<O^^y0#1IQtfXiQ>(r>Jfl3)rvkf#{qX}^sWMvX4=|C-q7sC*Fuqe(@ zgB0i}WiV>EK^35doM&*ne*nn)m^C`01O@vaqzD|m5H0o!@MH$cMetHOvjn-AhPWKO z+!J9Oxa<ZQM{baV5;?&T*MPYbq#CJYf)*f<F<MaO03`}Y*dxqDDfe;51ISPM`U-}Y zdM0{?dWH&+FxH4pNrfCBl$oCw3r>KUX&Q=%1|qC%fHu#N3u~weFcshw1}eI+wCXfV zGK%uc6+$WtQeBIR@{2UoA(|C3ixu+nOB518%Zp%hHHzx6Ob*%hUIHG5E6q&NNGwV( z%}vcKL0UO)pkS{67mhXnEjoqQSE$CQ6sLkR6s+0@ZLuj$MK~Vee9$sUq)5;NX@pcY z@MHwug;ko0umG$Z6nmfmfDH(Ma}!JuR-o%BfO-I$AayVySeqZYLIJf0P}@Er9bnDq z%{_2u3#r8i$#)<FGSf7W$9&b)K-;KFQj0WEO-Ax8)Pm~d{JgZx^iuE`10?zBfb?1^ zfC2-lod&J<K%E?L&jy_F5hq5#Muf3+V{{bMOQ7Sd>WE7r6kuZTUMajN2KiqvJ{x8O zB<w+{S^+lN1R7UDEl3dcAyk`+OMo6|u+vrnwe12cM6t~kSeR?-r70kdN@3aqF6g0F zU^BuHVg^Vfwk8f<on{c*RZx8f$v==)+>k)PjBG`0PBAq`>UO~62PFxpV{@arj)Dp{ zaUBKZt`B?xfC6Z63p|F0RAgv?N@qltLry%Pp)jy4BwnF=Z{Ws3ry?|<w4S?ywgQYD zj>L9T&{9Auy>t|+ApvEj04>0vX%`e^Y57GOpc)y{#|2eK8X#c>1z0g@q-Uf9DKL%n zjNvR3ILi#qvVgNJ;VeS~1k(_~L>Os^Fw+ovPLz5^VzDRmI1Zi6V(0w4<iwKT0??{m z&}g3ytZ%N93)+>f13eKy2eOMyr??<BIWx6br??;|vqT4}i>d?5RUwJ#I;DA_m8c-& ziowHbntEXM8tOXgnxM{#t%89yXmBAZKL@Ft&9qj~1jP|Fupq4kaJmJB8D>zbfciHY z<=Mr0#U=Sgsf102Oj>AQHy;|+@aPZ57v<2p1u<-eh)-Cx2U>Fr?pJ^uub`lwmS3cf zG_D0|*udLO&{PU4$02D6Hp&XFofWh}+xEZ}C#b|#P_T#AtT0vJ>KS4UNP!hLX;8TU zF&peCaIhkF6C<2&3e~Kaom%OZUjzy)sLc=ogcm?<HjoMwpMaX^&_N)uJ+O`pcm_xV z;sBVl!JdQVMbLH|)cPCLM$}eNN7Ubtctcd(u(jN!#i_yIVN-<LK*NUcp;S=eVGX_p z26U(oNOfjzK@QU13>4Ln8d3pVEFk4%(vk<HtV2&8hI&SNM$j=sJ!qfUUm;pY0ou39 zOf81Aj})L|7gh=?5M|)ifUr^nWQ+;S7}S9)4SyYl038L#l9Hm#q|%bqVrbl<s<J|_ znJ|nu#%erh-~wa;WRxruyXl#r(`is^K2U)HNuH2&2J(Oz%m&mt2T_}Xy#jSUE;UvP zXjK+MJBF9cv0DhPRyF*wS_GEEumdcLVY~%);~^=&7>5N=Sqv+n;-D}?N`m_O3PvV+ z#(G8ypxGwGG!mql2}(!M!nz2=E(TpV5DQ69hzTgjbUV&M4!Kzl8dQMHgkz55gX*+k zq#^~Di}m#te1jESQ_@pGt?jbZqLN~0IS<<LUz%F1P?8UJy+UHKLNz##fm3yOYLa(m z2@!fgdznDN0@f8~p#X057c1oFDJ11rq^3YED~2e67ORN)IF0DwSWQqrQ#~4FP^>!0 zk4VzhiB<~1wGb86wdk^tOsx^D30D9vMQb%RbrjS=QG&?t@F_k-kpx}}2%Z&0>T`nI z^w7R0yiWmg6l^3Nq!wC+T7w!5o~{<q(a2(`fgr!bwL<(2>C+?@rGpwA(U~Ri{=EWX zsL&9m6eI>qH#!O`Fecb*pxOk|=ZE)yko)~08z5apxHM9w4bluVO~Dq_gDQ?Tgw2qE zJq{h!M<_y`j?;uYMZs19rUdS)%rp&zJZPI4bOC?{OeLr*3qC2R2)S_x9@vF+X5f`C z*eP(sG{Lf<qzy9((k}yb4Zsx^_I{ZnJi@^GLAIBa7Ue-wJ>1oZZWAczq76Z_FfeQ2 ziZD{GUSdH(PNfDo6YGG(5tiM+83?t60C&EP^-N&ZIC#nm6wuKQ4oJ<lSdEO#yb^G! z2W_<?P5(qA&mw~lIK$S;H#XD6+UG*ntOIKkBbg4_&*`5A@dTts02OQSmItbn;p=3; zsTg(X49tEV1z3X&Zm5xgo{^rRo~43sVo3(r?|2OYsnStU2T`DtO^RS0Z&;aY3@)_@ zn**II29*YgLIKnO0XqzR^_!7`mVOLW5I$%CSzM;004b`AK`ZIXQ<Dl3le6QY8${#d zAsgSIx0Zkg%|MwAG!=qnt+2U)riOZMYDpqux;?WPQkLP+VT@SS0bl=xeZdIQ%CF+o z5>V|68py($T0lKqNSULf0AJ4p>Ii@YLG?){Xc1CsUU6m;cuh3Kg?cEWH8t=NXL#ow znq5F)49-H3JO(n*Ey&e13N)0DwUcUMq={LtK@CH;6gnddJB;47q6Fl|{Jdff_#7BC z2ZHP@PA&0GElET!a}bk~&>#YjiGw0dN1+;AS|A;Lm1(7*?ys((t)Q(9nx6+9!wg>S zpy25O3MWuBms=@R*Mb-jtgo+7o|>4gker_b+9sKqpI5Bl=>n|*YoSg<1WH<Bafvs0 zei5GFKqJ_YW+trPtgjEPWE2YEi<rtYOEMG+ic-@uD<Ccb4dTHP5>hn<Tel0Y)fAwM zLqM~;nI#HV3W(DyAv3upMVWc&AX)Wb@X3Jz>Y57L3eY(vaLEiFPzE^>6k<r@3i|pA z$%&vP7@#pXQ1S-tnFlp5O7oHvOVcw-6w-?Ft5WkotEf|x!E5h90S0k3G!~O`QjuM* z?uIzyQ(qrEYM7UroLXF*SX2ozIWZ+g0cH~<3?MFq1|Br=sJo(=0@jpSTnsw57F{zm zwSe3JPP^b%4b+%?)Od%Fx@ML{gF+%!FB7Z<5wq#3CE=iiV2j8jpkRYK4qDxTybtPT zf@DC(&^AEfnGzK8<cBDvO9l&ZeSHOT!!#qYI0Ij9fu(wQ7?&f3G0fi7l0<M)%g<9t zD@skRO4UtE%+1WH1SO4({FGt^(3D|jUOLFVpdukZ&kd{$dzp}#rU5Od)YL#GB<lIO zx`L;jPzoW?WGHMx3lVpi=?9v4pcx2}I6x^+!BzoMw;(U)2Dwr}!P_;`3KT~Q3ZO&* z?c9JI0ucpA08|uOfLJLgKv__6X!5gCP=K<a;xO-9DZp4DE5R;<)_kCTJm`W}3uCHO zhma~5;v4WvIjq$YVx=Z%F&11k&gu)XnAOMADabJ>5~c-5#fVT(>grn5zB;Zd8dRNv z6DLNL!pn8=SSK{!gAyXNp{HQ00P?aPq>~BiY-k|!Z53c1v<KBQR;cSBLCUM4l?u4< z16iV%oRL`MSfXJ7=@`YUgJw+?!6UJtMR8DjH8oLvhG@Kj%s|wIknqw=1M7z^*ua`z zOsJDyQb83WXo({Bs6<+W3ZF{F5i4f6_6NY@1X8N&D5U1V>RM3D_(KwttpeNv(C(zv zWJm)YBnj?%K-`!PaW8yG0n~wm9i0jqlY@<@g0dMzEBNGSP|C(L!w5COP64b~Gc!%Y zA2h58UjUMql3Jmy9Sb?2IW-5`Ck5FDPK8+Ghbq_7C+6gUm%u<4EkSE@kiEq^3YmGy zIi)G7urUU3qX!h8&>+GUODKzq@$6GDL|PAB;0an!3kpPR#R+Kg1so2zb0eY|2y$T& zWbz#pKenI(6THAD6FI)qVXKlro%nSBfMC5eunpi`hmeFNBS@bgGDHg20oM*{UBJ=; zD6K#iwt#$6;OPom{|s`74rCb-xXgs76p#+Y0sz<&0H{64g8|@?U(kwTNPihrNr6Ui zZDB()kdXnBC->3o2x2brhWC!3T`2I>8ni!wI+O@01Hn^V=oS%k%_UZga4e$+MIO2x zl<zXt*H<tHk1BgYHbB7Vufbh=P)bYA2Td$uOSEPt;7(}?Mw$h0rO<<psDMg*Sn;I* z6$9A<OL)*0M{<4|SQOl>2O9us1!FB3DBqU`@);~kg3>NH(PHx?C}%=aKk}S5SPS;z z9%+vSyfg+Y$5omjS`tX(D<B;>%t!3`fOoDzszDhNn+K4(*q*Ky@h<+p@h+}zo_?T? zEjINgD5V?H77hj20#!ZKJOJvoLl$&_k|?;Ngq&}%+F=M<SPfb;g|zw>RE%L=Ck7eG zhc-m~L2IDk%VYc@DNsQHvbGVvWkw?ab<Q_4O#{{QnxHKRP$S{f_aFyBECc%lbPiuK zXcAK+RkK<_UrQl1x1gj_K}#PpxdSdpL46_6lm>jj4$@r$g^7kDxO{{ZXJ9ot3jWan zu@EO?OV^eLL^McXWkw!s;0M<HwWNGYAhx&y?ZeVgPb{v?OZF^DEdp&Shb(?UD~v3S zh;Tgq!6@9;=O-1X7L|b}gt6OAOv@h@aG2#)j1uVHGx(*UsmUd_F)=YpAPm2BHYP?1 ze6vAnF<3ahOxGaII4Q~8z#OjDE+!@qloL^Jp^b@w-9sCLxD_rYMhSGh7VJnRjJs$- zN|A1#jfuf^|14M`Xzm?!qYc<4Fb>$6uv=zhknWiUX>rI-t%Thy8-sSYEJz-o_t38S z1NpBc5A2iFyb`dju*(Ev$h=_|rwd>=07AkU<`BqzeBcN|TsfPVTVSmQBETbL@HQ>T zXmC7&!wP&jCfLbH0R=tc7c7i591c%Mb%zc7GFphc&@Z6{TLm@_ej9B}j1t&gP*Kn+ zm0(pM23QQ#r2&h;@1;d`Ippjduu?17;dWs4Fb+ftI^dfEmV$9$Qjn`@p;8bIL<)A0 zF<1)50ZU;G4`{MSzq&RiMhV46u!q4$;x@`gA9BJYEGr?K3BG7ECPoRO0@N{tupk-I z3Sm4%7<Ppv<RnY@t+t?G#Oe!DF1v-sGyIZUC?9dTEhxhl<rk#nm*?q%P7%TFV?^Mg z-F6H2DN5SK>U6jn3JNyx>u*8%0e%54$k&Kuk8%kvNQ#iD3JNyh1F67cv*0KMox}q6 z6nKsda+?NNq8iW5xFD+#u0SpT!A60Oj04@-1lkz|HY-0Z4J=Wno0?+<SwI99hYIFG zZgvKhU*Kzg!7&Y%qpWxXm*K^btE@p85^N{LdW01Sf8Z`eAV+G0U4%7+(F+o=#o!xD zAqfi1M~+ZfegYS4U;^d-TTu97wFt+>v7jUZxo=wmY#5kOfE<*L+tnoAn~UxhoY@%H zjkzFSf$z+P=Lk}>Hd6jjP{17)kON9#S2aOOkz#O+Bd*Z}IR<MGqu7C{nIO07Vz?Y~ zXfEMG3ALgDr3Vm(T*Hh=f$0P<+66fqc5QP^4B^XmLF%!36Ptr<KzHvVMKekYM!ppm zrUrb+t^zLebMi}&ivN_%GU$EYpnML$6b?DTqFucUayueyAV;5puHOZTgU?NbUcd`# zgF&v~1<7D_4fGZx(3ME=n|UFgu+azI$O~l?;YM&F;SakV7-S)a6G8X#f+R?EBe>~G ztm~nd_JZ6EWr9zZLT}1bJ}`<gCV;hVZwWb%0Mx$*osWvDNe^-CkS6BD1DaackurHP zCDyPxLR2N-EmbH7MA@U63OoB+!3s@6Qx9G@WABq2T0#y!0C@sD*8%Bkl)xv56<|lf zg2o*(@=F{8Ji)6{!1r)!#3+@Ors`(om*^Iyf)0|_O)SWaQ38*^K-B7i4{y%N(STL} z5FIf}ki8)wTNR-SLG@>131|u&b|5(@a6z_af-WzLQPNdRN=!=4QPk7d)6>t(Pf3l3 z1XHm-$PFOdQ;YO-GLxWfoBSfZtYUl6`VU*k9t<_`_^z#iqMm+mPG(AKkzQG8D&*dI zm=lUp6H8KqQj_zGQZzu5&=3n?lSW`~L4`8%OY{<xlT!;yG@@zdG#!x1AkTryVqJ(2 z$?!fb3E&8TSfmXC$dR3wTJ8@y%^W4dX%r3Mzy+lTBx}{w6c9X=Oob2z?XZG76n2I( zEal{-mWQO~7UU$BfX<pjBtcz8nujXbKhSgqJuw@Uq7V+(0r?H)I<V?mD5(LVV=%`_ zh?!P^WZ=A*5{y%lK%oL13r3rdf{uFWD8wisimn(X_|XL59tvcq3dj)XEEwqYWmwv> z1Brt$_#9zy$qub1lt6b{#wejG05vl}wWW=IF^B?b1Yw9~eYAVzkt<^85r$C3$k($& z{Qye>paZ)=suUDJQ`Sg}5kXv7G6ywDprg3(5j6$KJdl-w0dyJ{qzKfQhTi51F%+>2 z2Q-Kk10FjB9pju^fPQZ)<c?VA0R;*mgOF{9kKln;*}={^hg`t{F80B~;DQS}um|0{ zfmpx}8a2Ut2s!BJ3-DHqWKho&Y#{VJbv+f>Vd#)V13d@{lnb#di%y2jf`MdFw1C#I zXF_i=fgGD&oa&iZqLHklU<f^P3>1tYoK%#W2-{}_;)7T6p)mCILFU5(K_OaCPY*1h zlA5CjIXN11o;dvAal~yMFje6E12PgK0MP?7FEbf52nboY36=wgEM!;{q#o{busApZ zQ18SAYXZ3goVa~5i%awpQ&Ke46O&6a%TggDeBe-o`U*^e2TVZ+r`RB!VUFH#A!&98 zS_wguyn?L)bQ}=uDsZO{oatgf*)FCC+Q0|5UF~2w4l0bVEk(>c5E;XwmXM>FF#Le6 zon>SI8Pf-4I#A@GYC@?JP^B<de89>DkVym3&N4E993lqt#0Y9<6=de+4c3MhvfF6b z(n7Xo0GnFK&H$H>pp=McjeypzAb2Pl3n4tH+FBSMqIP48DpS<p+bN(;cPj<Ql$2rx z(AD7z$;IFeAtf293NHS>3Q3iqm3^Rvl8Fj7U_ExAoy?%Z3WW9b6+o?j1(0&EEPTC3 za(-S(Y946oHMZi@&=PuvaVGrobhrla0Ys2RsG6YdCs1ReqoD;UsI>}JtfQc=9t+vO z09^`*a0qC1D2V6c?+bD%sJ{kj?&6p<HZ(BQ)PS1{TTqpm1{2fE$xlwqDaO)ohH8Q; z05^y9^%XqwOBA4|Ne4l$a0cyR2RS7(O#`{4jRDob;TfrUNTH~Z489y!M*-?&kVlY$ z9~{atC7_j~sFp+9J~1URuqipD{$PxfB9=~Ca&a*<8R&x>7kXL6SX6<!C7_sw^<+yb zb5eDSQp<}#ds9LE*~}E%_%dB{Lo>@HL&H?Hw9K4T+h9aiAi~I0&{}Ea&N0Xi<gOvY zG*Ax!wg3XwXa)H>rUVqtd8y^j@YILsTMZx2L)wK94<j-VvbRz45VC{<N;X2sAmt>8 zxsZgXflz_46xz#*DFHVkQIjtukAgOcf{w1wFHTL-QGi^?2Tt9XX&9nG50p%yI^ZKb zpqPbb01ZuR1*o+kOVQh?lrLUEv{<1ILI_|jzYGjCq4!nk>nmjD7UUO|Kr$t?AE>Vn z9q<BWc&J&B<~?#T7Ng{#Tb`Pfomrxrom!bzln6RkrnmrnTLH8kY-nJhs!$yR<tZq@ z)PsjKLGwLU3Pt%PplfE0%?wgf(>1LTYC$~*5GJg)7NQACf#!M!jbrpc;gOeGq?=xp zSpqr~5fK{TTOkbK9){e|gW$uiD?o@KuC;-NC;SEpOG`@&xIqQ^#oz&LD+R=jIZzF- zt4It$_ZLCMKofW97t%nbKu0`+Zi>iDu~H~XPfFA<GBwpvKoACcpn4Fj7#j8%-h~UK zWrB87!jl5Rkzfg^<8hgy05=A7Xh%V65h4^324VOX9KfbXUWEiPvIv&+2u^OGp)Czv zQv+2U1rUjuEWxTE2^h@8sX;flSQo5<uwuf#PtGh#&Pm1QdBinL;OKze?PH|?x`7FD zMU--KaxyfWVbYMRw{(;9bMlL<6qJpP%@dQ%G1MfcWR@0NDIkX%sIbcc-I;`Xvj@~} zSg0oEW#%T9Waj5tDS)zpf`Oh{u>$CRq{Je)C7>J*!o;Y>Fjp5;e}iq%P0laPE3s0@ z%uCD6%PdL7Z9WltpxMMYH5YCS{6Z%rF?jYff+`~%fuPJrRP=!q;>eZI>rB9@+d$70 zpM&5RwSdZDs3R2=((?04bc-{qQmqs$O;zE-SW^KmFTpcpaV{crq9;#iI2xij5*Cuk zq6BTpO(AHD5mG?F>_CVSv>_**unk!KVT2?~(3XlEg0>hVnTNQ=3Rx6pOHPSyW~!k9 z!bEr-1CJd@jOak>N4?BcOX3yh=cHt&60bZjUpKk97+lhUYoB7Ww1NuBVq>Jp#^ohM zCPJ>HN{ezdK<gAhM<rY7>t`D2l^1}IA1*I12i>5X4w{L|%P&jK$;?YnOessvD=964 z98g?d09&!9UyxIpo|#vyUtXYFke`!Nte=^in4Vg!59&c==B4YUXM$IuXeuP9=9Q!t z!Kl1^-J;Zj)Wi~aj>0IftQ7L{^YD~SX!6jU4ym>f?Et7SxBviO^aL$-VK=3r*a6Lh z#zvs)r=SX9*#k+i7St(;QHoK5u0{nl{Pgu<TZTb%CTOcmjSPrcn~HxNljc(?AYXv` zRFG?xade$6p?hp#ihVu(;=>(1LlkTkObracha_a?DdfT%$OPtRte~UCO3~_|N-r<9 z2weFgw*l34pfbUkRjE4FFm<}%rjWW7n5vD9QBr`d&`^R5goDPN5iN93t%))t1T|C_ z+D5`ut)PHaJ*1F`QL=-MTBBNlLldZiiczwwt_CsSYavjzVlfXxh{9PY(CJ>qNZXwu z)f&>Q6KJN|N&&J}A8F<Zx;(&2K|MDGe4-R6G$C_NAQs3|NTw=)*SX;}28$u!c*J6g zQ+|F<Y9i!9K9FUg39i(l<WwsKNIKO^&IfVzk}%Z4T@4<A0VP<Feo&vX1Tk|3nu#N6 zVh)nH$ef3R3~PWAGLoIpln4?9b%S9JMV*xcMU{fR0zCDDHmQRrg1{112#Mlc$j%Qe zekC|d2R1N1DL(~t0Cq}#GWaM)y~5JeqRL?Ckd1~qNE&I938BZoEVU>tC%+uD#Q<~x zGuR+K@KB*1?AEzR(0&$mm<u6E2;$+~)DqD4U8EF{o?7CYnHQdziF6=6XqN+2P$MNZ zC$SPb3I_76f&y4X!4^u_)F?nMHHAn*=UDSn%N1NeeP~V4MvRcm+*A!s1zqTM!o?+t zMJ1^zNHR7G@Dk1*!PEs^3JsZEB+WeVRHTA7)P+_G1~4{wC=ujPNSJ_FplMp<WRj6z z4qaVWjN)t1AUbrp9cTm{%G3kpN)&a_`B9KK;*xl<GPvdNiCvKWILrklIBe#E#F5Me zaY-^4TmWD*7%YKgGMJBUG$av$oUN~~0KS`6p*XoHKL^xyQ78wExI(iTXuK*v51|~9 zele1&t%5rAf)B852tA+yXwYOUXh{duScD|RKxj&W%vL}X9M}|)6QMByDM~=u1#v1d zNE&Q{N>P4(iJnSQQGQ}da$<3bhB_!c<XKrkEkw$Kh$NGdnSyk%ngWQ6TBLyMcaZrY zTQf4jTkoLj20%80q+yu|Iq!gU=*2^Ac7%0QK^KLjmVmNQekqp4S|9^K7<@Ch9^A9w z(ikZy6ciu|uooA$$g;2!28(XY;DSUQw(tU#{*VlhC}N<c31s9G<Z85fA{Es9MXo!+ z(Sa}>Eu%t*!?EU9aA1NW6D|w)4<aT(DK8bP@t{bB8IO`(z~+Kvp`(>xU%+c|b#RKb zvP#TKtUx*mQ2{LMn3Y%ocMak$5NJ9j=+@M{6ikCt^HRXZ5_Tgb@4)<yatAz8u%d_~ zr)uzy6Idz)2LeV)MMNt^9#n^6$?gbAw3G%;3|N;?fHM!s1E7X3xUNH9WP~}oirnS{ zjWa+38)^V3#=xCIP|pr?uoqb`*hNrn$ZU9L7Ty;GH}9Y-vEKj=?=m4<fHb0tEQ}ad zMHYn*?m)&?k)^N=IU>tLyIi2K0A~Y)OH(UK&<AypH6nLqagVnmbl?poc(8#h7qm!0 zcmXVn>`c6dB0BZZP6keM5u>pP_d??eJdlVi3W+TYVWe~eW@3)9A{#>7Kr2EAk^Y2q zj&OPtG46^m88*6#IrxgH2FD02HigK;u*mW_#$u6`;2m7Wsu15ODY6D=S_co6B8$U^ z7(k<P$P(~;Wkg1z12^<gb3Y;_V~+}u7JPXQc`yY!no8KYXydBL8qfz<k>$`wSP^n~ z6C*q)V;yTn7=myWWC#&i1{NRCQCEZ%aW-Qee?=Gqw;4R(iYyMZ7fpgVTd|JGBAX6P zeb6CTWEr@<=s`i8%~;22k<EwN3>}t5mVw!fA%$Wy31hbi!-*ZhMbbg^C@zv7vW9Z8 z>j%~P#E$18Oi)ljt_i_|x=OSk(pADUpo{D_q{0+3(uynzElwac8l=Agul}KOh;dtF zji`gS$TF~`1|GphmVl=;G#TWChVw>xBLiYi2Y|G6^Wf`oplbmTOJiZ9oiQ<#k9UIh zI>AOfV`5-qo@lFWL0hY!BdnnPUy$J^_>d>6V$`8aB;}Aw9W+w_8}o#YjDwo1$YZ2P zdO#HkSO?mWCtN3VXcNkZ^04ftGBTk2U<9I;c^DZOgO?<N5+G>g1632sVnkG_!MDm6 za>NP96X3o!Bw1qVpo4n*kOhk<n`=PpzlPjys*uE_LAjL*?k?J`?uA=1a4UP^P5@^i zP|8DEushUtP@#GTl0o#KYveLhz+0xEd(yyclD1D784z>U%21mKgjRI0?G1=+Pv{d) z8L5dWsYOU*{HSw9pt2WKslbMU6ck{`XJFAn<B1{AR#3EURFEM|q#-GY0P<KA>ZDD4 zNn%oQYKb0b01dp62Q<J0?#ZG061*4}$y_j>u(2T1K|6|4EBw>IcMKwixey@;vKz^0 z5SO6IplJk<Q}u}T0C>a!ypjRQDuf_m3+*A}u`v5m)6!CtK?fFt?g>By7$kkb{02EI zDh0_#s0gxk5N~AWfmY@fKnJ~HTioE@gl$CwSr1kSw-QuEf`S=*u^7lKxD5DUegzGv zB<PY|NL+)=0G)}fXlttgI)E2!2}BBN4YWQ6B>@EmsD4{01LiciHQ?qcNGYgLRfMR9 zMGLAy;3+qV0#F8oj8=klf@Vzfit}?)^~w{A@-)=L6N~aP^U|#pVw6e}lVX$<Qc??2 z^HM-J8GuEKQ%ho$KuhY&^NX@U_a7Ie7UfjxAx}6cq~;WZR@UW#u5<y}0kKyPL_wCm zg2D=s96^VDDQGBy1oh&fk%8iRSU~7ON{C|YhG1S~3pKb7WN~T<TsJraK{Ev`NHx(c z#BC*92Rs%)UWCU4$|M=YOAzZp$qO9QaD8w+pxA>b#pZjk3^aA%3`3|{u+)z-9FCL+ zP{fgQ0>TLp*TQFHKnWF;c))>%5=dZoK@&7wIntym)Jc#?fG8%;dn%B1;^>7IB!5F^ z9boo?T&sso1K4&*G6xO5BkgMh?Xs}Jvn#kLKPS}|oYo5x^HOsV2aAC+gf2)-0aCOh zuPOnRoRFRRAZLPi2`j+QH&dzxO}tnsf)v$aszMZnAZv>f^B{|k(G()j9Dq_B>Sjsg z&MdUQgb*TXVF>C{dLsj3&Z&T;2RwaRNLYeSNJ~rtg<KA(+oyo&be1G0p@b+}zZDc< zARUlJcOYLQb&^p66?~)|Y#*r=a)^Q~M}#SoIy;1^s9{M&x09G{?)ckj*ftXw89<J@ z!019^R}9&u3QBLF+>5GdNOegeS6YBPF`~Mp?nU{f1%tI;isU%*I;XG_7Te~q)Z`=! zGh<W8=CF{&B)DZ{><)w3gS0^m*~A#70qyw0eFi;q29(GLY3~;nkOLlJ;9&x4_pFII zy#RlSt*@^Dp2CN2lBEA$StA2;NTV6C)epMq6Wo1Nhg@u?KDt*HG8}_rpWz_fD~q!@ zR0Cbrnwnw@>MD{^G=h^W&T<iPs1mFr0NL;f>eV84d!h{f(thXczyt*(TS2^!$Xv*Q zFrxO+8W~W2unKh44`coV$IbymYVD)d%S$ZN1@#J}LA%hQ$tf1G#|1ib2wT8ph}iW( z#=Z^84`3L4`!=8vM|ilFo};hug^G|7AS?sEkZlQ|&Jd`Z2=4uZR&qiFNM6SeN<dZ$ z(XnuQ6~O0Wk+-lPGFpH%3Ih><mAWAJ!bgVdzyl>9>ruvTVS{?$!D2{h1=5D*P3Q<G zl1)$%WUIgyfQC=NW0{~)DdhFVpu!(yJA6nJHrxdssRRuK!A7D$Mu3JgZ9yYMMWv|< z&{0~byaMPZJor!-sM!m)7$yrE5=A!+>>$XH0{Da~#L#4FQBi)8hPrcNUQCR7i9%j# zaS3Qh6s(~bW$Y0W-_Wa2kOyGVMn}Qk0T0K)Jcwd3A_!2_!2JUac*ximn$f5RfjkKh zDursuh!iO9paWT;ArACNKzJN&OtvI33G8R2L0PCvOY#*+8IVPF6~qj5&q2l#ApwfH z{{nQ9F;YSUagkFQs_($vdW8A#Tvd{vo{oIkw*o`}w?U9WVo;bNOoO-(93zm>MIY}2 zDF9)RIJilq0BKeskEp?`4YcKnSgQ-f$QsyInA!SZ!@;J4tb+BY>`+FR$Qp|y=2#0z zvcoYJ2Rg$LbSSVnv_b@*zy=ywgP*pBZFPkq<@*w`j$9c+P8vfUvBJ?XFftr2D=!R3 z=*kPw9Oqy>$2J5~w1b^S^&zfQi^SCABufMM5EnEQ$mqqv$`RC#9Mrr49^Qhx0z75| zs^y2?;1>O&3LHpO9@sJ@X6@l%AJ{U4?i)w+y+;SOz{6MI7De$;Jp>L{&Z7RX7Q7r9 zjDuPO5Dbtm;^=@Ds1KvBrC?-8`8r|fxX8c`Xu*;ajRv#~hvWJ~(2z#F3-rb)9K8%f zBk0r$s4s`2!3d-y6LdIDenC(w_)ZCz)U?FXoDvPVq0rox7gGW|i&7yTyO#W<EKP-K z*j48FNm-zAi2S51r0IGEd(b_)py3k*_!$)-g|*g@s}VsiMCo3F1V9+P=mfOl9^3<k zizq1ADC+7e_$8KshD?eTbagT05qE1T<t3IWfJRV3SEH2$gAU%Tt&LGqfUM&HEr7|% zEH1%%915(Ns!*m2zJ^Gt1az1?WW25zn-1g)wUiV~z(ZW%(Tx}-q?I#}u`(;rT^67N z%ykfpK1=jqBak2$LN1xpD<}f*#kP%6g5Ee(qKVyZ@MT3AMX71FF-ppy16#mdWXRQU zN)T6r&t$2FtsAQaoy-DKWM>1qlLs*d02$0tP_O~t&4Wce1(x<ecWo7?Dp-N`KY*6{ zKv$&U^DoG2NS75VAv}%KTi{Erpiz*R1d4<b@Uk%!YhXcVRg##59FBH2i3*5NQNS6h ziAkVvt*!=XhlCa=coOY!27*2;6wp&2DBxge2VD+w6A)^Uf>Jna1raDg!p@okuf|Hv z0eJ`}gl-(ZI~_pIK)cleix5$xHzm-j0&@r*v}`y(FEy_O`K$m~z*s533lt-mR!}ZR z3}d4&n9fUtWKo>M;qZYr(CH`OLd!})9W>g9<%k`~s#?;FN(0~VgvBsuu7wPyK{7~5 zd44$Pm_yK9CX%}#hYI<X<|d^UAqhjy?Lj}rCl6g2yo7|`i47i+Lj)PgBmbbWMJol+ z%3>tfKvH-y+Kd1wAVETqNJ77FLqP#L_>MG63Kc;f-vp0}BL;{;p#vS-1hrjY*LIYH zuF6G<8(8?l>l=uGMp<GGWE>DWfDSet<R#D$GicBk<mTwI#2m<3*`Sy~3ozo20m3j6 zY!So}Fr$&(k2!t}DV~wS1|k4jGL7N`(3k>ffE`{)p~ymqnIRT~{Fs;onKyxkA(98- z3v<C99xNlpXsa#_sj})azDyU^P(%#$!tU6>XbgZZEK^XhK{NtlVz4&@K#MaW4FS-a z%ETmaQvf80&prhO_*z?7%K)SsR4qYs6=)b5G&YUX$)HF?xqB0(u>f)a@~TisS|HS5 z0O>-n+(0`N!3SAslxPy=D5N$-45$?WG8AiAfM);{AdQQd7+CWHr}FA*T&)gBT!8}w z+}c3m!>SSRRm;Vx@Q8;sH$b5dYjA*U#uH|>VBaG(JHUEjO$M+eR&PR+7|40B#vQmF z0@9As5<#~gW;CeshG%q$E3jGwZ=}G39Zy_>nkpa*v6_Ud1%ni@NG%tbC~`9ZA_i%x zK-s7pYe8$Ap~G3=paZo6K^}#*QV=nP)rIgtg(M=ZYT#GqK<>zfTu%jZ40I_t*2x_j ztzkAKWev08a9P7_I3m|D=jZ2?WDe3L%*bvdZ+ZvPB0;){0@h7Io{2%WW&l?jBRc~; z%>ZgQ4br(7lEW43A!^T?42K25hR{)~(Rq^+)Z0gf_PmLKfkCoaQW|XX7?HQhm^}uE z1g-*WFwU0H&GXPv+Y-<$2_gfH+(o~JLwM0|2{ezC<QKqB=!Xe`&JRKt1D{ifE(lo? zj94k0UyzubSyE}Gpl1o$DG0kP05a;O3pueKehmxe3H4BQnRyBZdd9^Hsfop@x|w<K zBkdvGBn1V;AxL;NpxK_2npg(fWDVV{h|~7`(h?-=^Ggv&>f^K@mlmiCu-sIHa5y|T zP%kTjhb7|ZeW+;)3ZTOs5uvW209UJL2@fl%Vkm`la3;NNhJ`cYmL{kRK!HZc^OzpO z<9m#d!s&T>Sgi!Qd6|SO4Gf3U()fb>0?-lUzL^!7dBvdlzWDOgq=Llc?0D#<aq;mQ zhGr(v3L_74xm-MoE_~C3C<+mVz{hTBJ6DKvG9nl3T`PrXG@roc9$<^#(Pte>iZavF z@to6wG;R(bo>$KR1u&M00&->@ijxy_QW0iBhTlmU)kU5c(u36#;Hm>L)dUxZ)E`(R zpp^&~8F)>CkV7ffKrRMheSMTET|H<~0;^b%brY^65URmJ0W}|HCak(ZsKQe5fC>^s zRRyjq5bBXl#Zdqw6e}oz%YS46q!2(m%n#XQc!7vRE2s!XmO|Ex%*J#f$aARYo#JyM zK6?nc5s&wforrXvAig6hiVG6+z+<{r(2R$idO>wKcw7*^jvF~}pojK>2OOb=kV2Vm zCTPkVG=USN1liDP8>0j}_!fLNzBSs(6Cg`qqs2<m>d*|Mu2Ybcn4Ai_%QP072IMms zlpxt0Lm9ePpbmzf51|CLNjI^mD8C#uM-Lg;MD-#LJ>YAdvCol%0}MJEuLK*J1>L_= z4do!F`a!t}gu!bou*?U8f(AOqitH*IeNe0+`wn@;7^)I#u1#@rQD#92NHO|k5arAM zG1CsTy@);)jt~Y7USmlypvjSp{BrOJHn>j-9=1kHH%O;zfI<eAXuv00LL(C;*`TXO zPBSqvuvCMh3hC4i)R+fNGC+C((DVX2z!DlaaNpt70!c0)Es(Z8$oU|QoK|9D;Hd?q zu(}#cdV$-7ZZj$$mO!u#%p1{Y*M$)&yDp4|%dQKf5xMK4vLH1PG`%`FPZvRT9SsNP zQ7sz4;dxYtfXB0k`T#u^FHw1j-e@>%Z7>?$+K>uevNN29=*=xsl2R>FEuj0mkTU}{ z2I-N_16?Nx8!LdV90QG6Lxv%c$Ey{f!xb7aO0++zgPs8Z9W)sos@DNs9jahtG=#S^ zz}6}0=BDPAD%dIHWGdJxBq9cYlS_+=L04!O<b#*cLx+G#Kb*s8xb9^LD@|3fRVdHQ zOUW<S3oA_pU#kjVWC!X;g0GzdcUi%UrJ>z5CCvL>FgoN43JPVqNtt;mu&$d@wR(O* zYM#0kXutrri30r$OH?}*6l^l{3Q9}B7kz@3xu;fuj*NwM>OuEdfR{cM<>z3r-wHgc zkddF0l3HXNqlCo6qBya%Bp<Y<Iw!RRbYy3KS{fEbWxBcfDXBTOF-m2LIi;ysR5*a$ zYa62kIXDWNitN<Nl>G8Mz0v}(GJHxv>Oey(`Q>@|lz~V2Y!zaZGBQi>sw+;mjZrE} z1s}W%8Z!W4aO8serw*Wl7eKomGV;q|(W79i06uU5!&H5Yh(av-R6@y@u*LK+L3E8M z%lnivOHy+|3pzn`F<2{F5`wJBRJT&dEOrE4jhL#T0y$5%7RLxpqJl$iera(kC@hio zbbx~jDwUgG28#3I)Dl!9v74x%U{jD-RFavPqhJMDhp7Zx&EuDtn+hIWf-1oDD`?;+ z5mOl3UI)lJK<Ee$IF_Ite}oWGLqXsy4B3d}>f;z0uVAZSWPli0#5t%BU15&2t{N%= zYdL@t4S2COII=)Xra{ZX3yLyxGeP@nToOwXp=+m+*Kb3E24&j<WEYf`g1QZ8uuGv# zH=`sMl*>Q{E7T}tWTt22WTt17C_u9vXo#{PG0zS<at|?H0eplsvbkW@NK4%n6!7jG zfSmh-b<P255n?ldf&yea0C*S}6cDfj<{gWQ5-UOZ3M2?~n1VtMC{R$HQdy8{rGT+p z0Y1-RfoVu$ab;dI7DFHo$5anXmSkuFrDUAium%y-;aEZ{JGGJ|qd+?*Fg=qC+PC1G zSe%N*EUF*T5BDM1)?m<Wy>zuUKhFbn8!<-eax2YCF3HSCzNH!(?nv1*9x9{(%08%9 z_(C^1fU5wc+dDyN6`Yg7IYz-&0jv|6c|nrk$p$b39x_PPDVCtYl_bHJzG6|2J0HZm zfJ-g7y`U3~Ko@ai-_Qe3HxLFa141$@tm^~LyU3*&^vY(W;6`qvK#%G|azS2xP-<~$ z4ruQcXqOF=Omb;aQEFa^m4X41AUHH}Z|{LP71a1BElEv53LKQ86e)sH#F71>pa3rC zK~V`Uj=^yVu>cf(pphbwtR5&ppnYkOI0!=n0WPhVmYGwMTBHFFHPDuzQdkchqyvIs zX$Eq;E;z%0vZ;bSq_kGBg3x*;`9AsOsYM_;w4?`dHu(B)(3CmY1<2+=OorHF1-+*i z%)@IY)ISi-VB^5~80Id><{tkv4Y0kM;B!w6;En~iDG-vNOBQqu!GQ_!w1Psdre1MQ zW^$^Afez$O32+e)>0UzAATkXk0$_=e;Jzq*eTAab^vvRt)FOpM&<)_A#)cKd5Xd=U z;2?q(@1U|8wD}iP5aeuiXlbC165U~?sd~_w7<@Rs9<pIj55a^GeuDZ4;t_~@Ft=kt zTE0lh6(WF|PC*F~asn4PB2nCir;viiDY#9F6dO=?fr1@mFgPHvq;Rk}I5R?XhaO5! zLNXBQ1mscxrUk5DFDErGy(B}y4(XBt_^vP%XMpQ$O-Kp>r!=Irj~tE)3Se0)1yFj5 zFD=Q;Db@oQmZ?RWNLdgipx~Juv}6S2Ij|2P@d9!Ll2PfYC0@b)ewvWT20KbY8{#TR z1n8Ayq~;-6geCaEImt*58~_To3K~#;c50=9J-A4XMu@~JSb>F*G6_@?Bbz|)<u(Ez zNQl(&fT{;u2Muqq|3E$iWj{ElR!2b{98~H$3eeg@6JGj)t2(5_2<D@vMNr7WeH9Jc za|p5qECUW71zQDmb-0bt<dKt~n39>74(lYLOQWS8)I<x3dypmYZU>Sp;bI!#f(Rwn z!H$B~GoY$EFD11CZZ*PKSpNvgRG1JJL!lW9)ofc^1+ev4OwRx{PvA8}MrMfyYQ>NW z>uSMHI6xF4(7*#XaUjVN9L3SdcE>`BAcQ7_ze)>`d{kP18kO+e4+|eV1p{d2gNo?t zV(|^AZ-`_nh)cj+8%W*(yBwN06?7F0QSH*!M%V?(l`wBWs#fH_3cQbl<PNwPq~_I8 zD99*EEJh7zXvBdNsa{bkxK*Z+ms+k6l$!2ZQJ|r&p{}3})u^DYpsuN|qoAIisjjI5 z>TQ)2<>#f_sThJ5kbs%Um+wHG45EnK<BHs|)q{2TF-GSQ{Z|DAj3GLNB)CuqSq?g) z0&yTB+R6qas%&$Gj%&rlU>n&&Su}t#tQ8Z3V_*wO8`4SxlmRW!LIco{7HCf)bWkfM zMhRtD3&|8vVSzfP1#&NF<qTwu3$&mDdC39lkXB5L5@=8h%{=&sRt#)R3rzuRKr045 zq=l{kc{~fO3f&!`1yrCcr3WG)Ydt^%TDZ)Cjb?#%w`P{$G%OV~m=yyX&O$c~GL{8h zX@XR#fD2(%Gxd>U2Qi8j6N5I61&So_Y8F_+M$(5eh!qoqHjD+)i9C=6PBeIivOtSM zkfRd3Js8_K79x;P#<D;j#~97RG!%0v3!EZz3qY5;gPN6~kg~JUhqe?^JPaMlg0E5m z@pCeflt9L>pz_e6E0jelpa}>q5YShM)r`rj1(o*JF?ss>$_mB#rA5i9zKI0|nR)4< zK|Z#iyF!agiV_R-vWoR`6AQ2^0<~GJ5(^4)GLsWQy=48Y;`}`8<c!3k;?xq`(vmb? z3+trB;#4yeozzM%qo@e4s>E>1QqQdXDj#RB+{EyT9M7!$Oh1>%(!@O9Odn^jswCsE z%1EQID$lHfB+tB*oX9+<j7XzmGoMO}GM`LKZ6D((!>C}xsuT~ejAUoa?8FE^15`27 z!sIH;9N&;YW6vCeV$VFkvXls~tf&Y-mn0)ogQ##*1F+ed8M!IprdcWOIb}(iPR3E; zUgeSDenny7rUfavVU@{7Zp9(tmf0!c6*)ofVY!JQaj@Eq$|NI810QFn+{kc0gCt`w zQ}19W^9Xm-<P`UuTyKvc(`5IsvZzd_oKz2|vgEv=Do+;!%Yb0Vyd)#9!l-aR1FuTQ zT(3+ggVYG8oFt>j^dzV~nCfzplX5ByB0Pdhl8k~3liWi~qarfOlZ?F#k}Dl8J>8=+ zB8`K}lJm0jy+caCYNNs{s-l9O3ZgPI;O0j`+@Aw8KPoS*G}1VzAj!xi&(k?F*V8>H zCn`6mG%DCMBPl$v0PGjH3ImuvZ?}>Z6#wG03(0)}AqMGQMwXe0xnWr;&dCUKVQLIZ zl09>x45PyQ43cx*$|Ib;QaoJ@(xY<SvQpeFD^r8h3;Yc$N+Udia*{m!a$xRC&b2H{ zaU)J|T5xuLihD*ua%FislE3qzaaI`>5oDO0Ym)9$nP2Fg3BnfX-tJL`Nx6OoptS1k zZdexO5mp=(;alM8QJn5mX_1~{6qcFn?v|Bk;8m7n90W;=ZWX1-W<+=dmibgVg(kX( zBI4KGFC)?@BPYV$qzqzLexXmLQ*w$&R7P^9Q$bRmpFw1JMR8PkkRK$z!$4^#J=NI2 z97T^IZo86m!zxn3b1I{Poe=3e2VH#-LN3!OEy5U<&q~tZ`ok>K;C>Iy$%cd%lDje7 z5R{zaY*FUv>X#oC?pNgLo|Eed3%g*ag5*l4f}~8RtjKV`{HQPt_dxQFdroPxaZpB* zdqqx^D=ggol3@8GI6NrD8=GFY3WMa_FoTo`uToDU%<#z#Gf8&0tW5FnB@nJ~KUGGB zyBS0UJ7svfo93icI>GW|y0^PqX_T{5c}hfJdLjsin;IllIvIfCJ<`Z6E73i)0444~ z@$FV&kdo_Gi3lH1UMB2!P~J$z7Ve<D3d>Vf`JnVtjLpsnkD!7mmwb473=R*(rLH*1 z$Spf6JkShO#z68OQrtuRkOnFTGA*F_Ccg}uouK>@6p@h=X&eR$KXACf;?ol;pJCGr zQ<rR50uApluP8Tz(nuq>;w0w`s2FmYSPu7_k25@ukjl*R^aw*scv&A|?3I%o5mu0# z8<rMPnN4I`h$@Z@Pfky9&&WZ<pHoJ1r4uyFf|8Sv!o<@Jwfs(Ux6Fug56cF{Wr~NF zVHA;J7z#_@9zpq0!ANzByJfB?L<|}pVc6`4mvgW%#hC{{aqD4-Vg^dwV5C2AIhO;j z>x@EC!zIEu9aiUgI%lLImoqSTBpX_$Vad}dYLUw%pIn3VfM8hMhE;*;2SmARiQ;Zh z*n`p^q|WrqK@F$SbV&Zh5?(mdh-nrm-V(!2t5V$Eij&;KvSDq6<f;-ByHUan6sDlE z(akaqUUwK;mZyY!6(@%Kr6s$&86>({reWwoRbLqu;bxc^;gu6%Xi=K%>}cufR-PH* z>`5Tqg5$>*l%GA_!%9;;yiAePZBlMvI-=}^m5Y8TegTCeTn%nF<@-9L<)KO^OVqdp z)vvU`Xz}ixkpu}#$8t|+M7iWsiBu<M!po0hPj{HVeTzMD`>(*$1Kh?cjqnJ}ONjub zCs4a32h_HKwEx_|Z55-)2+#Bg1Jkl7_b^{j`xKOBaF;vjm44u|$22(whkoBoP+VIU zB;^I=B<EU|hr;UkP*A(g%`nL$Fdx}ISX&U>UV^kO(gMT%vXYFwvO#Sc0`4(|#3Q<U z+_EB#EGwfxZQv|VP##Q63^z51its8+c7vCru2JDp87biv2HtL#PLW1_Wy!hVb|$PH z2X3Q+>pnM2r>NYhf>dxiM#&e*={(;*BoMb=7vkIju?LhkG5k~<72#z-C_J#oj~iGo zad87ti#1*%{0gGnL&4#RTs|U~dEPFr<$mD2h2j3H#PFaTBHaL1i_Hy@d0_@A?v|xN z#$IJ95sn1i;vbA9ERDPjQ#^volCo1OlZ?a4iE<N~9&Bz4G;#x(R}~drPRLyqzL{9u zW#E^QoNH;AY!p^Zl$(&$V|PzRPNY#uW|DC_LHA%!H<0#mWUi$Nk?sMvr$OqmxhKfo z%^)hmsUXs*BqteCP9WDYD0#^@#Ius18N}sn*T{&VoMiW$tVE+Q>}Gm+l_k3em8BS& z5DF(8<zG-`lCe{El5t8Yap8nekJXR4mX%4NkhDo4zgPHHd15Pb+>?yGN}ze95^RQ1 zPHBpJ7|5N$u(}yERuCBxR-EFTkrsqxCpI?)hns@?4FSP;`d}`uResp=n?X)#vPYN! zabW{di_Hz7_Ddw;yk&sBPB1Ksa(5##UqRGjbwjS3Q6#88<YIuQeV$(7=aP*rUi>2? zqB0{RJc){v5U5>P-C^tm?(>7=7H1nUy}~a9Yx)RC_5jy)#JK}%7dCf<g8Gz%<HQha zx-fLgNXjL$tb?k>?gq>9B;zO|%9O}*y!weNPXd#SoytJtZdlFo@G6S}_0^31K=Dkd zJTdaaRu33DRVEpwR7OSkRe{nPQTYZ<4_3G3x@9MZTM%>;);iPBD+AP?BF-%kwOHL? z6jlrxS0tEjtFX4ELZZSeaw3fbiAuMjP`j|ZqoN?nJq%(Fp8SKOO&5~no|7F#WIhfx zg4l)C9mY-tNx7y(q}^;|y!wetyCKQ$Ii*Rt*z3VCcehLe@lxsQg0(yejSMHQOas}0 z%^x6fXnjQ>eR`H-FH3?lB1vh_86wo<a!;~R7@_udrEiEMwsJl+GTf^wDuTFl3i3P1 zF6{2GEKBkTDuDE%arZrZvs?}F>L;%M5t?LVS)AgYgSDIt^T;WW3U|wo3U>pK3E}G} z`etDd7tlOHWOznSWH^ywgJdU)|B%MxJl*j3H$me%pfO=j53igQkFd(5OsBHQ-28N} z%t-K<k57(eT2zD|bR0W0J)jaI@1N;p4w-KN_gl?8-7PZ{Go38`E1fLC{Z*tsa9Cbg zPN;EEWhA6e0_kHrJEnWN<fHVjeKSq7Vf{`Yu>QbwPj}@0Do8yt-?J1nw*hIVRe<}X zp3Y7g;C>?5Y`5H~+#C}e=7Rfu{+Ui`f#DT7$$5d5KDqFIcrn-y&W`Dkkba$+r<<iy zvQbWUR0vi(GgBgh43dmYJ-~ewklko~BJ6HJ^l8BEK=hHYyTu6JX92m#CDA=BE78cS zEY$_8o3fGH_8{|7`WRW*^?=4DqTDTwld?czjcAKwcYjn_a;_o5&j!eRtmYRa<vAIq zfWimf?!^}8kTxdB&Cqr&*6>JzwgJKFpls~!v@8eD4}$#!V`Ft+d1Sb0P7=s{&^8rT z^FZ@~?v_ST5uTuUfVX*Ys6}b7fZQ62+780%w`53r1Y~}2WOz_PQWaMBRzd50kUDt% zk1ZW1L+e?v{ZKY`_xhD5hMSf`{RXcSv8xTrhy;ZxsJ_6So(v+xy%6aGqz+yWVTpH- zpp3{ozZ`J-0I3DDvHIHpRu+T&6Xp)B2e9V@@cb#XTm^+wC~`TA2&*7)`2n5_0nOEd z=YgSfSHY$^;Bj%t9B?{Pc?K@apz{P}o*o9!c^JnE(0C=N4D+eXPxsAqEcB_Y0FT9b zy7;DhXIjA286d0k3r1EKiLA~TS)IQ#vbt<!brrrSa;~WE2=PQ!TZwFrD~eluLqbv1 z`l0y26~#TiA?YY;{Zahk2_CzJheehvvf4`2u<@)y_NQ-FAc|Vl@bNT4Rhyjdoe3X5 zE<>J^g3o^jm#0JK5J2<pc;}GPLGyEvIv~X`*(fwU**K^&5j5uynje6r4_DZnI5;gA zB;|$$g3HecFN4(J40xLHadt}fM5#x^l07raA$E8Krh9rsWh8lo<@jeh86@Y0LFUIj z3<^MVA`u>tbO{}61=Wve_JGHfagP;c!ROw==^LjxAw-SAVzD2~Se;Q0XgoOsH1|)S z&1`_RkB6k6s6G{vdX#n$bj&=;D9j+lIHeR+?k2m3Ri=34_(z5t=785;;GQSQ_s8Cz z&x?u(3P>?BMZ|R|XuU;P6>)A&$w_gwG)~HK0*yE2B<BU0hUB`HfYv2oiSMi=ceko! z13%DQI;6g@g2WT<G3Im=Y+(>-RFRQv?B@bnmk<bUM-+qCBt#Gx`@*6R>o{Sgu~!bL zy%7ku$Cpsw(FAKh+Q<(wKOgE>92wzP<qKLHL!kW{fvyL2%m8J51m1ZLaQihoJ+;ya zF~@4;RR~#EW0{$lX_^*c6jlXlkAT(^dAeAD+sB?R`5--@d;y*>@rSmb(?W{V)55^> zNQivr>Q<SY>t+f{hbivhu?DB)Jg<z@VAJyCTuXx_W6+wTP;i|BT}x7$WE7MW6ya5w zWDJh?(x`~!bSOXH%g_lFr#Vs1P8rF$DTYbmpm{;x^rVQesuX9Z%&1@|(E25RkQrXE zxhY7V$V~DGs|<>W%1O!#1obJ6l8kb)JzX4;?FOp}anGqr0nhD}q(IXrcwP*mHwc`D z!VN*|THtdU$YEZP44yv=%}>d7D+cv5AZ4l}Vy+TY_Bq4W%$R0Hg@fk7QwoxDgUV7W zO~G!5+6(DdAop$DbE-meEwiISD+-d011Yit;!h`wG-oFx&^Rh|Zn!kk2)qUi><$8I zj1$96vy+UIOM~5l{6bv)%0TO1pzE{J(>%)4L16%2*OKc8UNaUL;Z+$K0WCv8^YyU0 z1=*h-e&tE-IR;^%c{>kZ41a>nbuj>&?~@0rrwl;r$l&Q1B=3`3k&~30Vvy+Us1L4h zoJ}jEBAkjN!~Jr+oh_3iJba6MD$CQoDjoB@gH5ZF-75-GoYV6>os$bdX&fHMP&Xp2 z!AeiewJb==Nde6fR(XTtGaIRHgZC>z;aZyH9#$G<9Fz~rKM;2nlqH6n<U{OrH1l*$ z&O?cBa6d2zoaT_?8kA;{(wQS{9awUTvm^5QuyiCn`H>M`dC8SXZgX}__jYjv%@t!Q zXMK_SmWZ`yNamr`&z{bX;Cehc(+Qks!F7wfTV<3nXl;@y*j=8^p!Ix?5O)|Bmq!FU zT7uTrr5NRug8E#@`2%d8J9zFHlE;jpc><Q#K=wI1S$evM6@%I*iQ$pyNNW~B<v~?= zl@n+ko+W6_BBcFdn&*Y)e@|y5_c~`l^|_^ZdQ@0=x(Ag-8i$pD)>?W8n^vTRhgGJA z`Q;?Jhk@7i1%_7?dxQPxm*ndPYp(>RgWZnm*NTW>)Nlu@@d(OKjPNZ5%?(9GfXg?y z{g5;OHw%*YvH97>F+DNdBpnjBp!JxJ8Ho{o;QWg0Hb^-RiVv_`!Q&fVMzB1Qj4%Tn zFX(PX3L}JnA!Q}lO^)f{b#h4IhY^>~j-WL)1<94BWhq9`F-@3RVbJmuW)?J$LBhxo zTz`PsptX3;8PN2F;l^B09RbRJpf!k~a>f&yesH?Qu%rN#24U*LjdGx6JhpHLrEh3_ z!Sk>|dQz@sb`&TMp<>AKmKN*;UhfHAZ(#uT10o!Xqry$|QrtoFua4y?`oQ%js9g;4 zJFL!t<<;ceu#6P<Fc)y!s0uZoBIVCwPqz}JIC3hAipVzebWX`iGBVAIj0nsF^+_T? z?Qf8qa@~qk!b3sp<lt*YJ>C7vl5+hrQk>IaYeo=$0L^nj!xz-Xg_Pqtpf;gFQl)8C zl6y{8RIq6lsJ-P4N$1e=0v@(V<(E@#lDnHhihEcoD9t8kqQ|Xcx+iMep)@MjvN9;# zEi2I(YKOa9WpXCU+Sqh&_b`+?7Z(1oatM)6K<cpA2~LlYGRrf<6q@c#L3MLZs;gx# z#Qbb{8c6mCt4egv$Vq~&aRBRggp~)VWffZ89Ti?)fGwSZ-RvG!92pU05EX8c4^oGm zR>1Pkj?lIiENnq(6{9?Ylp)~y1g6djInShl>LyTJg36MVaKoIWyr3#Xy;%+`V=Q5D z;q7Kw92IU-;N$F+mS_}a3exNAQk))PRFab#>}cT$kvI2rvjnBRB5#bc7gTOQ$|SI! zFz}i<P#Fkq%lRci#gWo6$Zx3m0vrZJq>m_L-(uu`u_w5^O2$arnCZi<GO98gi#m|| zb8<bM(=*a?A$64xX#Kf+m`R9HB)FdQ4#r3y8OgcHXn6tTCxdjvns>*1SlWcNxj^+& zGLH0tns=gL?Odd^hpQX{hnq)GesZp*v8QWTWpb`%rMGhmXnz5yd;rHcEFE~d8yY4X z2c}2nhNgqo`bP#kf$JC_X9x{(XL&l7wqLQQyJaOT&3J;=c{*nhuNNAx-oe<y43ZAO z{s83x*!lvP-w|W_VEe#sbS((+hL&4C&Y<<pIaRR!BG?>w-Q#5G;|$#o0X7d_erAKl z98=sw374O4mN2y_?K6ly;I;ClNyb6JQQ?N5Ib-m=NmOn{Mha-3KxT$PqI*u2cd#jF ze~Cd<gl9f-n-fy@AiEDz&VbuN?qS6~d0sh5;g&{G*xDVSHez^rX>x8@321KI8%ucw zPcx7@Hzv^+Ax3sfe6!xDR0<%FRQ?v7Bu{KW8zY_PjQYlU+v;B|?oGjz@b9L^Ab zz}IOawZVLHy~?6IvP&b4EK5_|-3pTOe6f^=PL?R~=?rQgMW%z|JjD$fCgFkbcDQ%2 z6R19{N;0a*@ySccNX|9M_X79XAZs4|Go3<`j0|&NZ3IxAm=a!*4dO%ln9w*5%l64c zPoqeE>0C>LP-u8Zxq#PSLi|rSz2$)R8hC-mPhnvO>SI90%aH3(usUyN^m+`lj0ca? zfZJY>wrz5yDXcA03=#JQ^)H}(^9*pk;G3BZ>L-B8aq!p%yqpJ(n>jl{)MP=+{t!>X zWqk-_j|_5M6K)8uCn_V*(g*T50yytDJEo(xH*%AVz1%?I<df@Gp6p&>3T<=1{DW5B zBH{(Srv^Hv2{xN>e8BP};r#C&RgmNnl#`r^*?t1GUp$>N!2P-iP&+&e9Og)MpD#R( z`as4v!2KYIzq9k9df;_0c&y095mwh$dAgLRL)E~=yeo^b)M4PUlPYM~S3%mtpgI|v zHVjL^b-OQ0zYA1fLCRiO+Y}OZ@V+j%jDVN7&@vo4?o%3-n^O#0Z-y(b$SjvZd)u;! z$R}WRpmHb*+{OvS2ovxaF|>{VwQ1mee^~j1)E)z;pUP~c_9*gxJjZ-+{{UMVj20%4 zwxelAvWHV~YA~#iQx0ic;_Q2Z*2{p}X@LdkWnLQYx)7<Y4Q;bP>p`DfOJn5qACNeO z#51Uj#!(-F!!yt*qaevWs4^<tgt&Z>8|0Gco>Ls<;gyq=nE~okL;KlibsA*6E)5dS zj+UUk4~Y@bF$L7NY(Z3}V?L;E29E<eXCsZVLHcdry@8<ixjQ6nlUldJ>m)ZzaNP`Q z>qQz>7)H5=Re{ozPaY^Qg_WkbBH{(Lt&UkY!Og@-Q>G=65spOF`3N(@ihXh+^=xu( zSSg0xC}{#w=cWZC&BcJ~OQSGT|4hd`P#Fd3V<p4a19*bR2P+JtLh@0@nGkA;DeJ&v zt|XRqf$*}<4>TT&DC-OmWnCbwtTP~@tTVt>*7><%ACEvO>(KHq!vF9*3`rx<vKu{r z!s86mH%98;5RR9`aMP?Lk1)`<0}**GrxZDjLd(2j(D+D{dzcAEI}Xui)`sLc)c!7p ze&o8EaNP+?(?q!0Fe4eum;)$`QR__beghKIQ79rE1v^@T#{8lEQ$s{L3WcR3Ln6|V zA<lG!V_XX*9YM;slE?_B@~CidzJRp5!a(z5L1jL<ps*k@O}QI_>XDo%XVWTB+ZA~q zuqUYe!)POd>T`JA4WF|BjWs~VK~d)!K;oEXi=)0LQW=&M4r+&mWy9<8U`I1gn7c@8 z|3dp6M2uH?K+9h&X$PL)klYAO-=H)}dN~U(>p^uWbj}LaKJYLAr7>{+N6Ghu^GA7- zu_NL90a}0KoRN_fZfTg5huMAs_W=?6_hIVNJwpsEJ)KiZQ^E~1qar->F!DZVy%(r2 z3OZZB#UR}mId6md*RXL(us@x^ZC7ynCIZ}cO+s(CgWFMHw>rYdj9_iRWOvJQpIonk zq})L0zINyw5ZG)`dQ1WJ7jr;kG*Ew*_+V>CLEC9Qc}|AOM(Oz=bG@Bm>+9j;T$b?o zcLl{4q;D6T;|pn@Mfes&+Z8DN1W3OFG!AP}><QU32kEo9m*k{|<fnTXgY6_HzQAt7 z2yaN<hqP@V^V;Av1Ib&Ebr0Y+7^uIVYgvg}_C<pFXe5?>k)U)5ZqNIH_ShimP$NXy z7YQr-jEE@vjBu8HITY2Qka1&hAC<H*JI`=vSrrT)Gc!o^@G48Ggv?<;=Z=x;TgZ3= zIL|n{X-61?+lrN-wjHQ`L>|Y3^u6F?+~p||e)&GRptT9*`EY&U`W|B(0Aox7o*v1l z|C5a}3Zn9eDGxzy!6*Z7cej!x<FL{cjB+0`ww(fAM{Aku30LQs0h*WdGBPzx3irxM z&cr%K3NKdzf*mU$X%>;+u+(wT@pI669oSqtT)i>4FA(gQ9|<jge1Z)y`elf@I?#S2 zzkF}BHW)NqVEgL9dC424%?m154B_*_(6S5O&-QdNu=I3s1+DRgxD`AX=4j?g)iT2m zv{yQZh<++`4uzQZbTS!bK{BE&0If4Ylm*6!vLG2&78nyz78v6!3#d4D09wZxX%t!t zYA+>uAm*h(<4DPs*<_aE;PnMrQNe`!ImyOO;P@kEoXsE9PXU)<kp3ny<81!U@NqU1 z(AWcFoGm>)06Na*51V5NNhe~QEdw+Mjxv@H9qTbcudgBX9qxK35!_z(EcSE<?_mYi zJ&5@sm*Vt9(43EZxw)r%HV$_|=1O358=$$qC}Y2*#4rQU+y>!t8s2__l-X$IF?h`e zp0t5l<|Fz!;Bo@F{DOo7zIs2b6k660QTM~u;+g}1*8ku(6p~v|;{no^f|~`(@2LHR zJh)tGBxnxG89ILeZNs6I$L>*O$(fG%U^5|ebl|x=P#%KK_Yg7fXX+gc8e;^tg|gEF zf*s5KD<SiM{-AUKH5VaPT!hj70kt<lYf_+NjQ+Uh|3Yxg%cG9}poT|oR9SL%SVp8# zI;=i`q*rI;vlAd|QLwoS+8%)Sg+O5gn#)UZ&!|i?PKJ!jg+k`ckkbyhy#}5$NzX{j zfs7ORRwDPIVRMP__{s;H4UH$Teo$K*quzq|&ydmxr2ZtBUO{KzxI)$x5>fADM7ak+ z))rJ|K-L8rg;imM5nBH7$qOorGD<0qg05Zkc8Ay(1!-GXri6!**tUkw)j-W7!rhh7 zc{J*}-5s<x*)NC0ew;y)QA%DCY>h@G;d&*--7+uAs3Hftel#Dt?lcE<-WO<{7%2Qu z`XG=s8=$k7a#Gwg%A!DZ4Rl@z)Q$-Vb}~%L1?}g_DFuxyz}DZTgomaFfck;%riMwN za=g+p4`#PlrK1^mZJb9~4rqOv7bx90C#QqP0%3E7UdVGLps_;Kbyx880&#<59`1El zpt*B+8UdAO;PN}g4Z4mFk$zCp4QL!1r7VNApG%{_Ye7)Q-a+FO=wSvPzl`uqPlB!M zL|a=J6<!V+F9WSB1+S4tiFa_{)CulKA4D00Hhus)V-0DJ53CQ=_5{!Q=0}3g@B^)D z2DQ69Op8HhtDy8Zu*~7Z)+Bg_XJjNBK*9~Orppi(|ByDjF*M%<Cl`3SgV%+E_Sb{f zrDS3H1r!IMIynQ`O`tRVN}?iy@{^1LVPggvQSO0Q#|yya6~rD;976p9oA)9nJ|K0u zr!!(s4s=Eac&x%5I?fLZKNt<)8vrT)z-|DQnJD8Epzuat0|W9eI7~opEle`XDTS>m zg`@|xF$h@tc6I~%%Nw+w3$$(&)JMq;b4u|5tu^&BOmPp*_cDUS322=$bR7q1E*z3p z3_$DS!DE$Rb5QFGJaYn&w2jnmAv`t=TI)|lS(z6V5tyG0I@<!XPY52@iHz_9&+}r; zeL>trN`8aR%alXX5~SS0(zgS}O;|Cg%^MY7kpy-d`ZzqcI0mo#g7yd9!-~<<IC1k} zkhNow@j&D>KsdZXdvl2hZ_s{UXm~@`L1Qb=!EFu?(73N7c#Q+7>`Vcl&FKj#v*G(~ z(C7F;X&pRnK|;KM!W*3TLF?5J>y=@73{0b}9RSV!gV%|I;|3$$!16KNT)2Ad<uJ1P zu;OsgnlVWG540Dc9Lh&Z`$+1sr2~k2A#2>gY?yjP9Ky>9jJ6eg?G=W7kThWmSzCd; zCLPx}I;_lq#3MMo@cADpt%J%WqsVa3+#0sJ12zwf@E1l}M=Adh<tf+?$n`e7ABA&` z6L|cMh;$8BM@(PXHw1hh6Q~UiUE4>@`Ucl>L?6So98@+S`okbTsQ*!sla%EO?|b-$ zIO6Dgg4Q%Z*As@gg4doy*1ACZ=FmQfZ-^82HNdES4R9Hm6dq=f=xzyKw}svpO?1!6 zO>su7O^q`4MQ_J|&A?sGg4+tvu`1J0&{{B%|KVpX!qx(T+JWG6VM$1%;Qk3{ohoR( zxKmD&TM4wj4@v>e3xdxsh3?M?LY%Qnu*`;qM?^4uzA7il8MbZ|xm<;(;f&-wPgwf| zR1RU}KUlj5HeMPA_AAug&X94+lyLa|L+JUgu>A%wdqCwQwEvU?E+;{GEjJQ$#xPpH z3tUFP^9M{nVxIwcUnF$RG*~U94_gVFe?V~yhS_Lk5k@-(k!R8Ts}G%@NcYb~UGE86 z^9;`4C~ZcBJ-Fuf6C;9hl86}Zf~d=Yta-*L^AYYvtUC|#4z0{c0=vnu1ftK)5OnS` zxZjFWX2HW5XE{`slnL!Sf%6~on21H0r+b(YXm5t6dqzf5ZV>1^gDOPd0JM(@RF<Ny zQ%Ev0$&Ui>`wFV^adv|49}g-6g(LVpR(CJZIo%j(9a1-g_NRgOL*=C8LiU=0`%=y+ zptF+;l5&%=wvl1>f$}eS{4gRY0(6F9a%Be09Q3jQwH^cK*Ypf<m{x-JXgNaJ@O66y zNat68!x^oO32uWS`47^b@CXC%@ktCf&56Q@TTnd?n%k(z1f3@ic02UUoFrq=S)HhP z40J9X=<FWQ9*lrsr_z-0iefZ3VD%G{n+W*<TwX@yg3n<C*E^B9Zdr-Q^%^KIg3i>1 z#33k;BgHRxej2g2!8s!bV@v~7mV);+gcXDLFQJY5Bl!{QI5W6BfW{T54}cg$!_r=J zc7(4_LJcQSS%p#8=OlUfmL?lnmP7>;*{AXV*B=I;v8AX8@VWv>f5gbtATm6s6qNRS z@`6D1aZU=B^}n!kHw83)Z4_qU9qg2wlnJZP!is&IopL}J$6g0$y=9UP(~s##^uC#s zC1{@=>Kf-zjC|<n40Z=-eFJEn95}7}I6Eap1(!qi7a3xji)uGy&9_f3cx(`@-wxUb zg0}w5*)biKe{uKsA>|OZ^aKk>P@fiDR(L@7v4Qik6MTFT)JDXvACwP4>$=>sqg)~O zfY()m_8WoLgoDenz+z8#L|%oQaSu8_A6uOZ+Dij5C%F>ZZ$h5iMr}KT&jN`GFGpJc z1*;PwG$d?5=W9dEMBY;b&JQs2klg1FK0m#p7@U8>=i;OG<3VFQDD?!)40wG3u^XE@ zJpDazT0u?=gvU)SbE9DO57-U3>XazZULbH?1RAeHEz?lj^5A*|T5o~Rk_Vra58e0c zigaE->@Ehdy%7H*nF}i0V08yZn+XypkiE%Cd11v#$m?w|`c6(TbCAtUN8A4k8Cwqq zm7$P$P6m$^60Q$H<A}KGJWzhe<~~S0M?!lRnlB(_Hq3pv_Dx_bQ$TqP(iet|sfCup z^Q(JUF<8twJp(!XLF1{&d~n`&4=qI!D}d>P#|LOnsfQ^nyh}m*rK2J;0-`cAa(r?j z?)DDGvCjxp4h5Tn%5c~?w;Q+(;tCqi3d#Ym+jR$>ArIcuUhIkH7UXn~$d`!rTU4$a zXdf*`S_0)UM4Jkd4w1*|u=PhkdeHMPmGfn3U~YwBGEsTc)ETtb-y5m?!6;{;bv7j3 zk>9@Z3`dl~-oc2l1)Gc3P63Nml90yTy^2#Jyujyh!}=Pjl}_;T8M*vNDPKWnm!tJV zFyaF0|42}nX2a4UW<7{34{8r0*VV{!-tM^a7?K}wj-BTiM1^Bp`vFON;5kbVSi1#$ z-vmfKD8GWo%;5Wif=yv<p91I_MwmKC+t)o5w1=n?G+v4$Z-Cp(o)Iv+veO}bAxIkt zTz6GM*xv47H-p>&%6Fi(wJ^KT+Vv1WV1z%YOh$_%PiLp>BqKk_Sc$VKXig3@zk~Mj zg3d0kOfL3>qz{N1=W@{9Gobv8X+O$-D(r0vFXN!HlyJX%&^SOcXq}O>6Zk9)$e9<Q zwg#3tF_0gqH~v%>l^X@lw?vFV!PVl;<D`#UgZ&I{Yk}t0AmIzif4SJ_H^6xS+umi^ zm>}2;Pw?J*h+0s24mkq>RNsKk9Q1Z}L-cJRZA7p;AnVNFeKE^`V9*^j&^8pVy{Slj z4A}iA*wQ+@9fZ`@fQ>(Z&R4+DgE?+N)%9(W5q{A22DI-Fc9#=q&H`<JdP)wqz3Fhb zW2_IWC;+by0re5l)<=NrM0oqs$ua_Ij2K}aV(lm-OoA-odnX~|6W~5-NH%zV3}O$I zGnVshAnK9#?;-8Wfy_rh&xJth13}l^!sagBkk-+m`4zNQ9<p}>Rz^Y0L@u*Idsa~E zLdbeR#QGdie+a$r3Q^-3fjMsp?ZbfQxL|b@NDLBIkTyQrzEWua2eKX);vNk9koTw; zM1juA$pq~)MOO!E!-3jDfr#-$w~~S=%yT)A#vu^ndeC-xv8S^uC~twsFHpk<WIiYi zO+o1p)K>NnaR#$d+f0!8DA0TlObv*QO$|7ogX+<cY|xyu8%8@FG&T&|lLb--O%JGM zA=Y7l#!`{wkjDTK{XlGK8N3b}oTkdtp>{y)jUY%^fzxVWzOOTAydCHHUC8G+7ND)o zEWq7&2Avgv6qn$(NCtTB2s{VuoC2Pwh2AxXES{BQ>|`2dlmqJ5m12<x?b9rViu;GS zl@vuq<bc+~f#Mf=Z3I&O0`-keeW7ztp!kE7L(sh#P;qz|L(0t{c-aR|L-78+X-I0g zVP=w1Ik>!!Ksuuh`7BA~G!~Lwk%UVfcx|Ptsjp8SsO}AeoZW_!=PhyTg|;oA?gf`o zQSLcLpfnZbZkYvH^A%VMJHsp}ydnp(hb}!2qz*Kv4ekRV&wqLN<$(67CugTX=*$f8 zydAQCz-=|?UODidEl3><2|q}hf}I-!iXX6k&^bA<Gzu>_AZa2yF(L{!FO1$lbw}KR zh?JI`9n(Q!3ZAcY1D`E{RNkVVnFKEXG1tXa_=46vg2uq0=KvA2hSN916~4CCH^dcX zZ5)^nUB~Gg;tE?|Tj3i_czv92h#M&VVq42u;Y<8pBTzX3O4~U0YhcWifX`%v#|5M= zMk$j)b4H%7roPB=4-QYH@l;S+1I0xmx;x=*BWOR{J*+s~7&Hg&MA2LnG|u7cgh69i zkoi9Jc{oU$99-5y_mH61Sunpq@;7SufZA-Jwi~#tA~c>32|MW6C}K{Jl)g8-{=_zB z2dR6&`x3lS-2%yTVEZBdg_H%5IvLbo2j_2?JfcoPbE`!<bf1F(XzV5maaIK=O@Yn_ z0F}j6@H>9M<~doy(~bw$d3I>M0$r;HE^D2@=R%^ElNtUY&gJRgcy&hIuj=VceA^JV z{tFb}pfriGz6F$K!E=lx^vzMyFrM}UI6Oe@2*T@JFyaKP*9jEPi1rPZaeHiiOIUe| zygv`*fB4=!X#D_7=V`&Pv&1231+>NmH1CKgW1T>48qoS-(3w%F^(Vxg;B-LB7(4Pf zIVev-;u(C`CTLz5*ZLID+%>e`0PPKj)Q#};26hX?52)!KG{=HDPk_h+$ZN8o?I>v9 z0MxFA?ZZNHV|HRhBvLql!Y2rH2CPRE=-j3VPw3hoXgkcq5UCzQIzPv?AOvMC1-AMK zv~P>#`p6ThJ_4OHhghrai+p}Zh$o^x%0#b^Kzl1wVCO_s_~wA?Q_%boWQ@WCzP1AC z{0?Z?!RmTMxdJ}N6ESBT2wnr744cD-hBfS5K%Z<=Ur=5}s1NcEg^s6z;|y`{9e6$y zavnZt&mp3}7MufFONiyH>Pql=((wBrEs*!M=fm!I1kH89&cFtpcZKu(S?IVu=)PmP zUc^1EpnBIFbl)NT+<v$6OwbwLIL&kMgsihSw9H91fS$)4lAjJ9cMXP?t<ZaTeJY(S zLGv%*Gq<xq=VH^~JZL=U1^ZUP?{xsTF}>jH)j)f`@Z3*P<y+vB4LwU5I#+=s?2z*f z=*(HPv!F8yQk=`v6OF=5eVm=LqaysWydz-qFNpD2guCGDMgoz}t;RG1T0W*hXz2aO z7U|$}GSi~a)5RBj#y8}yM(|z8NbaQMen!Z-pI)%^4H}2S8~(1)ejDhnOveiUV3P`; zEYDIuXU8&67gs|N+qcrh$P*qfSp6U1<LngZ<LrdAzBQ~0bpK_9M_@MW{BUpQAn5tt zfu*69jzykG{Gd$7LQiM6G~8)AumZHM%gX>7=g!HX{k53!8Iq6h9<3@r(77vl&~hAG z9;gDHwN8UP0GV6QOLDi&1f7)&syFf9edb#U4Zn0x=kj#${gc6vdI?mn;khfN%C{17 zce<yuBWRA-AQe%kS>n0lGvBu=5OPnsvtzoCvr|6kenpTwL70GBjgZ|M>gE*?=4u%l z9_Hi*a;q1(Z5~tx-ZL7U3~5(_%Xchk6{)`nIh!@K*wY=n7P{Ee1A3o*a1O)_P`eAX z_QEwMB*GvnAT-<0EeMp}!TZ=l)4ehs;c3q&I|^|osB?LGaF}0OkU>R2V742$o`AT` zF&8CGBF!`VI6HZT8d`>gxw?f0heGyUf$l``bdF3%<TcX}aNPn4?_y7oy9}LzLkxog zJaM@z#|gt-f!R6!K_D|g=M#hW*#@J!D=?=5bPp@|j7X@vB0{s>0-^B)zPka<T@fhm zf|U&(z92I!!R|Cj@eMKXatZ;Rb?gqhyEGKEZVYs9YEHNjDEz}9=i54Gpo+N|fbQIe zryEF`3o}V}1NFy(%E11H+vk^roHinm#{NO=O4zy+s6RmA?GfT?=^PkZ4%%M}&pZB^ zXmL^L1eL2uN&=k=A7%jBf07?%R8bb0>sE~7evcAM@34}<&}_@l5W}FTP}i^&)UW}K zEkVY#e4L%iQX&H3X)Q54G9NkJct^m}BWO+u6h??M9YAe9Z_u9qU~qf1D#<vkGSVot z0C_DS=zeCTbLqhAev@+D3=$)vau9BEg5D$Pm;tss+cG%NAj}m!PmGw;0`0$m&Rqp1 zf$Fk|V9a%n$ZcGZUqIt_U~>@e%z?F6yu<y<lJbHIlJdfGkoAGw3@gt;`7*^l#|U(0 zdUB>yIq3ZPsBon9cJ7vj;B(MHcjIJ&&d`R=i^0d$^3#)zEDe)${c_O9$vmAM%X})G z%9EjU+@9_!#Ysk98A;Ag<w-^r#VHZs`v%iN;S6#|Qg~QZvb$SWRD>TQKOv<%Xqcd< zb#S<W@-gUqO4zz1s9QjL57NDi5bG<vDnWjL#(5ZIY!DGoVE1N%=I1>@cOiy{RVG(D z86?5eCTM=mvJx`q3OaMvt1JnAmw6zld<Wg9X#%+i8PdmwrgP`uP*X^J!@|+s&mh$~ z1C%z45#a(a^V2;+_icNmfbWii<pIzcgh_dRpm7=SIn>FOkahaWp!PLrU81v7RwC%` zMd&@|Nsx3~oEQ!|Yu(Ef$)9H6^1?7BI55l+JWh!oZlH4jl8ixjomr$KpCjY#>Wh;8 zVg2eLaQ_4m&fe~>#h&h<J;UhgLH*#IT<AG{=;L`Vh;|#ao&=Sl9)8A&5kXmr;B#By z=l#R??_<>iSrb?l1=^pQiD&~R<%Su1x<dK{pfl4!<rEyd`(=R66!#6uhp*A|bT`dO zsdRGjc89mIK;<nGcFKwb-KFi~X@;~G6Wq@Utjx&padyf?UlReg&%*$l9q=$i&aW8i zU47x>TafhxkhRv3@!TNPb4@|>vyk>H<O~yM$Mm2a)Up#)zXuwkilN$%2*02#Si2e& zKcKa^h8c;Fdtx$D+;g%#J)&}w^ZW{uj7+OM!TnfJ{)gZ3kPcfbo{Us4rv+!{gVLHe z=&T@=`ZhAx(*wTN2$WYqbNHC~8IqTf#)2VpU(m9@05oO=G9TGbC}kjc&qh$0r#o~{ zoriBa=$;Bld(9*#(7@6^)G#PGEYvSF#LzRxCl{`+)GO4~DI_!$xvVdU%FF=Odyx96 z64A~9$D=dS{Wy711<83qhM=}2XkC#vysYyrP07uvOz{ZINCLMxN-VvDb6|CXr6;IN zhW3{rW;&)*<exl9Jr8L=ndF3IyZHqLhat*f$T(L%L>{#r6PgKGlb`D01nNr}Bvpd= zjv1i(1#;$(CDh$H;I=5(kI;67k2CmeUC=qfhNx>%q2mXjv<q%u1i{7<LG=lwZRGA% zkODea3fu-o^iO=ULFeN*R`^%K(kJL{Hou%G40WKhGaM@s>Y#NKy1E=tJJHbquFk{H zATlDTAQF;(5pB~P&^{MO6NEZQm_o{2M4u@TR8G3M8iCY-;tafJAHz<t+p2uCijnF8 zNE;KWof-zpw|-fH=Fob!Dl#0_=0MmN3bC&eban*DKF}HRp!yel?@FZ;bpJ;nv<?QH zaRI3-BAp@jVegM4+T`Fog|!a`x^s(^J{WZV26X=zsP1#mFi7!ms`AgYD2oEk^?8J4 z`sDhRB?ViWCAnJ`B<EUYC01I3+p#|31yw#qIaSHVp!qQi6TeKqf@EVq!zfVu2XfYD ziEoIjp<h*~sjrKt2{=yB`f>rmP9;f3L54}-wR9QfNyc6V;B|$F@&|U$38YP7jJ$?E z8B&Kr@3Zj9Hp~E@?;m229un?mkO+z2bkLee*w_}ROakX8@VzgfyCouVnhRcko@weA z83DRK#K6+i6>5GZcppP9$SkD&I{9A4(7B3C$eL%b%52cRDB%1IYBR#^b+b&1s&oY3 zlaZ7cRuY*TR_RrllNMnFN`J8Sc)2;aE#e*qI+vz2#n~`BF~Tn+GPfefC%mE{33M)a zu0;uS{|m?tY~v(VpgYS*7$<>^sg_1~K>C-EvKZ7xhmM7z-A$JYy6YKS@0ft@QmORG z3M}<?PJxyiL7*}jTyB8ch!KXCIiP*&C}*ODS*AsS=lsC^CTjQ@e6Jh{eg@5>;JVKY zDLg=9JWgehyShz5^+TDbhhITbgi~=8<V<UWsE7;$Pj}E6Ye5A`xhbGHF#ylWy1OCO zk%Y$PVCOajVb2%HeSG(*Qc&M7(cR6!$Jq&XrgQ<kpM+v>Ms5=9t}0l);+~NK>SKV~ zoX~Ux8sE$Ij)14*+$4Cr!>KC8D90euC_Nu^Zvp5|9hCMT);1hUyA<IrP}>rD|9P$n zWF0SfjS$!`87OTx59G7WoUpa~kjMWZZ9n)pB&a?@?EUZrg&Fh=u@tcX%hMx+%hMx~ z!Ui-K1TJ4aAbp8QBR5ccw#px=J&UxiCm*7}JUtS<%>n8kK<>Cj?B(zX%8!fyt?5Iw z(~<3hj(Hk@+yE{wQP-5g_tSVgTNHXao0R(Gg7#U0?|4KBU!*xGkQ(?I-4MG$dZ7C- zVRHbWIzI%`#)P^7TX|wgL3u(%dd@LGq$$w4rwn-6kr)9!8v(5ingct-2z<vT^sKpj zkXr9b$2?E>oGR$K@fj%hP$1uJfQX}l6lmKHkN=HG^goeh3#6=#a)YE*Xxoy&cw;hr z+{nk-DGSuTNO2Ey1&zUj+9!C%I1S);cDrLQ)A8x`4bBFQCn4vzvdG*5&^_?Qp5U<% z#D05tIfMw~>`-UZTyN0bce!C%NOK1$?)P?aEry+o0zXgA12is$e3noKVS8crz{gA= zcb27uBgUE#`2;#PPB;yK?;@ps{Q^k?k>RER(C~!!bqS0gn;?%L2Zx55L>L4GgoIhT z28Bj>g=B-z!AQe1H&BkOKgHcLFgZ7;BrzhWASE{x><0Yy2O1#jM@z#n{V+d)=L<pm zA3=Q-$laLGIa+XA4c2}J-Gc+_PdMRocZD}-e+=Ha70?;Dh&l*ze|S!56w;apZ&!<A zPdCS6PgggC6c4Y0$h<HE(A}8uwCnCx8e-&C2-<7u?P>v=?@9M`1NA$c43Z3;DigyE z3m{{88K8L_&^Qs&`9)3{NwB##=M2<29%y+BnTyZx3JS?c3v#vei!cas3j&Q}2j>_h z=Rw=&(7FhbUV{R0xgB1gco?Kd8o7b%?5N-zP}{1|(><&t*(1mlRE~K<=Y1jer{{sz z=6h9w$6Qg|30}|doB~>d04h^U(ZdRMMi=-_dgvKl-p(mbkw$(w$;N(V$$7q@^ScZ@ zJ^T!lLFd!v1?5CJyXGP4cu-lNo(Da539B6;h9!ZJHF+rUR0`DtA7_S#kE;bl4BB?U zG7nuvt9fWhn=hvdmTm}?$5rsVNpY0N$Zd_ph(JU=@1B$E?d(>N44>Bn&BtaJV2uy= z90O11;&f2_CWFpq1>G$aZUVkj6qL3-$*&W^X^DjL5UEW~OdA)aO#odVWs(l>OM(35 zVgTt&LGvkitQjPZw6+-3SHq?UDQw~QK!WoRmcF&0iz99Be8v&)o?*D>@cmp|q5IwN z&iht+qwHT!N2DD@os6$+&W|v(G>!`QDhKUJk1+PiNsb6BNX`vQi>ORD@U6_w_c979 zNXZ19ZR(g884R9R2Cdgd**D<roMVm{qjfa)uXM6Z3(hW$1kJMqI~s$-+XKF?7fZV{ z5PYvV32BVTb{Du$7YZ7?PpnL-@^sB{^9SvBHug+U1h*YQb%&`bwt55HHYY3IJPT09 z^_>ypl!&qm+7@xfx?aE>bjF02k!v34eh^TZjk;DWy#V=6VZW;4^t1?r0-s!0@HmGb zbR7?D-5Qp1(Exl$ItlA@VCzuvtieHUFXp7Whas;M!Cl8WyMo3ub0RBYcZ!402t}#W z!0~|Ap9HVfLDa2~HTAgb0Rvyqz4Rpbm)P}4q}K!Rd8lIKyHE+$AHJE{p!-~*>&oGC zh@dgsf}~8RvLyGw^x)7?q%sq6&#F(ZAM_4v_#G<gi4nf(UPiDq2pPwK%uVNj??g(B z@Pm~Z`AF;8A>|S1o<(Rm?2WSb4Z|L2TZ;TT0OZbqN|b$juzrMF670?y_Z$Q8{Dwyf zY)lG5V=dnUX;Z#~##LRCOMQb)Dm>kS%0fN73X;Nez;o5!?m3|Kr3RjE#l@a(PL)yN zpm`jxoG3T&{7VX?Z4K!gAcZ?<T^pXZv9BqtZ3P;8hU_g5%ZPFY-_LE3=pLFL6y|H> z>ETx%74Dm!k{ec;Y?M=$lv$phVicMl<(`wBl$m1S>7G-P><-(T;N%$Sf$Db9d~C82 zWWEAqPh_}hHt5`(s9@0es9#x9ZXnXy`M`7^(3uwQZh4;02B3AtIZ+^cbHhM-Oq1P1 z!RanC*a>>J3nblP9|uS22ZGm+g(8i;fW}(E=hDN|At(*xz}pUqNb3?Hc@#X32D&dA z(q@E?kA;HgRGi>r5Z>-lrJ%f+7!g>S;%*rN>MtbaCKo`*G?B_U$hb6$8$f4;g65Qv z#-BiKIqzVEyFhJONL?5R-lqXs!vi}1#xWmy4og9bvnk}vvQW!hZ_s_t!H#*zZ5Z&H z1k^Sm$X}rJf*6AW=ZS1kJ#LT^;Z+LmYeW0J(7r&%fchPFM<yf>xFzR#l_h6pBztE2 zWkAv;Xnh4Jp9CV>uO2~Vo*u}3G3eP5Vde07VBF(6fixc1g3g&a;~g7;r#(++ryS6{ zKvaYmc)Z`!8FWv%Ykp*IjsfVN7ts17-{5SdGeW?3D&{7Jrx+&Zx@9K0hnjghqp8nC zQE!}_n`00e?o}KGSr><)-p?6DJtWOR)Pnl-@N;Wn^)EDR4WKl(HXN<S&ajUwdK9Ne zID3KCIA)}TR~SS%dz#@}zvt%yYQs9EMHq!ug@jvXr-WDJ_-8tS`|_T6+75m+YCGU- zcl*QkA>dh?>Q@E369Y&6ibt=%i)(>TZe+d}(jGe4o-}OjMOyWvy^O=EKy?YIoQ*UN zg!RuLYn|QQK<g^-j*<GgWEXgQ1R<S;4QU&J>MGwXS5SRi<&))U?CIubkPJG*y%Krf za9C2Ht5X5!-o(g=pt9r~gM4URjHliW1@*UJ^+K_ya|(<NYO5pF4;e6XbE1&i|By8$ zrfHx#8HAgV)n<dnaLPPAU~9pkYZ)Q?{7NH?VCTZ4j3a~cD+q(ygQbu;s+>~LT`Q2h zYf<Lu;#uL7<yz_&Y*Oiy<(lpl1`Q8`9MGPMj1+gvO3-*+in}GaF7ygE1)JmT3~8@| z`XfknP(IQaJ~*yIz-s~^<7J?Jl~0bP0mN>wJ3;3+fZYSCTVY|42wr~xnSb#CuUpG0 zg^kZc>L}P5d5+ov!A=2)v%e7aX{s@Fe@Z6G+1%i^by9AqnI|}HghASapz$>ir?N!o zT})o?ZU*4-HFro@!P--v&XBoXpB&2qPv>GwPpBTa{fK%L-rhiRM>*&WWYD;Gl)Ggq z_)b6YIWRCc;OzsGI?h659~jcMOmVmLN&=0`8HIt*A;wew82Uov9nvR&?js8a#})qk z7y@6*1xkyMventKBp}lXmQS)GBM^BMx=%0NC&VN@)EIR3vuU2EkzZMqdsrYi99`WY z=?F(Z963#fxmu=y))EDWntC9mPk0<5tA))ACc9f!A=EmigW5^SnNHw75X?Q^?r{Hu z?$ydjan6R%%RuIF%0c&ZfbP*O3l29mhzd{1NzMeVbMVDb2U&B3IHwgUk3iP3gXSsW z^RdwNeD2xl0nU!);4xYdJIf$F$r+Icko^r>2jNu-I$s_oKOna|GC+ASxzZH0p0P5} z$TB-B)Xl)#9rb=M_&9~TE7<N-_dpY07sqtaTB^ukM{Q3RCzB|5uiU6i(AhptpnQ@J z+Sd!3XHIeki8<y+W`g#Q`Ibf+Wn?60gX7dG#W@42HoE|HCyuX2Ms{Qs%x|9Q0hx~F zsqR6!QMt(L(H%kaQK2EA_2q6}ULo1ZAbu6-Ue3q}FR+>5{-3)Wcs?EyCyt=?*_e9r zAa@0MyJr`Bx@V_*S2|XL^*U!{fch*T_xQUwmV3ICTX?#F&dLSt!^p^l$${MJ9qd>H z^1pA0W4W)3BRp)O?IJwwqfk=!v>=V6g2u5NjlpHOvr}l2K@Mm=Y+h7^7ue5`K8{~b zVt9EvD1O0fW1K-}pyj~Zkf1Z{lH4sp_msfaxs*obR+Pcdo+KiVf%-G>c@xC=BIwMC zjF3#w*tDair*laG=w7UVN>DiFr-RP&@pLgs_XV$=k19?wvaAG+)kYeH6(l)lgXVH! z;{=d$8e6|Tgw%Z}&^Z;@nkP`-JQLJ6hmUVU$2Wppl8iuW&vQU+YVe*p$XZY6UJp{k z1T<a`8kYv$dxf%J82dbSgtM1RWVlIQiZkTw8TdL$XQ#5HOvm&HXU}x+N+(cw!qXWd zZ{`?4`jSC-!j06mV&!=D2O)=PiXmt{FX%k=#Be_YuPVs80&qHXt?&xW@p1~y$p*Da zAlStKkGbiFD0^}c`<@_rL1TaT^;h`@L)t0e`pUyA2ecOuGzSSQ3qW}SUw!9?Qr~41 zM7cxeMTyj3<(G+Mzk5bTGPFHJq<%v`WcRxw+GKEZ@cZ8o#eU}?aN9G`*efS8A}9y! z215Fg_e6otp#Y6xLF?l%(0C4h{l+Nq=bn<20$qm+o{tH&%q0;1#%TTz4GQye3Ujp# z2D_bb{2Ti@gXSp^;pT<xA6KuiAcK@BxLHv1JcBcmB7#jpXP8t$##B<kZC=p)SyHAG zTn=>iC3u~ln_os$u3Keduv30ygl~FeURYj~G2{%h<Xks{BxA2CPmkoXq)Mmsq}(u* z6nDrvPjH%ajdG7L$U*g&i$S`Vfs-TX3^a&-&pcRrz{lCiCnzi@1jWsuu_fmeuzS5A zYh=M~hOlfm->}dy6tw}tj?lT*uqs&I1e*<6n+a_bA)S|iIFmfzJE9n|ejd{AFo*Sz zA^R_I^f!^$t+{%E*83NGx`Nkm7kj#b#&Zz+D}0=tz+vs<>;ziF;1m{G5enU_6%rH{ zSnTNv+pmV0JMjXY2^Znz0$B$WnjdInSqdtDp!Yc->~c5FN%aVX)+wO*1n{}Nc~KET zey}@O0)kP-7mGmqQc&7~pmN;V%{eSI#UnfzwC>sotOk582Xsw4(i%F@etCl=!xFF> zlsn)M`zye5D0aa2Q9$Av$J#US-rM9#)Hxr>UJKMPh3@+Rt<eG90b2l?gM-u$;C6eu zC#a4A?Wb^yatd(^a|^9P-ira62lF#X47Y@g6?%Zy`%-Ra8q%4KNbT=*&>7>&xj8u$ z`wKd51KMu_u6x{qoPv<b-hf~y|G-c~H|V^$7rd{Z2^o8a<gfDdAlESW2t#PNfbI}- z1+C9;3kz`z1n-N0<uPy`0+k=2y`!*jG_-UM3k9$1g`9tn)~|)E2M70q!ELj^T+muW zlyL}f8xH0cFL%=n$XXMy9#H?YGRZioEF7u)hzJI?v7!4v3`^XDaxA^VT*HC`!-4`r za}2=kbda9{!@_*SoWbcAmPX<E4RwE^V>YPHgzobPyA$CKuwBUcCm&%pyxs$sMPBY< zr70d>1yK>Oy^~1cSm~Gn(uWkz`ku}~@bNoPn-DbD83Mfn!rM6|Cn*oqCk(6ds>}wp z=aJ5sg7hH~Vdhqv8VV0LOK7<Rjyo>{x60&PH&gJM0chU!0qyC6x)ao=LHHFk4jWVo z+J}&m8-@}u@clKF@cr<J^ppeHlK`&o;PaB;J#X%b5$WmZ`xZg-7hdkjZbp=Ip3Y9# z%>}Qa#;jYtor5xx@^btkZib$h>zo1ECk0MxsC_$--N6w-IgmQX3$nMw7&I3Z3YtH* zMB2*^Niz_+0(iS0lKw&c`w-AM=z*@FHB!*=B*UPLD9FA(Xc&U#eBgE=-6a6(Yy0J- zptUo+k=j1U<551&PN9LJptT3cV|}o44IIw7pl}B7cl7WpO9~H7Pco{=_5_{j4ca?^ zyzdb@_v0CgXs3eCM*-ghR+)h#>_K~?gWN*1-9Y=43cSO?ZNz*W;RxE>46o~b;On3v z^(|tY2^0pfbLkQLazJC3QMoxLp3t+%JdI0?z<1by?)`H`ZZCLQ`s9N5)q?lNhGnIv z`&2r)2f_9~gX%C)IhJD?9vE5?78K?S-b;a$)^kC7z+q_<W)}F|C0N;pH0S2&>;yH( zFD)=9%mdV>L!E~Ql~>65*#P<6k95%7S4wzT71~;nY=r%wvwq7#V=M)rb4%cD4$!(~ zc$sQZ=III@j|oN|yM>OEg8b~9o)O}j;~bjp790*KC*4B~y<CDq10nO*&Kb~p9bB%V z`pKih!qeFelI{&lkjvBpl)Bp;691s{YEs-S(Bd1pEQPLpME8T6Q*laoaymG@x>poL z=6Pi#=fTQSr2L=fmjvE32ENA$$y~%3BqF`$`6Y$9x_LwdgU4Y}+IaAG04RJwX(Ah3 zx1r=|MEM39w}JHMAmytgJnsB69ntGb{AD;i9U;#(fyT8;a#ACF&A{e^_a*wdg+a=d z^ngkve}d-4K>Z0<=)OSb3~;;H8|^$LczdEMA9UUTv<^br>x|S+fQ~K0(*!6EkoKZO z_iY8Cjtj!dj9|z)iizPSp!w~x6nBdPP&*J*cY^wx-mv-wzW)yDZVx}`UOhy50ImNA zodpZ(M<e#0rK9Y7^9F@Q1ZXVL%K)_h&O6gFAC&ik470&?JiJ|E;1w2BnT^y2hS`gB zHXC9sC^T)DAoh$x`|r>(EG%<-p_J@1!ZCjbF3Z8=8d&C>4E>xP3w>y?W(UW513Ys+ zzDCe88(X+gGOrAtJ4tkRs|qnrDFxMc(Dl-wxqS1qU{lZ?k^w13rl2~yJSxJ=AQjrS zz~Kkf`6uYPJ&1A(vDX-jou%M&_MJgvc#!rD)X(_FGfAEAMH<h<(T9Ys;lVlvm`tO! zJ9x&j+@Wil5cA^TwlTi3B!85#q@bK+BfrYT2q%LiV^7F<7XGmm1C+54O2=Yww5LFI zcd9XT&lPxGK6re&(hqvR5qKSwa~Ps-L2lm$lQVDXYvdh_yKRLhJh6=JfX40-{Z-WV z1Z3_G)c1v@UvQs|h;dv(;|cKgFZx&p${ugfK1x`c!R_BvBk&l78ED-pQu@gE4K9a_ z9XaQ~&%pI`2A_Qwnq-LF#?Ej7odW=Be?=NY?%D#k6F_ql&dKSBcBv<P4L+W--2}8( zfHrGy5oc!kW;!CDnPrI7&w#G!3(XIybV>r9l?6LHEHON+Dgrt-3hv({?bQIc9q{L+ zDzv;92p>-cwKeeTHS~wt3m(4%^=rcoom0Y7e4-*CYb5cdS(Nc;*BrM9#5qTV$`2!d z&{(DcLJ#U#CTwp9sIBb?HVbK71w3{KI;$=!+^{^w19V=UMLOb~#`1LJ^Myd+2O1}Y zv|*w1{?K*+IM0CAG`hmlvJ-4CRyt^pXri-IZe(~#j;A~1Ub0AM=vag?xF2ce=>cBX zQ4p2ql>zFD!S_jcq!fVmZ$}zc<U~ez<wT+AgY>r{@eH*$G^ilb7<|_jQr(8M#vSBF zx1jvwT(_!3XVBV4x2hEP&~(T;MbMn1Wl3sCK6q_xkO5@O7UDN>o3_%^JtsFAbS4t0 zZ;fZYjGv2dfwyxC%s+XMbs~`dr;jse{u2@(0igSg^TJ93^TP6ijlxV3XB%grjwOKB zB0$riS5-ND+!vD8Qb6loKy`(sr*pD4VyqW@?ikb!VXpAIED(JGs9Y#$T+|f2-`+h3 zbO(4wD#(A%DWyq9ra4~FIQDdQ!qetSuJnf7Ihm7`8|0Gco>Ls<oB=Z*F}4a1Khvt@ zT=01gd5O7hMv)PIS;@IM<tZ-tdH$8){&`NaQAI&gUSLU-drlQ(U7BGrsLc%8zv%;0 z?`&w8oC`lI6*R^GEgQmILGw(YdMhzJsxmU%Fb8~QL0%AOj3^>8+%!AMIJp#-&fxtW zQ2KDsFh~k7FNNK=9%z(NkmMei4>Jc=Pk{Rc;Pi?VwxBV0gdek#j6n1IrUqf4F$H%^ zW1n2aI%~L{F!iAbIiFn1@~ChV_*nti?J@<g*^3I!C{A$(%{!-5MH+h*BzpwrfyOVR zi~~XQ)p<zku}g!p459Ow5H(325H&u=(C~Lo2F)MlA)f&P^LG&PIpszbWywaN$nL`# z?#TKOXVy3wgVRWGMuAVTK|z#zSaB3+?g`d@0_Wo(wDZkMz-u7kdBw1#AOh(uYs5S! zN?8DRBeXulyFLV#9^h->A>#o^WeIFwEvW7(Plva`-9cm1h%q^EndIS>lWZJTjJ8H8 z0OfuI<UQ%Gkg_@)TK0#z<pc(S`|&9I1p^T24>TSGwF8{)z~>{mB}F*F+x?(2+Y`6B z;5!!J=@4{IVWmZSWOz_E=zP=&LrdtmhGklWvnOQi0kO9dG`<V!XBZ@b%kZ#(s7&x# zVy02KImJnkHX^7@0?iFof!14wBh^umeS6UTc%ZQkP&w$~mjl`p1P(K>f3U|R^4(Xc z;SagT1^L_p(E66-+%T~H;PGNNrz&q)yf~xBAGEIx?fWO?RAB4BnbM~116gy0yjK?g z9$Q~yM4eI&s=r|Q8q^oWQ%?J$><x}G3NwJzJK!-OJo+NbVd)NBAL3{q<7wj<_(JxH z!`um4-<Jz2&(Y!#WuF+Ry&DBuhl$vq3z{p)52-|tJ4D_?+Ap0Sf^?PvI8TE1qr>JJ zz~e;Vaix4zH^9c#Ky`F^I_zu<a9x6@j!p#CnJ(}-T=4uxD59=~m3Oc+Ino0%oeI3e zg91V8YQg>ir+JWj{E`xbi;E(H(fkPB?+Q($$Y($h-q&j6OQW$7(AcwYNH%EQENGpm zfv2-Yx^GBmsc)u9l~0zd0aBYCJP+;dY5`f}2A)@T%uWP{Cn%i382?(qELVtLP&ox% z4-c;kKyz^T+GAC)b%v06AROZ%@U#hW7kIoEx$KAg0p7QRuW5q$B?EMJFKRsnOM|d- zCDWqNJ2St`)5D+`(uZ<1@(rfV*cBwrW2`U1AI>46$l+{|WRL?37jSuwzg&t$J!dxp zbcR)qS5j_JPO2-xbsa{2!P)uHHJ-?B@CpjEgr4CBPA3G)xJVQ4;PkxU(6BT}|HT5{ zr^Q!xA@_@tp!<YC>kdF|$7G~=4RDycT7bg>d>*SuP+4#&Y;PR=3<|jWA#HT{+9pd+ zv@!xwKN+Nl8^Y#yK>mb`tHJAM@ELxH@#K)o9MD-xu={w@k^EZ#8n1(_RW8X%4bBG7 z<G}2J-3tXu<FGQ_6LLPNYmyOoZ5cTIdb)cVMpZiIdV=RJf^w2FL1)C}z~|&r!0qDD zeDE2u5r{RaptXC6!C<$6*1dqsYLH!^@)M#KR=#DU%qOJfLgrnA!%abB+Mqi*E2AR( z43j)SXX8Np0h)Wo?+?Vh7`#0QtM8#@F|-|srEZU`q)pup8Y=^zT?)C2-90SZ(;b#x zKzAlv!t)oRuME3a4sxz&Qm$pGPdFreKxch{&Up+9^R4pqfR6DPL*_0ZX%mrO3FKAS znd0EO3N|MZ1*(Vem8I}C+c?H#k=ONr_LafgxQOv&r2GP!&xf2b1yT#U^9^5FNu&KW zpt=lH_9VH3@1KXXcim0Pk}?f5lJmSWQiDPL&ypNZ*RT-ZN~a9aUPef~gq4EUfI|0K zLFSR&B2BQyjk{l26lk3@zVOY0twq8SzVJ49dR{7MpFMay5prKkaD<;5@;)(d7smon z8yMEF0k?sX)^6cgpPQ9r6bW8u3*E;U0$QVyl$)FfG7GfV5pth!V7^x+Xs=^_I?Q~~ z+Fe+gf+wGmdLA3{JOFqO1Zl4&s4f7_eHg&UJE7wh#Fq6q!T@0&(jBAT!KR?I_p+jb z(@lJw9ZP(PNUwf0s@q}d6*M0R+7A&3u4}WiKw}%=JB=ap`k*lp<b4&8`_zK{3X*dD zic`Xaav<lwLi!(|Js+^R1eMnjxX*ep@<m?5>Jd~H0$Mv^9Fz~P6Y-|+NO;`{I;#$} zHXXG02-H_4P+l3s(iV>P8&X>heD14PNVcDESZI)2C{q0muNRQZDd!-_eL0|ZCFt(f zJg>5(Q0P7%c=_cB+wTE7e;!=_2LwAIw~z9@AnPCD{sZ|5bl(7SA0oxw(l;vHG%v+H zJwK$<6xJWW&;yCbbnuuhC|<yADCdma<Xp=VNFAA8><QY7ott8ih?qkHyUWKJy4Mvt z{|9jgXe|V!4)HX~DUCF$FpP2!s{)U`M);<O8o8B3g+ca5h3AG<CRIA+Bu9j0B)R7p zqy{@>B)O-Qf%b?dx+Aqw!0Q7*_XXtm2O3m_1-XLOl}6@*=BYvB93a{|A|*dDyduXN z?p8-_(7H%aoFnEMLG2yz7%S*LBT$|W2nUaug_(F)BHghG8Uu9(oeh)$S>pmeF9hmW z<bBf~UWQS){B9fs+IN#36_K8v7@ks^1Ukc{(kVa5s3He+cRW%)%1ZJG%Lc7Y^9gn; zO)`e`9l&9UxJL_g4_m&!QAJJ?I35sw^9P-q1Zwv>7Z-Vl=j3{W)-4zyg%fD)2y`zQ zC_Fq}El}D+;4#0<40t$z#!Nu_Wk7eM!P784GePDf?Kc6hA3*e1z~|owhnl*CxP`gG z*82E_xPs@`LF*%-<u{)B+(=UAbBWx425K)s_OAGbgr<kV^9y859NfkMwYkGVW2>OO zQ~1x%^b2u>=Pe&+rxMUw3~(GegU39;XSw?18WzCLwIrf!DM&%uqX~}-@IDR`=)M)h zf~3q0P}u<8cjF1JPko#n%Trz4K>L+YFnCXqiz9R|r&C!<WqPHLv!kJJWp=txuww<d z9(Ktt_jO6G@DItZ^a}|z_H%JG^$&sUVS>gLwl*zI&!z*HOJwa4G|WJ`M+I_@ZfR1u z8{|x2NFSdnaRn(i5#u<BGRFzh9tX8|QPLA^A1Rix7Fd3DDTl>#MyfMRy<-ugJO;^w z*Pw#@kPj`(k;-eR*?8KywAw=r$v=Ley-PU++xl7Apm{9txChF-qDNRk6u2xVkoT(K z_fcVA(}P?GgU05N?xKO`D-Wn!VP`gi$~EVVszlHoY~k?xIV?TFZUXm@3t;U8Jo$pQ z<G9efQV6u6s!-ZcZhoGDVP23scbrqwB8<T2AD1NN`K2X;_C)4}Wk(oVz~}yaoSmvb z`>;XhH3S61&WNr^3N^@Z3e664g{=8@MBLkA2sIya534!syr&c#W4XxVA)x*{Qoez& z2TKO6CCCkfu2ln#mpOv&tS?K3i-Fe$!q+C?j*nyt_Buk^u8HBGd0)qJaJwH;ew3$z z@;0<=NzQcxorzQezb~8ue|s7FnI?sMl_fc+=Yi)HbNw<>oWW@iw1ym%7UARDQJ{T{ z&Y-?iK6r12kF#T*cbG+<kF#UGcV!7E9~F6eIGK0{n<Di&(yRP3Ve7E*?AIgtel6rZ zd7$=Sj+>`TdI{)kDabi0puVgDc&`%p?A8d#xB~V%(J>zu)?P-adrN#kd)f>vjg!FZ zfFONSANQOp&^SBn%zzN1$YRi10>~P+9Is>pkllu$b>^VGmBpZTa*`2fjc-^8wEqbb zL$Gt*ic`Wt^G=Yx8KAydvU^2A3MfvTp=VuSTNhSEqdkr|(i5IOR2AwuU4h_nI^_9U z1Um?Reie8;5UamHXFij1&OecRH^F1|PT5i6gw9{}HTDiR&4r~2(4A+XeQ)^tbfJdG z^H`wu$OOtv$oekhpfcEgd(eJE*jXe*?>BSL0iBO-5E%~IBLKQb0__Y<P+QJ9GS}1D z4LpVkIzKu9bPg5hj1d=$bP(S^6SU73d0$Rwu_t&xQ8s8kI~Oz-g4l;p0$K}zdL9q> ztcg(gxyGQgWg^2<h$$;c9X}zm-3=*6A!RyzKP&#Z0!aJ7IMLV_X^l&HdP;asHmr?J za6F(2rF{;+vmLA-|C%ds{s}eCDT&OrMBcX^7HSZd7HXK|7np5{xQ`BWzk?gB+=kq> zfK<o9&XNJIy8*Y6;QNY$z~?()F9T8b1(t&53h>pF;PLM;$bKtt4?hD?-xGeHnhR3D z+AS<3D9kb>Jk-!R!~k-CJ<OkQ^^kTDnqMu_Vd_9*eV}*%&4s|kd@{l7J0R{v8@qz! z9mM@D$(5$C_Jt*AEED8b++|NFjn>+N&Z2QO1)XEyn`vT-I=|=%A9wW0#j?){Wv&sj z2N#^Ch-tTC%z?qi>%rp``13>+%J>%g+!cPkS?QqmHj*BcGu@%{1VNB>7oa&$_*gJX zIRxp$gV$gX8bdbCi;94nhgip9k>-q&t^<(LbO5M)PH~6NS)k0ZgZ7HS=bn((F(RL7 z7h+g~@Sh=cO)+%81b9CjD4)7ol!ET^L)xzkYFDA1^$*^s7yueONj473NXqrg0o^GQ zQfUe*Ye8oQ8ba2(BGv{VuN}cuhb0UlYg6Fu-4M{2PM)7ZWH{)o49i@^{I;V$oDJQ} z4$6N?d11v#1m~TS=`fDs3mQj(rXR>%&!9Prq&(=k74SMf3OpABieo(O7DM>BH;y(B zQn?Bq_rRPlcY?bGG4BN0OF&GUmqzRQ@r_wm!Ook7)RFLe03l@wXv`IFzV@y1L>_|z z-@k=a7J<ij@q{<(c@ao!^kM6h3AC|L?vq76|0lu_y#E=m+x@BnL1hx6Zvx)432k3{ zK*mJDd!is|C<}C-B<TEb(B5$Hy-jY#d5C+%13~?sJkXi;VeXbiQQ@Y(i4lGVUX|tP zUIvCaQSLbzA?`U<DWLm^!DprA6i0>m<wu2w86b(fgc|w<gU;iFh^3@}*VMWgr2D!Q zgU(j6@N@|^_jJ!L@<tl>2iNJ4^94Zh1;zp3dwMF0;qC>mDTM9~g!Ca@ko^P77qGYw zHvpYgfOg+0bUzm?ZUcgyQ1ye_l%V|p?iD$a#^5_QOF?}gSf2=7zk0yV`h@HehMYA4 z-(!e$Mo~%{sJ$E!486|{YB#9Oi8%WRqQ=J=vacOBE`qXW7-i2O@?JvUQs`JXq&|V{ z2g5SPm~29$dGov!(D?(9Iqs|!=VYimz~?h$M7alrCK-m6CWFRF+(BnthJo8@c=C}k z${KwSKZB?UaD5I=3rKN>XB}KR%H0@<eG^_)F#QDEyCEp;1JD>TtSm&h1An{M$QO1u z5x9;AkC#{aW`gb-_bv5vc7o3Fq10!k@I8-}>CmzW)VA^jt=lT~tu(3dt;DV`5xhnV ztDZ{#VC;I3_U?k))1bLZ-z-niI<YFBEZ=h2US%Kf+%@zr>#!2XK**UL;PV9|f}wWe zsAKTNv!QQhc0M%ig3erohDUNS@|{1R{u$^z)fD%zY|#COpfOscb`E4dFvrpWl;=U? z+^~63WPRQt#o+rMVRyE|`o8cp3&CpwLF4+E=?s!yK=*cn_x6D9Uj?mu0f!gTnSw<i z`x8NPVJ@IM2r<n8g)LYfBQ1c};Z=A#he7-wia75Ec^roNXE&CB&JzLGY4C7>pFacH zlK>f$2aOE|<tIk?g3hTd@`ldaL*~8GGeRms<B9Mwdh|0LA!Px${)Oz}@`1$_X#G$) zq#Xk<Pm$M4Lh^k+ybS|t<H7cegXS~cA?^pwwRstV)?@nSc{)2HosA4GH}ZW!`z1kk zMZnqy&~h7DKlHrG<jQ2M`a=vsb_M06x)~t$NWkalK;ye%<=!ri#hz|Zb<XAK2t9@= zu<{&q-li9lT@Zgm>Sj>-0Nn)+Y3~J9f$K~+^t|R&kX-4Q1IaTvkp6|CC1j2@!Z*j$ zIo%X=kDs5jiII=9Ba97QgB*m|_m>B*GxA_|fzmE=8R?S^nSVxhA85UKn7d_IQl4K{ zlCcx`eB<QG^gKwp18-+wE$_XZQ($g{ukpiW9-{n%nu&D`4YUV}lrc1<@l+h;6mnY_ zbXF3^eyb4h-gzwbYC0uj;zZ211eGP_BF3MP%07612kD$rNH_<Vr^C)E^$d2)2JH_@ zgSa2hJaIaW?&=`rZm47fXkNh<&NN#0hokRJ;yKj*F1`ie`z1&_huVZzcUa)5cTN0Y z=TL+D0*=|RIule5;L%s*TbYfv7Yj$&A<Y+hg4ge(&M}05_U1+S;^=cC+yfpja>cC| zT0Y@CC(+-9miI!y$GeQ-V+zjTaT?UU{h^?<T*9inVdGqQ`mg>jp`bn-XsidT8KC|b zYB>cilR$S)!pnjP+-t#1{6P1OK+mCt%`0L#qrrrhYvGc@Evr(T;o}O3vnnc`GE;+{ z+(N4&)02%d%2L8X=lr;3MH+>br-1j9!tS;UgRE_ard`mz*`T|J38r0?eZSy2TW~ub zf1lhJb?t4gTS1Zs^b9OK@#yE`32i43&L7^cC2rxM@;V|T2l*aSa6cGyZv|*>)Hwrk zZ!`QpI&hoIJS{jUDcB$^3NnWb3)3Ko7_6-X=^y8$dVtr_n8WG;&|L+o9!?Oop!TnO zm`PN)FX+AssM|sNU}0r<U_Rn36VnjTzC|RyyQg!0dK4sV@=?=gae7p)3AhdC>0wX+ znp1_9HQ=-ykpbVY1a%j-a-W9dZlL|nsB5@`LqjWkgPk%{!c+26gJEGBSPI&Mg?gSx zjz4G~A-U4YI1zNuG;Dt;XboO&AZR}|Xdc@b+}8l7Rg^V|ptW;&`md<_GolPE14A;Q zeG2@2P7}Y%?9wR6no{t3@f5^;C*Zbzs<8p`9Vn3YIk-;(88d_3w+$_$LGA>f9S<6_ zg~@@}IXS1m_KxR)$38q#K<jkMQXqG)!1~I#!wuHgaIrw0AHY%G!|VpH!E%GGHH5UC zA$bKfw*Ym60i?_Yl?lk{5p@l5P-SYc6U6_J{t3Jcg@iYFoD(je77V(-I4CR8IU@(r z26IdY?S)K%+!YMH?>q&XF5qjB5%~!+HUn#e;oRfulM9~1MOr88gtJZn^>Y#KL9E?} zg%>OyL1&>MrG-+&xiHy~F?+)jSbV0#_CZGkgU{p!*$v%`4f7i~Y(QuC<%JkJ`Fn%b zWg+&~fX+3B`Wdz+!ZaCcJwwAi0*L)?$>~0ojuntQ62RjwgwtkaMgU~K8<HoyKx>{L z`w>BP2L5qa)ctRuG34y1a8n}Bm&gXsr-1JM^ma~xtvLpd#UhVCqRpe{q(biItb(Q+ zBK!xgKZr|T$m?C<eO{D(bSQp=w%=iC99wx#>Nq6wzJg@WJn$J5pn0Q$NaLVnPiT7v zT+X_OnIyYgR;GCPmV)lAPd0$vlMEii0Np17$<L7T4k_F~XV1BT_Ar6UJEU-N1g#0I zN^y59jWi0yIPVsAe;#NZZen<3y0^0{vU<>15mYbeE-26#vnj~k(D|-xn7<(BLcs1$ zatH4ZN4Xapa-O(pX_9du=nlQ&Bxk1#Pj|oK$OykGPj|N}Pj^?OGx<!DJz?XH@G%ou zJ~S!w&de|LsdTdRaRcw0PWN{qwJ%NNdK9<vOq6k9xAIJAdmTJ>25Yw^SDK>S-2*DK zLFeDV)`f%P6;gku!RDYq<6@BYNT7RD@SS(zX#z`+1k8clonZt%f4?%x*eN(F!p$%- z!Ye1pJuDY;erg6b`(foA#7~GlJLwVl%_@t`%`fouKsuAz-7+&V6FgT6l0#3w`ry52 znT}>4J)m#^yU8UVe2*6BOhwq8z+itO<pa1{P&*R2U*?>Sl>U(CkwI&Sz~gd($mjKV z!|tweE(f2Hm+aw-q#tzlUliyLf_z9_42l=Wa?sj((0ve~vMbpGvG))p?p;}os^1yB zub>jNmmKNrBv5_?oo`T{44U(Sj$uH?WF6B%`ywD`X@Jg3G6nC41dSC(=2ql@(h**H z(7FtF&^`*k97wtZwRb^nET?SHUF_g<PTVakA?pUC3Zjg|Dk0~app_-ywgbrjIk}$B z8Ofe`ATz^qKxZ+4*07_xAsgMz;Il#Sn(Lfi4jNYg#baW)X%14_uk^`<ms_Cwk}{G( z>nlL}V%)=^XN-Wu1+@1RbaxK&nPt#)3-L4jEFoz71e}JD$6`^^4dxkDp!kK{KW<qL z+M5BI=TC9Z$pX6-Bb|W52^6Q`JGhgKovOTpailrW99$mK`Qpg)5W$dih_DyBRvR22 zpuH#HHLe*b?ttC-f_6>;#u;HAptWW}1(AlJxjm;USQ!FNcknt8tvrX;L!kW|kn|K} z30uR8rR`%%tG)g>)<31;zDGX00@~IAmto*~49gg)PmX0;RD_>jl2MRhl6z=@Cl)oJ zJcq@8@ETiic?GU_1I-clBRXLn{{)TcM>u;S>fxO7OwgW2Y-T4JJAuzPPp$;r84s)P zL31@uWyyI#RiO2{pmVd5+}#YKK>b`i{dWHl=-oc<;4}(3_d6ImcI**|+_z2lc7};V z+K7qnmIi@gPF|oeNX`wbND0rWj0y&q2Zm9>hWSaxfhEbgVZ}*CZrMKJZsm!f`whW; z^q~AC;~=L{*X&ZreV=Z{NzNISu=>XvRFCF?%aa0VJQYM`I_7(ZXOyM5x&;OYgVxa) zmV?fT29<l>@Uz)X!SM+xk8`p??uu~sEb$Bn-Ax!)>=|rQ=96hsmXvFm9TjE?jfb!* zALA&Hd%^CEitsE;a?i>1G4{(zau3S_tz-AeEvO0ruR#j6gq71?ptC>R!%PA~95Z|} zEkXCkmnG*y=FL;UZubJa1r|o|b9=(Paw3f^E5T<_IhUtniC@SZC?c(a!m%_m+%GFC z!pXqftt8nq(;y=<*DW(Dygb7v)1uTT)3P+lC@3ew2$~ime9J&?@CmOdiv;bX%(N^{ z4EHQcHUiz73tHRfS(=#Vs}Ek&6k-T1Hv>Uuo`CkAS^7G=miicg#-S`LqufDvt(qF8 zgoh=2W>$dhhL{aLi>f5a-7+J}J*<)%VVmL}2D-yFBgH+Guv>BrQ07cMk?M9x{F~;a z7+994fZU%4I?oH#PlU8@K<UdT*ex?M+$$#u<kw1*QXeBz&|O_=u=q%>v@}Wy4~6^B z$EczpGSjjuDjd8%qAWSnv@p2}a@Je`{LC*<8zLwt)y1G36dr-$pm`&&Y|wfWpS&o; zC`9@Pr)SXJ2O)^Ooa>bdx=SJ@AlU<yj!dgC%O4Csl}1G%sfX8%$YTViIVpxgIY|*t z#o#+sTns?x9wG8-ra{J_h)?LAU3h-U3oDNTmtPqLQJ{R18)l3MEAZKp#$kx`0?9KT z25=gF-yf*F!7`ubPx3uXMD_ukv7f;TZeJkQM8eJ%fVVeOgEMmAeOhOyWKWd32bA~9 z(-CXcAnh&Cy6j|7Sp&Ko$^$k}ixl^6mWC<rImM8*PL^pYMq!!B?rvF$hL-TMHp0*% z-#-LCb_*`EkoqYgcY^OE1(l@;`yp)v|4fvzB=DFSsu*aj2zrhp{N76VnRuXa1yI`% z($@gB>p^Q0A@wC#E)Dr?Y|tHqp>76&5kUn>;h_5vVe<f>_Nyc0zVMLz^uS!pvLyGg zjHFCddm@c2bCPrYa{M!$(o#TXc!2J6gNXU$dX<6p*hYq%z}ISn+dbg66S$8II{PUj z$-^%P9FLIp7UZsWP=6EdPS_c2VcDqn+#|#hbtt4A3NEYMEWv9!Kw%7CmjGRFfMgd~ z9(0dmGD^9Otz8aXbC4NSmXw*Eml)v}knA2-8Wa(glavQq<A&Vtam<edpOq4b(JukF ziJ<QC$+av6-K_@=dknRp^B2MHt~AMpm={zT6>d@rT6-51?gkn^M6_!%9rHo=1SKKb z7~r@Dhc{%cZMwI+A8228HfW!A0OV}^66A3Qm|8FmT9*@UPzv)WC=5YoWh5JgLdHG7 zaRo^upmr)EOd(=vu(jqeb<q9**lc*70^Pj>SpyFpvo`>(T?lZtgw>te5OYE6mMRS3 zZLbhWdju{A+SltIRFIPCl$GS}R+U_3nCzJcI<F(F*e5)tGRZisJi^%%ViqJHl=(pK zfC=#MD^4;F)CSp^<ZfvY03Pp#<aLl+Je?gae2jt$QnJwObSW=Gs#lTBM(7RjfS$4F z0@jOV{3@H&d1zP~DUI+5#J*Mz?7twyxSe|#sLn_3>*XWLq4M+yXD^g7lL%+eVowiP z835g9ACjLA9!CL{`5y55NevL@fafZ`Lk%qb!RZ8a#$1kHKnS!SgQhMd(%7pk$-Tlk zGQuk&F+9j15j>s%8gmDQmt}Dh=x(T-l!7RapnPcm2T_LS1yx3dgT}+%U~P5Ky_%?E z(0q<$Z+298MMi2k<X%(I*^`kGIXTIg?h8)|4|7k9$jC_spV<;+7!?{-km?>*32_H# z-JMew<UYXAbkKVBl-#h&6lbTZBqIYzSsCG*4w~Np)v=MmP6bJML1muqZlJRS@}nX= zA!;Du2tL;YR(^uR4SJ40=<ZFJ9RW!53ZV1|>R&?b%<zP)lPrbar;?duWLX>)?pETH z=@gLSo{^KBmr{@n8f!%KGYt~mL!oyygo5Uk3=-Wf4O5)KeW!w`+#Jx|s|86$CdHl} zer2GuZ#~^}szB$jrZ_vn%rEtEb_!1k4^2;T&!|i?PEL;ub~28P@B;NY@_fMg2ed8< zUiO2^c*CSz=-pB7aPfT5nnBd^2h^4fGEB}jfrJxiUw}tc2Ix*yP(RMg7<%?mC3r3Y za;JTWfu$#CuO(;<21PCS?f~%lHQ=-x3>xo3GRp{5*ZbvoLDrlhnUw-QBNK}_(%nLV zU~{46A!zObtlvKqlwZo><s(u(3p$g<Da8ZaUNrCo-Ba%l+CK@ozdjPQ&&<QCASpK) z5jXA@pm6n12{+7)itsG;bOqIAVU;OHIaN`h@rv9qgOmubQcoAhQb;-Im<~DzC^9#! z60ME|omB)f16z1Q(qMQ6c+Dg7nlboY#?GL-TwTHY6p`h_tK3qc^$2pffbLxdjU5># zg@=`<c=#pxh8cju2OOr*JOr+n5PQ8r?HKTwHaH9e!0`!+1F*lr;S5SApuH6k+Q2d( z80GF-@I4nua$vh4cj4w#h2*;Vd%Kz%CWU+DBxi!o5GgP44tCV{baw-tp=;)eCI@#T z_^dwDWYBm#INwDCf$N_XXYjdRp#3IBp!*iUaf!%>8A*BBusAICbPqFut~mgm83KwQ z(0F@UGU{E_@c0AmeMt;A%|nYn&^SLRZD5N(_&g($|54%tbbcC=93*U9EYhKO0E5Ha zyV5bw3tDD^>T=L{egtSuI_PX<H>V6xx&`G)SYO%G%_}F$Aj~8gG(LzJr!Mw%x2!~z zNuV~6WhuC<0-b*bO7n1i*=Xq*k?+C#XPm+HC1@=QXe`1YD#EK2Ell9z-rzhB8$W@x z{Savjl;1&RF!KH##JvFEGy>L-rUvd#M}5$J&q<&=W<0Q_Q&`-9(<!Lmi3l4=S_7q9 zu%DoNf<WO5&acpOARv42f{@yA;Q3i_UFr>*3x<ykf!a#ob@1RmMpT3!IM0IZgwL0o zMuvn|c&2y+m4|}Ijl!x@oRQY5LgqfQBO`*qcRa)IcL1&HsI*8=c6QA7iSR2(iU<Su zX``GCz~l2t;h-`Hc1EfbxXeff)!FcN0=Pet9~EwbTGo36fy6-TKq|m@3uk%4+AolK zD&%ot4@b}%htjCvjNGIw*8-p1sEow$a**Ci)G<@g8JduM=?T8CFeoe0B_C<d$|OC) z$S)(s-7nwUJ*pJ7egV1DD+fBqUXEl3>KHb>-vJtncPmaYax+b?LbW3@yuvs#BBzS5 z9pE*WAb%kH3DrJudjJ%_h`n*)l_}u0mY}sQUPj=s$cqRz%}p})a*GTH`wda2I%h!l zccSzg!SM{=JL&>DYZ76;r?XQzvK-RdhIFicf{tS*WuoO3S44gSjlF}?7R+4Oxsy@3 zCMf<z-jkOM&ljM$LAVdO|B&o#3Jwcz*Mg7`1C!EZcel!9qfmsIpz|Ih!g7+013~B4 zS4M@qWv51f$K7*4cZ(<Gra<O!5M>q8m@A~r0Qbv~%mLjY8s(7_k^&wpft)k#hnyF| z{TgUq$PKGXcDF3W=o>-u8^WDPdO&4zN;tGH1#YuL+~Mi$h+}LRE)P4C4D6@WO3<2d zH-i+=U0KNPHx9~3@c^Cmg$Pq{-wW0k#HQ8-RJS@-`hw07M9$k_cZ1>weVq%WuLm|4 zWS+58SyG-K*j<ouYf$-P3OduX9CQ~+R2XOtSRkZ*gz9H-o50f<a`vUSdp7vKI!GHD z8uv);V6c5KH$mq5U}uPd(>&<R{Up$NBw+^mptD1vaRZG9NdFAo49Fe?M{perYTJVE zxI?+08?}x>*N<cmXr2+Wb{cJt5upchW+_4p6uywYFshgVXrA66(kMOM+dZr@ITM#V zoS=ROmlZh22*7LWFw!w<JVMLI+{o~pVyK;vI713^up5#4@kny;IY5{g;_Ngm=1{}k zi1q`-e;GL_bq2y6&@_OYmr%nzEjSx~e*nafFnK4)+F($-2$a@g<&CjZ4rn|m$RI2f zR92@%coie;2D!`45L8$D<bm$81m7*6lWZL12`ZzaB0TfGz~fG!b*agqeM=e19!|xH z;h_2pG(TWjm~3QO3SXlGsV^%)cO<4bn^r}In`Xo21wrjpM7zfk63);u7jSz6dEOPY zj@k{guZ=Q>1}X2e;dh9D%V0l9yWSNv-(d(E_X6$3s|4+r40aDIh%(AB@N_A+1f4At zX&hDp+J6Dci!gRjctsAlU*K$-mE@iSx|hQ<Dm*7I(F1Lq4BlULEJw7*;qd@&e<X&R zmV)}z0l`klZiL-Q0Y5v%+c~8iIsBmd;P;=T80BPx?wbMKbK@K0Snd@J-E#;oC&6~W z)h5FIXprtz<yr3Q;ba19H-p0%QWjNug8I~;xf>S)(B6qG$ljR1(n#oi>xghj&x>-; zF+z4<l5v;;sK1wN90b0fCE4AwDiJiUYGjfQa${t;S5=Zxg<*<&DD?aaP+uD~9vxQc zljmoU8eWm(lNVG5Zl5_PmnVCq<5rhjkrR~%K0_%F*)N{XPGu>e`(HCbYm9P=qk>J1 z5+nQyB6D+!6C;95L1PtOMxgsGgL0BG5#fdIc9gKqawOoEjGV;ql>8J>yV5zi!Y{<B zJQcS8)7dc{-RvaesGQ{7sAACg11MY)-E%<q6PLo`1IZ7dJcV*cO;WCDPBLs=6RaL` zN4|^2t1QYRyEHPwsT`EYVE4g5-GC@VAoaVkFK8~<J*PA&H>}bp*D^N>oYzy3#;>r% zQLZJZ|CpQPZfOh-Pw;&#mc>a(eg=<WdnAL`6T#ALl2KG{vQZf5ei=}@h2(Q^T8&Ki z_DBYw8yFDmWbB)not{$V395@=aS6+FkTExCy9<_X5$6sCmPY1UW~T<5Rz`&zmZju| z!S42fngd-M0Sh;HUUdS6Ly4zHGIXpg2r`ZjQ3o3TfcI4+!z+qCL4AW@Cj-zKUCBlj zptTicNqN5MpgZtDV^^THJ5jmdIfC>gcem0g<FJe<qfk&CSQ=$iQIKo|+bfD_e|mbL zj}4-%O9Gc0V6#ByXn@X=gO*W<JDAeb12P@U!E2C_<qeC=BS7blh8U!y-!+0dCgPL= z>hF0Og~8JyEPNqx32y&@;shRVp3b29FQ+QRC@LZ<Jgmq+(<#Zz(9aN5mv|W%mVs%* zAPC<uB?rpS2h#>om0;S?FT=|arC(H>7;adQ;*y{4Wl&L&6rN+?>EV?F>NiA%2c~;_ zl$a;EgZDsKra|Wck}I7`A|uiZd@_@f=4zb4bN7%j3CFw;@SJo`X%uK)7gb$JVz?>n zj9W8L=M=xhaFbF`SJ)Y;C}x&`?np}X@HO*vE6xkfbt_E?cdJYd2G@V?QQ=;dNPNG@ z2(PR}$k_l+$)GVZ2-`0*A{)GxH8?M<Gzy~EJ0-lr6dWD~ZiZ3DptdL2%n;E0eiURJ z4Xh``$j>0j2s9o9miGshC6MtUFyA#Q+%E^hPf0<Hg*c`s<ysnqLg)IU!UIA6^iMJl z0<F``^K^r)YY5BsszjP2gR~VudqK1PGad6F{qmg3sPMo%WV4fv!ZMO`{qn(TpltZP zUa+wONc|5P_e1pgL1We-DIQ)K$*vU{pfSV%&^`j_eOF<5VL704vmzs$d?Uk6^Ss@` zY6?K<G{rs41a?;uq|F9t8-vEX5M$)|>7eokbzP_lXzVv5#n~w*6||NEe2<e`ZVIT* z1Fau*2aO*<#tT4Z1$sDTfbLLBu0-kEfY*^Fxx1N07=z|LL1nxr(%2bnJz7v2w66r2 zgGOn`1m%GAgW6G1xu7xYsEp(s&^%^XC33$XocG*wazSH(pt2S@&!UcVdSV&p^dfGY zGY2%z=~&?lJAW5a?xiE|KL?E!28Wv(c)N!cBfAf|KkV&nnHpZ@SmGaMP~_!o0Xj>z zD#bY?C&@V*G`0#G56%aj2@D>;a&d)^ufob2(B5TS?WPp>oRX*rFRv(Q`HyTj$`}Az z9|0VO(0NNx7=q^|p<{*!d!hX|NWGW_Is+S|7JGP?r-Q`7bLh}}%)Q+}^A{%Iy^o1T zVc>QK=zNa|qmrD|U`Gp2h`hO{n<Z!+Vv%<xdS3{X&Qhwv4MFlbDd={?#NlBBnqvl! zy+G1ExV;Z)_ZlRI8|EZu=VW_>&I@r5gQcsol!(B5co@R=K7#ufptWNVJs^8Qc_s`L z*5RP}l?<fuJ;!|1xCf0fMV0#Gx|JupSD1Q3!`R0e;ul0;!Z96me+)bgfx;M()-BRN z<I)B>r76xC28r%DRpG{nybuu#xeGcmJjy>Z6lp95R<0oT6F_6Wu2BW4pmpIMp!Hiw z<2}JnzKP*cIg!RWSxKOIBzKE+&>9y{7uPah(EM{AsLTb;lZU29g6>-k_e}?_>jAg< zJ$#Fi=8`fX^-*~`WGpAF5_Gm{QYA=lPL-zz=-lz*^duwG;?!W!`b#I%B;&A3PtaWo z?xE?45x$_gw~}Oc&>Wywaa1sD-;`HbiaVBefg55T&l~I~q;vxc$4n>Cnj~;L%QFJH z@2AofJjVqZKSvV-k3Xfj=VZXndGd6Ii~}Ww=a?jhgWBmR<8WC?Muz2}_H>j>K4Ps2 zB+Y>BMH|}&i=p(zz-mG94;#C5%mC-VN|S8RU5TJ@h%`z^YEyvJ!um_dY@|LcIGv}1 z*C>J7itsfk@U|o<?oBhJ!lOWEySjkJ!%{$NHPOa}pnit;Z9r)slqP&~y>dY76rw_* zce<gCg@EdpC{Votjt>lbko<x?Rsu>3j`^tO8<wSj%2f36AvAMAaR54#9@Bjg{m5kk zs7(e+w<(}Bo)?yb@C&9|NWBRePk@Xeg2SyO$v6yDc7w_fB)@>-0xS<1qXhLEAnt^# z$L|h^{ZZl2F*I<xK!i^k{7yaC{5_~_0k1y=rK!@$+%VAiaZaF-Wl1vVzD|s_BH(-g zR~Hg)X_y4=AEJuG^%EJVu&_t=8;)=T=M_*qMWNL{p3Y7si4hqENtuu}st`4xbvoei zMCgOpYmhN5v~-4D9kl#ID*wUZ1xoW#9%y@OKz)30nt;azs6CIY9yPw*L2Z;UgQ#Fg z7(&fNQiBwK;JOIZR|LfwByWPwsZVv!DNRPJ>mYf+umB<lI+Gi=j}bJF0L%LjJ0W@0 zw8|$BbaoQxj@H0@h!}ER04rO-dLZtDgbTKHD^(<({{)-&DUI;Jv5(oUJTt%@bq!C1 zTRCW5U1?N!c}bM9S6NDgQ!+>_Ag3ZZIj15y39^sXBH5^-EXBpd!p9i0mM6lkqB6p* zq7-@U4s>r9Hows7Y*pww=+IKcIuuYm;ae{l3Tfkl+m1nywXETm*`RaJd~$K^N6W^x z))|y0vDj}4Uv~&@v$+)KgV!p9)>$CdMZ?$Hc!K8xoRU3r5q<0kXHQT&6r0&)u=TZ| zz6ET(FOs_peDc8SAHZ{qpmG?``2wbXuyw29k)Zh~@ESoxy9q~o3R0KD*1&_p06bR; z+It0Bn+(n~ptbJKhLus^HQa$Ekr7S>5zf%F`rP5`;0uz#XFgUGgYOQF2rEd=4b6{m z_JXe0&W6Mjv<`)@t<Ci-ONwv;jb(t&vn~L&alm8g;59MOwf*2T%bmdMz3H&lJU1#g z#{{-U8XV^cKf=aJgQLPhXBdF)I|kjm23_kOjI{3oTrMH<Ey%w<xuA9IpmFPrBzo-y zh{^@EO9y<-JZhMN&Rf7buLy~6(EL1NeKn}Q0?z?J(-VF6P@skzq+bqhtAO^0BCX{I z?dwK$FY10u?_kt*^q@S9rXIC?f#gTfTKZ7<+D&kq2Q3UDKy|obeu}$cF=B6pYpD-t zoQb0S1BmhleP0RIFoEv7@uB$|d0L&FJoMMdL&q8XLHlmN=azxy1Muv#^38&t?FBuT z6hprYcnmx(5p;J@gjZRz8!YXGxkiOYf!E-ByICUHhdjQGvMvX|8Q?v)+3Bg3pgBLt z8b;8aqL8s<(0*Lhyae8ZX5>`}sw-0~!Fv|LZt>4_0`1vNPYWqdhqRF)V-uipv;fHZ zL2&(vZJjb`E(x}mJ0Pq)GZ8u`;uGOi3GzSUUQa`l<Vq*#UVD?0WFy05PxST8;J$^U zMN+Pt5we+)dA=o}xq{?M!>Yvapq$8Dw@Of(z&{tVha6;YsuAeEqZ||eTnHT%9%Knt z1D&6Os4)bs6D&x|2`Wo=DKJPfb^@tET1O39YYS<^gW7QzZ9LH43~)OMp)SDLvNSRx z64MNq@-k4^podw2vn6;<A9z0>@|tplxfZZ}X;8iJwh_{PSx`Fz(q0CQ&w6;3C4<Jc zk^9N+&^aN@{y%JQ2W(sqY3v=;ck?TYitx&c3dv88Fb*?F46mpH?I8w>1)IXwb)xBk zjhhCVq1-zQY0HDw)PeWwgV*=D2W6zVyP~eyf{3AwQ6bVa@;HH~vr`7R9Ce56%ZLoG zsEPu&6(Id#*qVOOnm5Q;HzX~C)@_0MgxJPJQrs=e(Z)jzl8mv8nR&qbE8y`i_`Dl< zy{aRqjfyT_<msFOnp1?2mtyUYBCY#O3J(LVkIn|I{X+IPC@)5V?h6cd$_K5rORmZ< z^D#;(NO8|Fj0E>j4ay?JO$~fNdjySg@{%$wGm`QGOF;X#6T?$VeT=+{lZ-selEU4p zKx5`Upu1EeoXV1N!%9;;e9I!kqjD1?(#t^SlSW0PmnP=<nRptMSNcNIC3vk&q)|pr zq)`cUEqys!9Qx%)h5HqS8u@|e<}t^TAmddLpt*|(@E$&JSV6)A7Dtf02l6YZtpFNx zgOw+s`F+UUF`&Cz{0zbQ2Xt0ZUJl5d(kR$@Jm4|}GG^l$3>la7$qdR#ayBiC%8jau ziU@+tMLL7e5CQ3}LX(HB4}h%kb<ZeB290@zmxIp&3N)%H0Ie|y%?-;+@$k*}4o2Lq zi0CUo`~m9Q!`4SY{0T{;ptK2Y7lYjjQVTktH6<s-*~u6b{-F6~P#FMP;{aO69|gKE z(jBt4!4q^=ict=D9|CAx7Bpv>0-6s2-&Y8_e;_IcBJPy~T0@_lYnYMb>;zi>3(q$w zc0<}rpuI0;N$%y~as`oxKyHJbYXDz=fm;n|zRwsmw+|Upg@$WhR78+7XlyD9bg!9# zUvXl1SZRuzS5BmHAnLjo&^Sk~TcxKvcrF}d5Ar&T%p{{AQ?zhQ@-hUiI{?q2`9_6D z8F(2Q;9Q3U?ssC0KRLqIwt?5SLe!WVBpFncr5J@(1{%3lMFk_RXNAQXB-|>aBEbHI z##>5~m$4IQ&NvTr#u#Lucqr(6B1=!_l+Yw&NAQ|mFT?CSP#x@Ln4aey><B6&0w8HK zFfRgad<!wo3n>>s?O!j%ynVWNr4yt)M@j#navU_ClL3|k?F|8?L&(~B$2{1YeJ`}} z9Z-4&VMzW9HS%#uF7^lC{{_0!%B?aAvS$Nn-y9@;K<0D6;eZ@p2sV7}PEZo8e8co7 zWp4I_+$|2?3!7-{3m%_9t`|W5f?!a+g5g$h+6p%^%t>+2D2sA4fY+@MJs^J~#>`-1 zkhT&mPlM7CbbXUsi2>*yO>kcvZEO&9Ze0>IFNYfkf#-{0c^%Am2A`>tl>#xN#M3z= z4L<H3UXkQw1kFFr$?&*`o}UNtLuCqd%|#$M4T95i800P(UzE8ckb7bKOksY2l+mF6 zJ1CvO+y!0RqYb)eH7Xpk1`AYYdO90`=41<!D`90T@)$89K0$LsKJa!~U^;l6qdTZy zjWj0$&sUJMnj!U32ITHQkXp2GL=Jm68>t?Jj(MWiQK0fEJjfKiZb|`_InX&UU(g;b z$o;yIG=Nn9LC#1<YPY+1BF=_z&d!IOS>_!Ky3ad34;Fr)bdYS6V+LL`fIOFsw9g%u zra<`=yvGLa9@DHu_pq!)LulGUURw{EOGMf8=me_YLP7J0pmjsuRJRL!-y|elz;?sd z95}(|Y+OO>4wG{&P0`v@81i`I0JK(y3ULsX8<~$ND?$0*uOKxyG!L{dASK*13w)kH zCf;@)B=1%EmZG(NQ0pz^HL1`xFRTs)m8GD4o{)2X0>S+RZ0D)?WjYr67=q8VD)i2@ zK;B!B4<FYAt$hI1|KM{$AoG1mITZ$QdBk`vsP0Vm%&N#vjEGE+G^)r*HuklQaH~l6 z%!RF?Gb~Te1<l<e`edmdzUi>`mQRFV30QrWX>x>zS8{~A3Ahay;BK0Myyq1(HjcG_ z2C^&D(G11zyb?$o#H9d2yN6|`g;gX+ID4l1!~1C<zL$AYxLakEQBG+XsBI2fTj*hk zZ5%$`)1{&cyoWZcybRJ`Lvt^ze@5E)Jgx4tO~Z4JjS2L86fEQ1_{Z>lLmVridck}C zL2YMmEMx1KXHZ~{yMoGnEa?eR&Oyq<L3;*{Z-^uG%v;D@26Vq9Y%a(ESD6T|1K{J- z=wqg!G5F9D@ECN2R}T1`6lcSXWcQq8PuQFRY#c8)2efuKBgwrSv=0E>9)X{u13EJV zdX6tRj-1_K^9G=E6Oq;yWP{H20I#_Mx78tSP0$^lmY#0qne;jDq#`FdFR&Cee-YvA z1xZ(MKSJl%htByo#h`tYusI1INEm|VPfHR(bA!%?;5CO)5uVgIg9kCb6O4X_3`&@S z?i0ekMh6n#pfPOt`7xk;3EAHQJ(r0-=LVsK8?=mp%n_oT;o_L<HFD0o!4@X)e4G*i zT3Z{G<L#aUy6*)g4t<=#a~VkU5|DY3G-#Os-Uk96%Yv+9#@0@t)qUNdb_#U;e+jsJ z1D!vR>EsmU9#jR|m!A|KnjUHFR|OthfUKi-4KV=S;hUWfx(freUKg}pGr$9~A0Qyp z$sjTua%V2M3<It4atEDZ6$t7x<bd|<g7yt0gZr(Jc`NYQ2JT^{;Pv=;#^3!z;P<x` zL}eoSxXAj^_U;#e)^R0)=7J$>OOnE2=W7L<g3lyE=q*q8s!U0N^-n?J0`ebp?RZs+ zM^156gl~EZXdRk+MvkXzP(TPI&cJKEVet>juXyH~D|}sC3%tSm@q<8nT0rMt!0%)Q z-EW9+k7+UZeqzu$gjniykUdz`Lfhz|yO%S{Qk<P&=ia4<=7yCgxw~aS`f-qPH;{ek z^<;zxXpGw_BGEmp6y5Kz{f$1(PKL?gv0L!D3^|~-7&v@FKx=i~@}O~>oC3P<#@P+D zf878ycIJ~?Q3g7{8L_@3C^^Lqxg85~vuQ@8kzY=-M__)0vu6hA3@)tay&3scC0D}B zZ=~@{U((8Q$le#w8F%0_EkXNXK<BC@h6h?k7)O@)W;vEeg`^w#X1RjqVvD0f44snP zLFaIQ=7vK_vkSVOJINUJ>^5-N;jJ?~QO-$2^r0Z(7vTZPN1*vp@R=R3yaZnl4q8tz z8kUeYjVE+Z4Ls~n$`bT2#4Jxh=eL2*(*WmRP=5=fOhGjRwOontfY=KwFTBC?;&Ag& z+y>v5>{ej_8S4m2P63stZYiL>?vU~nUN(U4SaQlvjPNT@GWN>>owt^p8&(3^Zve^1 zjuy~zUfa_nC?m=ka`!s&8Yyr)H#evt+1RNp*(elwZ!ma{#?u3Ko?Ci>f29+=+yc7| z>-lUnI-?nJPB19^$>}$hdn3knLHmUYk|H4IZi4G9a9;;fMuO@ASicA?hp@Xe*(0nf z(K#atChwCAuKSZcGfi_rXEypoK=ug1_SB^sBG!`mM5N?I=9UzsI2%IuB|*maL36U; z^W8vu-<(aVk}I8ZA|t?O{leFwf%ab{<@ptW$1$?<)4}&z8RZzH20NDe8iUqByH$bC zp@#I|O+o#C@ESGH83a-8q2RreQ4yZSu(fM2anPA-DY>Dbb;EGGVEYjLGr{{K;o@*R zL-NyoT}q&11;}=}LEB59ae60nm|dW=0FsOmZU>Dyg4dYB`{_=gIXE*<7hljGK4g6* zpf&u7pmQHw9MdBs!VHqCVD_4%d%A=77n*s3_Cz4ess!)zb3t~aNxG*;K4=dS=$uS5 zPZ!s6zYs^bJ)m(3$a+813}`tIa!*NeE_m-KO4uOnmjsPBg3fNr_D70i&{(N|rehUo zzaz3Z)GRYkmr!&+n)!t1fco4f{+Xct9igB-sgN+wGfei(1fQXm?3n`_zeS``__{w( zyUHEwy#=8CA|&3U4IQTi&3`*v6oS$dXxu5nBgii}EHFL9Jtr$F+_WkRIydQ`X;GG9 zoMP;gYYE!RSOr=~A88a?nq=&i2R?h#2(%_Ntjfp85R~pgdyjKKd-#3wobr=FaR#!- zt->HM0zBtY>FE|!7MYuqkzDEIlVt2v9u?tL<>?AK|Ei=iGOVH!oFAR@%V6#T<yCN7 z)!i#2*$8}QRyOGTqQr31LeL$op#5l(pfhto?KgMi_JbEFjB&3QMH)|q*1ZtB-6{+q z;|CQ5$&mT4BvAV?8L|csW+tS}MwvqnO-};fL+ex)l?gr%%P`4340<L$$X!m*vtCjV zX1IgxK)wS7RQ4hDBb^X;=vG4ZBEsAOYGZ-j32F}*hZRHG+2A$2aDPO21cA;C$_J}+ zM?D7}G7kZt?}Xlc3r-uz`jb;2{nrA}S#_ZHDOex${BvZtM0kM4XfnX+!mGSe!1Jdb zkg*0>{TSg91UkzBbhiPloK5!3b}ESq4=RWZ2CZpyEb;`O8)%s1n_~c)6G`^WD@pdu zL=q2!iG%V^wmB@F!0bR?!;a>@<P>;VnU<$SfX+b40rl@eXH0?WXf%HtBH{^BS0l?; zMnyo@=zz{`NC~en@X0MGOAI#wt?`81d4TXcXx~3fFN`(-rR&6S!*cL_QSPod(hlej z01IfF0F+jO5N?8|okY-jIOMbpYdb`M_RB!-M-By@HIN5chmIU3puPflP6>JaE@(a< zbcPma?X+<aXx&d9czr9vKPc^c@ct{ek|gjMMb3zGlR;;%gT|UXa|~1b4Waqkt-=7- zu8j<@fb3xi%_#xjli?ng9Rgje3^voF1UcM5`lyzcqd;rIz;hCQNr_>GNxq;tLNx!O zh7I`4YS6i1$)35;v%qr7GreKu6~tfQaKY;@!;*q1Hv>=}H%QJ41D*8`PY)3uL6#_K z*&TF;K}G>6&w=)^C4%;^A>y_av^OrwI4B?a{sQE<g@rTZOixEkPq<!?pA9hb4JbV( z8<i9!J3D10LFd*y-4SsE*N^UJP}>z8mcHrW^bDO31)Tw&WMl%~YX#c(3aXQRokP<> zcV$F@)>}Z&YDqByt&I)@-MyBb819;$3`wit{aKN@Ii(PDOsi1B#;pRJe>^=PZRW^e zSa}QC+XZ%qv6lg;ZUCJ{mExXL4%u%8+PmlrIk(W+DLXMdDmMx=2Aqdxe{N1ra-}IE zuYuzi)Q5IV4-R(9Pcn7_t;+!2LkltsbS7JAR76xxGHC6ck)L65rel7vdzdMxjSgD( z0y_W6(<3Fv(>)^t)D}xNGR#PFuK=mf1nmb0)e{(L3DnO<oEZi!SDj#cNm0@vcps;; z8$8~Eq2)?cco1}~Agn6f2wK*;8R9CNL477jSsVsBbHvLOy!O!94Qe;eG95G~04Yav zz-b%B479ut&Li+L8stZJ{ACoZTnDG)u;NPaT)bO(CTKlAXk7-9coAqk-5a!yC^s-2 zCZ7}@mYo>x7L*bmR+$P~p8?Vv2EP9VIqyN-g`T!S;~3yN9l5>$x6@Gddf=`rKy!!i ze2Hi;6oc-thldSlA0?#xDUHC==kg74q|tq-fo0w~h_X2(G$+*4wW1&r+@=dnPxJ^f zNOs9D^D#~_PN_641D#i#Y-DK&I<MI$*RnFI5_EpOAGp1jTxnU77!g>K1aCi@mM3~R zA@Y!`n;~dDMslW8Xp)gvL1ct)da#jYIjB5Hu5@xtHnJ>A&UJ&T4+PDhLc$o*{(z3v z`FSN}2bCp(>O7AU&^knj8c;lihm|CO=jB0V9b&%;{46p^_=4&YSevE<bUp<<4#0UF z)INdK>sa<O!|ej6N$}nc#CT;A$o@*mIbRXZUPxys27%fGpz^IG2{ae(j<i=7Qf?M| zBA*peiP@%suOo0b%t;EjKrOowX$RytlrRCEy`1D8<P`)8FR)%q(40BO7ywGy3Qwbs zWl0f!1yR9HNq(6IrV(Kk$&s1x{p8R!Qpu&D^}UJVDd79peL(kNMR++y8G*)qG1pyz z_97$lf<b`~QvV<dbmp&nSVk0leGzzF4>*nzBMNe`&Go^}a;q>vgc0&NEEzeG;ep__ zf1owTuyb@kcEQik@$hp_4GYSM0^idI8dLMi2c4}1YV(9wIia*&(t@*#k;1A9G)|u6 z9%hhaWC}ko2vlD~+Ct!Q0Z{)VImN@TASpMcI4UBjEGgR$yx$aZ_K;&aau`6ya>C$d zB^%_FCL4uSg6^9Sj0gg)IRmvFu=Pi<kC&jd3qkEi(Ec3w-3#D(RCpMI%VNlxwis=9 zkQ|~eLaYUIcFX{crA0V<LGSB>q;=T2zMwHPPuH-@<Xp>2P<b2%>Z3vD6cGC~oU$Ur zq4$a9hNgq=>56i8DoDx%-798VmXv9jnVf5B3<?KN&=_cLPGypjDR{gC6i3MUHw{sK z!}BWAoh+7~?r^_@(**eZN_e>ds^6X5lZ?HxqJo{EaT{8a;_j9Qo-^?Pt)I3m^>nu^ z^>oc~1LX-H&>BzooUBA=&{|Dj(0RN0kr7_mp6<{yQ$T9L^DB;7p6-^ph%t4fwgsg9 zlo4g@o1Pc}zN-_|o&dEE%2Fzw%D~~^0a}L`1}z(dK=m!?ekb^PK!hJnq3#ByNfXFg zMbMos;oyCH1xdMK*`P2(3Ww5Uqa4tAI5{aGx4IalBgzc$I!RbK!f0^2D=;q`aX)}_ zIe5+p;Wy}fK_&Q{Tkv_&k-3%zDejgf&@ce!uYgRXFhDO$;dgJCg7(qnB<BS=f%>=5 zw1!!>;!qE255Vk>aP~whH{tzKqsR!)bZEY-0_R;&eeV`j77Ct22&?jj^s`X<hoCtm zn0%PKrE8LrK|ah3AJF<-=sh9G<sCeq!OK_V^Zwy;FZrN61KGEN(H951H7VT9G!!-l z3_Ft(o`ykb1Ke)_s|EKBT^vDu`}6?N+E2)Q7wLTmXr6`Ldj|Ilq|OA}73FSO0tu5) zP#J|<Ux$@|+mN8KROGP~&=^L9M^JW>kzojAz65k;R8*BuFlPS*+28PUK@oPM#1Cd) zDkm2*CJ!zHQOi9fKY+p>;)gICX#q4(05Jo(+<~+Q+_IzGAoHckhCyXP?v^EBI}M>? zmF1u@UGQ4(Wb`^7t^Ei(_W*P*adM^;djBsYHOwm~DcsU13b9rl6u+>uOyKzx>?TOt z2`PL*Z6ia38DS*_SmFcJ4?xlbi4(|PUdM8bx&ab?NPY8s&^dFU`}PV!_w6C23&^<_ zsCVxbg6`f!s#C%3aIo9mgUXV^AYtc|=ad1uKP%j*AO(D0A#!?$*bh3NKL>Q)0xTZ} zhnu=485t%a+n*R7gi@b_?LiBBq&ftAZzwdaBlXQ8We0Nmkm&LNbjAe2?MPvUIyMLM z1N>|um*Vuq;Nl{Tu!qDiIB$W<E||V>qa1X9Qj|wQV<AZ4h%NtMq!;hXVx;mGGCzit zt_wl#1&?cFI$D7DgP_GVir+J__#GPWNM%QPWQ3PNvSCSKL@;C=5+&V)lpyL)h+d>P zMRFe~tif&q^_LBBrddx94D*sxu%ua7S%pX=q0oC)Op)A+QZ}HMWyvY%X%y+44ruy> z<r{E3C%d~<rg(t&<)E|`q2(=7x<k#Y;J$P))LoUxW5fB_%NJ0)8)6r1JU1iCJqTKs zW5xkW-3VIijK~XM_ao;$NZy3xe^5IZRGvb{FbqmT`52UbQjKyz_xXU+Kd5f;adxVV z3XiG+&9nG8J3+#?Dj$4CP>P2i`gkI8{KMHuZh(}fNNs3PyDr%{C^QLPre}cr@o4!H z5(m)s1IV4>hA8zJSRTEuL2ZlT9=C_gF(AiHHnz9{+X0DBP?-;^vx1Tm!%*A->jy*D zBErVq(Z@m|WlUDGF*rSe!y0sV16utDwhuDa;tHz&q3XP_mP4>HgphEza!~ky-5FL~ zg<cnd=Pf{Izd_ddn1kkl{4<?EZYlPJjvM)B!sZXk(~-^f&vb&$RfYLQMu5*Pg2X2z z?-xX6re`3>LAX&)c0_OvdKm$2$N0k1H)stQBz;HtC84K7@ccX^KbU#Cm4MS<L<Gio zQ4aXNDzvnZ=@xiCgv?by!U3ghKuW8K{x7VpRs}Dg;AtCH&mz}dpnD#pBD@Ts?H+jF z(;LxO0^Q{TJ{K0=XNH`u0}oGdJh?;q+5y4f`v<`16C>24^d(^PYZ=ML(6S;FwjV9X z3p96_oEMZ6<?3btS}zVtAJBRY?lw?)0O}7S`o&I3gw;60+r6I72I;=2c>%Hx5=TD* z+V24EF$Rz2q@vDeK+=-CTU83Q{Rj8AD@OkvTiprn5BY%B8iV@!uF!L@f-@j#4<0t4 zzB@RKOQUjgDwB<apy#ThjTa%#$_BOLK=*QE#BDHWem4R%J|5(h;s%<_HwB$BV-RYT zlbHnC*9X~429IBGSqzC^&>cNhp!5=$3poqQ8=BtWeg@3}5f>Jq^KMO2+(737SAgy( zK}p-7HauvL5@^mBExeOK=etIR2V$JBi=GCM`(L2C4>`X?cm$z^Z%`GMaDnDMNIit` zBTATC!rTd72ad=$h_C|fD}>IeA@xTw(n2C={L9%C{k&l`cLt(_6MQTktv!Nk3??|- z6m+(HL6kG-uAvIUs9?yMi=Z|`WH@NgTv(;2a|%+wJGs=;)zA<$7ao}#n(k!`N-xRa zb9TLqyvkBMK;yB=rJ!*I<T?Q!)<|s^Xj=t&ej9d1Fr-XHq;*(-8lLCT>R9wJ0k_jY z>k&ghcgSL%J&dj%B@7|uS59^+cwP`Ku08xP$|O);jdBk&2{DSqbSH8<6Etq-4mMXi zAQ(&E2|e#%vn$W996Y8ToKX<vkzVZS;)>#SBEuPWRu4uvBgT$U#~Z+5g6=+0_@JC~ z4c$9{6mJpEUXZW`?T<hX3k<VN!Q)q;@;$=Y3v?Hpfe&c?ry=Ux44L&4a^C|nR}X2E z!P68xz2Z-!u(0z@3^y%8lmQv=^QzF&CZsLoo>Q7=0IS!)W7$aKrlv46;cfwqkAlkH zM8on-lyVC+mY7=tSLc%lx*Hd?hp0RgTHaM9x`*YYxRDWVXlA3>ix{UWM)9``aqSA^ z{toCI6V$f96LS23!wc#cgg+7Mk&8ilF2Q3SNa+b$mcYhB;c?-Uhcwm>x$6SC9z(Xv zD=9Z92b$-xjn5Z(Bic~l{t3DpL1`Cx{1lNkK<5!S=3|!wwa20P2HNLE=tE9ZD0NJ7 z3VfX=NI&GP*D!a>5TrSX(8%!QQqY`vlye67o-QBQm>(j4!rOAepfTZybkG`P$k}K} zVGF7&;p<FY4AMd8*e7}9fcia%aLNhFh^jQr1f6l<?QUwA<X#Rp8{waF*w`vGtji(y zK%(~jkn7KUa9YXpD@y^LTM}xRk?ic4>xDE&8Q~EGE;m5?;KRbad?Djfm}ks+Wk#X2 z<>BjG+`@uGoZ<Node3E0SZH=Re7qddJ~mDE%*1a$C_kp;S{6lxT4pAK)-{05htC5d z>N?Q9@y?OCur@fjO@)|KaZYl#%p}<_?p_8-My@#Ajar^#ws*i~6097;UACd63)mWG zP}+yFLqKI6!L)#$o?+vdp!AG1UyIhafP@oNEoOd!)HR6ojZ!y)^@8eP%(@4(pD!0< z&4pWq0Vqvjk5i2Hcxj@CS56e@9th;V9NK&=tZj(ahDCQbsLu?G3w(7na=D4COdzHl zKo2KqI}AK_k4Uqbm}?HfYxp4dI$*dHy?jKePe5zvkkb-oor~n34A2=?$Zmv};fQ%& zM4Iu0m5tE!0UmcZu*^)vEdN1$B2XVbATl=}qx}tC!w8cv1&udA^CZYU5WaI{t|xeX zKgfL0JS1rCA|$_q%dT9=dKU278H75du?R;<eg&WRWr{3bfKoO<#wlQJ7u0wMtx<*V zO#`_Dl!rib6CgHvJ~IHFp$%Hki(v+=jQ0keC4rKLk=C;yrDu3s6E<%T85^pM0^MOB z?w1n=x(@)<Ms&t<z9zzaa2*W3JHXA)Aj#MZeBT%97#U=Y9h}yn>nssvvPrr(sE_I% zW&$4XgW3%~BOJ5r0JkecL46j`eO}-?F9UK;2g=^5K-927w0)5Dhl2Xu#h~++yj|gU z&=$bfeR>&!&XWb7B?nKdNNayAp?ecxau6D2Y!PRjj?u^P0nLwt+b-pxy~W`DAfWaY zMw*7i4`{p$RK6hccqQl_`|?cCxiye9>sOVG)Yd_3TcMX#pgqy1N$z1G;C3fwm=jQM znw4zq7aA3j0Y0NA85R$ayWK!{VSv`~7kh%&a-*bWcsl{DECr`0P+o=f{XlsEc?}4x ztp&O}B?x>@pEsu2u(8mrM9{g`uBK(6v$jBW9D14NlMA^69c)*GFKW7h%wwaN5e}MP zcMmfGouQ9m7N{)`n#&7?nCT6@UmapLXnfH$J1Qb01-%@Fj59#=K-Bue$F|V=B3Rq4 zp#Cd({0uSH1d0=I*!Va*;c`E!UlHR>sN$eG0knP=<Zgnn(kNGmo5A64019L99gL8? z04eW~#wro(VKK@b?D+;%?_tX;pt2jatVhikAbD`v4(|_w%2&`iGSD$*P&$C*6G+*P zqz>+O&>R_b{2SFSY~caA-^ta@AjQM0ATkehws%IdC$!!G-=7Y(7rA|c5e9A*1|T~z z(-dU<BGf1&Cn^GRFB&{QV|NR9Y!|8?91ieu9F$Lx%7qkMaqf|l4?0gBb1cv_H!;Gi zDg_qrsPmuL(<XYJz-+srnu*+|0JSj?Yk)xO;V{Y~P+tc5PA=qiVX*tv!2So90ipSz za>X01zXGeLG2#R{UBcQVp`fwN;(T!59x)yOy6YIDeF7eH0fjkuogk<#2bGm5Wem8i zL!Re=r_DU1J`<vkj_3nH+QCTuD)jyVc>NRjJVO6Wi?U?npo~bP643o!l~K7BWhs@Q zbMp<#B7-d|{jws<eXG)q{ZPXiT+et{8Ki^O{X^EV`l8IqB!lX0!?55G7enw}lm3u9 zO9~>5K=*K1miibKR3#ain1k;Ahzf}`0G;gsTH_m;7gQD*oMD)h8&(x*<W?RPoRO21 z>jx^M!$PxjTtH_*CK;K6_Fm@)=lBJLfbX3H-G`o15S5pmj~rg!!P%huyTNOP!DrB; ztP4VvIj}f}t)q_w?Q_lq)h(tuDV0v({+hR238>rzo&8|$3GT~<nt|3Ff!j9DmLR!g z&rHakN?0C*(a?Q0Wl8QqA<4Pmxi!>r7H3m%9|c=kgO-+{{SeTY5YE1BKE(aV^(nlK z1!@z++=12x1)EnH6%kdIXcUIrSI$o|s>lvC_R2!4n_y)(t~Jb+;P6JQZ$|28WWd%h zg6}*B?*{?h_k#P}0B{+b1m2Ssm<L)j=;`5Sker*7l>)o}4zk}9>gGVu{=3}7aMPSn z(D|yMz1|+#`SAU9mEb*iX%R+YRj@rM;Bpv#1}k)|JR~17egQcn0KQiiyk`wkr=+ET z?plP*z2iF{s1g)z;C*+X{c%Y9Povz!aw8+4`?(PImnY|1mZP5|3Leu4$p`IUECrv( z3O;uYdWK-8QwXSjNy>$s+W<b34CzcY&>ba-5q>3!5q?#X;a<g2xXp1+G6LPJ<W>qf zgB5<hTvn1%SY@OUD9wZJkIX4f2A2_FG0+`=WuU#MNtv*7#X#roIU?2#g6`bTbt_Ib z3Im@<gT;MSiSCxh{+W=ou|W5eLezlnQ4clqM6|)t&acIL=4~bpzrfEO_s?_!@6AE; zt3is9Wkh5|wi)P-z?5*DZq81L@B*FRUzU`GGhXO$Rxiq3e#VL6K?a~Z&Qn4ANJ00{ zl9o=8&X@=^^Mt2KNPNQ5An1-b&{!lmFF?$P+~0_Lww!Tf1mwPTWVa+6Wt63$-H#3y ztIRNp3@?Y}b@-j{;Cd2zrXHyN1Mf-1xJwM}%)%T?@SR-Xv-Ggu$ptza)-(-#Hy8NM zE$BJkV86i40=Wl#$6H{oB{Y3Q&!x=;?Hhp9W8PTLC54=Y7-0;)Uk-E+7^qK1(iwl? z^bhs7Po7^s=xo`5V5eO0xyhJkjavFRL(gtSb{m>H@IHTNnt-#3IQK3EQoe%oE@<x< z{Hz#onT*)O4BLl}vcDacr@>}`+8vJRpnMe>ZdwK1S8oPdqZ}FTSCHb7o$iz6SLF%1 zL(K@~zH`tXe@Gfbm{S^+>y{lA3_8~`C?^?O_CV64MVY5FbPs=cMNVV{=xklcJx2(6 z$8@y4@!<9QpmG}IN6?+Huzmc{z4IvYknltHJKBDEP+5;~YdZ4zzo0V~6C*NmVE5`F zy9sU2If|X2dyTN|p$EAc*^DIjuw2l6o}hjG=yHg?>(G0jQQU}SUp<OHpl7Kf^pr-1 zL(j%?w=DOG@Pgdy3@ta1-GpPWJ-Yuud-V}#2cXyuN;eSm{WBd6p?mVt^<&$AkD>-W z-auzOg4ZKM&vXaHJuzqJgZ+jG2k;q-DVc`gdJJ@CJ-AFWEYHND4m_8Fat=PYyhfxa zaQ=68O!qQ^q${tg0&pKH#ly=mDi~7Fg3Si)DS(w*&MD9{4-BhP!u_(MBK)ens`4TC z_5?dxg6=*}HV(^*GzzOqu1p5)$w3JlbUS?_QZkZrO+o85^8BIaHG#%RJ)KjGBO|;( zYaa5vDzhPVGFn)8Iy>e;(+23QhTNpeWU~m5KoqwmhMR)K3A-aaC?hF1B_}x((~Kz4 zeZNLwmH6BN%2Qrd`RU*}0=EhSZx5&9$Z*iTt)RV2knvpTS_j;20gWp<8$!;ba85S! z#A^;*9pvsGw6IAF!;vmLyfP5yf*6ACQp$*O4@>q$D`&y+<Pli{p8s<xfb@Gq3_<(n zq4j?Og!VARq1US{$vxCE!r2RwUO@M0VY9=fA~Pi-$N;pr7ddT%?h#B1i_a?4Bt zxi1sa4h5xq&=?13e+lSpQ1}_5&R$tb?v_<iIQ;GD?Bp0}1lo&O4001V4}t1>$k|q5 zxbB+(pCOv;?p7L*83nHIldFnB_j;8_hMR!TYlYNX&^pK2F+IT966PQ5@*a>o!9ZmK z_-s<lFtPA43MxoJzyHFeybN?^Lb5yPZt74Zvl00@zyov+a87xOiz%oc#d5cpYq@VF zt<I8-f}ZbUf>us}&uj&UH~7q0l)KWLjC{gD{pvvUvtUuoLdxfP{y7z(GAcR6Bd9VZ zJQRLD4LH3bm1RB=eum&P!i;^<%N0bq1u9oSa}SWa*}(3Gm4!r?OStrd&S=TCfVkHg zvab_bt`#KZMwNlf5}bOG$|7(X0PdrJ=6TY+jNo#has)IU1G{%F-P1V*RJY~%XF4T= z${`32%m<~JNF(SS0pL5-9P_~C6*m84mO;rW&KbyUc91(jXV!!4f}MGj=N$&#p9pn} z6X-l4P`QBQKG@yrkTZ+|z-Rk<fzLp~mo6aVk)aUt@=73Ojtipf0i7`%fgFw=&~gWK z#&9mAUIUwtaaOUHA$YA>rjwCR1i0-Bu>*9rm62gVvaw%AWNt+cSTDTn0jFhX{x$`l zIgGfA1}q0HgTQRGG>laKfZT@O-Uf$<r#6aTK;?;tAGoaX$^*CatNg3V%aV<qGLq2! zgIw+)hX=khkm2{xfY<uq8fT%^eS~<%GhEC4pyys9&dq|~HwfzI;MZFTIXe^Fc7e>H zz{Z0>>r%mIq$F3O-hbqcIP(EX4QPB0^BiQvT|1Dn*S`{yzd>tAu(}tzRueJj2wn%G z4?hC~>25pFxk%tMyYhU~L2J>IjDif4+>!5W%m&@#S^~<`p#4b!!A^L?!rvJZ7LYj} zr2V*{b}zPhRggGj><M;mDJZ;0`n`qVyQN@f1cSrQ9ey_>Y@NlBxwkOcC?`8A7<4ve zSh8nk1^Dhq(7A^`;TZ-=;pOl%UU8nQX$-y}4|XncS(1BBrjM~-P7>&@8F$M{pWK3~ z0Ap~SWr@^g0gab}=3*^<on1?P4BSw|bO_vAh#GFl`3k&Nq8yfQN7B88Si=N%7C4RX zE%Xg>G^EiS0B9@-(&q_=pC4=H>FSmp<pG|9Dv1gP?;Aor>o?dbGd0)=v}X;}pG}Vp zMmtXvt^W-^OBp<-77AO}SOqRyAmuOoOk7Yu1^;=$k)X9rpnf)J?ghS{G1ABqR9Aq{ zOa|>a@iGR_X_Q7)CXb$Z45?Q~&peLsErXQ(p!2suW1OHfcsxP#wWdk#p*YVx_7C^U zipp{|@pXyJjmpgdpLvWZ3ut)eG3X2#_fY8F1H<FY<3SRZurdVHzXq*!Kq*T=`w5ZH zjm9ibKy@JejABrmarDe%(7Y~Uej0R^5@<{&-8aP1h&J^WXiXaAjABrofweC}pugbj zoDILf2sBO&JNpiHUOUQIKkN)ZkUu>TcEk3lqo1Q6;p|x&3CX`Dpfm51K=U?;zG_K| zQCMc8QH}xHnaF0I&W6TO;a)|c^T43<KDkN8UL~F`;IoY3=kj_wqmD87XF6h-2|6<% zDcG?bGzWxy-Y(Q!_<6}tK9Tmo?2Rf*&NWE)1)s@Wp6-KjelwCh{9Iy`^N=BJ;&9N} zxF)5E?rv2+5l)85M(MC|7SP;0d`tz0`QSNa(A*dJ9?Y=xe4h~Ca?o4`XpI199ZCfB zz9!h18M0r&^VPX-rO8I1amKJnZ)bxlUl*tHRM47UXk4Yi$9haNAZ0%C+0CFi6wuk= zkZ~U5c_?JNLE}%*IWM?>Je{2~lZ-)Q!3JiiXEcM%M4LBq$wrEI(0r<;QB;IiZW3gU zKO-d~s0=xNL1ssW`xQkQdx6f&%J$E6%!<m5%7v@RGlY%Tz|tsa4P<VLGqT^Dib3~C zqPrVD-{tORnBr~$cNb<jnL@|*v6<<F;byqGNas}}nOT(tx=%SAe5N({{3_5HU^vbX z&q&J6DS@1QX=0WPx~J3~w3jT(z$ZMX)Dx6m;pq`FehW(*k>REVN#T%rX#YIFV$dDS z;JH6%!-Awt)cl9bZJ>1<pmQoocblbQiZiMmFn57zcem2Sa6{<&hys-G0L{yz`U{cI z0+Gs-M58d%s64NXr0_7%T_$M$LyjlMaxc(&LueiV+mB=pfjk5{S33t+{zH^o;PL@W z{&g+)bq23(Mb0Z_XmiJKIYc}-g6bOb-R<HCY7@ZCh4>k=P6IZ-4lYk2>zF|EO5nS| z!=2O1(fx{Y7JLZOne3pu+rW3oA;ph-Nlt2bR3&KtaB`&+O1vh9o1m0|pfg~R)0L+) zjxrz9jU~Pzpg2V<N8t0Ej-a(!AU}cY04(Jq);LA+C;ZHN(0TIk@+BR1b}gCi#t2(P zyr9%W80iRn$0u_7b+;^su89DhaSt!Iz;_Ts)xpzJHd45T<BlJ2zVkqeUl+$5Ph`Hc zBd&UpuzQJ(8;o@8gq&9@;AMWMBj`?hc>0E<2b4UYj;rlKY<eIzZhS(>%;WHS%hWLu zcUcBrAB3FVD9AT-O@E%wpgRu8Pea(l6<UUY(vt_|{tX=E81^y(CEp<Kg}|C`GEE`n z7j)f<59oet_pnM&lstiG-(st8q3wVYP}zsxZbeF8*y?y_dxMC&8ty*CS|&t$jX3v# z^FE1f37Fq7^&-^=NcC(YmNX7C0~9_~O5<3|cBHU|-p7KyzJ`<|X!QyaX@=6Yj#0jY z(l-?2ZJ&@+UJ@vGM&rcIASx_9f1u(7sc%>m6_Jyhoa<Hsx|<H#_J@@VBeq_^nn$5| z1(eV6=NH=4)v!DRE(?+Chmq2Ta={j^MAy|=%WT5!aYQ}ilM9)X^v{hdi!=uH2a(#b z&W`DzcmeH|0qt$@b%U;VK`IBK`}NYj-3>ERoeiODRr1sQL$WK9Js^AE5p^n#u@iSt zT@BY;=?5Bnf!T%JUWMChf^WP6lFwc8@!W+4S}O#)!y7XkeDWY`VLg%4q6b6_eGCLV zCIGVscE1&-8`EK7>;t-^C%mF8s?rhW{u1zcRp@OacdxSKT+qCPA=228TY0K8=#Hlf z&{>07Q6XVDe&L~p$nE;1@SIYg@QfVz-CiM)rG74c<*6urGWcAbnWsxsd8)Hxg<ph| z39>nnxo%mBMk$p^#$lyVF8S%6RlZezMsAsY$m1oTyE@%1D`8_wur)mJzEdVFt`UBX za?i;~a<|O$1f9<Xo{u*KpW6l+!|}-ltr7G??Kim_W+dmP6eMLr*L}L=r~8Ct;PFoo z$Ui2@9_h&ax~wFlin8Ra{B%#FsNAS5r1b3`RhE<&Sdt97^8j>TTUHpV*~sk|XA=`L z{g|0#6l98;o>0aLE2F|e<BmB-h`Z@PeP`r&ay3l$$bgR3VWwH6@C4n{QJiFyjFjf0 z%94yhX$iTH=Tr_lTL`q*1a!_Pdi<w=&maKZuac7o+JgfvqmjcjGs)O1J1WAn1UjY( z%Ilzgip7cHf$5$`p@!h}2^%vdF;7J0T7uSnR(d*{W~R8C6#3+O8K91vJHhU}D}m)f zbU!48yH!RRf${_Nd^J$~!paoN+*1M`PmOR)hq$Y_G%_!!6eWHU=@vG2TH+hwL~i=Y zO)|1HfaDQSI2dLoxm#u>RzmFc3HJishg(Fz{&L)D*Dx~@G)4^C(}z0l3%V~8J~x2- zK0=hfAiV4a?U8_&`|e0_fLs<~znc(kuR$Q<uD?uBedLr83A)n}6raduA@!G_?HIV* z;q@Wbdmur14bmSbxNinJK7>B5?i21;mIN&eeO(-h3~N)+{S3%?3VFPy)DL;Q&^@Xk z$s;HSRE9-{SCl8ZyMpddf`)^Ep|5ieqHJ*XEC%hLjd1n?pLu{fcLiHd2)^SK*V;#8 z+RW1pgFU8@H7aS~^CCh)=K+Jyf5NjC(bE_-CJc`QO#PLhIm-wm&>eMQl}W}<!BG)z zhKUhgIYIC}tQpAmfySmmYhFNW-3<_HD^1b~m;pMUp}^Cl7<AT&K}v)d=njs|M9{fh zp!>FR^GhQPEpw6$VCy~|^*zC7>o}T$^uYJiy5y&W&T#PbFfjLo?r#IH-2v^Daj5{^ zUj<q-Z4d?B^8=Ryt?6|SDoDw6%1Ux~t4gi{?ZJSwJ3;&0;o$=^2izY)tdWPWg?9Eb zPch2LPH|5+gVO2Vm5zDI9_e{F_kCm<61N`+S`LBMm!hv32iGso$yoQ|K<h;_Z2F*b zdEhW0cApB7`<(pqP|7RI2xrfH@czw8Q&9Lr?=laBtyu@xL0*;F=>eedLYfEjs&q8- zbWTATtMf7}&kVrap8?tvlARb4nU1vg1Ue6D2yJtu;M-4vOD}xASA?@C(*6#_-V#v1 z)YGK`mwssb(F?cT;Pm8Z0oy+VJ!1g09|pdr-4i8ULfWCAeKvvapt(Q4qJZEO$Qt+H zWbFW)Ytv0Ee2k#$>(TeIK->V{YvJkaXp!g=h%Foq5+j0&L3??yhCj><=-PHqchiid zaPVFuV#6Ta)1$=P6MP0SxIJizzGn{{)^K~u%aV;M%Aosd48Z9ao<HIJQwtxXbOSu@ z#lEixW(S^f!6)3SEXpH?V7x-yXad@wRGefSh$jt|mqoef7~yhjfU_kijbYV~Qx3kD zpaNbdgVv7(I9p;b3lZgjMY54!WnzRAEbMYpJs@jX5bNy0b&EM9+#S=CLG3dSU(~(h z9^gG3sAA5bIlP>5P=6h<zZ$Zy5f;CZMwU6C`{(>KonU7zl)}V(a^dH4LCQQ>T!HR= zjR4&<83wv9fRg?F$Ym5xx5M_rqn#mubjE;V9!ePtcBd0~y%Fpj2Uy=4=lKV2(6yo9 zHL8#^8PcG8K*3?<kx~%l5tNTpzbo_}Q|KOPupVbe(7l^@!WX+9<T}>3%Cj66@8J0r z(EfyhJOcpIZh`b;T@2Du&il!=%uYqy4-Y<D0K6~HvN*}rD<e4v5{{s@j<<_rv8NmS ztc$#;h@g;2W6=Jk3g^fOuL$rt3rOp+U||a0%i$4~kpwv_4e6{7&^nl$Tu<lp3}_vg z76~4|2&zmncEmXM0Bj!Q&cM<LBQMbTJlUXgK|pRp@t3hzPGm$-4&ofv^gK}c;Z=!t zrU58kz-z%E=?9njpz)2!2*0Wj(3mvnE<xuMSpA9A|4N4Ecd$92v;+#@V2tz34HDgR zs(f-Rk@RA^D-xm?(&jP%w^vI+{eExfl#(RSo;qhk@O_ln`~(Sa(B4Y4ICORe?RSRU zVFXQ=Ft>vGMWC?`pFGI<S)jXPqTGW(=iLT_$D}~#8e&Tq&c*3o#!e<)(DNsd%!8aw z0M6TxItNs~Cg+A#q=bi6r8ql*&vc23@G?jZ2A$L3W&k?pI2lq-Re8EsWTb-6p#a~b z23pgQ6%`D+6Avm5DUV_Ga=IrZotuEt0+zH?3ffBxIv+jQJq)}b-yf;m0J|AWx`M|$ z=uR|e(~Kzhz<e*GoKkFI4$T|jGvvVcm$`U?&)k8WWs?nS<DsN)pIpmQZ)Z^ZBquAe zG8uFhv0+lKANY<ePiM&ZE2w=9b{{Mp5oa@|LH!AB-+=F!K+Rho;JY`F#GH`N5JVCO z#ZP*<kFyhUf29(sJ}dCX5<cF+p!*5a^HBQixnZSI&P4jfnSh<Jvp!JsN@<c&R4(|; zPRulHkemlT*9*;WApbdm%Rsa^g`EkR?`33I7Uk|%>=O=N%a{l2`=NwAB2Pp2TA0Ge z;zDzC@)A8j^}b`CFYF8^Se(IVcTl@1yA*crXrNI>L6Uo5euOdfY!sw24VV4c)PmAH z_|8oi$ax+pZuT%p2c0h#X_TJs?H&p$Q!(;o8t8mCw6KJxE#&kH%0n5+#(w^wbxt5V zy^J9JK%a0#S&Uu|K-#I0@)gcTI)^DKJj@``-7*{fY^O-jxG(5zCFC>Z+#&6IZ;W~b zRDR@C;XM-u+UJGW$)Iyx!G5+V^K=2Vmr>eu;66H}9tX)+K;j#tZwwnJhm^&jaXe6d zh3f;i=aA1Y0H2=)U!w(I4-9e#q&x%d<AKBvoR1iThpa(1&5w-mElKtWt4f5Qy#PHU z3ZVyno(#@)B2|v%pgA5$ISAPo3M!u=afIN*=0C9c&C}Tl`#2+te?WQ9F&#SA3>pta zX>WtmD%uz$dKh{-JE4y&nxeZKVh+|dwb<+fwH@-3b1e;%as$mgo&9p7aw8%2H#`in zoa+Kv3yxT4i|$Y8SOj=2FuELk9tys07R6n-!X0@|3q4%G;~TI!ENK0Uoc5q?Y{=SV z6!&2I4LZ*b9&bQi^Mh_Dw)H+>cOb8?CCM(t`W+JN0<Qyrt}VhFj)8>NW}@i#bOx=l z#FC#7c^T9eDZ#g%4&5Jw&P{@sN$|Aih`i<!-F<}eHh8@o0XKlw6r!1no+dE(#H`mt zGn34)gsksDH!B_KOf1OyPn2{9T61rRT5dZdttUoTOV{{B4@*bTeuaW4_b|wui!<!J zE-dK|+nRCs+Bd{nc$D~t)^&)o0DVm#X?YG>j+B7b6TsG}<F(J#3EvtX$lM8fd_dQX zpqLA8HxXDP3|kY8ZXS631L}Mey4mPut|!vkO?0({*1Ut)O%ZYfw6Beb7w~#slyr{n zCamQbJpMuZ4X~sca>Ej|XNC%XpeP)v7@z2232VzBub06R&t)kQL7=l}b3kiGz;OjH zm(laFlOr)}XwdC|xdTU=3bbyvBn3KO;+qv%4q88eZU(yF(D^VsK=;T-<pqNFAfTi( zPiH4c*@LJ30It_v^3#36{ztS4aoUBn{s!H>&@u!|TLd%)1l|*5<_X@9WQkgaW0qym zu@^+U7~k3y$T^z`w}Zzypz9xCchP~?Q6zh$W3GX~l3($y)4}kwyIXb?=*;J;{B*xO zClgN>&{~jmw00)Q|KR=;QhU_5%C{;dBQh%)i(15dHE2H={`3hCBcwGYK?RYx)-gGo zLdO!YlqraH5%6>aThD{n-yR@;L)QJEtBW+UEKV}^#L@l+g$wpIKIrDa*9e5<r~71O zP$T_-#|p6JPn0toJ-l*2dlnNTqH-|%Bbe)Ss1aB2^)*<}lSHI9-w?=pDD<$xxjqQJ z+()cq1D%^?=IMfc4I5ScguZ47!%grtW#E1a=*&y-dNJJUkk;TiQ6pWTujc{h*<@!& z@H!&zO7NN|Y-KIRnkSzSxAIgX%T?mmh(X){TT=veO9}YgbE9IS+(dLak2KyxFps!L z6{Na{Wn;-7&~%0E%vF>%o9OixQk-JZi?<Jsz9$!(e&ju7SmdGmZwRh8!bp=SWqb*u z?DH-6bs;uwBCq#?u0g`E2g&`;CZIK@=;4=}7+wKdlLo49i<8|mGC+47L-*BL`h_^6 zozIEh=5Ykg*MjfN0MEx_KQF+9#C1rZaY<1A1i2M7zkzm!80c*O^2`9Vbts^-^dS55 z!@y_T!Pd!v$AYk&1qxE1Y7Cjr^3Q|Np!*fT^B2a3_{@OJ!&E`kAn)1nbcXJ+&ckwk zsu8$dljj3lyO;?Y3xl=03XtbgVe360b*pm<bWIp!Z!>6JE@-U{d`%vx?+RaU0zSJB z$9a{GW+-FxSrGTb#`3YPeF3-moRbSYT`bbQj6rKCf<WhF<)%0%r~79*=0V4a5blJW zlM3IH2wEcnnrlNlXAs(EL##Ie#YF(h*_xm+545!+pmPVIYuv%>^zwpolJbJU@r0ol z%X$Qm9gy@93SX-YJ|7Y7EJAR40qcjZ0U_)BM9*|e)|?>6Ey6wN1~|eIy50m7_n2oe zg7u@XH35eu=>F`Woa7ul`kWopQ;my3=YWIG*{$^SFa(`5Ss8(J<|xE`(3m-7jR{t_ zJ6q=axtOA)W0*cr`XDv_!1JLv&YXmpTTul*pEe7RyAW$Wkke~AX#5|Go8aqT;QoW_ z$9w*yDT!qtXihy1be0Hsf4re3{OrOALkl9xMN3?I^L;~H%e}$#+mQYbcwQKG1`6^S zjyaZTQ4xNA(6bv0u$}V=n(x7KJ_}-w6Wo>wH1`JI0~1yjmFa}F91jQq-;aa1`vi0^ zsEb89HnS0TGdr4LbCY+lDPpY-XkH%oeJP-@sDOqA_^x}%Im+PqFi^c?;Eg=bgf#b> z0=@?ec6OqpC1Q>`G(W=G%P1urRJK?e_(XvE0+tz3&W0Ju?m5Yxnb7n0U}wvL?zcA% z%1ClA2i<E^krJL$85Nw7?3ov32wFGh4Lv^;97oP>u(K>dYkNwP-9hJBcojzlXT#Tk zg4^AYId9OO5=+p!VV_{P%*b%i{m8DRK9we=K1QHB#=_EIVVhiO33e~|95?r{N*~bq z(wUZ3QK0((K<DUYnieKkS%S}F3y1)%AIK?BagHhg-xKU&P!2j@5w;dD2y`w<gd_A^ zE680siEzKd?ws?=i8QjTjB?H>h;lB+7RQjb1|m)7Cm9EpMuN|2cQWvHD*>PN7@6yq z85Lfh;ge}m>XT_%nq(A|69Jm9^$07D!gU^)5$L=S(EW;@rHOgI`jC4%467oIy$X^& z0#VO)gsuI{2Jf3G_kqR<=>8?2U^j4>C3*yvBss&+)}w}7kkT$uVGO!w36XCy9rM9= z-GSPFkaSQQ6_FB<>=9IuWMo<e%CC^M7SME-X^=5c;fS2?K<9FW7(0R2I3!m(=6Yp1 zp}5-zqbvfQ(`5-it1=)MO?_@qPE@X&VUh==jDzG?)0`B;pqwPo-Ix(U;QKYv!vb=K z939UO#gWFKVFS<auseml-E*>ioYDLW;fF?r8-m)722s#5BMnYx=R?f{&mkveS`>O` z=9hVb=i5!nyfYmud_x@5y)!M7;c`gjo;N%nmZziK4P|HvI?oDp_C`^Ju~!asjZRub zC3LL?C=EKN7$zHm&xNc^4EHmDtpfm;Q?Agvp`A@ZYXA$9a>D{a>$V_ke=-p3C!Im} zaw6A7pz~hKp?%jt@EV^akFXr@+*@8)4%lq?8W*Jahp$ls^&4>4kNzQ^sB7{gGGJ#d zgWQ>s5?%qmqZ2ZQ2(sS^w9dZ@bxk4SZY=N`3}>YEn(ol{WFFeuPf+{ag9ht7-C=nF zbWaiJym_4WG!>>qfYupB6-0%D)S|8%fs~c`=~P{VitILb$hpqo_=C*xpsf9b*$)qQ zh#GLc<ev$<*9*F?A1ntND@5|Ua|%5EypYy;p{@^&%1O=(0^Pk=j2fSyc|`D8z_h$$ zD>pK{qACj9Hp9I(CdJ6jAkruub)79}9VH|WK*olV{T~6^^8t$YP}KFm?im?Lxk1HI z5uRqANcr6pA)cR->sAb}Phe(((y2S>UMQ37Nbp*vpvtIllTy%{lAv(6tVFc)xTCP# zRRwOFL(VkMNpd!YjhBJSeGoqfYA=Efn}b4f1IGF!=$ru9Y&aWf{jfW<{Q*kbDE@_u zBkE4DJ<#<-IhL6z?xr4~bs@>%^^V}MgoiV9-op|ymIdDD02&L)O3sDfVPODTLqp76 zIi4;B@G%9?yy862K182zNc+R9ssOgXp~}ZO1+<S6wr{Z{F)yqt#XToCF+42WtEvDw z9~XNWf%h0f!`KjXzMMf~xL-z+bFx`VZdhfCdrnqlcm-(BNxFY-P)3ToD`*dBUX)Qq z4)Q%E$(510Ua<Nq&o>X({*Hiwy&I&$H<(s;gG8ny?jZv8mA%YS!#3Fr)(%dtEJuku zpYQ_1WaFTMsN9^KDCcA|<oH65OGKQM=lSO$$|J~lk0+Km0=osCHoP(;^APSx!8R^p zfw9K|z7Nt7-oN$C0+;`wvpx&GGcD4=<z%Ksp{I*$g>NQlVGLSB8eyE06PX8^doM|Y zx4XhD(_rNbcuoRmn<Bl!H^djcUjT0-fZDZq&z24eh3EzMM}xq9Jy`$8Cl|Jd(id&d zTsF483Fu5%EPYsT8wT7q0M}nG#gO}(!Yy;L^-)20s00K%f$lAWuk8ixPYS5S);~5a zL$u%XvAL<h2Q&tT)UL%J7Lky!fRw+GItOt#Uq134M8ulPAn+Z#u)Z89yy0;O>#qhI zg8FHovzEbU>idMdl_!RkXF}Va@V0DXxM@|2yIXORa|V1&!`rPq6V&#OaP};Kst3oB zXE>~n4Z3I7upD&uBj`R8?_j6Os0h&Ag5W!X3?S|MoNSQ0BAh)-JVA32xnaeizNt^9 zNm){^Wp-4UB{bf`s(eT|`yaNi$167nG_GM15aO8OlWFM^8R1n1x??rT8F~i+WRD%( zpRjwALvzEjKzr+<ZFi^}knh5Pj0qspV@6quvuOtS-XD*^{BXnaOnUU;1C883=R;IQ zg_lG7@1Diru#5oTlaQa{ZdmLS4m)3)q_G5~KCNM8R76T;VgzWv8hBixAj-usEhW>y zFfu$U$KS;%BQi4zG#8N*5bBo!u5*pTiot#FV3O>_F@AyQ{}GN)1DtE`A?XdH4~mkW z2Pn>v^EOH!+S55Q*V7%v&6wp~ZkRDrKim>sJ$z3Sq#Om83821vn0pxVT`uV1K=D`! z()}Bt^2IngHwQFV1s=mm3=g!7Fpezo3wO(n3P~@I4EKbc<&Ks|sdAn>Qd&kGpTUxU zpm6~&!wi$%LG7#1{KW9UVzjV@@R7zRpyi+?oDNQhm<MUwVy~A;ycdnwdKuJyh3?xf zfsGUTXF54Wxd(yHn=MNU4^0Q%3Ge9<ROaaslphuB<QigNkRF+roetWc1Ui?*)7>>4 zejjS4lR;!S<PK(VeF@r!>JBPf0@G96Gjc%pR;PmQ%LMn+AaxJ&JrJJw$8-%~`y>*> zBa!N1q;uUtcNsaSR6*{7PR{cN-F<5W8aFlt_wB<COW@@+B(C6ki#?r_^CH3wpzVK) zGEdNY9<=)}P{RST{uEqhc!ZTlxw{!e5geCxtnd!bfbXUDadt9?_jf>d)`QOK0oD0= zfu*3cLqPpT+;>00-40ia=&Lw+CK(5&!|wO?bo0tVp8o^K4cI<N-yGIfOL40J_i4h6 zGIEkKLH#7~7>{X^dsvmHyI+1}xM^NgaCtgx+zOH=(C!g22A^30J)=K80};Qbpz}{M zl01B2^Bf>G$tm!0C{s{718F?CJkt|*-H?@R><dq`K1Pr_9CWu2iERV$+%{-DKgHOq zAO$o|4!R%6C?`80%+kmwBrGE;H`K(}-7V8AH>v=1XC!)g;Faf>1=_0-<zfilYfGa2 zp!wFU6tsJZpm`E?+}Z%G-V7_x^l^4V8Y4#RAp_m52Z~E@+631P@U#MI=c1J3qhV}{ zbng>p7{kgOSeT-gJ)n9QDQq#zA5dNGl7zPmLNNoi9CE9G<PmuJl7V6#irbLJMpGbl zi9v)1XxzdnBGEmp6p~lr{gCv;2;X$jJ*J>FZc(6m3$(s1+|notygxG(y-bJP{o__) zfYzSPPK@va?F-65o>K$&FDjkj^`du3aXP%5gSZWAJ?H04oBk(ad>i|ndEov9zCNmp zV*z3hBB*Z2DM@y>tW5EMmUW;pad6uS9Ny461~MLtu-mjeCBiS?+YPM_ax2gD$wf+c zpfif{f+~}YDw0s!KVB)I^;huuX?H)v<UBv{d1=Y+mIX<9pmT>{XQr8g#(gL}U&xhK z_gCeC`d6T~Kyq$QRtjwYBslzn0wQw@aw3fbL47h%`Ii$4I#0nptTM$TJ0B62<>?X5 zUTG0VVO6j?E&_C(5_FxUr!!)l9(-Rkc<eRE5}sc`@dcSjgPp4YDi_mmj%B!HS7OsU zdcF{e=L=z;50i!HZ$r=04=c~~1h=PMLHCMeM}h8jM#>*p$0uFNGkk&#(u2cIvq58^ zp!zhq(y_z`V-KfedVsrSF=Cxfd1fS{e+;^(8=>E@Jk!%7vIKmOIrtnTP#YsBD>5Re zEIH2)*Lf!vN$%O{DVc`3NyeU_vug@G-E&GoI0`f#3(^Z(1L5kFmE@k2m56R`HfRl& zUy-*nXfJ+HPO39#Z2{tpC8RTb%p=4748UuVGhu2W_jo6UgX*&kQ2vLXfdjhF8GKK4 zR(V;Hdp73TDK6z@Nk-+^#KGYjX6%)b?BSG?oaqGeS2}cESe2)<K?!(WAap(!)SvKl zcC-MkufY?>rBM-H$)1@`pfV0T7M%pzbMNj|mI_&423i*gUZ(*y4|Jvx#(E#{xFRSY zgZdbt^<22lg@L9G@cmGr`*%Hj(|v*su=o|S9u4`PZ*bcctj7=JUc?waQhJ20RRj5@ z%F{igAj&-`Cn?j=BpLVlOc}^w16hOTgp>~q!Tp2eTuab6O*)8%<N@gXB6|AC1C5zQ z;YyF-umi<CvYk;z6{gAV83iE!dAg?*r$#vCCxYsoOv9{1_b{X6T+33QaL{_jAdtT^ zl5=x1e8QoA%L3iA4w@?g-AfKW&j)-5Ft|?vF2g}}AZYC)_`dNBEa?N}CX_IM?iT^= zU5AZTf!55HrhvlU4U`W-=Z=8SP=bwzgWQFDXFBL!Tm!6S19;8{)JJj3NJ2S33fbRI zc}X5Q<%#Y&SxH7FC6PuMIVpKwW$^P%L2ht&t4s`cElC93YvUeP3YtSn@$dq#=LrC< zLxbLXjGit*`N7A?6-#=<e$Ek&GmI>Jj1gm8$YBZ&cTgU1ser9_f!O7a82^Tk?||pI zz~lc0p#9vSd3p4`_@MFwUWQiXBj)45;Rw0s-apgHImyVfI4az&6z$xftR$nb%1F>& ze)zmRXp9#uRvMXWSq8dqCkgEw9=Q8lz<cHmQRYgK&-sD$kHL9u0OoPQ{X0l_gVHzB z9Hg^jdSbY#K~#j7QDk^I>Kra;UKKk3ACebV5}6xTNlKU{Vb=qn^9JpU0H0;)Zkn6| zi6iiO5D*(Yx06!=itFsih@cG6eOD>rrdcWOIb}(iPGB)`TOB+e1DTsn&JBZ{I|y$} zf&2>gUp6dV_-8sLMIgru#Q&gv6ll*E+I)0QRUrJHCR5P;?~u6(aGMNbXBu?x6=-iX zBy1q-J3O78j3Xn0vJzcT(;+C0Mn$Bf&2NM1=P(m*P=D7DbpB9zdXiB^b{Mv~Zs_?Y zka{dMA3WBX>sIXPVglC#UK0&n)9vY!pYCN0*{9%DS)LA4@8j%LmgF839vNN^U0VY6 z56o}iwK$M?!FBcp$S<&P4Fs*xGb+a7FKD|1);<93Gjk6!fsfmO;~lgv0(8Do2IS14 zT-0#)^r)}^^#Kzjd`m%gMn$AU)}bTJs)WqFn50A3OG3xOAn^~^8{y{!zppDd8PskD z=L_iA6ZDK8(AZH<l@D}o1=PQS+KFT)YW{)71*+dYK<%NR9B=oag5=yVXu1W5ze$R7 zIq0mloRm!Hx+D)s*n`{t5uWMLvs1wCOLWhvg18Tst{{GbuD^tYS7uO762@60p!FeM zIVm1tl}V6!Qv>ii1dOw!oWNt|UQqWYXF6JX5<2h3Ik^-xUy>A@Tnr0aFZZxwSU&@1 z55$eG*^uxFs|4-wOv+6$NTkrM$<Q^EQQ_coY~bdH8=2;$dIY6_(~ENu?99m|UpLs; zC?xC%`p*M)=XO}OcQEKYr63pZnWB{$*`RY%BaK087fm2(&^ZOX$IGkIQQy-!1zeXy z&%7*8&J8odJcG%i47xTqC)qd<lny}WV}bgJpmFAm6lYMI2y#Aaa-~yoWJC`542cwX zi*(R>mPn(}^vGbCIBJ>zkC}O-gVGIbt|=!9yjL;@v>(AUDja<F4^lb?g$JRtjfxTB zYYcK*6li@X!hAP_0-s#B>?l{iV$j)RsOdesG|9*$-^&>JEK$>(q};$f)bT&0HKMTc zz}Yb!ktR*cqH-g#n&TY|+6(Gdm23b$t1>+x*f9^9Hqrd)m`>>IE2MOV>L=%v3{ae> z<c4B7Z^;REzEwf80sP*)(x^(%cnxHX8j^qEc^uxC2j>%{a@G^PZZg9Ft*!&7DfGI| z)7c3!9~}WXlL?gn!08@ZKO~}-b?|X(u$|yA2E`?4z8Y7V37I2+sfV7kgy}~QP<uKQ zHLPK70Qcw8L1*Yzc)FAm41cdmQ_whe38<ce*k_UrTC0U9Hyrh0<qfn<PWP@dNcRl} zuP4h#sULzJp=bC&!X43`0F{d%zel2#*I+TU^;WQY33l!u*gffK9_66CT9906iWVN| z<vGYMXc?U81Zg|K+Y6w)2Rl~*;zrQf4WRPg2fhAtF#z3}X9zmGAJj%ij}!2^cV|c+ z+SeH~i~@ok^L?Gm(<2PP>+F3KBm4|}GZE`Uyo1y8d_eP;;Rc|5iCm|E&JZe%G7if3 zbjBXeJ|PC_zQ}$;P0t2NMk#qo?qOcwF}}R0j3k%*bma9MDejiwbzQ-THYoNrevq{x zpf)O`-1P{9kF!N#txrJhC`U_JdV!r?4O+(+92$t0UQyFJxZZ-MVKjZ%@=+G3Uyz&) zIbR!OK5X9_x?a?B0F<`Cd)5pf<JRD_79nGypm1`{aYa=R-QNh#yCA*b_7XTeyfP!< z=@A~z&W_riF4)edgtl*TpyRGkyFl%nWTP+xlz0HIsWb(bKR)33L`b^`G}i?7Cvv=_ zwJRWN5J78^4d89+<lL}~D35HkeCL%D86IScUcQ0rGU&N_zMwV<Bt9VV2I;GV+iQ?= z!W1)|IcI>|cBpL<0(Bk4j#5xr3Oh3}DcsU9*(eNDf951-5<V{w-UorZ9jn_QWdX{0 zc21UPc7pn-Mp2+P7V_Fqq&+{da)3xXF~b8s?}8dnk-1^HNygyw;X(7!WvL;kc@{%H z7%_hbb`vxlvE^-O`y8duL8xAa#4)(+E%3>;%#F%S&qIwDC(xNckTyv~R1R{R3z80l z@UDdg_lqHEs?4VnG~N<qn&cjuo^0d?YMW&vk6D1m^{~%*z}Ejm+GHSgp3Y8LDG^>( z;Ikt<oXQ~mY)|AgjO`pf&{|#a+%DK&toxQ-jY!<P2P?Ng<CD-i9_002p#29p_AMjE zm|<h5;Psp6<J{mqtZ=mz5H)V7^Uwj{eUV;ZInch!q)gB_n`?<ru#;C(E_jW*L6Wf- zY-~0eERQng4PIA@Jl+V}^95QP57r0XGn?sT<P!ltvl_G?G}#l}kAwC>^ZdYedlKO; z(AXEscsO`pYIb^JxCv;y1U{YswG%O(2UZ8_&qM8m^?Q-V#X(^O8lR5@xeaN3HAp<w z$PLt2G>Qtz&xW;e0zh-K(7tXOI1E93M3nVK5WhnA%R<kOPe+}D^F&qSY*_^wTLq2( zfydP$`(`bCj4X@M;wB<F*R4Dmbbpk4R9SK+bgm-;Iu;GphdOSKEuKta`+4Ex!XW=5 z#?L`|@cRqCw->f&7+*Ys#x<d5%SV9jWry#Ht$?H}XK=a$&u@dqsgt2|E)cco<LMx` zdBMlFlMO+9PsI89;5f%R4~jOf4$+4%UXc8VG|mjt=LPO(db(q^2a>KqW6tiOka*68 zjk$yLBJKGGrynnH-xQj5QP(<VLH6E*<v{z-L171Jb66yU#)*-}p+WIS%6L3Ty(h+4 zG{}8k;JOKHC+NI*<h7S5?m-%}hon33p6JLB(`0bGf#y=&T~Xr&cGeSh!VTOOBJ56t zdqCv~+2IB~KMiUh##{y{JR#%wpfJRrci{7AIgs=Zau;}P9}<r6HTDtipgSgl3R1F6 zlku&$_oLCeKK$#%q3aD1>#lNOcN&1&uXy!lA)gmA!q?kpxkA=$Li$v&wkT}AWOThf z`kFTAJsRlivlHFJvJ#EF%2J2Tdi#u=NTZU>B;)h}SZ{Bb9a-gS>KE>p<L3-tZ=W9( z?pG9<YiUA{_4b(YITY60W5gM9-Uh9?L+rI5=IiaF+<hzjL&CD6LIUCI?NQ^D*6ZzY z#RdJ=+xydK9U`bd3tig_U%Nbr*V~)I#(hxNyy9K&3U1$n?%n{kB}UiVhn0ZB0z5V{ zy52t1#~6CwOoUes*7f$`L0P^b*@lrup$3Tc_Ne6n9oO5V)|<m+z5O5$V_2Cpy58P2 z8MKFkmh0{PN!(LU?7lL@I&IMWE$psR(7FQ1-Fcw80dGH(#_R2q+`(r|m4ep!LE7pW z;I;OMwhw6i18gll=-y$H?g5A2b?u9C2Rh<Da7_Et(*rV{3X<}i3{%`n(o!;!+VO4% zpgtx13_EZ;KEkgc6*TTym7gA&Ygq}pTL5$qBijA(WywZ4;Io(fGo3Ob^Zd$^Ji-h> z^PliN1Rh9dq&gdb?umfglMLGb1{yD|%1=kVBO2+<Q5TdurD5mZg4Te+?@I=awSvwd zOv<guh|CQu_Q~~wm#d)lRzA6)HJ7HOgg*|y1eGO&?w!x_s*DOZfZGp0vojMsmkswH zWbaEw254RedTuVV9%JzRcA)dngG~%TcR2YQR>1Wp!tNEzbgb~n0-ckBYF}cwX^u~L zMh^HcHJAJfbp0u4_qInGg_VNl1Cj0UiAc$b%q=NMaW(|aomKioK-bfN?)J^KEJcY& z@YteZNs@7X321Lca;70<9>+M)%+uYpEGah>$#0N3bDwa-DxZk3D$w2V$<Vbx{+Ujt zNk*oi^R3~21<yr+&37W~4#YXqm672=1t}4}W}rJH{6OdBq1=;=dOmJ)ZdiF#xEpBA zMrl$dXfL@_PGm$NlAE0%_veAmp$j+7_K85rk6EBL7U<q}Y~cvGV-S4SN@<j{VO3&8 z0qCrMLtp36biWWsgkRxz&6^fO&ebyot%Zh+O}G@4CK(6j`{Y9B6@s(V12P>;!E2^- z2<2C|tVAQY{aHyy72rKPo<>30QONhA!@@2rKOJ-jy{8B0?Dw2(PiMc($Xri&SP;rj ziQ%AqMuBEgxt3We5x(hZM7lG{ILsgkl;6?sYscv>Un9R<(BAB9xZ6CPoj~Irpgj{A zQSO$;{@^mrFDJ#>u^e)yxMKzQ?ET!7%*f#MavvARVqfR-QeT&3L+{}7a!(h>bbrtp z@*ZA!k-4t<z9Ej4J}$1te!=CHzE!@(K3S2VIZsI1#1~(na~6z)3Q}@I$&DviIsxZh zPZu}zG6gj~hUb(-hNpneDl<&ZEzbw-1&$0UC`bx-%Zm!OtV+pEE=qMbEcQ3@%1AZ} zHS%+=2n=$`Hi*ngF^)0{DhbQW$@0yuFpA90FHa0L4Ds_w@k$K!Dvr!G^iRnt@JR9q zOH9pjDu{B+2u=#E2#qqz2~5oj@((mBFiFh~Dv2~o$qA}*tBTAu_45zSDM@s3$_{pQ zH45>_HuW_Mtco-a%TCQUG>pvh^G?dHFbj@I@e6WwGm5P8OH9hnDG1E+%Lp^{ERPHg zEKdwIH4P3=$p|uxDi6={%J+413JDJJ^GeJLG>J4warbq1a|z5f%m_2is0wxS^GeJq zC<)Is1i7~;)XmR3#nm*#&&AI#H6q10#JwOaHQdX^*Q3BUF+0pOBs<6}HMGJtBqGc& zHOI{)B)7ml*`Ojc2*l4eFbFXW3WM_fgIo<wL&Ac*p?tr@99P4T+=8NH15o%B_@(A# zSBB)I7^j9-6o!Qa1q8X}n1#3od8LG!nuUi1`KRU-RE1>w8l+~MnuUaf`36=wmWQ|( zMEM$6x(0`MWd>F`nS{6(c=@_ohK7UX!F<2eY}3N<5Vy=ASGTH=&=lhogNnjHNO+ls zxCS|;gc`a+_>o4z;n^nMhE6X25e3;v;l4$nwkxD=#aq{d_Bez0?s!7Zz%PNXf5%q$ zS2~t}&WlYn$}#W>k19y=0PXY3PmhGo$t2~5RV7!Z8~X)^7Wh{>fzH?fouOdn>FxzN zx7pn^C)wCH->)h(2fPn63|f!D&SS<>FZ<*M6(k$EWhS|YWrrJD8u=jg89?j4p?<_H zC!I|zqr%;?lZ;G@Q^PRI#bVf*-9EXXv#ao`MQQUy<>nNF>&Hx|j3f`I{K(*pGVuAi z5kaN_A(4iNa5qW!1nnaNmGkay*-6I9Sn59~xL*HE$5Ov6MBRv4wu0R0s14e`mFy8_ z5N-@UE6x(B-I#(IK2FHxA!u)G0eHQAR(^V9xK~w@QH5cOJHk%T`i3O;oO1t6r^={s zKLgM@4qxYTP}ztm>oOhF;d?wY4Rca*!%9;?cTA(z?P-ucYO-fed1eG`T?~9ph7)|A z2Q(g$lv9Ci4{oI|jmEybjKiv;f}KEXVG1IR1M?v3vLNd`LX5l$L4JqaL7Gz<6$U<g z5p-sssW)OD3uHg5p=D080kls6@h@a82xy;0u3K?Rc&M2tcs(U#|1EsqF*qC`XHG;I zhZ!V>SAfq=#nTTl_05Fd)eF%J4?l=ILFbTy)=oq3PjSX|_cv($D)<~rxI4jZD&#W~ zk=zTGLtXy|ZHIvG^F}qpBgi<(Fa_L(h0bBZ??Odcs|h=sGAkdHui$DxYb8@7oIv#! z&Gz#^)+#~b0*l{3`^PgtXFo-u?eQ1{ZYu@deTs9R5$sO#N~AMDogLHRWjUywo)=b} z1Wr4UwW%m^;^75avsadsTVaaR4p$s^yu16AMMZdJf$olnrDdO7s93ORCXT&XNPC8$ z>u6#7R6y$vk@xd>fXg|Y`<Mvd`R-Jj5?%pcvk2PP11fXS_9SH`85x$RL<Hra$30?i zEAsgkPO$aknCpuX_auYQ4NWqFujMp~46iVZ3U<r@oki|t1P{+V@VQCQHFi;;eno_1 zdO)R<Hf)_-vOB2FXKLUBTHEOnmIK?%5@HkyyWbgVc6K`Gj9SQ=V@Tf?yr%-R-Uw<w zXq{(DIP&^#)V(i>5q{1o5kUq?Mkc81I^A=s0`tNQQrtmzN29Nc2CcP*tUZUg*%Z1r z(gb;JHS~N)N6;CZur<l$k)ZxqUSMe?)a+#FeWF<MCqzHmdShsK;f)7ycw`2_>`F(h zuQkbrhi#4}v~2S#OLYbJk?^cH2c^j{7g+xZW&JZ~e_bf3zhqg7z6KU__Ze(o6EvK_ zX#{zlzn6zoMlz^Qb;ce};4^B2oh;Iv9rNJ%8+L91q;HIE&mGpiYtXg>IL#yb0WR*G z0a}j?TWbj4Zv<UWZJO*3K5riqm(aB73AyV%53#>887aJB=dhxuANcxbh*{8a8Bp2< z#g%7-DMTC*ho#VT4BbDL5fGIL-D?JQhj(x`bPY9997E-N@<8JU>F9X}wLSyyBaBS< zc6Ni<jpnAbJm@|Rczl^c^Pnkc4P#EKt7R^1-8j^(1>WHEOmeDxu=v9Ze&z|9KS*4Y z4LcJMRF0v<sj*j1B&d8tUvCUqGXhSBSjs9(^s)+LpC7EeL*A1HIadXeULa>%!1G=J zW*8uaJ7f<GEKfqpMOc0?O#_`(3qAiIoTfY@5OT@6ZrO?9me4bF(bJa`%>L2{BS^Uj z8oPv<1#(kzUKnWn1-U%}*^d*P0oMzSN6>mv(D{<3kw)P3@06V9m5~~pjge14`<h|p z8%%FNuv1b5iE&EGI(u;5gr!-ebcW5};C(Nk@(Of@C~Exx*^}X%0<XWlU}vr)_BK{R z%QEEngO@$9{Y;Q@4oe=)t;oT?cM!Ut0V%%)1d~-4qPWY`J**gXPCPh#pngS^a~SCb zlIM}a4;p`^ko(W^<WYFqht;c)eubyAQ%O`rP=1n85c)ap;IpXF_K2lLMS%9ZpsmA) zl}X?>5jgEZ+zBn$$S!*^!UMF=hKw>7U%Eza)44~LMH+{J!U5^bFsIxkBR|9BN=!e) z(oj@*1$ZAXsQ>Ge3o!$677}PI85ZV{HZE+x0$SKY_m+fWwi&=>A#87$DWX4sbw3iM z{D+Qh=7akE$a}e9>E9E&pAVde-7QO#Jg}7$pnYW!^AKqg6bBe$`kwBlhDq+_h;|+{ z?je0xh`+&YCq!BS@1ujZlfdOBxDA0N&wGN}iForoD2zcEvd0*{o*lDHCtN?Hr4^W) zVQ~$s17L05aARn_3fd3noSY4s$4D{;?G14>^K?!DpJ(M|Xh5(|M{fVa?1bzofrTB~ zzARY%hHbweQeFr5DLi2Nk}b+WcRRt(^#$+yfSyYORtG&JBgG@97&HzMX=GU*6&?sV zD+AI;1MMThGNuLX-^0~_(hbV|LuFKWMMjEyjuB{129zG*_JPI(VDo5|hTyg5p!;V* zW89Fm11YCK>w+NRf#BnvBXq{%CfK-FL_tAPE@<4#t1LMebRMrEXiOebF5~tC%A6Xy zA5t?7A?+*B{91@BHnTFK+(G9MB}3-^Kxa`P+vScnXNVyWz3US+_u&FLp9CI;(D;V) z-7E0SBbq?RHxS_nY7ZnC`(Yo0LwAP<+8iRfJihxTL1z>ggZ7kz_U3tk&bll@k7Lkz z7FgyLLHmi2&O36-hwd>4-Fsi^2Wq22^DR6KK=+-4=4yfs;c9(BeL5`a@XR%$+lzC4 z4?R7==bR(FGNRmb3_)ke_+<GSg31Rheny=ui2$8N8kUg)8Xw8E0G;~_nfn8uL4p!* zX!=m{9JV<>bpN2~2hEv>nt8f}mU{&|g699w(lN9Qf~Q;19gm><wTPSt%*2`}Ga`*j zz<ubX+(6KoMzA}Ov!mRh`)A?yf%;?6JPXPP5l$u;bATx6kqGyK_OH6<fZ9(6h<ngY z(jjy1Sn~?XedyTY5_IM{_-+xjJA(bPqCjV*nqt?JPU|^Al(;9NEJe)0xZn*B9BBwN zHe`^FE6<_LIYZ_FL-Ny8BD{*dA!pl}C59VjL>YyaB^yWOc^hYxB)ODiMn?GM_+<qa zhq?xu`nh{Wq!^`SCxu0sMpk(hr{sDS`nu=%g;oU_2Z!f4C%Jo-gycmf1{qZthUev% zCx!<_hUOajhPkH{gnHx~gk<{_rh0(prTp@uLX#_!jl4=jLUO#4!qdy6Tr-^fvMWse zL;SLRjr<IwJPQ0$!ab{kb4`6yvvZ6?LW7)Aa(%19b4|SxLp`e^!%~8M-Q8S$-E;g? zLv!*XLsP<&-SR6FU7P|#4YI3(!}AUN-Tgd*vYavk4ZKPs!%|F=4V^-Q!wV9V!U{@2 z?o9;o^Md?Cs{*S+B67g<YGDyMpm{j65cdMN)KF8`;D{XGAXh`fkcfhyR9Dl&pgcd{ zFxM~;-_Ot0GBhj#%Fhn+OAR#)4Ti~w7X<l*nieJ+`+>s8EF_{J$~W6IBE>kzH!&yF zAjBXjDmA;pH8>*7KQ$-YASACKG1<V>#m}R_KQ-IHFvQij+}E|DFg(OBAjmblGBVq@ zJk_<LFgV01Aj~ZrEDz#`L=^ZZ=44kyW(PSX8yI?|7^nCqX1jsI3pB487!d}VR|WCi z{jzfk{GCez1FLe(qTCI$yepCC5<q995tDySVPl@@kU29$_!zFIM{#--VqPp0a)w$^ zX;g$?mA6Z>p;vIWxhHbn2`^``lxxn&?QY0;HoUIEQs4UIA;zwe&uap;V<7HCn%fJ; zRxTpVV}@6hC%U`lBkpxKF!IBgyMmOBso3WAP|8G*I;6ISvx$)(dYy<ICZIMU+<%1U z`aGd$V!^`(+`hA{LfjASmYHm1SqvJ}#!?P~&V0l*&xcZef!i!bkh2hc!o!R}>svr| zY!Y<c4@!NE?jM)(GUys}NZS_VN0$o3`Sw`P#Duh|Q0^(pDJe)cfbM_HvH;(E<LM3x zBZE9|@H{AdEH)2x{x#@qJ;Xi%M^rVL6^QdH5n~L+pfy;L;h;U4fo4eTVx)eX8G@Z- z838&Q6n1uIr73v-B`9pbXYoPLz`%6|U;wlp^aS_g!Dk5~#-1VP`x&OVTY~2#lH9`# zAZIRG=0<_$Qqj{GWX#vdCp@g!KNnKJg3|;%kAeDYU~C5OTe=t~d&1Tag_URGQV$*T z0G%BQ8Qa98HYwMw1maH6xjkXYo{+mrklK=9H>CR`<yTNxA%!V!JxFT+Kzb1I6NE#L z1th(pg#m0IbxNjTK@{lh$V@jxx&obL=?*#b2xJF%JyoVtHt1YJ(E6dIOhf3nL0Gb9 zrlT3s`KL*+Iii3{$emeUl_lWu)IcLka2w03GPyX_$Sco34|(3ez%n2h>ApB)!xT_@ zLE6`emJh-ARD<_;gZ7#yhDU<VRn0(}ugQhE!z(ii*?!O%F49~<3h2B_r1L|;YaWw5 zvyk@UVo77f-MIzHyU6`rP&pjnY>7S3BjU#brLT<jj0DdL+MJO9aWisx1KNihZiJZc zg2rn)X#CkHIJpQsegd82@y|>FoheZYx|0C5x6RWTRgI5F39Rl!<U!{O#Q2g+0fOyZ zfmpW^Qh;Db7^Xn?4a3eRC`|^9O@QW#Tp)YAVdGs;b*O81p=!W#Nc+Gs$|A_#clf$k zu=-4=jFgC=vPdIK&>bu}Deyh%pfU-vS2-oqFek~S0J3fv*)DKi0q>j0iGqs5(kaAj zM>BXi1F{=Bo&}SGl`Eh)0kgsT-96FD5s(`|Yi(iceL#HhJ!bH=L(sD-5aH|wQ3Kk$ zk63FR2-#~7J$C_V?>=h21Gy8W?0}dBFB3rW;I+gi=~3V_!-L9Fj7;En-ogBaqCN+n zM)V<fzG2pFUX>N*k-5oc$mtJsmV}oP{0_>zv@l3o0H2A0v{nl0fAF~ipfe)Cd)SfF zfrlUH>|D@!(crQX6yBcUh&<qx>sFHN0(WC>WVm6ue`QogQiP*9KKDTU>I5%uK<0wW zR!A6w&$Pf5{zzpZ_>2e89(VA)a?Vb8(l)ppD^4;F)P}~Ng^v*=j|b%7yFcBtlEm_b z*!$DdaG&MwTIpMfem58Vtlac~U?;qK{h;^ng6nVa*mVY$vtUe7&ZhSchTppYI{N^6 z?=1Gc5s0-#kg*W|$_#M50-7g8>;*w`FKGPOtvnMk?`R6DEA_G6Pv?`1xLesD>z(b{ zpmpe=@+Kq2J(O@*!0tT{k4*Q5-t&r>tIR-}XFxie&?71%InxPtpBl&xl>10P_r>{u z?uT<W1dXefMTQ5KL`FCjL^yjEK*Aip540dD&(9z-yrS6K19nd_?4EW|dm$UD9(2Z6 zdIs!{JJ33rqzEU_cx`5qJLpb$=-G0RwiEaq&qVN<m`?P$kK6!scT`w;Vz^&XRD>sV z&$t)34Tt1rP@QBD6*fffSjXxos@*#W-P;gUmW*<TJ>q<9v@-@=L38lQp!4>P!YaXg z;6ZKb;Bu5R^t|EoO^`K$pfi3^?o2~TV|2NT5UabP_lAMz$<f@H>orpDSI3^dp!pqM zKEUsvf!y^4x@QMo{uP7oX`}33wn|?bo!<g#zeD@*Ltvk{=jgp`@Vn$ebvk^1{OG-G zG`p8ACC9JIwK6Is&=|H)JP36EUW8LYq)|yuawh2RR;rv+Q3aVVj)KmA8kB?Xcf+&` z)ZRd;PY~-I;CFa|+dZJOM8M~zfyS*s`(RP-+s$;%@X53&^~tm>O)?6~i7<k$bC2*X z1Kq=jxTn<;;vQ$y!sJTQ?oWmI2eiiy>wT@pQ6b3{zPX_WewDEEV=&t%pfI5L{#|46 z`H-MHo<R2oSo%7<mipi**I{F+p#9Jh9-wolklMt#VaDLQUEIS;Q=sSfdKvo}B!l+H zRwfsK%XtHMo&>cwlfq%)8f;n+<qSSg9?6XIbg#;k6xez(*gkaFormE21rX+e_Go~| zj6iNf+G}6{n}bRLjla63<VS^@fYwIlAll_l1<938puRC^k4O&49iaJB(E19{dAm`; z@G~^EJw1Xlq7e5g!uuPb_91w$jxlI%G!*&FDRBDp^nl$<nGV_;1V1wy>^AJ<Jq9%D zkL4hrF^07tgTLQZ?(3WlU+)8|9}~k3A^j+%d1G+@02JP^v(3Qk+k@bC!`7gp$A5&g zXDMjUUKFhS$Rly@H_F_9PAPaFWw2o;=nl`sDwtV_Jz>y2ny7Yy)>we{e><BRCq@M2 zgYKjRoh9rO4jqFB%`e06b9X9--M{JsJ>Skh)3MSo!pQ`_hZw#;(ge*O(0(SEnV@su zEkXNoNZqq!kYwx#S?hst6J);`XwNjtzE(@a6!(gPq})(!d$G)X!a?VJhM9oe4|jVe zXdgvR73j`Vg8Q?pg33|$y}QHrU8nnE$bsEag0z3T%FhES%rYI*@vN6X+jmMtxP}x! z*Vm!!2}9X`=9`6?K74Xf%3RQ0gXJj^C}x1l4D4%K5b=?TYpy=h$S(^ytg)@<KuJrP zj_D|K+AjI&o<>o*QE<0|_T53(@PNkb!D+(_HC~X<8gOwf_eDKB0JKI4X^jAAzi?D} zs<UH-ZysnJ1av<zWM5pdud_*oUsWim>?IH<pmj^8ImsybIi(=VBPbt~-f*4IfFAyl zxt7_f5wLgyp9g`o-pREbw5QoO#0km2h`f$rmT^#JlCx8}j~jF!W~M3V9-bU{|1=y_ zca^7u#|kqmk|BF7(bJk?W|C2msV8{+&=fiELh2KDH&gK5>s&~B$9uj(RtA#0LGcLD zgOo=qq3hKkVV&uij!zD2T0+iaILjr&tP~HgVowi8&>AkdT`5L6*(vVnW}YsQhF<V9 z1PF#NbnF-<&Ip``fyYcx{0BQ>F%wj`1eQdGR}@5n_wM*X&NzqX3*2TVg<F=UxMu`I z?o@`DooWb66OQQ!e+QZ*d!!@BF?`JzXe|?(Trt|&6X|{~VMy_d+dYX9K{-jmhM@EV z-j4^G>xQO1(4JcC>zF)J@<IAM!=d+~y1SL8pp^ZHJ4%ysEe(9a-HMakEsdkX12bUt zcVxJ!0lX|iNgH8Vk>No(p}B6QQAVJ9sGTyBvI=q&BfP3ooI&^0<rGIbBj*pS>OuFZ z82E(y<tK($WaG|rIR;VT1|{%0&R}G7-3;LEf=om3-5NgODV32CImmH>IM<;n+teRR zI*ovq%jo3+xZM%vm64R2lH(H&aR+R!#y>ZsEG0J#bYB=WKcJTt;Ccd@hG1@kol${O zU!bgG0`E08^33-OaV++9ajo!oE>HIjNjCNlb}L8%ovo1<l#!H&a{dO~e<?;81u5>K zM8qFTxRrqJKu&an_!Bj4q1PLr@-zcl?%__a*zynV`1LbL&Lvo;!pa|{ed^%wg^kUY zAjcJ?>;<o(gT{?xdZck!WwMcFrGKVVc@lK}2KKa#FKobbLS~8XmPSz#o;ckS39Uy6 zrxA$X6GIB}L4Av4+;s}L9zx4+r06LDl?6$`hEP4Y(;xWGOn1vl(7kG&MqxQo;bA$T zwbPLD26vpN7=`5|8p6^LD4bC0zFbfm1D%@#J$DCmHc~O-j1}DGLe^SWAm?Y4`~q{Y zf2LzrR8~f=zk4L2oegTM=317fI2#%x*6k*jqnw%K;e^y)NCCBLK>Hlw>4y9^C#23q zt~WsUdBfKufz}SYyMfP|fTu&$`n$>(xo*yMOo#Sekm?v;Q2PcsYzTxisC`6Ay=YjL zloyom6Ygb@gxpSZk19*b3k02gQ4nPWzRxK$$*3Y5*&m>|#(qXpK`Ht<Mn2(&WvQ9y zXDMM-hj}hiF8UctpuLP?NM|yknS)Y~q2zVYnkDBHca(Gs+ZRxYT$jVoqQGb$g3eJ3 zLN^1^_sT=+&*T{<duD>~%1-voF#xrf!DAJm^<$tuH2j=4P#@aeG&w2LqR=}tzswVS z{(woDccx>7Z&ql!ccvvm4(T2hZ&*JYG?xM&11(R-eWn6*&lhN|i*t%0Xm41uaZqJq zxSxR+bPqDP5ASN3nV1`vmEsJ(U#TD|H!KjmCMd$oAT>Ax(VusAO7_gLOpA)}^Gh-c zGE8!ZjKigZ`~%uE=K()^0dh7z$X@t;Es*(D=p8wRDegJN$)Nkj+$_^ljKVU(=ZhFx z!sjL<3@!5gLp)K!5UST7G*%Y^y2BWBzbYR6zFEom^}Be2#;4LCcbs^YCA-1qHN#w^ z!lN=$!Yd5C-7JypLtaxFgf!pkgx?Hz%gjX3y@{2GJ>*G7UWMSjpI|xE`D@T!m|%I( z84Z<A@HMFZnNDSqx%ug7A;sz7F(v4J8&KK`@IcJRp|4E>ttmjg>!LgpT(?F*$8U4W zGqLCa-5U&9>*9=9+u)fSRhFD<09soQxi8ome6J}|e+s%j&l$8f1+msFwK4_AI16a+ zj34OUpi0=@d(gQmNb3d-q9QUtcMYfe=YiJJ`sF0LTNZ=P-~+8;1C3ck8inP9$|~?Z z*N}N-@O&;PTwwd3Je?iQpmRK+wSMNX_CACL-QNwF0|w^@(3lo@%^_qxU!XhaUQE9t zkbRJ`B+%W8Ia!H@IM)@XgVwKs#@(XA%R%<R*B1IznS$MhW{(BzYyglx$htQ#=p9|K zu_N$adAK=9;R8K~0JIJPIiCEAlZ^dxBAk)$(J0S^u0sOfIp~G!&TP<~6yUzDiMCf> zP(f07Se1VjXq_vlPk`P1K1NV?W?`4doBlFEV~b9P$)I(iD0jdI6(ocA_~f`oM&yJi zhKCu0)(?Wi4zaEde5V${G!7c?%LU!%f+MX%;v3^Gb(DOP2^j~#;|8!>0^EZNQjqQ( z@kAS60=FgI@VWzH4kQi`cY`>4f!mDmv5N?&%BWD#8ex?Cw9}FAHv#p<q9URyLHBHf z?>+~Gu{-X&wLM|$eXBtCj)Tkx*MEMXwqBwuBp-OYID*!PXd|s%LaFDF@*Hvg2nXBY zoZ@bR;&z;OrAI*S1_q_=$Ox~3$Y8_##PFc(sBjZdUW3#<Xz3objxZ!Q%p}DX(*A+o z{hRL_oI`M3D3X6HlAWDkYZF0sRizl^7(^OnK*Gl@svs&N1#~yOc`9s9#3&~>H8dzA zH8cZs{!C7CW(MeftxE8mR&b7GT1a_WvJ2Kc0}eY-y7n=G+-(ACM}X5lTKNQ0Lm+<{ zM}>zKLHZh?d*t!j2P*fWV=s{<p!-`v<z7mqQ$bRu6Syn}^{G=M`~sqKQgWigOQ8Nu zf%pY<-wyUNfSUdR=L1Uo6Xgu{52`ufb(|F$$;Q5*xXt#-^MkDEGc3<U$rrgn8L45= z^Ff_6vO(dI;vQNI+1Cq7Pp0OnMuDKUT_!0WhL%L-6U1Flxbl((-gJOZKVCV|8r?{I zWlUMJM_4&1ucc%fRwcSy8iUdUXzT`5_ojwI@>5uDPEHEG`h-B4m>6za3a-ELq#c6g zDrnp=j6k{SLcqV^@!$$jn#NX7!_qJ!k07n5N2@EKeGekbwD5|YsJtN1x^;{@lRWc4 z_tk>h+9+iY$b5fL+bBFdEF&3qXWLLNo85A9A|t$9l0a+6D$^^xL2(JX6OC}00*a4v zlsuZ}2WoF-CAtRXL>jqeM}^@io5R3%dV<bTjEeBg2ahRbgT|pk3(_JCEPRX|vF@{g z)d>O4mf49Bk@(dRNc$*bYal=4Zo`7pA97nC)Lw*@(MiGJG7VZrL-J)Zo;(Tj1E~Ih z%zuFPUlc&fJaGMAoQIaCk;=<Z*!UA{-G81x0e8df^Y#FbSCm5iT@`NZl#!h0m*WlX zKY9n7=0!yWLF!cJ^n!?BN61+%?gj;*J`=bO#BBe8!v<yt=$yxt2rp<o3pURkbVeFD zuVkhdc)Ec0rhw1Psfr2)odE?pw=BCf$|%er2z-tlC|!8wdq)`J*nb1*8zAg+Oh@h~ zK>ZdH6<(1OX&jjE1=>IE9%cec)5N$xAg{zcDcH0sCETkj#lsVH7jl(%1d(+KsQr#> zKMIz%1KxTCVivwMj;~(AD@UNsQl4atw@(li74B9!TJNCs<ueUI^#bv2X$tC{Aa}?d z5WFqz3~Kv;_a=b$S>P=b5oHc?pA}T@!q;Y(B!S!O#P@HYdveLDLoxh9YQMn66ur$4 zsdomp-H$pC<PNI~A!GW4`mvxmN^uW^?@vg{G|Wvh_5`<$qr&|%qTEBlcgsdW(*e=# zaZs58?c4h2qKpxN>lb+cHXNKDaLl(Qn-Novg7)@CMtFhBc$9ObpmhwkIw2eCH(2|f z<nrGq&kwX-2NX`GpfV~HdfvY`Ec}B_!F4n#bpb4leeytcXArS{E%05VNO6caPZDg) z;Oj?#;uKF?2&dUN%p`d~CAduix$gwAr-y>`f+72s%{+0OJDcK>QWj<eUiSeRZvc&T zgU66i&*uWQ&5|H@EkMpc0jmM+n}_db1D);U7ZPll9p!9kni`Q~>IEB5M?WVPwC)Xh zPI!>Jn`yFvWo{T~j;<;nw1xxuTtDz0CeU4HkaPPWXAHpFD)2Kk(asr-K<u#tuV)13 zFPM8ld+&3@3{oPzN<H05QXp$Yv7IM{>VL@iYB~jH+dAg?W;uf9#PSgCLA4{&r~=e) zK%D6cJvRX6U+~_&ko@$(T+6Z~_ppqlOg!O{>sFj>6bA15f%SvuW=xYoXX%3OHUX_4 z!Fhf#j<kXt-buM`Mv37m87biVIx9fy5DY<g8Q}68sE>^p-}WRJj>zV~*lF-{=|E?m zyJdsc_#yVMnWTgFr+Z|h#X02svj}7G`D~zh5^(tmiFe3c4kUcQ@}&_*Ud1U9;Q17! zc@f9_s9@+E6li`3oR%QxUqa0-^>Pm@hMegKIl~y#zV~!?OM{H1m}EzVmzPEwf!6N0 z6(r^P=0^pa8bn5T<wZpVg3cO+s)MboOoz_*K+<Iz^ehTwcY1;HkTGaKnqR)Rb4pgC zJ7`^tVHPM1QryF`y(-H=>xK)GE1`2e5I2MU?vo2zU*iSdCj?qc4soL?=<G}^^$Y0y zTIe~CdC>liyJ=2Jr4v}cw{td%TS4d0dm_&@xq#NlhUG>^gcYYaXXmGY*Y;Z)dk34A zC1s}PMH*EUL>d+6`8Y%E$g#{!@(8O$oY9ArN8G(~qCoc+g$Ct-=Kqq6v(e5y#*jx# z3yz@vM|y;TX<3wem~Uc)pMh^Cc&-pKM;4r63_2$-$vC;dC)YAJie&eJ>Umc*H-W{_ z+<}-sgU>la;s-IN8j_z5+Nb5|3epcc{}4T|yMgxgf$|;b9QGv8{R*IQRd5=CoF|UF z4$2Hv)<Mo(fut!<XXqMocQ;c|84T`!ROP2b&Rq{hI)fWr#>3_>AbnZz_%LX`3p7va zmxIe(a33`XG+u#F3(L!%&Q6w)JQ$b`nKw2C-CG7J`#nJAieElz`Q(HWHpuxNX{-Y+ zoIz*qLGm@YKMdOI0bMhNeikLnT}WjN_)HJbnJl35d6DA@yzT<6&H;;|pVy0A*Epw_ zgYH2~i3lo4^6&-CIc6l~f!d5g1xZGxRo=nSb4qhTWhrdF7ZO*HIZ~u>0-fU)9%hi} zZkY`_-v!xik)V5mj6iFqqYRUB{lNEldAdX9&=7kSA?AY4$_Jmf4LY*}ZGH-=TmY@@ zD^GHFGYx^PJp|8RVUtISZ%{c4x!W40>@q+~SI~RQpmQ;3=YB%wYoT(u-A%i440a|c zv~0v41|Ag_pgk9f5x%AHab(Ci95{>+dzukrEa>LJ^B!mo0dy}kJYPV{1WVX?xXAGg z&gamxVBvOy=4Zg;gUO(I(F~k+LDx)x%>cE{!22B_X#$b{L3sy0Z{`Z=ON2qjG(qJ= zURY_QF(~btq$B2}p#8E?==_>{RB>c@GR9fU;Pnq4;BhHXI>D%ud~#EAQe2}9liVx7 zV<V_}7341Po+wD4(8Cvx8IZ9<9Qwh1G^BKlC|@AscCh*l(%yxP(}DVu>9DjBm0OV! zRp|&ivnAaZz7H4@j^MC`#t%~Y1afO>R77$*WZo<T+^_O<Hc0mct*LZ}xHq}7JRLk< z2|LdUoDM+#Hb@7Zs~ZJ78w(~5y2HdhqaeA`6v+>uJ%vd1G&H=uD;+C*L3@`VdAZ65 zy6yo{-$K$VyvzZm4|ux^<OX<}fYb%hJc^coL1Q=IF@0#60ZBKN8M#UBZh08_0<yOs z5*987&~^*5Uogi#(eem*|2<@^G947gIMNg(d<QN)fYU7~Y#?C=TK5A@BcS>TTz+Ol z-3W=VV$i-X&^kA88bMDFM8!KOz944$<bm^Cv8M-;ST0l!S2_rG%1QF@%K@#uMQ&es zIz!skkg+X@8Ay34FDfDkoOdDdpPruzn%l`NPlv@3C>^4wIYfPgTCO9vgOKfm`^OzT z?+y)9Q%Jesj4KZr;_4HD;su;$A@Kky!*Hc*WHsKS<sA6jYNE=yU|1T+z+Lv>PIDOf z8kFXc(+4D-ITm@kxWe-e?(!68S^$?tu<<UmG=L)K4aujNbsVHThPNBQ=>^gj29-~k zZ6icphU<akoeXeW0_0EdT}{aCDTE$E<$f`&oq`lc;5j0Q9qIYr!La@!M!5^C2T}TY zDD4Dyq;&*n?cykRH&a+RLe4M^Ee5q`FzNuvnK(H~&al2RX#Ij8xQ`ZI<&*-M=K|fM zg0e0ax~~Fu?_4Nm-GbZ(C$oKp6lS2f1GgJc>mN|P2<c}a)}=xFvw5I(^f{$bp!GBG zHa?<!!(9eqt{DTR0cigW(k6k`|Io7>A#DznHa3=ZJ>b3=qHo{<n_q^M;oyEC&U5|2 z=Y4|v0z|Z1p?MYV4@mh8={thL5j@_A9F8by3hpjwn-bElMeSQ-SA)9`=nmZ*ioDhX zce@+i{owix5<cMb{wwj_%>=3EGGOzjsP2Zg^APz0vX>PjPr%v+l)2j#w&oC&e#k3B zAZZ&ZAArjal=<c0a?o8Xpgs9G%Nj_VH@yHQ&7+P>qPH8+!Yw5y1+umRl9rqy?Pnin z&^cMA28kGLaL5=PBreiHce+;iVvOT~@-DbtROF4;F9O{I0$wi&YNvtrox;b)L3-eA zamblE;P!NSdVsTIIYvA>JElYGC4&;=^bXFi(6j)G8(-KN`PlL`ayjNv3^5OMFCS{V z$_(CKgx_xfYR@B$p@GZ+ubnr|OAL=Ph0PZRyN6|f)*_?Tb>Mp!lX6oEqVjTJeL(mc z6KEd=eas%*76<z`$Il=+6Vwj@k6~d+Go}VfhS2h{5_QZI*1n9&&8bW_hPEY*qM&X7 zpD_lhhmC_Oee(PaBVpxiC3u_#AqT&^#<9fH#kIiGxfpyeIdWST+#huZ)i+q}fsBiW z=9H#5XF&E5LegMBR5rA13I^?ibA*^3;)qr@L(d7zbi$$6vB=Xoxx}l|vB(p<8<5Py z7mseH#Kd7_L=K_&tAySa1nY-^=lFb}{e)!05^((o>7zsH3~%S06i~Q&RXXN@Xh^!i z-)BQD>mlRH(6$I_o(J98mFJfOmCJ{ijWHHamYb3DBC30!X%bXtL&kGpVTR^5oazX= z6XFk2!U)N(kbIOg$UtM^iQ$m^3~gg!wnuZ_Dm~pndmaokK<Ax!g6=6a4l4njCzD)h zS{xN_nwR1ZDI>vi7s&F4#T60IyAV^t!Q<tiy*1gO{T-k=jFfOg(EjDB@G7?y(B3@g zxKnPDu~!NBK6X&KiDmr66Fe^-THpyj+a8>!A$2Znp1~P;?gBIp4LOq!5_Z|3`5wqT zo^vwvURc=J3#4xfE`#uuKOvAiL%`)Qs4Wc+BS@MCmB$c!z;OhvZ_=T89GkwNjMQMX zvJN!f9E`nOgVaeG{-C=;L3TmI3|iJe+yIM9NIFHDs{)nbusKY4oSIffML_nIcthu3 zeT<TeJ)!**(An#dIk?b#9|J?bkWhoNs7iQW4D1f?U=%a3s=+L49jm;9vrCh6!$9rA ztf=7hGML%k&dKGFat-RAVACqln#ic&^b+69>;e=w83kp7-Rqp5=j)uD?p+Dmj{{Nz z?uX}iI~!D@+mjlR4fX>hp3&S8oUZQ~?pgpg6I#cj`43_rsPBR@u7Xy^y1P{-qmQRU z%Oou0(%`xelpjHHikvrm5cQBY=)QW;U5Uu@;64ucK1L_Qq+HOPdQK_mPQ`#qr;Oy> z6vL$Ou+kI{za(Eb1045Bp{5T=od&LVL2YfLB%_>cPxLknq|XIfmsgtP9#$G<9F!03 zXI1!u@3eG;-O&Wg%aHYp&MDbZ&W3&=!G@4|{z{}dLh!ySNEs6lVvz0yidO?eKOf^9 z)6|IUJkVW_7~|N8{Es{~3U*hraablOJVE7~w@V~w-+4KxuL=@FON&)L&W?uO!Qgtn z*wX{l_JFNB^a9;&1fKf?r8`J|f|nJz$JcSY3#Bg%n#+RCAA!pf&{@wOVU<alP6f#Z zrWqlb8Ax>|%D8p`s0>9Ozwi!rG=r9hIO~1TSRttY6=-B>n3NZYS|_=K#?C?eH2lg^ z!c7gJ;}h_)5RA4dWb8E?w3iZ;X2Yv|D}0<CE5UpFt6YmcU3|-ZoE@utL2aBW(7u1L zJSHD>7C@C7`g#h~wlV0;Sx_4cZCwLwJROpc9dkTg0?U1&XL9*EgVPqcJ?H5hn(hY| z2k#?;i~EK+mP6*>vA4gG?{oFdLaSFmW86q{Ab8>v98REfpg?1?u(Q4(agNgO2K8gW z<0g=`Wa#s8kT^<l4}-1=!*Y)vs4jA|1lNbYpgIiF7lfn<)VdU`2C{bpW}c%ZXucOM zox{{Y*7HH<LBVlu2)hdn)K>uYZNTHy28rQ@IUsqA{0ga4K=-AikNaV1<D<@7!~0Y& z`LOmS(%2PhU5h%e466TwAa|BS#@5jFfy3L|8FEH5I8H$Eimi?ZyWcA$#RI&~1ME-e zSaNBKyJbj<2c*0}>8HZm2T=vdd42}q@w{xyTv-1J98RFV7`V@aS?++-Hbkx%*4FX~ zcC7FY28~rZri0jM@da9=m=0P?o}B3fTIZea>r$Ma80=`_>Ec@HU+GlfU0ICL&O?l$ zL;EJsc!r%}h7p$_f4PU5fbP}8)z|W_bb_3b3hS4G!WE^?bWBINGX|y(QnrBO3DSPg za0j2m;tFdkA<s{N_GgBcg2O2jG!~gt5*3UX%lE~w51d9JeJYT7VW2%+#h|(lhkf9* z<r*0QS|0=obLf3^Ft<YLLQM0(WtJnhaK=;{>}ZS@he&s<g2D*w=IqFb9G4_x$hm{C zaapu7JwL@A?0<0i23{KzZkPk>gQ2HO@I9&SkaP*E7s5bm=_(zy!Tnv#vKG=t@$iE6 zsX$={EgLY#SCI1tXk4ctDLfRq-yt2GX3^aO>$ijEgj1k%Ss*t->nc>cK=Bp|tEZ6W zr0~pBVX+T6pQI&%+Tbp(=ALer1)eVDpu3Jh;|HKIun5rJLH|mpw8Y@zB8++voDLxU z2GE#w7${GG#(h9@Wf4)3_CJz)LGy9Y`~o){)c1`r%1#H(ZK0+ENVy7a<Ad7*(0T!M z$68gQa|Wbb2fG2H7F>RT*MfrTchLAcXuWJ8()tM`b&z%n=$t&nx-5{pq2rv;vJKC? zUrs1!|CKlLJTH=4l8r#?RQ#&^GjWZ-gU&U|Mq1YhbDI<V>`1VGz-B`4uL83{c>*#A zgW7%q=aaM~cgwP5P#hqg9pUL_S)62KS?=v-S>OvgivVejDcBB3nF9`EP??O}w!)XE zKx=an;pa5K+J+$af!zY$cM38OsZR(gOVH{Uc>0Hi8Ay*;Wim$mLe~veg3sZ^widS1 z6x8N+iwyV6_eS==b4E@Q#yBS=yusyw2ecdnm0Qq$N-(G$=pI(=13DMa8FZ&DbU!F) z?Atj799D?6>X5UfKx<0CcPs^Cx*dLADJ%|Q_t%2s1hO6i8rIp75g_|e`^(^Xf|R$A zb&pk^usdk6l(P`Of%`MieN~WgWKbIi);@x-UBoaCTRw!fHz9L1VUTtMmNgY%cf$OJ zVmG)h!M5fexx9qj-<#`JoDvSP19i+S8`78ZfYf`C@c_(rAj}P5+5=y_f%<x|_8<D0 zUYKzRHV;&fqqKV=VU5xL1;;a5zQv{&-d=^AH%7ROgY3ih&vZ&l4DrNLwt>a~f<WsV z!D$quJqQ{Hf#x&+Os6Wy9W8!{`F*In(d!J@dRmk+2Q-e7>6i~rXV7%)39UzbGaW4g zf<bP9*4r+{=@CZRl{ng8&~hsS<R|R?MAY^>xQ~RbZb0<O%hUZ_Jh9{rNPUI8CL$y^ zEGG(7X1WAcg6b%I=3?XxNZARxYs3K3UPE3>Lt5JaR0qPs9VMJWYg2PAD?Obv!0nI- zqwFeB8R;7W4$~@6mvT$c*~_UO(0!Axra4jJf#CYww-RT)4Q;<5=K)jjJ=5M8?H@=Q z2d~$3$p^(_6}EH*S|1C#|G^)8Hv)XU7IN6Y+p5Un4{M`A>J#4r9A-n)sxN5I1UPMD zl)uJa8L7c3XlWT#AHmLJLaw7Abttwx4PVCvog;>&ebAXQp#A)j#$E-<9?17uL&lN7 z@*aK$so@nl=x6Fc`<msDyGOhrbsHp2m-$qJ+z2{XItRS=6nthNo_nrA^$ciS610{- zG29e-4kh+`kRg6SxDRrMO(5Di#fFfzqxjB4MvO<p+zUHrtpu|7F3`-=#nTXct`>?~ zXc>s`E1KOn&PYZv10#I!-l3i1ZdvZ1=?FUa4edMyC&bxZ=yzX()(0Dh8Gz4Z1Fs{u zECrpD2b%MO<VA}zP+CF0pBr?ZFuFW)+`!L*#qbOKTwK_h$ms4wJ`>IWGfW-RJt5~j zV>@3N-7LslRJdDlVt7iaf2I@cK4-KvNJcy%pSg_gN923RolPns<t8E>qNhvL{Naf> zhZ)^m50rd@Hyyyv#|7O34>~s(bYCdwz9CN|zpO~;yft#%!qod9-L(xpn;AV!QO+y` zpH-L}m5c62(6|j~ygD%)d^Z{>O+wC{!|+pn31|;RR0QbkUFdnu=xShh&bzy1CmAQ3 zfyTrAK<72PxPr_~PtHxrj0{dM_i=G7_642YoaJhadABQ}I7Xb|jGnGj;AaDSRzS}v zMhO!_@d-QE8Qt7ucem^)(Ej+U{B-cS&Y<=-<eWs(%!i)Q38^~}=?pzxfzMxZhMWOR zP%Y?85$IXOkTD>HxuCi(F~Scte}nz}XY}~<faiJG8P6#G1MM$EKTp^fdR{bom|-~+ z8r>||dE_O@xo+8s5n-TyD3)@BV0wU^(+XX$fZ~7S#PA@4M3?+@zpT(4^t4YfJwW0M zde#u6uY;TyQO?$M$9>l?L3@zm5Vjr{*&cA4#@R3<$vr18DJwrc(kKkH_m|}I3ep$B zIAa<;UJzmC0yzsDPuv<p&kIF216toB&fbTeJB?x%wC#fME2Mvc(Pnbbse<%bvE3c* zMbcT+DE2#}oY7mFWDGvLyEw@>B`3-m?d)Teyn-!FLe3h1_KniP=apbNpBmME(40GH zpE|662g&pPxu7*GfhCbf83jr1(6J$$Z4+3Z5WZFt(%&Me9yGR-gI2$S>TJKVBzMr6 z#g1A2A=#$*@(k{HLvF9b+y^~}8tL3&^soT6%Mo#p#|&7X9^psyGs(?7J-qTFGt&)0 zdm?;8Tune@Bz{%N1?Xp!qq@N{Jra6fuqTeQ%u&=6Ouvx%aafwbQa+cU)x8y<`~(hH zxZkj)HI%iokah8HkTVmY=TH+$1JE)PbY`*%k!l?YsRQ?SV15Osf6yHzDES7Qz6_J| z{K}HE^3#*uEen$Jf^w3x(8^X4!xd~-7UDc>lsIxmFH=D4ZOYS=T}V@pd|ozw^O4gn zEI-4~ZAU35(d&Ki7$j_72YU89^xSW3bsI|i4t6FrXq^u78QLgrB^0g^pfSc0=-eg5 z?O4(*&hws0vMU^NA1oI0vHA<#enp(MjS`NY&Q2I^@~gtyw}Ri3<Dcnh3~FzK&gDjN zH*DUF3iU0x9S0q!0Ox7w*+wYs2GldT(fx(o#{!)(fTg^~xSs=dhBvxd7-1BdYY9FN zoqGO<ly|VRyV1>!LO&PX-K#9gJrL7R;Iq@ciV`CNOHv~Ia*{I*p?7=+nkD68@ADEk z&l@c)97~cSe2F%jC^rzyTcCL`FYuY>=-~oB_Y`zb66CCI6t@y;J3_{&u$zk*^MKsF zgJLhbdtE^1=YsEG1E0Zy{p{~Z63_mIuIB{R0r0cIL3_F&=b(Vb2P2$4(ay95-Q$gV zjx6~8YS2B|9$v{2?k3>9n(#Z*-63;W(7Uxkb1Nm_vM?{GGRdeMvfmPRjx^|uUC^Cc z(0j)bXZwKdH1{%2DM)coFG<b~tBQ&UEP<VQ>{SJ7b0eSO0lqr`bdD4F922PB;4uua zTQeQaKx1D>=VCzaG)Frh8mu-4amNd2>;{DW^PuB%;Ct4+FwcSp-EEFVAL4vBuzw)q zWzc<`xa>;FG%Nv~SDxeoxw9NPcLKhn9CQ{m<PHW{m_yG{&U7;J3D3!e`Ww$V&>(ks zrbEs*ftU{qQ?PrG&L9TeNe<cL9tO4>`K&~c9K>CqwWN-DUWQ<EL3fK+Lhl!cqzTBG zO<2!_M)8NUCG<>c6I3(M&)x)uGuqk6$?le*ySE^2L^=x^<VN_o8hpQY3RqnLdR!4< zPa^cZQINS9`ax$Ip`F<XQU`87AksScPAG6Vqvah?8UtbU^GdOp0d6PaGXr!67r6a} z7MEyl0qwyg`OG(vdqC@%6T@9g65VsMquj$vp=l1h#|Z4MOr$eMLGhIbDrZ4u3~ZhO zyw0=;d?qwVJ`3smH|QNaps+y30g!Z*4w-lIh2&kdbO0}RGl@If8d4Sqfzt!^{N!2y z4g;e6gna%ZDF1k2*+T|RuX!crpmms_wV9B;B#1o--tI_y+#u&YmSanwpmYH{w-Gt- z!NQq{v<IG>hx8{PWdaU+KxeB$$7o>ZL4*Bg?CG9U>IqqE0UFOooJR#MKT?fLj3H;J zg8M<JWdV4O5p>>Yc^T*&NE~((th;=`YvG~&dvJN~iQOJho`$A7_&Ii<^qLz8J;M%h zE(|!%k<WsLs4Io7=YYtg<qHC5LWA-e=uFQjXUN%al!OcXEH$+Jg;gAJz8d`g8&KK- zg*oValgJ3aDrlYu_b=h&1E71UK<7S#{0^#*BK-1`jFVw`70bCc(6l{T77s*O4Blgj zd=4i#y&;{QjIE3Sr2``B7Vz9{U|vuu>UsPq<uYh2Ehi<<t1Kzg5Hi08Z3AMQ&kssZ z(DST8ZbWZ~fY!f(&*_Kk6@#9C0XhpBROWah-#LJsp26)CaM|ZlfpQKs$c|)iyVEZp zw&oPP7Zp)PA@9`#ha+r17#+)Elrbi7`GTWO0g5xE^BmJr%Q6FSSq2%;hOPni@B`P0 zILcRWxWVdU&>bl#b#flb=RaeQ6IfaAoB?jb!{+*v4ND;VcF@jWhOVK=_YN~ihwQ6x zD)A0>%=JPqTj1tG)+Tr&)t!(vLnwO&pzDSpd*(pvgOfbMa<H8Png*^%yr6gDLE7fv zw1r|Hdif9Oo5S}eI|o7U49@|FKkPn2OmjeWAn3jTgHqU@4bWL|zLn6sA)sfU<I2B2 z#whpxU<-fv8O#`FV6Pj%XNH362edSU)f^()8PIc_!TA@IUZHmgfcReUGaJC`!olY} zjMgKOMkSyznSrQBp!<ZO=T%jvmwSWr0#W5Iq>YF=UVz%BAordZP@Rzp+Rv4f;S-)w z5ak|}lavMN@1}To8Ad_eh;;rsIBkK#&mXit7gp}W>&IY7o(v$SekAi;XN<fCYJbAc z$3<(mfy)FU`mAX4i_mk5iEaBL$_d1s0pM_gniC4HJ7DJw6V)#O`3c&l#u)1{0*})} z*E)Hk+~tXW@2Xc-0im)MR!>0ItL1^tPsCn!L+cBepFs1tpgULym%+}6{u})KW>C5V zuc`Nfokx)m3m?ci%z=>pA^v(vJJq-Z-95;6!eA@2!DTQ~J&(OlgRA@o#S4zKMr<De zuFlyLJbsLQyfT@@@k%1^D#UlEUx=rPH+b!B5NKS@Fv&d>)IKdwGWIecbf2Jah%cx- zgOC4$*L`CdH}yfe;}EpZ+ORCjBdj<o7&PvI7+VG1@0Jo?k>isaW|Hh~S()MiI?oV# zW-DZV(cBw+j&xXAR3_-G4bYv5sO|;r^^9=#LY$eKQ=aMRVgWkuD;wSHBx5J=+Q8&W z&|XJOH+h536%RKAtw%A40`2F(8;-se&~OB=qlKQ2179nPx^^D1z8bvF*FB>w#nmk^ z7-WYB?9Rl{{0L_+qm=N_l0<h)1D^=5oFsS4j3{TrjAZwmWY0{<{xXnUV3?DaPi{_W zvT;yGl6!f6a&A~fN_b9XRB%SJXI_+HR9JbYcQ90acx1Y_vs-?WagbA}Yc}XC;F4s} z9joD9#h|l=lcD>$!Sg?mb+`rKb-ZrnnLfd8nUUdMIZ4j0r9PD=r9MXB^J~*!@s?a^ z33e~oo$g_kKA<yoGcBQWAwgxynWlxwRhE!3=m@{8<lLO{6z3>NyUxX++%wpuEXc#F zEZIG%EXByAG$k)AC&C$Wk08RIew9(-;IW0ANF&S2DCdlVD9Aa2=<y5LD~3pq`ANos zrIF!&Sy2&A2HtKZ$)1@88IieenNi{889td7r9PRKrJ%9p2qS1(i0~}~xxpvAq6~DG zcXFm>abmb<Su*te`6Oe{(!@Mpedu^`6?6@2E_B_Qr7tL)41y|?jGeNRj8jT|pmE^? z2}^KTC3*yvBsm)vCxPzNiSQ)J9Z2OFXb!+QIXA~3DgxrB#PC4N2;;~SzbsFasBqWH zD0ko7sN9_5s1QR}@Li<tmc~h$rXV+vWG4>48$`kL3BmYG@o{!S<j+h;#5qZj^i~=b zkrI#$+K*sl3SN_qlAZ@B&XDsqXfIC)qU^}^0<X<RxEZs&GtEgcuq;n;&nZjF1D_L$ z;zz{!`jE9?kTStEC&dt{jp1SdI%firuQLrYAZathASt}O1eWJOdB`Wzq%0}dGCL~F z5?ZE*Rrwf48Ab)e(^*-Pdrl^DUk6maq!@dF&M~X>$t|b~Fv`ge2(vWu35l%qcMr?( z%?--(%8e>Wau2mc&!eQ-3BBhHd|rD&Re*7jX|j8$B~n@@n17&g0WZT+B0zg0f^xjw zbFzJ$olwIT!Vg8HPe?hK1}zWMg0u6X=7IM}Vy~CeX;UwQ=GUQX+u>zQR(^V5cu;n7 zrBhXskztOfyI)murISHYCFmTt(DWczOFvI{FH=w08qZ3n3{RJesuT}U-Zn{3ad(64 ze}mMQWj>Wo;Iaj@zcVV>38F3nvNr{i&ip|4SLY<<f$w%mi!e^fiOh2Xtx-#Z=esb= zG;h#eU)bJP_ncg$dN>PoHWldn7D!vsF%LEt?^T%%TAu`JGnRtSdT}dBg4Gp1x!|~h z>-BL4&663z_U(h*oe||82-=&S;|UET^l(6`qYRTFdk;bTI`R3T+&4HoKN5WYJ!s!+ zd3vfbY#&2VK~!c2!acbaWsyd1#mSY~*xC*tdoa~P*FS^yECjn-8hE-w>ycomVAz=` z;PW%UaRaswa{eOxEU=*D6i}LQOUaK42gPLuvfr~3-Q7x~j6#b&J;KVt^Hsr+G!Xy| zpMXp!gUIldDsZ^CRTw0ON9KEm!{fI!$=xz5GQ6S+zUS1f!XN@v|A6nF4lM=Mu|BzO zS&>Fz<tfe?$)1_6IO~Q;W4|hRn$5I?)Zxyig~^qqwGF`OHrTK-Dk7yaF(N1j+D0gd zaxqLx$uuzX&C1A$4Drg2tc=P{1nmI{MXOJPqpBi}EX$+911-UQ*I?4@hukNI(KZ3^ zH}T4aoQD?>;+Wx+X^B>Eg6<D2M?U`uQIA2wH8}-QpSd9A5wvoAG>oI%!%T38G4zZK zSeT-gJ)p84IczNhf>FyKP+c7e&+nkUniypeiW#WoP!Q-Y08k!*l`r|I=ApO^zQ;Ji zBM4lVq_|ZWfXad}ql_HTU9XAmq42WA(><rk6LNP3s67d)w<@E;4a-t;Lm_1zTA7{< z-d`M)oPyS#h0Nhwg6_*eYEyyw7scuDdeJ%C+!JwcJlJj6>$z;&)N}6e{v4>>gtkdg z`)!_h`&OW{RN&`Vf$D~WB+z_XUJ$ITgZDu};SH-}z~vyqZrC1o^g1ZnGt;yxD%=lr zc3To^o7pb~w7wla_Jn7j3|tN9Zu1C7(0X3*J%zr`j^&_zCBC3D#NgvpPGu>%VU<z2 z6=f+^`RTB=0{(`GwKYlMZk16+Ii>!YjwQYkPA155NP873!26gG=EB#)qw7K06XH^W z7$0)?Dof4<t!d2%pGOGshpA<RvuClVTX|-LvsVi0{z;26Pk5Mu+YzM^?j~j4nfZl2 zm5?*5d@4cvPJGKfo%73(<dD*51}qJL&ftah^^5VO0a!m8bT3C9Xnh-~O^}?Mla=BO z-BS#yQv)J%3qavs3c4c*wD%(v+@B1qO!3IhkBZ2Ej%$>sM>u<>MHq!ug@jvz`;B1# zLf1Zm_s)k`7)FKUr-SPh$oL2%e}mSCLCW?t=sg;sbd9IokzI)rhETmBpf-AFMM1JL zp|+Q&F#-LR;I(N+IiR){sJ|H;72#%>7~z!@<PIG_an49XvJbi+7}DQBzQZH}zZqqb zx%ma29>t(K%m93MmAhqTVkY<uB#>NbgrQ|lvH`5!<EZZmkv9YB0mTXU{vDV6^duv% zLQf9^bJX)%EXq7xDiD3i5X^hE1KcYLK;x~6;gO*G;0lrrDheW;JwfvzIY}-B*@(Wa zqZxee&Djfb2dhz76|Ot_0z5!>lLV$G<+_zbg%~D#=0eww<>0>mIKbT%vF66v3(0On zgCwJryd-x}8^NhE$*3X+bjLG%Et#`tI%0gcJTuh@wihBS+dmV0A5KPOZbeR%haqUq zo@1g>m}yFcV`)@`Ulz!mWTT9-6wsLo&~v15`3XD@?onb6T~m^t76I9x3oaKy?M$Tk zH`tsda+pO%c;%$Hm1iQ4>!Ym6gz0xFFN?$ySDwy}7Cy${a0Rc?OabT7K*(NK(3mPl zm?O3Az-Kw)xm(?(!Z67hw5~6#IN2x^S3H2ul{CZ~J}wniN$!>gU_TmFl%?RhJKm+d zEG4`gyFZ*QA!cCS*J}Y914G}p3<?*}d>|+tL+{Zr@(B+s_RmH5-_r%@-eBmRj!_YQ zxbD%mNCvsx*{KwCjw2|IMCOKp)|Tdg{0`b*4fZ3Z`@n0FKyse$rWr}$p`bhkU2ABH z%Px=}s2UUaT1n*mf>;Mro*4;V=K#8M)X+Q?+}97YObd3xl~;&K>*@ZWdxD^6m4N&T zY6F4yTZISVb~EVgW8>m<$XvdYCHgvLa9)9=XAAT-9G<y;8K7}dSXd^zyOm;zQ^?#u z@>)$$J%OI)ai<kfxPsFWQd}U16QQ(hkrG}$i1R^EK??d^^q@S2xDORQZ&@T8`Bf%H zI2l00Iwuv>{>lrgLX4Mz>rL={3g|w;WKdo2;fs2wp9grI6{;9$&ji|ilaPI@u(J%D zz+=?@nNH40MwZ1<;clg9@>xknVU>}f^Ells4O856ia~eYK*dTUDZUrc5p*A2MzXPQ z9_ZW$&^_D8_9N1JAQpe+l!MwWxb9|*G_uS|&h-PGWdduvfaU<eVm`TEWuUq$G90?c z3X&hvJ>5a)fVvqbd4SG<0?ifr<v{8X&^i%Fn=b--A7KjUyegM`=>8v!@C<>TX$RSx zh1Gmh(0xmY^CnQwWrxKJJkG)S7Ca{uit}z!<aUP_;!aM;I2qUt&^>FQvt;0BPdVYd zcMVcU`sIM`JVS0f!NsxMTL3CQ!0jcs5_3;?(0GLj{M<rFeGXdt58XE!4vJUES@%eB zot}ntH%5}XTNUU&5$L%p;C2vbp3BP!QHOYe=CvT_HI^oZn|dXI_7XTd>U%n;K-Stj z8|EeFS{f!h8)l}so8*D^VtE;X%W9~23T!+MT(+T{P3@jj8XOKf+XS2@5cfDB#1Z2m z;4pSf_e7jW3YmA#3<AwVgT@|9LG8|Dk1zws{!K`_L9?$a#2x*f#T<|riT0Rgq~v;K zBxi!p^TcomcziAxyIh2E5a?`#oD}Fe7m&1va^5Dmj7B@V9xR6CjNVGv`R1Mxkht~& zos*Rd8kfXwKj^O0$Xqw*K58ss<l$!+nF~4t8||D=gg7Z-1wJ>*8=8I)ZZie@#}nz! zIV8ENlyEPwJgmQhC5*sz9D3dXw_iMb3A--`($<2H>3H}el?7PyaY<A}P=1n8P!-xe zj^O(}(c%g$h9#~bX9N+tyA@QgK+Xg;Ov(k{-<ppS4hZ=)aGxJM-|Lr?;s!c<E37Of zA}}AhJi&B_W4b5wY%8A}%lyRfAn>`UNqJ$#NyupuoZp-vXOLBzg4c(E`iD`upu2cO zk-`g<Ck?=78H2|sK<yQXUQ6WqCMDby94=^Kh43S6e=}GwXwNL@e01nNl2CWT$DCnm zKzrFC_Y8-E&UZ~R4l{tIwFo27nxs%@9~F|$A?XN`PoVOkK6fdoZbU9KP|pm*njS#& z$K>4E3+`is%UkF;KT;hCP9NaAcU=t9LF*0i-aQLWBcS_*DnM-+P=6gfKa84If^w3a zP0Nz9A?XMuUATwB#zPFi;o|I=4nM~)58U1Xg$-nG0r^}&_!uB0OhNAT0nO><2DyOm z?FH@a1l=_oTmfs}mqvlwRFL`jk`#B#yeOlJ9Iwjk(j+63d@m!&UKP+Czl7Wu6>JJx zKV}4)Cqj%#z{m8!^$YAgJh)$w+WFYh54=u=_JeV!14O>@%|zq}&oKD8ec(KTrXOBD zW9A$5^CZD>1)jGI1fPKrR2da+lJ8|4R*WsIyo@Re0&-nJcMT(riDA9l8Ip&qJWC;M z1kkzukoFg{Thn0ka;WW>%&2hCJquy3Q4yd$<d&c_Rgmm+!jMNVZ@}||&LF=zT6#k7 zjSWGJS%J=s%!$ecw+jnkc^8zXk}FM-`Yq5ga!9@h-#?vX6qOs8TVa@-i5mYPy#&%@ z9_YU2sN6`jauwu8Q#|1xm5Y4WBDC)ZyZ09~9swGsfUHMB?*AkDZWhVL;Jv2l$wq!< z$?jp<&^`&coeCOr_Q~_hi8S`gNpZ$<<_D<XVgx^j4Ah1wOY#Uaz;+fE=pO21mweFp zT2_j4I&|#Vu^d)5K*}7*xmiiZQ8~%EQN`f1i`+qFCTJZe+Svr4Gq^Cvl2OLXJ)ND9 z_HDbBr$XxzWV;Y&6=9c0A74fvCxV>=h3yP6XnerK5;R@`o)?6SDV6$E<`;TrTBL*9 zgP9hEo-VFczQK-#K86)=Ii&I@A2$B)<Lm_QGs4Obkh|dWh;?S5@-o>otD-nD7&N8? z-zy4kSA+KtfcEU5jnP2&`GD6#B9GUA_DI0{0+4+X>8SGx&^>xNp!K5Q{Z*ylavVAq z1@HfZ)=R?2A;D^iGY2%bhCDV2HV4r!@QDa2i!w?nhOP5W2JNd4fvo?9k5Pj3pzqnr zD*>%9hm1{v?$?8za}yo}*~gUWgf@Nya<dn>Y(=y`AbaCH-B8z-AcrMroqSRzsBa0u zsi@;N$;fgT<CY+I!^Ues>`W)rdE_dHKf!T|x(^W&2cWQXw#-0s1E_2$PBIPztr>-= z!5U9U;R_wR1f>I_{fRoB2?<X~`aq27fc%3rM(9J1Js|%<$6fKINl+dHjSC`$17r;? zXbjY?0vZnGW#D$Ziz#HEyGwall6y8RoFID*Jt9lMW1P_R1rGOt%S$;?xt5i%bWfuH z(Z*Q8X&c&3GKG`@#HMK%c>4-IehNw}sCmx`GG_rzucVBlg3R)Cbt;OA$T3WIHqA*k zf|fVvZA0iff7J0*u)h%b9J=oeUsxgUY4>z?GEc39oTuyQVF*gckhB7+|1ri^L2ivS zas#!s2!|o^{sQQ^3ZSucA0y~o4QP)SR2)nC#TI`^?G!_BzZIH3@st_Rv<~$T%9!gA z$e*Bjhk%^&OmO=V`@C%>ZRTysT3=oTU7H7P8;tPv<p$8O7+qfuS_e<=`tn@M%B0Yg z$|U2ka@cxoa68u>wg%rcD>*kT19T@&RJdPRa&BOLVt63<-Xiop3()w0tz|%8KbI8Y z>{;R&?v)Xl8&*t>HL|ez5VUn^?x6eaf{eY&Ky$>PHNl{@3}Cw>z-xZ<Q``-U5o`6R zu|5v5E}5`fyoSJfZ%{wk&;v3S4q6irnzx6n6NZ#IsOz^uccy{Xfg#p_o1&~G@eW2^ zgA8i>qN&f03XjT239m2!r#%nw-4392Xh`dn9W6oQ<;f9Y1<ARfy&#??o`WJjJ)!$5 z;Q0l<HV%?cP{OJhbcQ<eI(BHDv4qpX=@9cE=R3jsb0~eiO49mzpfk^Lu49IdRf76~ zUdCZnkTua>1(C*q(7PKUYhpr-yb7bj{R|*;jX9-JVNRfNx}4;^AX9Jn`X^t=8Y$#8 zFJa}GKCm$W(0DKS-i1)mTu)_6co?`IgOAsM#}|UYV}}vOVFroe72y325r&q=QQ=<Y zk>P$t5yr6nKw)VSmFcFwnb7eRWW5I9eK_Dd%0X!jkN!%(O8ol4cYL`)&pFJsEDwe4 zB?^Vl0p>>_*@rSNfqXv*0W(1Be?Wb5P#RBx+))QwKLnn00Lh{4p-2y?bOOtR#_&<+ zBSGtroGkq-p<}(^Z~?C|u|V2WfIhbjpKHgt?gQuCG$eh1#(V-ipnI60V@8PeWuS9X zA^95=ACNNx1JgY{z-b759>ORxyrLiq%baP7k!3_=L^d?-gpxaF3c3?DCpiZ^H&g(+ zUkmOYa2s}@=enH=K<n{A@d_>r!EOT0OMv%<n0dP5nv?b`i;D2d0?l>9@{Ug~R4mvu z6UV$gyxaxNWkiNoR7HW;_CdzO!DUWP1!PR!y&@wiHyP*rdMNbnYUFtm(D~J{avd~p z9~lu<5M|_M0NN*(1X{aq9F`Gf1Stc+<2{fv&j2)M0XGM{kHHn~E=ADZUstrbF(*); z$uK$B1bwbO3qF>gm7gANh&(?D4%dRDaPV9c=$<C@xpw&65G*WUagt)>W)NwVjv5}I zyJ*~VKx@{J$CV-J**U`~GQ7Ol)7`Q-3gez2$bIObGtwY?Mw~$BDq_rOAl;P+cNc27 zLB@x`b262tY003wg2PP>!1o42=Pe_QLHpc6bE>8gcVW2;7c%|`%Abg^N(v7%NOZT% z2F+6<=a;Bl%dC_LU$pp%DvLA@t3n??hu?vh8I+Uc;R~9BFHeaGEQOkZI);t9&H>?8 zv^$nTVU`F!qbU?EJ%HjC+>U_g1>L>k5mcEHjy~T9nL~q|)eN4eC`~r9EQt!vK#D`h z{HXA9Z1DlEt5QJsK!WaZ0__`j&jFuF09tzx6<!X$KMCPJM>9_(b&z{8G47QG&2z!r z3{?-W^RmHl>FlN*UYQJ<F9FZ@`8Xq+5tIVj`wH4a5MmSwayQrwDdAY=55admrDvpM zW~W2K5xjl~bDj)b1|jm7XG9d}Ec0w|pBcK&1(auDbssoQg6ewkydE^2fx{oGK6t)` zy8(Ph7J6Jk>oe3j9a!H4J<q|#(bFI-Z-B<VVErCYodjOjj50R}PCKym7@+ZR^tBO4 zdC<uiT*d@D=A+~}XE&Js(g-8uHZ}BIO+?ti)Pd}Qu}k6W2%z&1;BbYPk??tCn0jzq z0cO8Xj%6-VKL{i3!qw&a<tK($WGCl_mBQ|#goF{aT?CGMP+o%M6GZs|YL7$960Gh+ zS_kFfl@l2rgg)N}nRgBb?ahG9(LnqMu?LbCK;?WWQn`R+rn?tp>@qYc2eiK~$rybt z42C>f`2a0*A!!s|R(gZ?kmXeQ<XFPOwG_E*@B+;Vhg%v&1w-cZ5osQpK0RP}wu07f zgT{lA*6d*)Uos$Zd<hnppgAjeUmMZZ0`2K3&xEeu2A^jI8Mnqe#$`yN8;IPS5R`_q z-{Im~<p<rfk7ND`uU>!XeX`*C7+j9Q_fR06*MQLv#U5UWJw!Q}Ybqh_TmQ-o@LIbh zqe%FkC8Tp1AZI_hm1iR6-At1`GePV9VQc>pXFK@hBKAJ}V?DPa8?<ks1at;%iaY4c zRHrn2;ph+Dy9?=?L*~OleF<>bIHT5MaB)Z<8@6W{RPI#5_DFcUm1ly+O?<*L%2J#S zE2F^s{R2xPBb*8%oH6>l1xa~+29e<v#oicaHGswqvLXFha2%y)fc8{E&S&r|ONwyH zNO8}}Oaiap@X7)AdmwAF!SyQW9-V+-Cpw)=kOSHeWiU*}z@TdzVPiKH;4p;7DUJ8X z2O9Z?xK{ePhgQP&$3xdeg3qs@#<(9+KNh^kAu1vrdbR{w90sH8M@>hx1t4P#sAEu| z`V7|2f{riIeykELo`&TZ8)E+w?tRS$ep#*+zF9#zzL~In%}8+>Ow%!1>~Y|3X#g&# z@?d+*q35dPh8ZKqIm^>QX($Y_W*<`4c^JTH*uCfAJ{9)*--tGKFKEmMdcFbToC`Bg zSGVja58rf1AIB*x+1NKd#oYq3$JR9{ASBo+Gd0)=cJE$#WUwP_t&g^+M^Hu-bl)v# zybv_z13qWN8M5ylvL+}DvIiAXzrfD~0JX94jKfv<RwYB%H-gUrfY-I4v5*vZP=6J2 zf324>Xzf-`X;fu$fu}osFF&aMN(zUaQxj|oJ_84#w>;geG9@Jf+P(+5J2E^d8}$qb zv~U2AgFwm&*uG(cesFOu@J6_)*wdo~zDE*t_5i{?ro~A{ei=y~z6G9G+8!W#u&9Oh zH!R9LT|xD-lV1|#oPzYw+%V9YOj%Lj^$(Et3dla_Iz3o>(ICPDoF*a?-NQiVD(6GS zdUJ}SB7D;$jWRNla#M0ZeM#8a5h?B&Ip}9;AogA7<a#^1!Q<Bl>3j&t_yA<DIHGL_ za<gehq>*1vvPWQkgtKP`&bq(|bjAnbY!>MGL7=mRaGt*asoT)bC4#I`!+jQzOJs#_ zh^IkRh-YpT<SZbhvLG}UzP2p_+!rOyZX9PKf!A>bqn-(bTt9;5syva#jgjgs*xq|^ z+Xz(dz}I|(`_?FR*J#*6&(A^&TUZ$b3ro-$C-AZcJxoDor=gZNpt&6UWe%ztsO3(C z2P99x$`fyQ6!TErmIhnH>Q-R@t~)?_L3>n@&q9Hh9Zm(wmEe7{<w?eVIiT~ul5@jK zK<gnPWgJ==ZVcY14m!sH-X8+B%fWY^8-wn?3`Jgd5AHW3&R9t=0L?AH`n_PcVXxPW zX;ZHS<-q!ApmGvXzM!0`kcOwfRPO7X4Ifhg)dh*5v${a%`ythBkiHXWZ$GsE2B{Bn zV0OdCO3>?^2xm{wcxGi%Fmx}GTM20G45EFLV*nbThM&oZ=Pn_Lnmj}3*#xG=;IrmD zOiH2mY(UOtfR|xjXlFA7m4VjH`eucJ*RR6QF@T<p02(6%?Jx2Phs^y4WSWBK9l{Mk z>ktub_z2MaAXJa1vlA$N6@bs}$^x&+Esl%`DoDu<HAkF33{8jbZlLiV1Moi7V8g7a z@QPyOGaFK%cYT8HZ-ThZB;C^k`HoUwxS45TuyY_xvy$8`tD?e42vc{IdmSNRn(3I1 zbbl{g406W<=#F7WxZR%4PG&ygkaKVRGaW&Djo|7*d(l9BbkH5i@OyX>VTCw*qACa} z4ouQL-4XXH`eMjo-UsCexvLazFL+NO_WP|MYT#+cq%_gpt;#1nDkmyD2z)P>r!$dZ zn46QA2-@H1;t9F83hJ*k$b4?HXHI!$1fq-rokIaShXkHKK=~&r2eBSG4YZFCx>niW zd363dId^paIx;su9W>8LrTOdZ#E3}5+F)ld@c1{Zd;^_{fpW%#F=Q?RbZ4c1u3tt{ z4ubFFoRS|I;ad`w8<rF04!WPTIL|*fCo9Rwq}a<SBO|%eFef?Bt1LM)*(}n?tu!nb zbni8ItUA{VItLUGVqghvf5Y@trGU@c^sDl!D#(fqHw_2RbA#vKB6FeR-Jo-3Fz4ox z)+i&+<AB`12i}A44q=1NPk^2S0;wz9$}>^U9sr&D<l$8YI$sl9mw@D5LF;OBvJ$I6 zXM8~B?LcOx8ka!K@Gu0OB@AJ^fbZUcto;V<jYF(00Pk0Vp4AS$TdF)0ycXKSw-k2v zLYfEUY>DJb(~Kz4y^)}^Xx(A=f0buK?~N~s0<Yb2!hLoD`g(I`FWBClWKYN%cAReX zban)-gD^<}&yBi*&PgeV$}&v$%mdG_TLuKDfbS3ho%InJoB}#;1itRrGZ!?6V^9L_ zn}Na+6n^0K+~sCaw}Z?BwW)GI_i=fG(t-!#%vMmD2tLmaHmBn32s-zqEXl(cbk0Op zl2Juf1oV7YtZMVT%2JHMYAchBQ}C<Jg`ZymJ_7^4xj_Xf?$9$?B7zK(GcyblBZ7*f zf^(8RA>*;&bvmH75_paV;(jyGy1*!R%hDu|Y>@lG^EpXIrp2jY<(Xjjqooh9UY7#+ zICGQ>DBNNFmauHRZbaJqhH=J4P6cQ#1gjg9!re@g+`~$vjDzw)`jGi}?L)ik4Wt)T z*CXzP^THE0PL7eF{am1Qm1|iFW`okYE9jm}Kf`2jUb6(X6SGo4XPDq{KWHruxUPq! zRjlO#C_N*ky__TuKhPPO#gKb<$}_?9oWX|RemZDh3#c4S$utC=4Fuiu4%**iSQh0T zRt)kZs2l>V%fc7$h%yM2#=`J~gQFQJyg}whLef=9WJG!a-f+(~EC8Lo@0sgnkmBK) zpA?=`>Wx1=Ri(Ixm4oa^HV(>32A$D`rEG$xJ#b$Sq!xTeF@AFmz<B_C_7TJ_DegH2 zpt%aX?#~0yb(SUNR+xh9LF5sFc?oisE$EzLXD>t^!S5f$z64NSLdqj}-I!~bk?LNN zla!lckO<a?#K&(Rbet)pEXf^oMj9ypIu%ET`{g8p*0s2YRpPTZ(7hxlH6pCs2ehZ( zJ**NGKA`=tQ4wAtpndX*5rMg0dC+xP&iK<wpgVXUFsR%qgX}H$0+rQ{(6uB`aaer@ zIWrqvCV~3Ukn$_t)7b)No&xO)K&nr{d$t0>`?Ed4^X%|^g1jfp*~>f;biQa-0k|&( zYAd7fiv*`bi2WFQKRk0mXG8gc&L~2<Yoa_8Vi#y05OgMNd1gRnlmTducyd)SXfIZI zWVi`Vf57f=1C7^W_#b*FL`tS1qz=plwQ)f6mY_C)TNR|7f{LM^RRi$@q~3?#(ST}> z3A`=j8Dd}w-jffiFI|w%amp#qLoc6D`YP@z#i<ca`QR|kOfL2^LgpLfc~^qgRDsqC zTI3}e73cY9rohgO%<~R21f_?J<XqG{Jv^azLqXdKl!P7l+y?mGL}xE}n+8;FgWEpP zb&zP`Zh<FGKy4HFyf3(%_VCNWm4*VqcjE<t&SJ_yN~@4EF2o=YsqV-FmHUuAnBevU zv~3I?%L1Lp1_~?anOl%~7m#_Nv6ZOsa!_6Ztw#c%n-BI2_Ie%MegWla&>if_hWOh6 zp!N$$ZE~)qF#)yU_6tZYxZW8pv*}!BQ=yy%_ZvXtc967+Gd;T_(jIt^WH53$M2ogJ zsQm&y;|-j~@YP-ZpgI#=S3=qXpmq&`c1cNMxCtolWTbcmReHM{79?d7Xaj)SFCaVe z{0yQZoba}*!0i`M+XUQi!QTdhwp$Qx@qo1V3Ai88o(J25XxHEkr#wV^9+YR{XQqSB zqQlY7^>lVL1C6DD#|k0sA4Izbe|w}PG9sfmD%><L#XTM5KO}wz-ta?h%X@<KqPA^7 z<6F4ekw|+<lR*7ga63N?v}UI=)Hp0NDLlu(D>Djw_D^C&U_Rb(c69=uB?AhpBqPYV zGN7_L&>hltfr{rQ8TlFFDJRQt<|*{L8NBB;#U;r-EF&3mPAR->M;$Au0G-1OsuvtV zXD~z>6@$VEq84;ck8?7pPQiLtGmf?f<o+&?$P(xn1-Omml^F#xvmnaZ)iNL)a@LtA zYMUy_3%qs`so(8vm>U%ymK~YvmX%nEa!+KQk8?_1l1EN?qC2SFVp8H&S)31QKP83- z>U$Yk7I{_W=fUPiyee~2Kw*t>horL?<bGmjlzYiA`<OWQM1ba5A#1TQ$3!y9QVcS3 zl02M1VT&}j01|U7fs7-A?qWf@{|_{l1&x2u9j}S*Va3UiaT(B<7uL2Pc6-ArlXERA z!G1QX0G+1?iqrh4@QQMua4*oDbdjeA<PP<y2(QW{V=vJ8uqbU&Nc$Rm?xuOF5yZSO z&>465+=IAB3MC8!oGlS+Lm+2cK=ywj+80zh^ANNqE(~<WA9M~K5;vY6LB>gjDH)*g zd+_>S&=_?NbiaeMV><FVd64!iXq*At-U!2t6nDRT&{!t8eFSS8lW-0ne)Ii6XD(I- z=7kxgxLcOuv}eHfhM=6+iyp?H`%DIK-wJBEJov&6l811*%MG^Pr2;&@1?xW&pEkke z3hF);XGiEc3;F59?ArmIDTYYbNNcd29U*76hr;YAP6v$<Le6pnt%(mS^>ok30G;6v zEl*JV0BOVIr_=0gPVjyY<o!j6{VbrfwLs&zIKzFw@)Be$AE&!0P7n0h$AuEkC6N(+ zMWFp(pmYS^*9AF;sVdPRC?^RrSB#_FFf~jH_sU7mL{0zr&uzu72RYC9hB%hvO4FdW zJ*nZ3*FAZZ=3%7qIV}4kQzM)}b(?=mxM5~ggeTg*Na!BGko<Hk`vOa`>w)iW#kMC7 z$$TeJABWVk1@BqGpuHT4;ih@W=>&ZrAt)W;j=P*v*mytAICRCHKJdn2E_OXAX$sPA z0gs7+=euET3CLOEq=pmn-c0a5FI;{G-B+069#)x@l@D550-B2lyTQ{LbY?H^bD81# z(DD|tpYXOzJW$7eafUagWfo-r5O_=-ryT=TUc>i1fbS~6QHBlBo?Q>{d?C(s7m^oN z5}6xTiI&&!=FcSTdXUnpBV_$AxDAZjRshe>46gDEJXVS`O%ai9y^KNQT7f8MXCsFv zr0)q@8<10$ls!OoT~;VcT?Z>i5M>njzQ7F79`KZK(=71%u1ts+V*M$k-vd8m6n-}h zq%Q^WC+O^JP#?Y=sg3~e9VBayb)=DH322R46!`paq&<S}sOvS*+>N%j0&Rbxvm@v% zNyuF-&Tf!Bok;U$(EYU#aiqCCh&W`=pAXU)7xKB!i1HNayy{$2&>knFs4&F(5@bC| z;oyDb>7Y3hPj_(GLDzvo!W$7sp#7eZz5=+v4LWZyFRV1uIH(}W$Rr)wz77T5M~)t6 z;QM<bJi&W>Q^G;>NTBulIaNN;^$BSEc){z7A?A64*VRMzgPKCtyyU?4H$vjw6S}Vp z6#pQzL1)20)g$IGowK3t^91d&s!DWD&+~RpPWJ}i;RtdEI1iN~#tH*VQ`{|mlZ;bx zlC%9Xl8r!nyB&)>os$c^D$(|(g6#*-0~tmIgYVq|jVBpK1)IXg1=9n-`xA1id_Z%{ zxzKq}BHaX<e-44JAMnWwDhqM9G>(e!a*2%a%K?S6cco*Vf2L!er!(j-jf{fiO4E|W zaD?3;dGBD@-UdjVBJJachf89vWkFJAdLGD+$nk+1|B&%<wDb<0$H$Y-p?m*9=gB5l znnKj0?Ab+Wua`pBbcP|;C!y`RPs(*ONQ{WeL0b0&ULy=ESHOK#_}TW3`Ox$LvDX=# zH_X$5L3b@@<U|^kK<&vfNCn5AV}4prab8M<S25@uWiO+!lF0C!VlP7j(0KvbQ4tvd zQK0oH?%;F-8e71UR<hI6Jjy|PTA=Y^g2D%_LBJWt;QKM4<D*&m>4^QDCh6cahYcWO zF`&4I>~ny{sUv9pqibS>ANV{_$hvFL`~_&7)ew3vqDeX^uLgw&<wXU9_8)`SZRaHA zx@9K0hh_U@I=Mx;r{sY8%*mj8Ox>Yn2Y4O?WR4TeoKjq2?PFMx9GM-K4LVmN!r7t> zbdP+pabSLm5oisorLhmFJj%_<i;Mu@@o1QA6jm7+o&vgapa6VkK`!`AbkMpyNEw(5 z@h@!b3B_K}9d4j8a%^=y=uRdBNO^^pUcqzeLE!O4Pdw=cT1MqU%mA0a&~ywcYruO$ zLFWWuIqMoF&p_hS6Ewz&%^ks@u~cWmc?Ue^>I^Dh9P?rK6F|}f)P11y|Kars=<MMz zu${1V@{l}%lFz{N$Ds2xP}5jNSqgdQ{)5wasxfl;jN1MJ&j+K`8(=Yf{)e7(4ZYW` zG{wU!BPkEGW)D>Fm{xg1_rd$*g2xqb*Im##C$u<#tg%5q0|2>>hQ>LhKJo(BZ^-p0 zBwj#eiesJ^^c;FfSVQji0-Z|%Z;yGTU>T=%Dv68;%1T5F7ihf<o;!f=nFgnGaC;^{ zF~YYr3Um&JGwPY$sA&&U=cD-<R6i9&5qlmCXkH}P3D<crkUWYws{pb#1?@}&a6Jz_ zmjwCTZ`5!C`3og|g4_wd^A9<Fg7RKUcqlkre4Men3w%yG^j-$g9u08$4~-j?@&jIX zmqXh>*v`fQwR@26PslaQNH!`?PYgG$N^y59jWh}?i^_CzN3>hf&(?snQ$X&9yQR_; zJSOE0I<E&@A35e>v@5`I4JxDI^%o>Of*mtJ`+`8`VWbPN9yIsnSc2E;fbMhffw&#C zZxKA6ALgD@5*2P~nBoj=S7K3%Tu*`H3v36pY{XO#YOhsAMFb)4kU-i?=7}YrBbf;~ zTfY)~UJIx#W$6hDALMod*ltL8dOE}I(}3OE0BM_m)0#&Z_#O^W7~ycgr4OP_mXT~! z;u;lRk&z19Pk?F<_<mN<eO55Hg7+N3&rSiQTgaIq*zzMN|0B{I^o$PFGh}exhXS6r zN6WilF>t!^2+P5Ue|Ve6iRklrKw$(rn+H;+LFTDELF*ulgEEqG{c=F(O#~se^8+f8 z&-w`j)zgr43EkTY4kOgFlOS`)Rj6$l$UGjl`(+?u30+ePU8Cv?-!Fy5{2Y)U(84JV z78jnF{lrSxoh{(A^&sUtWZVR4{0uZcAC(Eudub`~ykZKr&l}bz%0b)}11@JOO)=FX zhYe`XB0MtP8(vqV_9Zdm6f{=?DNjM+To47`YYE;D3UM<mt$G-wL)WaJiX-%6xC>Ms zB^!kqAe93sXHH>r3q0Rdd4kV%0=I*Lp?MK51{!ZbJ~s!JXHo9`!0MhP?04rN@++v% z2&qd7l8j8T=Ue16icr%cbgiZ*+IeBnHPV?Gn0X3PM?mU1w0#=b!UviLkmCwmSA)_h z{2VT{^nhBPK+9Ip8D-%)2Hwso;Pn}xzDN{G`GnfGN-{FVn$O_km00`+N&BT<?qMaM zbt0g34xn?>2-%ekU1Nfl=Md{nKzsJ!?Q*pG2<473(3&dPIj>miO+<MH34bKLB!nmU zd}e68K>L8E;Pr=C<1g2(5>);{%?F?VN$CC{uS$q{u)RLuItY?RbNq8n%Tk=vA^YGW z{0zbS&y9TxKw*s4O=xKYRt_bGgX_hDC=Xxw`~o)jgVZNM^GI?f<PH{Z`2BJfNP9~v zs-nUxKzB3ed50C3M+8IDPbF%55?bEkEL-4b>g7V~U&tPnQdk<nXzzjQKJZ>vSicof zCxYrqcv~4%ZXxzHq2^amy8s%#nEhZ#n+euOLfan&KZ^kDFL2q3I9Cq51_Lep(efsE zYzmY%Kx0h-!SMP4l-~`b!1vUF+j5|ON<mUEdRW5T2B~MU#UFfp6IMSUjrF0nWst)S zEsy0w)`LLL_XE$};I#`{4nX@Hkh7#fVeAo>Lxi1Bzaz$+aE*7NjaMMwKZy0rKeVt% z&c~QzM3AwY475CzmFOOpm1qd*2PH-XnR+{C<4pt5J#(maC~|!QtG}UPh8S}tqWsEp z0=3_AKxc&F?msx{gT`(^{X2x&(DpefUxV9yp!@70?IeU6Qv=YwQm}iUplKAPKMcxW zh_)!G-3mSPD$@zP-V8ae;bD(de}e8)0_|4>osEm!CxeTlx9_201iMQT)ZW0zV=y(K zab(CjsGvTCc^Yy)gq-C9I}Z;ek6s@j#TRJZM^156@X$F65t?S<X8?l233fgrp*R8W z@9{u8dk`{T2}<iI^RdYNVqegG<&dz4gdI}b7sEZyk-4xmi8z1J6mhO?Cg|Q#zkF!g zLrHUl>Q1O#(0Unmj~!&~DX5M_PG{cWbJ~#RVUWjZp#6Q{N>G2$upq@b9kjOtbT%yL zoYEY$aj*iPT+33FwiQwz2b(?Mv+dw^n4-<`V9EOkwV?75(r!l=1Mj`Xs3TDOn{Yh{ ze}VV&WhNJUx}%<{3O}<0RL8>C5@Oyfht_U`?Olc6ONU;kLgNULJ_)7=6VQ2{;PXGI zlP2hJUmT>}QUclg>j=#^kh6?HYs&DRJppR#Lh=u23?34H2tH)*GW^_(P;6!!BpExJ zdAfKSCVQkK=SM8&IfCXPK<5_2+^X#Z-Zuq1cbXhGgW3;41<A%v#nAK3!E*>c;eI(u z?&WCi0o5BR1yLSB`TkjsSme;o(7+ouj?lA2u!afBSs#(%UR6m(6^1G9(DRew;R|vP z^sEu+SP`U-gWSo7a;64~TR{4d-Rg<y7k8vEafhr=hLp!BVT^Ik2KxH*ME9_QD5DGm z|4hd!=vf*l>ySO2or)8~O>=z0G0){dHw!XeZU{R6I1jYmCejG9z7*YEkop_pPM=)x zxdBM)*71gYWny?rKIm+E-z+Ea*&!(IfVPL=;p|dg2042z6ucHZDbu3RJ2St`6Wn$% zDf7;BtnjVMPWR5VOoq!LjSG6i&k-t5N1P)IEmJ{p2A4;iVG61vBb+@UcbdWX@PqHl z0{87;eKE-WQI2Nty=S01q4G)~WiqJz4M9H(p*#=$%o49E$bL%rxeSoGqdfF;8@zJe zN|IfQb0fnI%l)C}JCJq`LsUjmgrhmc9H<*TAot@z?yU=ipKXcbem-n>YC*~$<a@*5 zXZCo4?gInuQ%MG$xe$PUjsqyHav|$MA>jy`PlW8tgxnKm3F_w{o#y}we@~?K`XIg+ zWLyII-bEbt6Fl<)e$QP6Xx{<otOM}AQIK1}`yKI~^#F2<C*ph#u-~A4R_GZ-P(Pxc zmy`twf3O_VeP*D2?_fKfoxppypz#5#OOftQ!x3koyVHy+%2Hr=^@01M*w2Ol`46&I z*}xLA-UqUe%?lc)C}|s7kAc<}r-09hfcP7{m(!&H(#~>0@)P*(KiK|zkXkQL-Y|sS z$>*Qz2RR=C99|%{AH;7i1>iFvp#BE4!C{o?Xa?RV3B6ws%!b`-mj~JR1=R!U3srhU z=jFWNY7qOppz09&z>w5H?%@f`hO3EiGfa%|%87!eb7Jn$1MjIr+J_DbXVBVP*!oSF ze=zoHfx-gqd<KYG#JLM#vtawFK<YD{5PQQx{9MHO3m~<4^LJKx8Mxesox=dj2cUCV zKx6eDVFsZ6vf%MwXt+b&1K-~RvIBjuGgJ-AzFTN`LgLsXvIM>d7vyGW{}ZAQPdr2S zDuV1pId=hM1}J@m=afS2fusTG-b9dkPnQDdc?#gP2xi0VgX957+6A-W>0$V%t3;zP zQ_y{4kn;+l<u>#j1Nfdll==th90PE;(<p7`R3PquMcdC0iciQI1;`o>PiN%%tr)r< z40``8(!P9<zEmUd{y8)7-h0q_VxYbI;QKsrl&8q<0ObqlzC+Zq5qiD>EIf=V3c&jc zL40W12DK}^DpMfoAD?~2{t=)%EtB2dO409R1)bf1Du!8Kf&GQ`K3R~zk?$`h&A+fS z5I|uFwj&cc%%N=x(40PWuOmnu`d!K4l_}6R6l{NfIr3Rl=}|@%rpfLZko}XD<)Az0 z;e4Oq<Rb9=q<c<wKxIl<Vr8<Km$6q)68O%7<bnujp2gVn2#y2LycRS);0t?D-D&KU zk%U$s!_GB`fZjQZqmG82lK?7TJk!DVsN!gkfZ`W&cL6+&TcFzkIs+jo0@QB`%E3_v z6WyLbD&tYwHsG=@WVG%F?Hlz+8V`roA&7OJqjf*H+=A4XsBQJpx<3fKe*>Oo!rihV zXN5t^fx(=vhDhCyy1yP=p8Mq|8AI2yW;#Op#g&ly2)wojbT%DGT_$Q;g`O`9PRpK1 z=L3T3D(JjMdO$GfEFwtU;VZ+-O_LF46d|{pq3wf_T3@2?eTUVVsQdOo;p+unFAH9$ z3N2qz+f?AaxA1cVKyic~XOOi%(0(JndOfei9K4<qc`rXK&TzIZA?shUm3d&ZoDDOR z+$}-pG#DpF1m*jLL)0fj`_6&xe#MF5enrr7ft0Zd=zavy-hm*?w2<;L<aS?xvn6PZ zLOa44GOh?8_d*&I^K)?|aZIc{9rqmuNaJO0mT4(QVVTM9Zdr+jmhk#9!q6h$HzcqE zde<xHoJhkY_fVw!ia>Wa;nh2O|96B}4m2E1py3Ffmxj(8!{?U0k;XTX*FA#g;M`$% z^`hVT;$@T)9$ErE3q8Us2XeQCVMelhPO>NTt}2im_+AjudJE7RJ@@i__`a3kjAYNe zDDXL1-pF?{IlIB`St^YL?P+p%Ge`{gDvk=yhVMlJkL5z<S)p@P<(WRgZkgb7TAitJ z{|WSNR%g_^2SUOvvm?XH!FTh(&h<g~(GN8CV-OYQl@n=XSsCRFy#poOGCL)_A_wXI zE69B(h;iclB;&x+Nbq^LP6pm?pz}-&G9q)`GNZ!FsdA4(q_I~)vPU4={Xd{_G`C{d z9Zo)O;4p;5sYg%==-k^RBe(3R2v2Ib0daN-+I<daVLAlv`$i2n<a`CX&j4}X4QT%Z z>RsMw_YxO?@3%HU+;0|ucK0{r{%AMDBoD~k2qZt6<{;mR4H^SL$y1pI8Ib!uGAOva z3N)7%mX+deS?QBoP!(VdIqw(uT~b)X1fGu(cR1u^`#7V8351VycRA!<r!;7pkQSVs z4-I4RTqX9p$(1&B6X^U)4?lxcQ2qtq>jpZ<Ge12rJSaQ4(y1!R$PjdXY*lillR*-A ze_m*MkgKJir@NP_r@LErlso9|9j6TRdtt!k7kp08sTh>cKx-Bdcg#TUoPfkPcw7Ut z=LocxBn{794F>T0z1?$iy}{?{fY<wj&$9)M#d*3ISc2N3uyX^vDznqUWAD&AgFM|z zl0ajqkn#!~S8%;P&Y(7|VG3mK4s>P{=-#71(7v%8PiPpShXdH3ka8M!&pRPMl=}u} z=Of%yo}OxK09~U2zUv6#9;7>T5N<}f*8)>5bYBH%jy%}i(!kRddS6AbQ*ab$Tm&?S z93EDh0*)K7eUP<Y!O->!wtGboe$Pq--P3FoT8y~=1GGLiG(7;SCLq(vATm4!vgg~a z!T@ydkSFL2)Vv^2{FZ{+ev#o7Rq*w1ZWUPW9dXNwGzu$Ean4Bg%yh+BHb)x!Rr$cu zY^G&FQf^RAs<UZfawTc?BjgSq!^)_Ll*+`2pq%7P)57E`%YrBuL(o`Jc~p3)fp3*( zMPw!HE;6LDfGT&9LGqthE@)3)m`Om0V}?(rCFnk<j3j5+oqZ^G*CF=FLBcON1(F6! zqaspVl8j6Zpm_n*o`9Sq3~GyvhNThsEbC0@o?%$np_V1+VTe(lfa*Y$yOuD^6cjU1 z%N59-KM@{5u<{}w)jSlp!S4%;@CX9e4JmFF2B5qhW|WbWlnKduu(H9^J*UbOvPJ@Q zRv)Myf}MX0DZ^YUs=#SI#3Vh%-7ODscNeUTFa@{MKxZ$4?x8`w^BS}#vN#=H&pBtC zdwRgjEwJ0L*IS;nskhuw%0V*vPLAc?i1omrbv*@15l&^vc|owU3uR3RER4bBJ;HA2 z{`Cy>IwjdN(-h>Uj3j3#q`PArOF;d=M57!7pNOE!$Z*rD#0b#7NfR?qcemmsXUB4% zEWavG&{>Q|D0k=>B<H%7CL84#B!+{}d&@|2FHiS%HUZVkIiS7g@Vj(Cb2A=Z$r0`* zr64zh+VY9v;I&AQyI?XM)4}H?8iDWmDUEUlodsV}mYfB;zb7R#GB~~5$HlSO*SWmh zCkwou4WbW=xv9C9Wl6z~Fnda(+;cLL+%5AwJxZW=6q%%ZIvW~Cg?kkxMg*2X_lkn& zGW;{0sv?ctiladGWx0atKZre`yLcdbN(rlTw=4&(;qi5Wtcii&8{}?T9vSXekOEqV z>4JQB4{_lS4@-nw;CCE>?zQ!FaV+&U#(E!7Ns>_zsLVD?GO{cI-Kpg13`+-w*@@w9 z#YslVp!H^OzxqU^<V5C{6r?yCLgN^;2gAV3)59+-GQ1+k+l8pGsQ|5~g!><Nm_zNT z$VhPyt%?Hg<#jCat#Sn2=~L|K;)pLENYa~R?358{lw$xoOVKw3mL5z&_n8!Xg3fSt z_DTV{8D$+4JYRv^hNTf$?-2{EqRl;Gfq5wre&BXqa&AsmigPm3`m>;b$lL<Z-i%Vv zSxBI@VWA#gWy$Vgl_?(C`G_@A<>?X5UTG0VVO5|$AE=EP;p_>z_Yr!|ofBj&M@W7; zc-=L4-$f9jj0df)g4E+_i4lHYptEG7jKV5G{U6-pOz9PVE`gwUgO^v}Hnp2&L9#&( z=nUGts0dGp8Af1!Ws)(dEeKhk5#%108yOK+oZ_5;Vkb)6K-~o0^G%?An_Y=bZ%D3X zc2sCZL9%fm0sWrF1oRW-7bN>o!UlQ$GH4w<_?#^4;ZYWun_uARQ4DHBLC%M9x6Dk0 zoRJHXD~&L;%t<zY)t#Wby}|NkAU&XT0uEP~{PZLvuR>1`19MM|b$S(uF$3iDPC<P# z(44t@P(ezj6X-nl9MHMHu<{i)E(5NMplU&9y7+{96(r>bBG%S9dm*J^P=5xp@6QW# zFRHs+u~$_Ac%K1ej}N5(4Qg9J_Tr@EMurFFcvThTMCC?-(mrG#iZfKa5_0|?sv8{h zAaz2rSyXsbZdACR0jxg;5l;c<15`aupfhK&h&zJUE<*Y#2)84~!!i8|^OsL}P(fsP zMOjp3vKcs^1()YR>%x*G_vAeP+=`53@ZF{<(DK@_Dk(VGEZGROj<W((Mx}%9Mu`HQ zbDbMh7HJ$-0%}iV4|mYI)yR@aP}?1}R>mWz7_2X^1ilV6$=C^8Z%2k#L?ng>86<ib z;=9WTG)|3J7w7B+b0fU32U;5l4nuGs4iPrsc*DF438p_kDjYP{<%QdB=$bdsxH<CK z&#<sdbPvmj0^jN3i8XG(_Cw8xgq}_73GSnZg5nr@Rtfrj63{gu&dBQ&%QInfPM~`k zlEG^WOme|{ej|L%LF)j(>pZf`%V754I`10hrU3VJ18jbRoP{1nC``cT=LL9x+!~k; zUPA{;8_@N0c;f>S9$@{c#wC#REg}rT?Pc_|4Rb4)2Cd;Wf~-eGsUwlhgQ-h&3B(&8 z@VO6A{em^kl$U|mPGY~G0_=7Szvn{xz~NqHQ64#j!Vhg-aCs&yO-1HfW`pjB0^N}T zN_TkT5j1az?;fvo&=?eGeF)MW9I&*Xn`C5Z5EVgw+K<Y$1g-f4ot2F@tUa9_EnsPq zaN74WNXm4|OmR0Uf!7zHbyY}ntVnmjXr~$%r-SxSMjC|`gU|eOb^_0H!R*5mc91x9 z_cBcJ2r2{h8$oA;g6b5QUeH<&_&lPs7syTNk$FL-J`qlpiQ$GB$$6kT50o>=LG9CG za9_f(JQH*dxu?5j5y|etaTYi@Z9~#Jp?HU{0m70`aLVDx6Ba(kK{>GXL&)I?E^k3~ ztxH7}bgluC4&ZH8UvS$HT<3$&1c2>}aw<>GwJZmn>w~=CGRdd}e0B{*XAK(qfzMKg z-PN6338`PfVF#YqG);z_li>u~9|gK|m2x``KxLp`ju-fD+(2-;LOtUKvi6fAf8q8A zc<vk1Y{VTC{?NUXkTwm(eV{$jp!Dva>ExVbWC=QJr4&sb?-`eopnk4<SVj`sxu_`~ zDP>_skb7;D^TKi<X#~{9LOly01$wtFs9y|9qu}@<={$MAj3oC8@O`bAeh1H6n0dNJ z87AfWf!i5qenUEo(+TN338yr8nFHA;3aOL8c@EY6u(ljdyNNg#6MT*Yr0&5?GvGTl zOR_=v1g9OeJI@u|2F4Y4NuV{}Mxi**Obx`5Ht?SvjO+YY<a3rmd(!=IrYT5UwR}*x z3l?^WasYJBuwi*hL{JWBZ!$``hu#)OKW7VF9+Eb}{R3FO0q^~U?3FEr<}FCy1bSX3 zdOkxwUlE)Rq5INc=A{KYLGMWfohy}|@9SKi9$}PI6&wy4M^DK~&hkVm+p}Tk7ed<i z1op2(_i94bg3hc=DNlusEr9bHsQ&;vn+#NTAe~2w>PJXl4y*@p)&NqN8^g{mLk@57 zdT+F|e!ybjyVA<x>my)c0UbL4@8<@MJAmB}ol}CvGgvKTOdux-T-QPNzJtz_gwCCT z^Ejwa8X4i44sPRt?uc<m^rd`qLG4E9SU1>Dpm2!FNCu4y8he!`xmP$xMtDK`OCUSI zV^vOR&@qV8D5EfgP$NH3-?%t1*R3)PQpOfwoNoa+FUBY`9Mi9!&W@0{HZTR<cj=oL z;b-8RX$mhdy@NAylAN<kqd<K-=kz=uc$*hKUzz8P@0<?zuwtJ)$lQ((=uBD2eopXO zImo>(#d)aV1quVdoD?_28AizC73lkb!SR5+=NcMDNMj$Bi23!v0&n-QV((znj41aY zmn3($s^rS_yu@&mJlJ>(%skM!1U}A=<(T3G!z(k%D99Au4p>`1$=E3;DHHwdQ_x;l zP`=9mwX4wM9elQ$uQP0J5>}r>@(CnenL_3?f=$aK!-KLxXT^s??kWe3Ghs8c$kQ21 z9t7>t29L)f*#SvA;Jo0I3%d6iQb)n(E@9~wLKBsil8j99y^J7h+=$sv4~r9Undcr_ z3cjb<C=5ET;si>c=@G_|{0GU`j+UNS&cKA3gS;mlE{5W7CreMz8JI?}J;2D}0nW3f z(7mOl$*}o<Loe`tT2Og`t$ZaSpTW`%biOJKo<0et9pchFhPmK$A8c9%I%5|)F98|j z&kZY$at7_?N3^Gq*Nefz3__=u`#3wL5y)?4QMr-uIQR5Gp7$}$Ny-hxlK((?0(aSw z1lp?>3>}|_q&;wXixIcb@kX#);cTR~ox5R9ihD*`l!q^BJHj2(#z#AsAS=n;vMLJ8 z*__}yqS6%HHV35v=-NB%^%Xd+1zAGNy)vIlM^OJRD>*l(9JKcm)INsPGZtl_{(K5} zJk1nb|HH-Mb1F^{J0R^!kXh-d;frHl4P_hzT9+csD21lEQs}%Hd|VweHtGa!hl9^0 z2sh340j+Itx2*KfbgGOp^2z|6uK}Jrb8#&7gPjisHygKIknvIMb7?4H;_R4Cc+SYN z)EC2UP?>31l4P7uXdVvDzm6qI5xykqae~ejq0eREaF+-4ya32N6lR>F&*!1UAJ|{$ zbBvI@oRy!BGGB+O4>>%D(}R+KQPUSBO(Vw9G57pK$IS8y%94yg=U1DgBia<OF>5So z8uxr2Yz`GX|A&!I!VSw(Gx5$Vk`mWg?SPh@=ySDL)#6UKkTNj|y#L=X8<dAUoeiqM z^SaKUd2VPs5uT4g?IegE@ID&Id>ZT=;v8S2KyY2`6XIL$>)~XA+?GL<A&%+jbCf9I z2Q4q*>OteN#zCe@?zqoX@N)^I(OL)C924q!3#pY($)35eK4Va_XI4I*_2{5^!q5Ux zeT6(f2^%i~%};^+ihT`7C~f?Oe_gy0to;cpk3n;(Nb8G1Z96>c1bwT#gH2)gAC)4{ zrGoP)_IYI^8qF(%>ZM9wXOjw_EYDKkN++!D@&@%?!S`B0)`o)nVa}kv44^eBgyu|r z(efKyU%nS?eA3x81hftbcE<~-?U{<w$0d|@k_%w%3+!nmnKo$zJm%_I?vv$O>YHg& z<q5y5$rO2hJ0Err4RjqX_*}rm2tU}oJ)!hs3eg8@>z1cS<yMp>8GC};Q~|+GevzPk zD!Ea`Nk*2H;PeApJ8l$&xmN>ukAXYV_(5hyL5gz@q+UbmuelW@8(3y0=7wdZID^z= zgU{<ujPP?$3^y%EaSzQ;j0h|MpLOpJvESQ0$G|(-(J~;!AU!c65MrhW<cxRh@sdtr zyg>U}pt=&Vem^JG1C$Pfz~^s9z|MIAooC@53OTbR7g~RT_wjfkt^aWZ?VZg`3^&d8 z&jp<m?^gxg+k?C=D&5l=HWv$<v#mfe!^<ctBg#EA&p$UTHwqkHkT8IW`?yuW*VK4A z6P|}gtd((0PXq6PMs+i2zj!iY4?AT3$^$;ni*k-bY9-9=@HIYp{@{D%LyHk}(iM4L zRRzV75ng#wNb}LjMh1EQd446Jb_&EDp76P6(B7>mcgw7laKoIWydd!Yy9l?6$_UsV zEN7&!g^n}8!WKF%X6ES*U3;JFRty;<$$-QcXs<S8oftTsgXXP3^KXbbQt)0g*!&q{ z?isW{5K}Ma+#5(8e7qzh2eg&|6rSL@QZzq+`zO%-WbipCQuTw^OQ6qhf&BoVcLs$g zn*Shu8gTq0&p(6pA<Jn8K=vnMx!>5t!p8_|FSc-j^v^63T>=qv`pABZfXtVG_sikd zk3D>0^Uomj@ac7SOh=h}#uoliclsEE`hJ1h=;;g`N1!lvw#@efosol@cED)}KBtCh zKB$ienY+az2cCOIJ+}vz?!e;$_`(Ld9t0&ng4zp_;pHXZ@gYduYSX}N@Hu5rx<V^2 zz~Mn4PZ6UZ6z|aVYXZHa6|$#161u(u95(3tb@PHsJ>5Zb%ZBi=OsG1<-QA!xlM9M# zzZ|e!mZ^DaCF(q(CuH9z%zoTy0%KkooPVJDpl4^eqm=zv=a)g@h`v`9v_>=uGCu?^ z{|L-8Bi8}&IDnrKfu3eTZF=Y$3*`C$6mQt{U`a#p`DM>6@O*EnPi20gccw);cw9cy zqR`XD)xba4vCzk`0xpL%rkf8+tKhb+vlG0I1-H?SQ*t8nKx-&V(%^fa!YtEZV~?P| z3S4h4%3A0&Jo{%1eVrlgOHf-s1v0(~%4=wC8B>%sjNZXcSk!>V88Q1Mi1B7fKiI!A z1AM0*=-vXX?gic1<5r%D2ouoyAkbPmY-U62vOHhVJqK9alnq+%SOPj9D#aaquNnTZ zfbPG7jIBcE+hF0F;+%mrSL%q^ZvmP2fbIJNwJYKKdA;4rGoky^%2J#SE2F@BQvypO zBb*8%oIRm?B4K+?LHBO?8G!12Z}^>&q4^QcpgpHy$)1_nQ1zg(@$?L&J(y)l5l)~x z<T8`M=dVJ~49=+l_2nV$-f(b#A=xvN9(ycJGg5NBGLkc)`&1zAfQ3&f>@4EY+_0=9 zW3Oy)ckrGoEO7@(mxwfyQI_ItngKqa-6JqR+z`BXllJ>xbKQ(0bKNQje9tJFJ0gNn z_Wz_K=7NI2aSqx;g0wHw(i0_3d6syFdu2rCh824To0R!vnv^Ah*5ig*LgOK<%Evg$ zFe=y(yiYGG!m}*NJtx!082cW{WFx=I#0Vz?wEar{kr7dukrAHIy~D8d4obfnp#3lb z$sVA+4yIL*{)}l(3SwU<+FIJ|bPWHvqpF9mT>y^>A;KWcJq$VjqvTDWU^n{j{Y8sM zNIx?Oo<HFGX(0ImC7hu9NGaPl8bYHp4V+U9lZ`^tA^R--3}AO{f$J4lSf3U=ms*gN z8x{y!+YuGvWsn-2kpt^X`Zzl!d*)cCMMe05_PQA+xr55Ra?t(=$eqQoGw-2mdcbBQ z_8fud1i<4YZkGN@MnO3t?m1N{pt)jv<4Reu`A10ogrVOBe8**4B53YE!mBLV4ZgO> zH7YzRBPG1Tz#GLr<gv*hq&mY1zZu}Q<k{(|m5BQe!0W_8XE}rAQ0rjOU3_49(0#d; zPVjb}f2I>?EqZ!dNHM4%3#tRa;eyzc0FDE&yFqg^@U;ORPN01NRjBK2oWON8su*~z z6?CtnnI{qJe7uZc<B_=Uzy;OMkw%a;)fCx<vQ7-Ph5~th3v};|E9zYp?qD%QeGcyT zAmRWXJ`nK&(E1fGBd;o-@Guk5IkHLap(RPMJPn@vsmMt7@XPTDaYetQJS)klqBt_b zsVWM5UoGe?wNSKsa3O00z-t4IVeSWoH)K2qv~~~Nj?Aer0H=LtN6=no?04XT*Cq#n z;uARyLhcl-1nu1ew@(dV{W$o&7SJ^&5#WAb5Pa`wGIY%cSUq$s9K0?7T;2wzd*Yfq z^av`8GD<0q3iSic<%7cpZ647e$tWc+$vw;k9zMZX?!s{o1&@VA1)G*9=Y|=9*54!c zs$iVa4xOV%*a^Ou33g`(=*(1iNIXR$ul>R5FX$N;pg2Pr&x4DjryYphIhLi+`VZ75 z1g|NBj1>l^L(W}>ti>evegIJ31<$iW;{}!;U~6o=+=D>*IXlTXr4*zVJcoi@PPw42 zVe+ap1+TY@a<?>2$}&xga(6R`3^s(u4S2miLO!QFGa@*-7_@&MbPon-osTzYy#?q@ zl)OOHyTF`-5c)D9^Xrk2a~<<Q<Ig_12zUBKK+_7yY~-+Z#+n{VlR@_nfzH@;g_kjC zb~~mchl5XUSVp8#dOo6WVUq6c4qv;2vGxgcS5H)?Bhub{Q}DP~WOz<#a%D!2Paf!; z-;|sb(3&rVIiNGsGm?${!0U%VcLIace{gyp_Vq4K@cmwpyk!8p`yeaHJtr%%GP&5( zIk_|nyuU1{EXByABnh-%Kg6^+F~l?jG;WXTpHK{c415^C&X*)D3<7g243jfa`(2<j zaZt--$84mqDUAwu%SuG+t3?`Fg8G4_DcIHxf&0Aa83;Ax#4+jqgO>%)j_HK*CODsi z@69MjOB+rGNycGWi5`9ikr7@7ptRs+R8auC(+VkE3IcLnLHBGR)di0Em|^Ke;@yx= zusb1<>o&~t4pMho`ZzmQ`a<@ULfUhnHCDl(J4H;LlRUyIQO{(;mghlzhx82C`X*4h z;{z(o^MW!!_w{%qt%vf4pI-r*!vU=cK-_Hy)&nd5LG42ia9s?UI{~{DROh19ztBB{ z5VOE-M0e<201*A)JLDklvCNIi^UFzbg~}t>FW|HWyDP}4I1+aDhBI{T!Z@fb**O^_ z|02fx153eUn8BE9+``-~%R%Kl>@EY)edAunPA0H+IHYVr@)IGq7<rX}_l5+M=bpe^ zOM?`5%M$Y41R9GBszQz{?_fgf4b$_&jlk`>k`#AK(7CtZeUgzzmc>c#Zso~FVac93 z2B3TZsiQ%6_&I~pA8Bjw;B6)7-7oMm9;uB3x}yd;kHh9lk=t;d&XnK%La6LOsn<bw z(m>mHptR~8Y>KiL&8rd=7E!s7au>Bt1s)TF>IIL_gU<4YhihnoC!uwB&MDa16o_&o z3~QSL-F@&p3SCQscik9heHQZhzsUP{KysjQT~ON{axQQ==v;j8SP$}f%bq#Kc_1~Q zF(9wX3W)uXHZN!%A3Ub)Wds}ZGAu~Si^@sP^ULw7%FhR%3k;f@4R*`}-47TQ;Z+qC zoLm6ej}Zj!mqFbDn(u_Q7ZH2EoRiHUXBvfq*0ZO3A@!xaq4x(t+I^6_R6z5bFt_@I zM-`-k?u-ZB;|?|lcX>n5J-In1QQ?80`4e!S2Kf!S&j#Dm8wt(xUX|I9ehuz$0^QAQ zkQnX@%BSVH%u6-~<>j0#uS&>RAhKW6!f@`Hh0M*u=NCYGM?v+!8))32(kDEsI3+wM z8$9m_n$t#eBPdOv&U=<;BEl3lZ&{v+B`tx|0!Tk>E(VmY62l`w`-d|y^9*Qg1Jb|7 zv+oX`CSc{6C#anXtGhsZ1D%~Rl5=x1K>bnB9@r>%(47nAnUFP?U^@_VJkDOw_B>Kw zD-5q+K=VyiAafD(q~)2(#-1gRvw1;!VQqFNkXs9)j6i1>T9(51<U+=O(b77!K6a_V zFdK3vx?yG{cyFc&Xr8b<GTa2Rw+=I|z+n!Zi$%<*I(vc7KKBXt%1F*B&jjryh3pwd zUpESM2c*uo0INZoJM)Cx+f)L|`=Infgr896enE3G$Y~Z_2ZQEJ!F_Y2eZ!zO3^Yz* z_JH=S;!9)T^aP(HEzgY1^U6rd1+Do4hZ$sU6-WAp&1GSAA9UUwu{NVTGrTed6t|$U z+!91x8k*<hQGzJHLkbY=@F2?w{OQUfCA=ItzDgq_B0>A8!R4<{xM@ZTDBcL99dH<d z&YFkL*<tk$D7>954U_QhWezJw<W(=|7>Oz5jwMhYLn=!^WdUeEF=URz5Y^ogkah2% zI0VN#?(_<ZACP}bAZG(0^nubC*k8E)ZsB7bR*Wlcz~>~f#63<qm+~@@ztGJ@KZ6(^ zz6gI=z{dW;da<sf3#}k=9UZLw3mUtG&PSl1fm@y#;BK0c0=^q3tk^#nR{x^iBZXdf zqpUSRq-mtO8Lhs}DNV@@t4uZu%>&i9$aBI-bv}IT6;zKQ*ZJ@{31@Jfk31I*Z&Q$1 zPvbWu9NuO(^Y*|}-y^l@(bq?T;vZDb`9y&Fl0gNLm4=`@@ACXJGs=_P-Lj&<YmNdz z?GQ^(=M-4|od>!X2(*qTDHF7A3bGafZS4bEeGFa;03Sz*itsFn%B?U=42P^|LemSX ze^AfA0IySk#kV2+3=7a&0SvvMypLFmVB`~?lM7i7<%zXE2AKihqYt(Rx{e3yJs@y5 zK<m^{&{!<2pOFn-LjgKlE5fTFGT0C_#{nvzbE2SkJHhH_u$@Tz`$2qIT^|T<UqkNP zz~(<tdjq}R0-1rRqe0>AsT~IG4?)VVoV-ZLIb(?W6(w&#>qU(E8Dti6-3sD+g4WW2 z>v2-thg{Et+>2aCBj+=uIuq0mK-3xF_yOI;Vgjk3LHsOm-3L;KZEXrl-Hc%e`Z*~e z^N{Oh5FcVbsO-jSK5Cr|3LCFX&^c|;JFmdu1TEW<^KrT-;>-gyamc+ih`JbTW)f1_ zgQ#<ZlZ#W05aZq8d%>V>iYO1m6mWXPwkFJ_!Z67h^?ZL&SpZ2Vpm}^y9Tx>zYm<Yr zrV`xt0;fN4{R<9zoM8j4vrzp9%AX!cbuTE4^Pv6yJZPN=5<_Z}fzk@5`;giWusRr| z51W6%c7p6cw7)=RLhhl2mO)5u3e0p;UX~JGjuHRxx)nJeVTsoOXVAPrB>r>fLuhqI zBIX(z(D)4Av&2GtA?r@Sbw22PSVzPfCB!--%=voEGr&RPf>`Qv#C#;U&E!%H={JX4 z=6YgZZ)_P54BF>_*pCM~t0bTj+nOZPGWZ$;(79WfZYuBrokI&c2R9-phj3T~Lc#(v zc7}FNZXoKs0(`6)vK9fhUI%0ceEk;a3|7#2@WF<lb2dwobHl*vEqub=$`ixNGtt)u zfW|mez~@3{psZs6tuX?vCxWU6pLg#W4qsQ4m1JaC4l3^>b1QPZgJE-<kiHOPEHft? z<gN&3x~vO<uKO^7t_$%3_YGm;<C6=WR|^{|XUap@puyHVWmbUKS%KojC!C(=k)ydI z$Dr5~WeyE7=L?B*l=U;9yor*g=yJCJ^lS&%+A8Gqi?-e;*DDk440V)sBB8_RTzRy3 zM88)eFRUCiHyafUy=x&i%owrGs~o&e3Te#~q`dMlfYaX4^`7AIQ|$dUQqR*w>aPv_ znVF#RRFpB_tcv2qU?<2Ont73+y(i#1X+1$_sfPy@B;}?ggU^&hYr_OMTNWpVfZ8<J z&wqm01HCf?I<`Q{8XMUCO8%Knr77VR#mH*{K=B(HlAn$|uL~AK-)jw;|Mm#0Ov-dJ z_jIo)iv;^8*$lMjIVC(aJuL*b#sg^$j0gDsR#UV!7@&JRvQyE`htzYhxsvio$ozh3 z1Z*83ypDs+i^1m0JtH9J4|sWi#wNo`Q=Ad?Fk(F|w2uMWv*MmnkX&h!oeVl#C*0J) zCl{Ir@_a$%Qc?um9}qp@wCe%46TIFrD!d$|)*Rtyh}x*|iX_<lDW>^;zTo>)+zdc^ zVgAfX^6)K9$uuoU$~DbN&dvx82`z_=`$NVF(?RDUghS6*z~;xWT({zs@URq6oeHtr z6nf4pEIuG^gUDg^H|!i~(0LB1c0=c2z<1Ap?^*z@yN0Y)MxAeho?+vGYA0x(I~jE5 zRj{dXWQ13#w{r@jjpS}wn&gq4o?>KKnONymkd)_F5ak}49vKW;vs3{-^D`2BKaFK6 zX#I^>C3LMDI9#B6*+Fx<g!lBr*S>?-GeOqH8~Qnuwk{r)mO$fDh;_m!Yu}SSapZqc zn;#yA;5}-dpgld{{tJ8zE~~sO$vvAuTYVt*!iE|_>q;!`X+n2Ig~IMdg0#EBBhwN0 zyCe1!W8T|>z3+e}+!1FZf%^=B=8!oo@Vy*Z-3!{g7~$-NSeuYjp6Tggk&ex5*x9Mc zm5yfE`Ul>@pfj2bL1R`1QJ^!1@U8s}35D+Sg!F45V={>KGpOqk(A!V2_O&D0+G@~x z{gHJ?R4C{Ukl}Jil%Z2bQZDGM705kZ19e9fT9^+0JEG9S4O%{d`=TSZEss4+=(yHD zlEl5<MBZNr+Jg_h-v@r*PS&8kBg)VZ)=oja*9ANW0cyv<)-OQzE|}(x-Vp_>>p}Md zAk8Cz>vK?DnSnO;6_lI;N)v7=`BCAZyJRxJ_a=bu5KFFf8i{vARYZjcW%*TkW%&n3 z<tBz#<OGBv)ho2SBPuX5+%#vH-4QiN!V=oo8NDM4G%uf=f*6|zja`>g^^T|z8l4>j zJNw21Jg$JXFXD-}zd-XlqCopw%aU_J`yx$1YvaIcSV8C4!snsf{S1@y{2=!;xmy;1 z?u1FsLb^`}I{$>cZWirsDbRj8_&glu8C>u?rAi_r(n}EQiA@ZXE1gj9mcnu$Qc}2^ ziBC9m?X$CEsb7R|dQ`YuRa6K8H-h#wxQA8xI6H#wz=h7Ehn6I{hk?&DPc=l$J)+p* zlArGD>;}85D<df{5PptKT3C4|WKSVzZ7Dqeg4Ujc?)L)C$;0pWO3Fd($44HM@F#Ih zg4n(KUdCZnkh?Fv3L=dIq36Cr)`W%_c@={0N`dU1&nb-x1MkhtNzMy0^+u#&$h}F( zcg{fk3m-3n-o*|b4-5nM_tQ|$0ffv=MHq(}B!*W&&hjy|1f87+x-Y9J!Wh2SF)gAp z-4uS;CZrtz4?l=IL3g%-_nE`(PX_H-!8l72x`r|<ACwM3aRHr2hOCA3&vXh&@c`ZB zg7fTp&>2bPQQ;=2XH<g55j}FsqeAl2X?F&<sbP{k<enSwx&+iS^(o#fnUoh+oCFSA z$k--)oD<0&@c5fYm;q!DA=22MdroO!xF2{=J@igE#CS@kQ$bQT=nhTG$|(07&>5$& zF?*c*{}AJv;5&U`W21;MV56KW6#H<V{|{;RghAs5c}yF$t~4sVA{2BMKVttn#P7&w zbbEpBdjaiL_kft?6P%pxUFirrcN-k;o*oqz@cn4;acAsqhpf?ZvPg4w%tKzIg))8$ z9>YZ4tCtiWW{~J^nGN2biR53{dL6Veb=bNfwEcmO=`eSK&Lc~94+HPdgN>QP#E{(r zy00M7J*UbiGblST!Vff;o0aICo(EGK6cGiwOBKGa0d`IvB#pxMd?3#OK+Z~p+%;$l z+9L|jv!0-}Ah3O^AsBfyBPuT_CpkL|w4Vxe#wl_dLy_|apDhhNyAnJ;3>ou|3NMGB z7Yr)LgWbd6X9aszCL_56i+bazoMh0sYsSgoGqX|lwt&W+p=;v7{s!%h%?$&cLzxo- zsYB5A{d(nq&Wel*t;mUth{_?yy&%6N8AatL8-*Fb{o!1kj<N3s?0?YN%<z3XWuSG1 zpmXI?Djh-V>GBi9gR-N-O`!DvEDwOfz@p644Kx?-Rvc*@RvZahr{EeC5E2aAI}!@H z%M-dr)zdvCC&j}z9d!0}RCr)1cufV^evny6XUT)kBG1LMR|yoJusndwMlOqty>dYA z0qu!K&eyOrKBCai>PMbW%FU??0iXX3+4}@8`!MH|Amt8{T2J^MUbONKDL*30O-R~@ z%?W|$?3^t@XMlt5hDTac4ykv+^3ZV&@OoD09poT!pIqef6TUANT8AO@gYr*GgjZFP zv8S1*hf^8k+yGBVx`vePptc9(ZVfmewao)PLltuVY$h}hA=HA(545{N4Kq@mL2Ds% z@)A7)(|xkS5O;>6tOJJ5(ICu1X={PTLZTu(i#?q|dmy2E)q@Q|_oEm^1!HlCJBqz# zo-U3ViQ$IjNyc6Vk>REWkTMJrHjsEh@Imt|$mcnO!Wm`m7IO_WWG$&n0sMR~&pb$- z0IpwftvScOro9}}R|bWf8~B`f(Ec7TBdqb9=bww3-oX1$GU4|hA@(A>7$$q7srAZ? zLevGg+=yjenrAMwt%QFqJnC6;&R#HoLGBg<*_T&h?&%ISD-&`@6rMZ6Kx;z5^I+hz z1Cdt1?KJp0H<WY*DO=FbUW3IA<V<YHe)|Y#$a){J*`P5aSlQ$eSrQdqZU$`=fZM9r z)PT>luL6fLr2GKwMaSY6P@M@{dkMQE7re&?X+5ncX4*>kgwEq**b7ZR@UsXJVGKEs z&Kb}BchGgE;PtIWc<ygQtQ7?JuR(K~p!@)?%W%uV&l>}&hr8RQ9CSAs?A#k%<s9-E z>saSwNj;~G$oW|CdTz8et&lY92D-Zl>sn`wd=Hwx4X;dr=mVF1<mF+IIq);)DiLQ( zK-P(Sp|zVMb75^g&^j8BUW_%*(D(+epG^vforMa`dysYH7;8sCYiKdfgM^lAJ`pJA zL4wZYgRXh^Oizn2u<$WTH^6iQ;{HDPxB;kqakd17J*xfaX&ba|7G^inc_!fX!|3aO z(ef;^U7&L)d?NhvlZ=xg=ZnJXaBvu)o~??RSHbI?5o?>lXEvhh!Spj^tu#E3qWA-J zPel&SHO$bv3`t#|4bOXUf5Y=>c_z5-!@9mIvYf>IFvWPrq+tCxP??d2=bS$yU+CF( zSmxA0YhUo|Mc#i2X~SU|J3~F6$a{F65oqKG4M*^PXz0BvuySwoj6gqwBxBFg#5`Yp za34Fw5Z2btO$;~9j*3XP^mTSE^)YlROLn(3ih`dF2Wb-w*)_lz{_!jZuceLvpP`qZ z;%-<BpC`?9E%m81DfKY|-!YX2%a6&Gmf*AKAZwDsDt$m_<YZb_MTLXbT?LgTXPOo! zS6PC`IszgPYZB4U+zU)Hb^`Y;VQXrKz&U{!ZXR7bfGv-}&QFA`J2Ev)2A^FPnx7aR zSnP><9wLNqh)5^UFtvo!!RgR7!QehJw)UTqFOANr1+{CTcSe=K(z}1AlT(y?P?e{L zUs+OkXnLfvUzMjvP#I{fEGpQ^HN?OmJu)vFJgxz{)63J{H9Y{<SI=}Zhzy5}7sK1Y z;PtS9kg*Y{x@7Pe0c6Y@v<@=G9ke!;(0aMZO4xW>Vt6Fd-W2$`QHVW};Bo8ZJnvx8 zeTSfRXr`chxzfW8OW^e-B(C6kL1#PVMTEi5ce5z-1l^(K>|~JW4n9lKG|4>-EgZn{ zWdL5o?*Us2PRI|A72d%a@bwNp&Q9j=c>vIw2+)}VpnWiTfu%|AmY{olt8mxfaJR$N zg4;SCpnJ!iJd=zA(?g*9Y(V2y$mc|W;|6RWWW6f9-gK)l0HujAql_HTUBoDUclXPW z3^xUxk)IAb8xxWy94(+}NZZpRC?m?)57KA!0Ig3zInSv$$;dAw$-@`cRx*h22*Q}Z zj12e7ii&VD0G-+EiF<xNE7{l=o@RZFazJYxO?+|-sz^LX)c~|M!Y9HjC&k#SAO$q< zm0M61V3d;`5N2uQ6B20ZTa|3;>+Y82l^a!%<Q{4n>TX${1RDPY?=uO_@X53&^~tm> z1)XylVFX>T5#d_~*>?h73!amlX<3{Y?pc;>6jltHPeQMo!DBDMQ3Xl4K{=@|2IU|> zpxOgEKLX{PS;Sa2Y#tnP{xRsBQutYcpmonEdz>;|ak>|j&k=Q_CB!YxriICsq}7uU zzZh0VMWj?FMg-+R>&t>D7sIraOalY|5MN{e5T}gDO89yVlr{*+?-ZYd3%L)7KwHNX zdX`jBatb623!*ZS&cx0QGY*8GR|Xjy^)mJ|NCw?GS(yyo=K{}zptgHbI4u5yO$(x& zA$vd&W|XIURi>oC*3g5~zFUO>EH8P3>kYVhC~kw75pER*u(3Ogbw2QQ08RzTl}_OK zi6mpc9FRMbbHhqNX_i2KMU;*1mIly!G0T#TLXr2=fzzEQyu3><@UKLin+J9q_P$mn zjrv+Surq5xX&u&vBmO=j*K%LyZ1`D)pt27(ZVIiVAY~b7TnjWt1`A{Gcs%SbpP(wA zJSW3sqx5|A_>XY*EKNp~7odIo#jyJueDV-&?<DuI+!SZ{y(-9hAZK4-m&;5t4l+nG zG60Qz!`Bf&)_+uFq=w|DL+>(0numwY-J3%1Cj;MKl9LP?+lH=J@N{-8Nihn`Of<?d z@CkP-1>G^90-CGLDuC%JNXm2s-TMPyhu{;QQ|gbjE&x1M1|ClYjS1(Jfc88l8JU<R zgUWyR&=S!7eV}`n;A;|s4GWU6t)0m81J!{!KA^UDL{tvS`U|AH*CNAB3zEVi=iT_j z^;jCFIHSAM(lEsZw*J8cJdO%;D|u#^g2q(9_r3%oxhK&m%rpvg4oo<x%>eU5PN}B{ zlHD$jX#OGU{y<Q<0FP^!+rc#S{yWfIT2e@UIy9{FeVw!6@efvqerF#%-kson@pN{q z@FmNAuB5vUv<?F92GISQmY_8c1t}icW}YstNNz{CFD(q3j<cPLq9Sr~lXKllq9S}@ zeg>y6<aH{(&fq&!k;4s<#v>qeumr;moSq@$>(F^2(41z8Kj>a$Be&wH;B@f4yznt7 zXS93lkkg%qA>s}t7f=~QhWpUNjj;Q`cah<AAADVqNxCQ8eWavsP=0eliZ91<FVI{S za@->25gcKN;YM(p1^W%x-IeHR4pgqXWhF)gnfhlsRv?#4@N|>unC=@wmisW`n6UdC z(eea}`^vGpFAtVJOdS)kmL;QM4VhDlDof5aF!S_)l(F8BGfk25IdNg_nOU9=nh*2L zF#yFCXbcxz?}OR{@V%s<KC8QFGS<7?vV3W@zJE}i<zEgP(+UaCF#(-{0BUpLJ+mS! z5G6dpePuUL{|PcS1~bPu6Wnixtf9=cEDy~Mt4ImYsf-FmoF^S&42nz8Sf!U=Vnjwk zQl2l0*~sf2B8+mt>td3OLF?w-3=<=~au8>fXMoP-FYxpzPKTc#3O?5#yhaHmhjxYr z=*}C<%*0GbGmswmIwjCK7Dir$p!+#N<t2RH53w!~)F;i2j0h_R-+chz|LIf$b-$UX zTS*$ceVA=nkm{aOnp}l+9=MwU<org^-GtcI@OcD*+J|{j5uh~=NNdoL*5HL2gVdO! zpMeiQE6YFAF%NbQICxwDQr1G&MZnja5OFUwVtyJv9so8EA&%Uxg|vl1?P~1u#Zlo= z2I%KuBDa|#=fng;!Uww<$n9g4JniWW?H{?jf%ac#g2q}BQO<9-C_{-;P}|=bOPd+h z{pp_WB(;}O+yw4BA+K|Rw__peqCBDL2OOqg_c*4L+Gd5PQILM<8T)YaT=BN0P~7V2 z46QrS{SQueUZDGav9^s+?1!YYvSfF7T@9)W(d@xkCzI}pXfL6u1+V7=ugAe?%YoWT zSlo*Do?%4Vht~z@aTMrYl9L)9RT&v>n3G)T1nVD_r9=dR`ef+tgS3aRxC38Xh(MTu z+BazSP$|qn{RS*<MF}(LncDC)L`0a8v(^ZDt{U|02vB*J0xI*6)>DASJRxm!EOW?c z;o}HD%Pu9;Fek~S0A8;lpFNrAZfOi^6JUlvNI%lLr<~$Ecp09VT#Pc#3OY*}OBi}O zJDNe`9J0173$%^~dVi{0c_uhK5oH><pNhT?4%Y6(SnHGPR+*d&ay$4uILJB!>~63~ zbn!);<L2xI4+r>K2WL;jIUTS&Es0oT17CCD?1i%SDaAd<Ajv(<GA#tLE&_Y_mX{^E z_+pJ;&>9W&bAb`zZwMb-$9wiC`q~g@FBE;L#wF&Fu(3Z6L!#UZaue1#g0DrWKu?FD z^<9uN@=)W)!p9gfUxaKXI9-6sZkGz!d@eYQu(wHRbmzJAplXvErnu)6Cxh1R;@L0c zAA%U`1*JD=J9PAJDk|Mg1!{{$8HIt?p+nZ!g6np0eQcWS9%=@^p9<86f}R%x-rJK? z0onK94lVmYcW5E00j);@?MXoFMM;LV_h9C`!}|wjp3W(`pu3E{ko2S2;Q?8{MetrL zT>24nb2#_Az}ni7d<v?Mkk<M;JEkYPhh;>$;|V8Mud*bgik!%B6EuJNl|@B(Wr6n8 z!1f4%_LYIff=x4%K<CJWyOl!P%dj=;D0h*8?>)lhF626kVE9xb?YnVyOh@hyd4ccE zfXx4b>nCU%6ZL*7&{^^n-ThUbWb6m6H_`V+fYV%AGI%c<syjWMoxptx|4henL^y!d zBl=hnH-p#8f%Yh5BzgGdAk;d+?l?f)8wIJO3E#Pec7_yu?IQS|P_%wqu3M!i^gatv z{~CNY5lY_#l&(PIq@X)kGIGFoHbT!L0`1p|GD^uw&V<fafzBb#1I<$el|+S`8iMxI z6M1hJ_`C?uVAvfg;4lI0^~eCbr_!_v)IP#`w+rknEXcjPko*mA7sAsfsrTD}&z3^e z^WgCU$esky-60;nh`uG7y`c4vkrAHh$YBEuUmvJmgq&$sqI*tpl!sSNQciI>Y_1NR zF2H4uQ&oyljzOeRdb&3>j(qZv_T^*jn}Ebsq>)=yRIp=Sio0dGS5*PHKY=h4q6T)C zPO`gY6=Xk<NhxGr$k7sXj#y$ixXoJ%+vgGjo-=YR0qt#ot>J>nLGF`JPxq;GtOVUZ zgXF)msN5(}*heIW2N@(fJC=F6K=(v|{ReRi*lh^^mBH3-gYH*JhTO9Q8+U-a2Ym01 zvq3r{jzD*sfbH^(3J33pK&=~K_PKk3&O9rEu3Z4Pb;0(7_6<S94H6E?W{A8<z@51j zIZ=7wJ&>UJ+B{I*<OAPh1CjFyc0#mwVRCLM1yLSB`Pkgz=?uSP2~qxJnu5kLKy$yC z_PBxW5OOTS7I%m}N*3w9nb_kHMGZ!phWI}+4|IlHF_v(3%8HEe%kgwh0mV~(iZgY? z&btyc7N3I}uEQ_vVB<%5{@^_du(Ash_Bhf5xQ+pr+a92ElR;%MJRkUi#<V=K=Mm)m zn2s-eJ)JGmeQ~4*Y-I?j%)#NF&?I9=>~>+hGYghqLHQDQx<iaBVh=M=KdTDV#_`EZ z$w<yM$@el$sZ265&GSS#C*P?YbT2LHxpt6nhm64>#f1lKT-X!7pAqI~oZ*3cZy=&f z$b;Mg>VqgtV0Ww`=YL3i<1jBRxI7&^{|f5gfx{0vHUp{;;d>;VK;>UHXuckK3>$hM zC3w9BqTF)=*Mo@i99%cR?>tMcG=-N#$YmIKjkL2HTn=&eunFj_{8H#SggME1US-Ld z>3M-hmWE00pmVt`4LsdJ>yiSI>QBfSo}TWY`Rtssln76d870Z?kh2IuYfK^|0@G6> z{6J%3@bH9;^_!H!;}q6*0=0`lXW!v$!$g%u8i!SRRf5Ln9W&DM;Nw4~Dei8W!I1UL z@HJ(yx&tMQ2;Yg7;R70b_Xsoa@qpf~?Ob6H6_EkD&o3u3xFRzp0<_k`1iZHw*584x zM}*ml9?qb&la!lckch2afEc?6)gPsxvqzER4Af>uig);UJnU>wg#WUkV~wyp0ZAiK z;JwH};Ijl$E1~NkBS7aMhn1#;<fnUKv<=JC6CrECL4B!`B+$7Cuyq&ihGn4mgzifO zg+XqTk)I)G|FxHqS1~9JMCDp$r9}AVf#yRH?gr)A^m5Qy3?ZO<%|j~+l8pl^k<KY7 z@J56K<W5C*$epsuh9!{p9X!6hQowu5ol_9^al+CJ^iBoz_<*)m(-2_=&M%-k5j1{? zRBvL<mzh!Fp!vlx*Qf~4x-U!6TmkYvYYchxz4PGo0Ci&ocpe7ah9i7O8x}p__Dd$x zU2xF8RT|_>R;=rW{YYFl3|j{Z8Y986mI`!^C-{yD&{!#GpCCMJ(a!kCG7gJ0FY5@| zM+V=w1ez0!0<A+rx*Nm`+{eJW-wA2oDQNE(X#W{(Zqlo=0(9mi^q!QU6dd{uAoItN zGghE`%yOb~qjDmRA$JeJ)@gzBwu>oZy#}}(hq@oS*Bh!o15|#dz|Jtmw#N&!_sc!K z3UP-Qcz+eVjD(N7g7!>hg34LgJt?qpRFHa4)O}-6_h7m60y_2z(UWRi0^vs(T7t&l zaov9b9(P4qv*DPIKE@0Rb3{8IY0MSmZnSg&3BQUekbUrRVURk|ogUz|&XDj9$SW}i z-<tsuvjp#{1K)ieh~Z!O-dALIBF0(a=?vsg&_33H9K8F$jA*nr5x$-hzJ`FnIHhk$ zq%m|~0Jx6`E<a#v4ueP9nXr+t^Krpr5u<0q655LdJp<ht)LuhcNABTO76m##$k-2b zZ`|;>>%q{eGRY{VGAhEa3Vc@<=<bfN^2`A{BNlrY4~4U0v4$hG3<Br75qxGWzObR+ z*|AwPI)iT*%;O>IRm9yzps^14z4RX7^V-nQRVqy~2HnkoHtr5R7b_$$tRylwtP*W5 zB`e7&tTNIFG?!%wopS`8%>ouHO~S4Revb?2T%HsUFT*JCz5z%-4P|c1y&@wrH>?=v z+zajIg&^n0;&PV<=p2Ypvgf<N=lDiA<$(MTj}vfv6@JE?Gmg0{yx|?0Ygq<5k1#0{ zb&dylE(+3KfSk1lZi6D7m*nXT-<L2*+y>c82=DWIAnikR0j-trt4xe=0-Y}bI;RhG z-?c@Gdl;5;MWE|opl3-W=UNs+?lncNFG2Tof&1u?F&L0};Bj}vSs>uMW<g_cdC9q9 zRmqj0dw@Mb_soLZrC`0FbqL_N1oiP#(AAbC8;4~@8iDjCn}PSBL+{^45{JxjqPYQd zcQ)v}LP(p%7ksCnPXuVJ5Ofbna-M%4I8B1~dZv3BBg7&36>+8!IL@6NL1%!$%W?2M z#F>T#Nx4yFUR4F)J=~x(r#+ohAY#zDO=A2P1v+crD6A6AoNVwO$p}yAdP}0*Qw8cn zC%cDbdsP*{**N`U<d&7<o?{dhoNNYL{}&Ywu?N-NPT;$L!D47(><=B=1f9i`Y7Cw8 z$aDggi=gxT^1OmmEF-X-4}`oH1++FA9L63c=1J~unc#b0Dv`}dP6w?m^)fbuj9nqS z0nt}OSrbE@du}65NbJwS#tuPl!O>>}-E$jMkdg_?N1!vLL49g3M4C4O-ER#N^Grt_ zH$bct1NE6f;}prcmKb>oc~1uR^zUaFY2=raZ0w7c{t@D6_sD|ou}8QMl7CB5jNB@d zAo~|l@+6Wte194^Zpp|$1pN{ol#!GRnioMW7vTA+621=(TqfZN571b4c~p2{9w;p* z=jMRem~O|BSCHKZIzJ2)H)!!zmEw^DE;~VTIP(Z-90Tbr9@MjNoXk^=AoV)<4wYO> zW6)fzS7m6Pr%OI)FQ_H*eiZnahBIV77W<m6Y})KIz_WJBHzc_n+8@A?H!RaqjKVU( z>v#<<;ccD>LyLUhkmO3JUU0oJvd1%$tDs>4?pHzDC!=@VMB+SK1;=<sF6ewQi(xX3 z;gtb82N-rn%z%wwpoZxX7`H$TH{^UZa>pyMh6(+~DXJW4Q#XP78PIcM;OA2e-aBrL zePMe|K<BG~`_JI})<EkX3_$azp#DZcuwx#$ZyY{)$Bm~e^vslC&|W>HwRGVA0_Y5x z(K~LyZP8$yXR1_1xkMU7hGZM~I>XLXK`IM^Njtv<`#EQjwJ>OBoCSmLIjuA`N(mn} z=hF<5u!P@{0X-urCl~4NM)Wg&EYZsoP#uUkcLuapwj>ELpP!TM<LrcDhL5vjo|mCv z3S|8W{5%}^xn`*5p}5Tww&o(jBM8>d$2da@X1Aw%PL-#7P(d<iFRxJ;$Q_kY;f7@? zxzMxIT`HjcF3{aoZh5dXSZI33O_eKc>Mg`RV9@#=GWt$5zvHG7l7F4d!E1<(AZsD~ zGePUoDl))hOpyH{(D`&zsCq|jPw05Hr;AB?Vz_BJbiX51og-)sFl-I8nWwv3CTM+G zN<>f&@>vH-;ck^tMmeRR_4vr*$)I!BK=<iZ<)`~1pP7OC+!8a;`7=@OVJ7~WjwQax z=UBLVm8CixRwYIh6eQ&)n|Zo>f$sFlNzOFPOfpV~pH+eAhhz7nPi{_Dl935$ofS!b z1g%5#&vY#H4GF7^3O9h;hrAa7+3)zy?(uYXG6t{N2JLMKHZcI5>4dBoc0Um4%nP5a zAawh{YuS9l-HH>#Q%e0aow7h}k*EkyBsU?Q`x6mX6&2xGk_<hs40Jbkl94G&{DH=Y ze8LUOQZo$=la0bEeIlUi=0N-6b1h2|_YA?$*(phi@GSwYBTLRSgr27vXy)l|T9%X> zitG;9xKFyL2Vr+a=7R200of0(^T2D;e6mu|{ht{b?pG9L>{XT$Zki1`?=2a07X{d@ z7A48KVdYWbZlH7W;qe=p>z0*hlv0^w99A0T3_436vF9Yx2y*X+r@LPc>b*}U>7MRh z8IeXMdC9q!hDo`BCCNrPW}tmLej$!Io-U!~UhwpZI9tUh5A60b|6J3u6zBBP$Z$V{ zM9^Ir!Kir+TRKE@C+MtZ@SRkiMnTz8DESAP_OtTSeIuMqz~?)<=VW_2`(;MvBGLh& zya3JbX3+J1>1mmcrHP>PsZq|5aw<!S2r5ntH_buM->~=srPE}O^mI_!kQg4A?pYOS z6d4|s;|~uXa9Bd}ue)0|c+L*AM$;(Fz|+MM;s+PE@>FN1$|xhR3~v|5VqfR-avx`t za=)t30w0hXXGasT9l0r)k-_N|zAm1{z9GqmJ}#bBzLn*rewm1~kud#jnh|LnQ~;`* z0y07EQm>pOXGd*MXVU`E-cZnfeE2vbjyU%P-P0cISb?5b(c%nrc2yoIjif|)6?=ov z5_L5Lox2rf6k3*S9F^y7oKceGQj!T;)9;rRSRCpaXzJ(g6_H|;lARP5Wg1!KRh*LR zRp{%U;}=>LWE>ox<DBH~RT7dHl^A4HVHlp5U!E8q6d9Up=o{vqQV{BqZxE90SD5Ni zkew9nmlx%37@ivLTbbk$m6@33R1gy8Ymn-iQxKRHlo@86VHjx)((mROn&p%g<Zfvc z;^LR>YZPSa7vkra8WLs{X=Ip{l5JQR7?I)^Se0WI<!+dj80J)%>Ryl$?pjb7nVk|A zWtd$RRh8qFm=jhI9Gc?q7v>Za9OCAc80uvj>gMO=3$icQFeA)3qYA`N%qb`d&o%T) z3`s8vb@eq(%?&DvtSknd`2oqJ@H28uN|T}E7qEQe>1>*r;%-s`pAU3)GWSF}dnhV5 zrx<kBqkpDTCTJ~hqDN3EXf27iOR}L?aJD&k&9g^PPI6X$dSo7G9e;*F5_ldg-PkWU z6ny3#Y`hpo!}2ir+&m+<%p~`)Y*76OpBsVa6ZrTx+}+@{-q1VWv86S{*gn`_rO4`$ z&$&YKS4NVDQ+{M{2K;=5fRIQ-P+JWt&7$Qk^l})qt{#3iL#baDqKt;;mD~#OytPlR zmqAh{sI1B<P4);g2sZ}L(OE*`#WDpYuYlI;Bib4nk$HY)NuYbQQ1ZQBabg7MycI9d zUHAFmd=1Xui2Um5>{OlvJ?F(I9J*$>DnC65rS37cjBxgZ+|TChl>+iVXl*NaP7E}z z0B@s#&nzvCz<PFJGL6nI49o-7g`OUuwZ%DEDbCP4mmvM#fXLhekl(>)$bibxP|*1= z?qQWF9@+Vbbr0Zki_#*D!m40ry@LG<Ju3vf_bt4_5L~vv*B=BS+U%fx36OI`(^4XW z3X(j)_c5m7KEFP@5+w}b;pYo>Czi8rKyy&#pmpNN^Z$tZ@KD!a!1Jq1K4`xIp7j!b z`B9+yJUkG~+Juy{FeC7}E_nC6M&^YXq_|sx+CoU{z(M;#!D-jbbD-8-fci(!@?+4g z2XQyeND3#s9t1LX4O!;`I%_8?JSrn4yutv~js)#<faE{Wx&hSv(MaVQmUyN0oq~|F zka4*UyoLeu9yahA0;2Y(yQAM(h*<Lh4=>Oj^9U!y6!)-f)VOzowM9Vtk`0q`{R}{N z3wpZ4)&iu%=CI-WZQ*BILH81X+rANw=>e6XGp)gQ*un1*gyu)knhMZfQ}BKwn3#Vi zRDB*Oe8O@d<CjpeTzEc2%0sAe3d?7qkTZGF-0x+W;t^Dqlmi)GLf=1ueD@%9F9&QN zPI{V0Ip|FBg5*k5a9cas8MHqL>aNTnxZhy*Cqws8gZeF=sB3{B`d#wVk@sIg!wYTy z6{vjh%1QAEtAw17jS`OOUYU_lH<@H7ySr6_`dB_WmXLn40k|&#J>v+HH&E7qLB@(* zl8h?A?RR9ifYV;6Us;m7WhD_|1WuFSy)w|aCv=A-*!*COdl*sT6qYX#Zg$E7<yUB0 zMcx+!7e{w1_}mS|osjUf26rFyJRxu#f$uj-&wzy^(w;SBcY)_pVQPGGEHhKwO+7$; zFGzZDgzNXovCK+z56en4@+wPpg~SDHze@^i9TVJbrfJZ&3(PE#TPst-Ly_%<jCYa0 zmk;cA*nN}mFmOh<I~#sZ9b|kCl6Jsz=@{{AY7_~o?}IV+ghBRFA@VC|ObQ}~lviMR zJ|M&Z<X_}+0L9;)?qS8rMxp7*ZiqC>$cZ#6$%(?)>xP*p;r0YW<)CE?vj5=wJYjhi z+%5{leb$0IWS=0~-Jg(sYL%GfBcwbr$&L!IsPf5$v|D|0A!c~P&b|Vt3)J!qc6I}r zJqAfeDS1imp_t_bI2}XJQOFG{NQTz!7-<i5#$RrjK}v)d=qzQ>IzQ+*2x4y<IA1{H z9NPbepIr@>L)%LU%AZk?eg#JTfK;|3#Vx3OgVjr*`q>d$o`KFq0OcJ}pT+<t21#p> z{b%rc2RThZ%TR1~<4${c(gb{cBs5;&WfFM(Dp_X~g3b&sOLh+hpQDrlNn@b(kg&d4 zdTJ%;oB+hwPjW8!?oZITfH{^k0wHC6C8#e1=^KIifY31$(D)%}jTv|?3}pQrs@aj@ zUZB0vhAHmQat7fZP`b}Z&P^#u0*&85%Snj;Ey_S~k3MdS($B$i7BRYfDtKKaXx~VF zx=)BJBu${$Phcz+)R%y(ho)IL-w__3*!s7i{vo=1kj}wCA45hDL(mxvW}eO_6@H-c z7HE1z4jb_K5ukBXEa8TA%oW8ipgaLvBk5QHA6rFN;|{%R9b^w;d=|s4pgqM{$6?XU z!#(ziZf0hZu~#;DycRSL5)oGApXpfYXY7@ege5G{#-1vpB0zV^L&jkd<D!s$8FCn+ z=|k*+2aS<n84pE|Pc;3YF?rC~pdsjNZqV2$r0j>RV+G|6NcoT8!^T%g7$e09r$|tr z5jF-48nbk_tn|-x%!+ak%0{=})7c3Yu4bN)aYj(yEQoS;%!<tQg4`>IbY3Se_k!|2 zVhqTsASutuFvX<+S}!@Fj3=UpS(0&>K@w;#Bm^=Sf-X<YSSl7hCZPKOBg2ErQmXPn z^EXvd5rOHx&W;tJu~Nv`uvcDWt}A@p#V5<r*e^J{*w@*y+|wlkY0TBN+&8nl!mlc{ z*f-0!%E#Hn2xWW#G{yqmr;JETusIgO<Exl%M;Vicr6KV6s;3L6y$xMAk0^IA#^a&m zs%D;`HoS92c4S0QhJS8ONo06Rj*qdQQB-A#Nm6*Zd1S6zRa8i%fsdP$tA7Y+95e;% zIBAMOPC;O9MP^c{sZn@#N^we9ftjy+PIkDPS4oIlP+nq~lbN5ZsY_yB26$XF$|$HL zEH5X^H@CtlGB>|GG1M@`&m+StG1Su_GAG3(CEO3BKO@-9vpmuus4OMByei7YFFQ3P zv??Sb+b|{9uO!kq$}ch7%{U|!IxcFI6PTEnQ5YGP;hmW4<q;O166I@@Y#JP15SAF4 z;}Mb-78q)fT>%;wP6dy<I)TPrOCrNkOp*<qLW08!5|hFTN`k|)O}q`AT>K+I<HEj0 z<isUpEYJ{s4hZ<nWJ2Su$Y}%-cd$C66jVk>hI<u9g$Jf%t3M$9XUwv~2YgORP+3xL zg(+%2gw0t%_KzT?P0+Y8`uHk(Ig*<g4mumc6I3r1C%b24cq8T}E&Z}WL1WbDdO-7y zCCNq^8By+*#-MQ!=zJQwI{0`kxC{r4xuVnyPLMtaJd9xT65w%RP}o4q7q=2{A21*S zGOrW?I)@*{98jI+1V7iwKhp_i92O(r8C4X3&Qwdz4a-UaouvUDi!BGAg^#W_+1(Oy zj(4VEPD*ZAX^Mw0VvY~R4d{Mx1f7QozK;pA&j7rah0s2i;>d8&ybNrwe0e6UzYiI2 z0If@LG=two>g<)|Wds_lb^^t7iB}~goB~1j5gU6Jr^42YhZMlZTZ)m=o*5Fm7^!V- zhG6G__grAV$F@8Z)_1^lHfaE8e#;}wz!N+c5DMCZ0clSfmS=jpyBVgqTV^F08I~ux zhZ%tP^?=T;!hP>D<h)#H-v*q<;pqm_wg-(5gX)4L(A}`ko*78~NXB|Ev$JEmKcWu_ zavwCD!f>mH_U%A>O(6X~JZf{n<BK43OF?HUW7~rQYU_Hs6oAjnNis4mP7N_k_C(6( zc=UkoM9PQ+o#z9-8ywLW!=a}Pk`58&3dC;6SqAv-kq&USgrrL>_gF*EQUJ#ds1NO* z>sK5Z;a3F;pYX~QNPJf&7lX%SpkqEh9wpFl4mE?#arq#R6C?F2eLO&Cf<ekWf242$ z?Q`(Nbx(R;P+62wN^w+Jc_t1&L;U0Hgt+fL*Rnh++%(xU%M{$70jDoeeGl%NfzC*- zfRshfkiC8&|3Sx8l07q>GEyRf$|8*{L3`M8Qry959dtGw&U6G$tKnhAp!?rJb4+0S zFw!%~-U8@2Pgpj{PFQ&1h+}Xc+n<Cq3Oc(v33T5KDBXe6EAI3RQj5q_*`RcdNVmAp zhEDf%DIhhirh7VDp!Z?HegmDC3_U*^DefTaS)#ymN<n2QMkXalWfLfmBhn<iOti?0 z%nK^@2~I9TPMiLj$)J6KnNiUFbkMTYG9bht4?dscoB}Qv!Fk5mDI*DYnt`7!lNcTe z3NKi?&-DWD`wN4Pj~ZA81gF5;7+&D=5s{C;>k)FwGl{VebS?>4oe|DE;Vpci`*^VA z4fx&DDD@z9?tM4*t#mB(F|2@}?SnKXoDW-5=i}^@1G@taHl_q}3tT=o%p}>}vN8oS zw+A}E2bPzS&)R{GtDA;^*P4Rw`SwIg2cW%e^r$;Q_IRcTy89I;hWi!y<T+JB&anyv z-A$G32`{I>>QK*xaX~L{Kx(`o<tgM$p7h9wFoPt}xmOWR#ZeJKInZ-^z~v5TpBHQ{ zA6(9Z?lOR!4-YBF+@N<(WkTytk4R8^t}La>5PYAxX9S|$#c}2kQn>_n8#HZ)f%T)? zjVP1AY9V87;CMm3e;riDz{(?#AHZxJ>QKre(B3tq`T>WVQOY5Z`G__U<lG)qcUz#x zNfmnjg0DYtDKCTei;?vpoeNa~Ix`i~b_2N=bk;s-j3eA4&j;K_f|duF73Q#V-ai*M zCkDEQ-Va*eBbBGl6^Jr81gRYnVVD9A0~~cE$nWqn666-NbB+RFYa-oY<q$aD%97o~ zO2Ou$sRxzIuyH|fc^U#qN3c2)WFNLRA4nW@&MVkVq`ikkrCId$8^|B9@WP&EKy?u$ z?LplKYr}!ufg1PVd|?Joe^9kxHg0o~;sNG&(D~SwrAZz+Sn~uZts~MOv`j#1`(O_f zv@{7igUiDYbnZUl?gMZ*;HeWq@|j5e2oOJ~1e$+C^&x!<gFJ8Wx)*4g%*xO6s;n@N z%!TfAg|_8Db1Pm(@N>)aK<zS6Sc2;yXx#|UBapU~1+@M~F0WyB6Q~zKX%KWiV?{=? zu`i?y1+Qf_1&1$QJHhp#38+t2oMeo41{aRJ>thsDkdg&z6N1MN;q?}H&M?!W(9^}$ z*w2}?It_GoAkOtD(0(nbzQcPDRaGeDj%_SwX@SlQ!LK(Nq8HrO1noz0MAW^Ax)trt zsO)qc^)Hrn;E1zJz-?NWVx+sRVS8f`XMaKG-;+Iaqu}cRBAh)z^ZMA#E=%?ZDo8Ri ztpe>i#^R;|AJBPg5l+RC5ka82{d9a`;UD4)2@A-a7Ub*@#9SltJ+bND@OePUJ>QA$ zmIi@gPF|q!M!Az1baqp)VSbWvAZQ(Kagvc+wokZQd16?3CUjpPd=DGw&ao7Cx8fw{ z4ER1{&^^(hyOtxIJqw`fA@i!?@cY@peP+-dq@cbZVjdaNZvoFqgVw>i7^FuydzN^H zdx6)qQRN<DBgnZOX!~YDAbV^AhshpR=(=xb*gl|&WY0{43{af-goDl-Er;LJO<I^D z?mz*}OJKjB+bP%A$Sc#Y%F!5pKR0yEI(ScQFg5l*A>2VA9*4lbS@gKd0r%a(bGG37 zr!C9Dcm3x1g4eQu_WgtyJAv04C0ClFtTXfub^`4o3P6-E2I*+(;r%mkxdvHh2+|W8 z6%HE1ax;hu2A#+1m6IG1R*;+<nh(x@5mAOw!G`%M?uNzi{hpa5#iIeje4Kmc%A>OU zG9$B+%l+W@kRyi;Rql01atGR(e8_1OOF4(Q6CA!*3m(qUy<13O2#LeAU>Kd94=o45 zW5rm{k*Er#&7LRF_|Fj9s|#NL4;qsm-Kz^)4+P(%?2}tj7HQ;G3|lh?nvV^3w=@{t zs~eUEYeOYhS{kK<hr;VNAESx_&{-DX@e|y8bqSR_xyeR;pgv=EKtvE|y;+7&rbVew zre$f8QBY2V5wtxR;adi&Un|N$cOE5YS{5gUdzK|b%atT!&(g#^Uwvr560)Z<7=Ib$ z<Ls215^f4QTdFK6GabHWC&B}=9~9C~GR;Xb@GArDc}mIy->-qv4)YAgSx#pq8~Y-K zRSsyqxQS10K^19j0?0a1^4kMZRgp%ZaqB=!@OgZ=-HSDDA?>!HvgAzD!sIGT=o}lw zP59dei2KJ<+$unOdJCd5Gr;<jj3UAHCh~sWfDnUpFJth&fYPYS<N{A{-Ha0MN#U@x z5Nuiy<y?+tMmgwwp%mEtHSjo$a01PD=Xj%<2cNG5xh)NLet}zs0c=e}3aDInOUaK4 z2kpzv$nk{tqnrwoE1`F(8vEsd+yUC_lw=&01G)zwD%cTz7p$j8P)3w7c%KEx|M0#F zs9ylyGXvfe9E#kB0I#L<^av}DatE~)(!u*~U~|%7w_)F}L96qe;p42JJ`AiJ@Imwe zL1kzf&b})6-qLLNdOc8?nh0tK8G9MP_Bn(5v7q`06yC5fhOBMNfsOI{<T)888>Q!? z$A5&g7jz8Qq!fJrX)xqmZqONkKDj}aNybjuNyaIqJ`u3Fo|3ebOanxDWN3)A2h%AZ zdS?%4j@vNB-2z#zJTg2eJ2Bie&nE)1H_AWLvC_}O$ppS16}~siltMQdm_>$18AL^R zA=?kHr$Fb+d4l%Mz|R54vz`v226X;^ehO%vR)}ADD)Jslk09{fVbJwRkbP#Ej_F8y zl}o_uV?cWgk@X?=6+_mdxdegM$Ye)GfY!$cBD)>7rU*3OQtqGWXaHJs1KR@$8o!Eg zLD}O3R}a~z7HH-PF&nxT33LySTPbLKC>b=@j@?b*J4(>)g5Ez0TPF{9V_Fz&oZB=r zxe~Nb*R3+rC?hk;I3p>-II_goJ+dk?*VEY7B?aHUuF9xz*dFo{#M$}ohVV6vp!5P> zO9Xc_(tg-nuPV@f;>ZZEtVHl0ZpYF{(7Je|FjCxrvZet(rUs2;l)dHPyLvJV(D$k$ zuZaZRxdS%?H1}!@8Z*fT?I|x#GV%l6Uj<JuDMmTjDemcJo-V$i_=Sh9r!!K%!juE= zm-PupT1QwFgq}WgQau7oBEu^RqKr(;JTdkk;|oLR+A}xwd~X2T%L_k0&nM3>C(_s} z2eD4gvB=XMwpRl~KWJSm-0$dX)(~L^-G7`3DwiO89N>F?gB>$qWnpBvDcU}4OPa4& zgSZhX>|p-K3@a4BBCWpz?dyPt0q8z;<n=P({mRac;Po;PyFh!Jk>WW5sqDm3-oVRM zkeqQ;PI7KkF=Rh<MnRN&P)<@7QXcbg%7}6gf}D5Y;)tB~P}giCuQf)LjfgV_klln? zo@@K$`V}V``{jfiS{nI;AjV-pYmGc%`8?AQR`wVsd!(Bql`W-7#z6&9dD*3)^n%q4 z)P15z<w<cmHggigO)<&_q<yn6`?Nv#^kTCQF_%G99Rd$0|B%QWl=wk9*TU1q6HP9s z6eWLWMWN+y<hb)IPjz+#hZ~aHP|h&`uU*Xw%k>M7G(>g-Qo01M>4eoUo<^ZnQ6YXg zzEw!+1zf%wRwcTVxW^vUPDG>|;`ZV~)%$?XIdIR(O${;4PK=1ch&RxBaCkm}me+pB z=`qtW9i?oB?;S?U!!SF7O$(B82$fk*8IeXg2B15*e6rB%U(mfz24<cvVMuX>Y>$^g zQl=qf51F%JVM+vOZ(dXZXssgFc2|fgc#Q)_8Vo5YO)?J5hvh5qTs}0skk9@A^~)nG z(<^*k9CJW-$@zwW*5jhM88l}Lx&sGvUr|9)Zbd;-ZfHp)xKCe<TppCA<c3v7<yJt} z0lVj9N4bZA_MX7Yu@s|>f)w}A5>WdBeD=A!X<3S~S4J|t&NfN+^Z?y28dw5q^CQZo zu;L{5obqI&oGRpW32R6BgnN~N_x*){_8K79ab$#RxM5CG9=3KtaXO+Nb}jdH4h8Sm z@XQ47nNIf1F@X1bK<#c&dmO&68gvJ+yJ<4^v9l3z9zU#aS_$gw;F}ZjtAgE01z9Ht z9w%^v^o^5@BEk2MML_rICmDmzcylvMjPS|{au3Ue>=(~S1CLXLTju(L&f@^}e;{*h z;JfZ%_Z<^(hbdOQ2Bu|E?qR-(5q<^)^jG>-!q2q=t;vPhjilc<6LgLibZu*{WqD|B zSVc;BPGwXmd@eUX0!clrp9&uPc1O(BdAi{@Bgx3C5R~^lVfW}}I+aD{=0nEgjl2qd zaxBxLBK-W4jDif4+(SY0eqedfeqm4K`>@?DGZQnNEd47n*Vz(tc6<tC?F;Oj9;CHE z<(ZK6w0=3shB(&?!uoyb;J5{^m4me(L2FrIYb44u(fg{N?%4XO<(c4c1g8t|x?tGa zHZzp<0M1^ZvJbN6!x_AvH6zj8ttu3{7Z>LmKo_KSARxCQuZzKQ4mx<Pg)3++WKLFM z6=?k_v`-zJUVzgMSEr(=h#bRYXVaWyBVW+kHt_vspmYg23mC^bLKnz9CD{L<aRJDh zfOJon3UEDwxJwMQ_Bp832ehvRG^d*v1X^cl1f7Ee*$19m1@+rKT`ba5+`~*#oK2C$ z^3#)zGRjg6L2JtWauVGwi$QmlL-r9v=SJMavO#N?5%+3Ufbt4>4hd9#g2M%AeML&9 zVL?=uVX|kgUvX5pTV){h%muH^D9D<U2w%`0$E8umL7=%G#Ci;8udF0@%PP=%RQOtI zP&h-)@pjHh_RKQLO>xgDiHh(w$Lk)K@-o<(a4hThz~KlP*9%NXr1^3X8#G3hlLT5T z3|$`znrBbR1hthcjX`TmA>jo|&+v82=BY*?c9>;a7)TtE&XbM8K>MN%KxX*o8X6{f z1QjH^gU*sK&rFI4D^79G0j=v!_RMqyttW?+E#ZNnc!Q6zM!A(|;$Qm=TC;~(*9>wa zB7X$oTdNCQCtw2dHzdyTVDoa|I8TSH`vI@h1%<tZj}dgP5cgV6WHWP<j6Feqfr}-E zo1`bf<`zNgH(d%KX#$l0a-nADlt9&+R)yud6{m!UrKEXOz{EiQF;A^@g7K5!<{4Cg z=kOyUDlA}Po*v+P@1SZ;u&$K_r6Xusz%K6*R*anAkk`*9g@=`<;95To&J&1vWYFD- z(DkiQ_n20}?+SIpQKmxjy+x9HHX@F4{W6kr{BpqKB%rhbUwZ~B3w%N6w`C;f`sGLF zTAG0JEw~K9EJML%DVDtl;4|Yu=`|U&w#_IkKgp;9w9gO}kLIbyFndAmzaWb=NIS4J z*(eNbXIg|IsQf`%a}2sm)1V~M$g(uW!>cR_>|Rp$G=SHbrNh^PgZk;9F(R;^Angz2 zatKx)rDPf+<z<+=A?I1(EUzKqo$g6)xee3rjB{N!B;28E(NN13NEkxXJX$zH`rV*- zfvuAT<?~3R3Q#%-0hP0nMj4<yN?iE}aVKbva{<=!5h{<8?vTm`ugu5{sNK$xJ90tm zzf3G5gPk0c!Yx5(1471~k=OEq%lEL1WY9d5b7ZckJNORSd~Z<x$twY!M_C*hj$Q|W z(pg|>Qm&;zD0H3+)W-tf6KUkC4cc>&7=oj&1m!>XiULr+1GP6m;RP=jK=&BCL(7{y z-}E$RC+PkzFXz-?rz&W8hJ(*l0F~)31qD%{I)V5y3S2*e^B!{j4GmWU;RI`c<-^<? z4l8%_{Ge_!D2B;_!w-D#HtxI-fJkrPH5SNWfn>HXcwd#9p+y=jY=~J;5AhSYP6ge& ziBeV?RhTBbXF$%*b5AKwjd02buhY*oEK96(f~<|MG%SgX@G1hOZRGrr7~uz9GZmB* z<(vU4GZE#zAv7-sgWCn5HH)D2omk6oSeX#uY?*;Cy@Td+amnMnrv^EGT?p?J0=orz zR};Lgl;@Y9WSrs;9UlX?`#r-Uc|OF*6c!F>WrAs03TQkf*r^~Xr##csBd9Vm+!S^O zE2zBA1<eyDLiX!`?j<Qm3ePbJ1GNDm^<s8nL?qVm3UIbGOv2s<g|F3y)@9)KY)G!9 zL1K86sV6vJ6YXx$d66JLq20?1>L0jeM}_B<g6c2u-l;58obHF;p#twiLi-BTx^Kt> zvX&9t?hLmyOmPOSUn;SL?j1+W(dEMXgrGS=$XN=Y^F2WOZ9w}W;pek~_F+QOE~x(o zDI=hDoJWvxl3_{)XiN$`R}G#Agq-~XUQe4-0XcI6mOt}+ai5tL;Z+$Kkqx<T3zkPw z`idz1Q~0_q#2QYBz2NkU=$9tJ=9j_ZpmT6=x)IUd#o|xXWcSbkJZ}xPZ!#F&2O4Kb z<bBYYcg5+Tb`E&|W3ZEPlCf7&a;1}TqI+1Wr#m97(bCfZhclvIGWf!{A_IIrG;+QK z?f-$^2^k8$yWJFeryDFUIKlG?Xg_ykL{vePk(&W%?M)KsZaCwxj3^_V_YW2)h8q@u z=Ae<!Mf8O3mGsYa@=pmj%#4cgM9Z^&Wl<4cS)lVAVdG*xxlplS(^Bku;AN4SCuj{q z7Nl(e&a<$ymB3|!6L`-p&bV=dtw(|EnFs54c1(xw@dKTuoEKJ{1a6B%!U%gg<p*h7 zxa5Q8(vZ(N0*^Tob(WrU3Um)!3b<_rb_=RsU~L3wzmbwN3mx;IecwDpenLGHDj7Py zgb{YgWvmBiJr~aO02;5)iVDvtOLB*tJBuS-grs<Qf#&wm(gji+W1KT+fTR|5w!2$4 zxZJ>fmLbjV<V?bsK0FZP4H)4F-s?rvI-(Tcxs*xaIi;b{el2ddnHnaAd*vjf-ANj0 zWSNtk>zCu7=>$7twG<}ilZ#ysa-Q<Vm7hGI{a8>ws&p*#sdREma<3>$sf71gK<Omi z8*=_vdWw-{WumcfdWum-PEsa(%%sW_ly-xiK<Bg?C5D6A*N}C@;5>y?1_t7|a~0+n z?EdpAO9J&v!%dLVpkq4fI5nvK<ClXoZ$ZNy+*Sqo6*M>F0V!XQ%1cV~g<*1TInMSI zG37sc`hoceQ3it7-esVj8wXmCmx12SLY&<R-bV##=Yh`fa<>HC7gibtI_DUamz+_{ zV%XRVWZWPWbnb>>l6yI7*n5Eb7ofWkAmI)<I|Uw|C~bI<TO-3k`!G@M0hNb|ptE-| z%NlrF7v^tRI7EW>`h(7S2I)htXFU*O%OLv@YfwSyxFRRg7?dUv>rvt9GS{ur)6Eim zjvQzV9ekc2^o&oKonW<)y-HwpKCnJ}9%9@XvY!fc*M<|^?O=VN_B!-DK2PW5JV+ZK z9!}u3^@wvLqcV~+opQl<1-Ryb*8PL$y}}Kl=MjPHS4YrXDbksWVO2i4QDw>5VHuG| z>B#FI)4kn6W*ETN;KJPF>FfmF+mx15oCmve+N-i0X{~5V3g|3D&|MfIMv+MS$iU`7 z&UbZAF-!vYPjX75!UOX_a{*qUI}Y5#azW=zM>&J<Z3UhElpX=u&sY|fg?zqqc79?+ zP)<^Cb^&Of3MH(;{&WJ*ox#Q=Kyd>u_n~L6A^ZX=2Xb;foiozFaaU;yud{tXXM%^L ztOZT?cDKM19+18gWdDi<_$;dwcem0=Bk-MDursv5b7bL$khFqG1Mu+^NVq`4Jl#Lj zsSJ`PoC-kmWZ3-(u@}XU(6oo*KS+2~Mnwb}Cg++!&a{S}$%d{Dyq*<au0hOC3(m&r z=P2;~5<y-dHzrqt?qKoD2c1I%-oFD{@8F&RIvW=rrXk=vdMi@E^Et3SBW%7E>`sWC zsAnuf#8BPl1V29<<_CCr<sJpTUn3ZlJ|cWe6LT#Kk}}itK=%v5=0m}HP}^#dF=8Xo zxpl~E&_VNSZdJ)fVO8kmBhuNG>EXu3pm~HG(7A}vbObKLe4N4Sk|A?}p!38b;ek9q zXzAk&J%1E>1`C3pQx)Q#ogPr>n1?jR55Bh*YDYm*Hss7uaQ-oZuzkWI=gRtogVuzA z^AY6C45+vlN_l|VhD;1M^@5xYhk6b%T-+J641|X}^h{9XGi0HA%aO`7H2Wg_d=o>^ z>;j1elV(p+uA5OLs4VuVumG+3PK@v^MRG?;RJf@jIL%>kV~RWIZlEyGdOvtS09J2+ z(}_FM{07?j%#lWJ@HQE~^Z|{plEiS(*coUoYdWYrz*8TXz|X!#Zuf!q&qB?DjtQsZ z4BI64oRY+dpit0Rk7#uoq~GTT9?J%=Z$~LV5o0S5_vL}rl|sx51f5F;=_drI=cO8# zK+N(mv;@@wP`5$E@SI-@nX^Ql<3)2LIRAvA&iN4GR#1B)EGN0rv^Xl<G%v+H9a65k zID*gWhMjYaJRc9rJ5YB+`~~a(WP;}Ip?MP)2595{pguRK&4pYqqof_kd=%<=;}9`C zesP4>dtnBNpmTxqAmgY>?rzXMklFcA_ZEZhdB;<x<wr*N1xA9-Bh3Syt%)?g=AMy} zZ0H0!YpXPch&&DJTY9?ZlqMU4?#}kh0qq$HgpBDS(sCZmOhou2&TfawA=kmEWiVv! zH3D>28<JZ+U~x*gOaQeBQ^G-KLYr10)xl25d0rW*!H)W{vH_+J;WmgJp3bh80l`k- zei(S{7+PMy)O&)@qz(h^8-lh|9Q8fjN}%}!Vn#%;qnW2$3G^O2NLvkFcOm&V#mLPd z(kLCZy$`DsLF1^%>va&~`4RBB7hjBe8Mf{z(LJXMyjBR}en=UC)Q1DjT}DQL&Sb~{ z--8|n8bfvmx!(`8Ruo<i!rFRBcA~d$U}2l<mFbiQYl|S|KMXf|I-{s7iHvYWYj=hf zV{h+3+MS-k897PLpmpSa29e>WSyADZxt^|;nTg<Y0dcogz+nSkkAys44v8OdIS+1s zfYvz`Bt;kpf!fHGNbNMpc#)d{Xe>P^2{{de^+DPwpmkHQHlA-LqAdyO3x%bC+M!Y5 z<&gM5(g(KR-7g=MpF#790l`k-dqa@R6|fqx9?*G2khUDiK5S~>=?$zN;x>3a?H*Q) zp~nNZ4iOd}(Dhm{{gD1kRw8Ij(I_k%Tl_%FBzRj7<X5D0gX(AKS({)#A>|2AXD4vE zkF75729*Qw^Bmyr1ouTi`4hLBpy#XS`Q;=zn?ldLg{>EanS<yTd4bNAuQY|#ui&{a zh~E(AfY&<UGz&TGP}@5x5njb;egpOSvD5|N^j8YsgN>&y1^GP%bRP<Gc>xM5kFXpZ zVFvCSLDM+6j|lc3wC{l07J#_J%RQ_lF(NSE%LtlAgOiIrL3W_H3ndI8>WvZoYNYl7 zbUqo>r-rU~L``QX<teT@2Yk;(u3IsD%?jvVG)Q>|YpY-@d!S~6#vc&#n>h0uB;6Y% zg4XvMhZ*>Q)-i|Y7<dPR`UPPb$vHs<N#S8-DG`DBi1|2EEbSji9>i1wDvSJbQrr;c zAf2z4j@hQfV-D8x8=@W-*FI?Tx&gsXkn>Y8`h!lEKF*F6ej$+kBA~U&;Jk`9zXlrn z0@XD>(DOJU<y<Iye<4f{IDJ)u?}Y%JT@7#Bg3@kccu+<P=*|LUH=vdYpmsq)6k6LG zqBk%fMEf{9l_j|cV#GJNPYzC}j-ayu(?M&8u$2?AvJtghM9#;Ev>jm#ZO0(r^^#)= z+rw50au0St!R|CbDihodb5h(h%A(NcV<Br%P}_|VF`Q)uxJ_N@Xz7V19iX&H-63<0 zXys5=k~?%Q4Dz@b+FcHab$o%~_B1qJ5oc&2&fx*CD+0$qtUr;3I*y21N5R_Jpf(8j zejn8P9YAXe@{sF$x60&PH&amCJ>1X$G+qL3v!TTwG_NDp#UjgN3lpUAb)<dhu)Gc( z>&DVvhK2*Q&d7kQi2<D}f;nafaZ_ecPLhW&e4QF-3@*|bJjQ@jPa>rgXUBBt-6jyT z(fZ6Na#;G#kbD3s%Mt55L&0^MXE5|$5a{|+9OW(6aW<&GLHW}Va*hhb4p1HdwZlQ@ zjCq2`XUmb(3tT;Dk2&Zr)TnUKxd5PhJuK3p@tK5Tb{P5?CM+*O$~Un8oZTQ{i?ps4 zTN@sFeiLkb4%&W2zpDn3-{F2iyAuSd-a+qIlqS1dmV?S}Z2d!wu`O5~<DLUre+ga_ z<LOeK?u#`qLBbc>7f%lecC0{7(|FB>#xGLaJUsw*uNI<SLrQ;;utkXnP@0C;vCwcS zO$MDgVH67PvqIHkum5nj`3jN^5$y!DatTGw+anUAjE9xosC_%oxHjZ`2k;nlW_Ef2 z^j>CoU4~l6K-(l}{bbm@fOCeCkF!%ok_WCj1`;pOFu~DB!ji@yajy*xH)y^vEdY&; zr@C6^g8YlEzJk}g&^YzU1l_d^zQa5}1<QD9TCh`2l80XoXipp5|FAX}dVG3>RV6xS z!0%81m*HTwX!Rjl-2mMi9ROMjoa7EVqaBNXL34SKF;D~eT}8<CJ~n$i4AMdOBSk^a z*@Mq_Ak2b>o1>+tvzvB!WpW<qd?L`ejE}Pu(mX>D>bwLfO;kD=fyUG#LH7cp%;_QJ ze|O8gD5HuT)ccq~@<?S6YFdK%4YmIEK-5F%@c@l~aNh^iZ-R|ef$MZ=yBr)3sP-5p zgYW4D&9Nbmmmtonz_152Mhcy;@&onxA#o4M^Qhwk;C>a%9iV;-;><b|h<b2bfx-cj z_LE@qf}l1Cc%1?C{ven-(3$<ti23IzqcDTu9KV2&O!#;fs4oOM3lMb12ilkbsEz1~ zk@sQa7>IEP(EcdYu@`W-fy2oad?rOuxLa1Da|TlV?g(1fnuQ~ufx{um*eMIvulIAt z(yxb%8zH5&KyclPOCNk51XEvuCt|DzbdN14FP0^{`$G2#BKKF(`|OVCu(?QNH-gd= zJbaMT5;$I<V=CeBwa4(iFgU^kGEY_&2yW+s>-b<N3^D9=tRrZwECrO`u+PPzl`kF! z1wNqt7DjHS$(5+_h0SfyJ`Sjl20D)jyzT%`{|4@6^tKaveTrv%6;$pNfX{_NYmb5I z0eBw(z1)Jehcg{Bp!puLx5gPfMhQA|3Dl;Av}d4YJdSo5(%37c?Tpke(FX1L$2Z1_ z>{obu9I1=}oxcD&lM}t~1s6we3q#72(g;|;A5zAE{DV|xK++u4@1QUQw;eIsf}pt^ zSep($u8dx%VD=j@(iU>N16<#x!@|7;bRTSDgi~=;Fw(u9_`@5c3_|w@YC9yfG}$Pl zASy2qwNH%fCTN)9ONZe0EmR$}EQY2HL|Km<m*BBZ_&t)KF$PE(4WAQ39>4TR$xjTg z$nkW}fc0U)WtV3Jte<O|2HLNX6bhMF#K?On_Q3QY?jA*U7d(x@+YT`G;P8jpUm9Tq z+NWa(z4sC$&f)4JjWP<7+(B(06IfXZ4i}U>i)bgL!RIkt4ANn2tnNd~1K{(@JwRuy zAlI?rbJk5kZG7Z4a^P@>)vt)QG9>LI)vw+zj>VpCmj0mg)I!{Is#07$!E*|by~wco z5Ha2eZBLaZ8JRjKd4yGZBaihtXXIeS3ET~)@HPcxe<yOCj68>q)Yo+P$^peUXissn zF=!twn%^<y(Z(cD@;5xpy<z<)q_Gm@`1A7c%1H{hG>U@uM^WQ2y&QA~b4adbc2sCZ zL9%gRr4M-hh?^m(P3{fN8;G%6(3+jV0w2)bG}+L7J@9rWw4U*R^(igNJYCAmlA-71 zBJa0=jD>>aE1>7sIl<0uL))j|1lwy2Zet`7I`=99G8O_iACw>5!wRB|K<EEJ?j?bw zOUOD|&^l|-UGsR(yh7On3(02)y|BHfKA^Qexk&rpoK3TnL3gOQTN)>28p7MHk+Acw z(DyKa?uG{M>kTyXbWTq9g0?4+{XxQ=i5O>Kf%+!MW~I1Wg3hM`-Oq=dhd_5@qTEI4 z6XFIsr=;8ybk+=po8f2vU_Td&IQ6izu9CrLW8u~V_Y?SRDG$(n$vN4uy)dX{4kCV# z?)fW$-4jWQe)RbE!8p4Lx~>dT20_9P=h-%xX%lv42JHMUf5<s&c+(uF8(`;Wg+kX{ zqxc{9xj^V)4LyqmbaobcdO@5|=7^bIJn}*7FS4T|(#<?wJTc|5pQnZ5N8~e5e4*!J zp}Qdwo{t@?KyipAALBe@3*9Wp{&>TTB=?*=(AuI%=pC2nW)czqko!Yi3ZU~}khPSE zyat-@@~e!B2!x%(mF`^$FVnEa7ig~(*dNgI%Fx3Jer8-G<X$r~PiJ2vzg)N6sF3V* z&+wcQ@O?1uZlx*Ewg|#4j_IJi!k|0B2Jn8!s;F>qcwqB8%x`Ac%NxJq#0W<-(AgQ0 z#)0{e`zjsNePMHD$axU?zE;TDLg?WL+KZT%7;a+b>1+TxM+r;1wKR%~@XAes-07E} z7#@@z6%OsABin_3CKpD&BK|JE6!_V4Zs7BXP|_{5Z3~Z2*qLovCeZWqLP7T#!~BIP z??C=HhK#Ae^*Wov&ddUz(dFq;oQ_hzfZ7b8bukf9IatmZ0q@fV?E?g@M}@30MwB_I z=RZYai)RwbB>3IDrhb{wHWqT&!_FcD-J9&}Sm_0Aiy-_7I^Pldxm+k=3tA8C?v@<| zx{tLgKi${Z$pm&L6uLT;yKY_b(>;wM4WmHkbYZcZn6tVt%_r+jJVRK!4%zP%+}8+? z<AB_tf|N{b^&Ip(O;Gv*kMSYWfTy#QnNK)moY+4THkOW%$1GQ2dt6NmlCar@xPudP z7qlsQISr}jQP1*130L&I;|#u2vjlpFc}ZekSQTiGZDM#>wkP(sn>Og2tfVX~=Xhb{ zcUYQr%8CrH$npm5%W@7)_W{i*csQA0izm?hALtwg(0<UwaL_!rX^v007wqgw^s)=r z*<R@Cj1xiYo`VfRXUTx~l_lj`8YkzvfzC5TR|`H5!Uxn(K$LkoN$wQ|$sT?Mu(QIE z(-y4lg6+I7Duq3CeJS>{zEJD{^)rlvOp~B@y<<PyE1fpy;=7e+rbK||0Kj|bvQpg2 zQSOh1pF4(j#{y{l5WM#nx!i!<qmTw#gP)uW-fsw67nO$l+~Gj@d;&ObF!e*u_#$vd z7m|I@@lZ%!h4#CvQo{{1lZ?s<xW(1jKN!011YAZ#_ESd~`<W(%dzB@*c!KpOhMR)U z{4Gm%gYOA*jS7#-0F4=WyII2Q!sZU}9zxLiNYJ{H)Cec=T1h1Hk^1_ObqNv9UWoB% z(B65_zIE_^Gw>b)<Zwpr_d?dTx|L@p8|Rcn=2{km&MXM1L|(t{m=9Vb1{xm#wMSAw z_f2O)?!pAQ4<rYwH$h{vDC<tZ>*TUQ^)!6n07xx#KGihY9pWySy}p@<`-7nS7BKDx z0<G5pnE~1>nv~}UTHltH;%*6wchH*4G^}QU!U60S#|+T;Aoegc1??L%NCNK@0iQ*d z?3o9ROVIf)pmq14J+z>8f*`Z9iqq4O(=zf{%7C7W23lwBRF<3<RE0FQ0ZNPT^n~62 zc+wE!47~gZqa09r&H#lua(sCQ!}UYcbOq@ACw))kaB<E6o$rP;_K8@72tHd47Pgsi zvykROKxcq~#{SDQk>~nBX%)O*4;nY#ptym}U3!4mbRhCXCL$e!%MVaH2(~W@tPebX zNPakh%`gR>>0JdX>mrRo=j%iLf+!b|^DSt-D=19T!E1sM<pFa3EKT<CDob&PoI?m& zs}kYtg&f9akUN&ac?oP5c)bLuoDK))r-Gzh$hlVml}^c?c}VMyq3IgFH!2enKhX9D z<SYp6=hB;cI_H-~Amot3I0JM(5$HU>Vo!JYeVw3j%Cr=tu*_t4x2!}%OZZ$xgduz{ z6sV4d=`BUnBcO5T;`9h-FZdqy2xm_-Pd7_k=H>f_q?daKmxJ#A%1JhW-ZK%B581O6 z?1aZ(>E$%?7oIxJ)x;NGkKprDHu%hCa67=z(l{#It2{E?uPDM8UazD@RHj$>hq%J( z5`1<d&X|Oq%^!?%FB>TAaM@AiTbW%N3au-^X$6rEEJ6JvpUV7n-;neQ+Jt3b9!mQI zbY?!NO$s`%#x=|(B-AY=(%7pY*&{IBFVhK@PpUjU{PGjSA^k#dJ@1}UoMhyckp!N< zgsf2kwNdb#4_f7$3Exj#><QZYPzlusGXr$*8t%9;^n>1O<mv2K?CBch7HZ%Z9318p z8e-@b0-j&SuiwBIS-&%^oJX3=#jn2#MZbqv4rp&SXrCn5Zjc}F>o@dsM)JR_p<9@% zD`I^fVf_{UE}jKG*(Gk_@UvCQ)4klIGC=!N;BEk&Zx!r>C+!ASLhghD`MVr+&Le35 zNjCBNBTZ5DhZ%&qTZTZ+B1j313{M8tm3Zt=u0qzI5}t!%H^?0Uc-@~|j-ubFqza@5 z857WNfUZ9%A_Km!8e|TB{pl4L`l0(}L3%+LzkXK}-%6x(;9ioG8fuvf(g(-*(@}-L zOCaR#MQ6u!(4Ehq{lCFRVW!E5{A5X>d^be)Lt=y<bp0J7KN9kTKXO`jcPkAs@+yo9 z_d|puem_*9==TUJ3l4?t9f7(5zkVZ>vcw~(EEIGWMtF`vVnkF9I2`foH$cgY?tY-P zvj*U~HX~n1o+P9nxh!$B1fAyzT0afZOE@nZqWIrEB_Pz*)GZZx&o6%aP5h9{Qs*F# z5JM+du)jfegD`&m75*;SNNLD1JID<h?jXGoj6V%kLGMBZr$NW;MAY;L3J1LU{jwa9 z?03q;a6f3x0@PnVxlypQU5Y*3g91_f33988LAsY~P#~&0P?(y4+=0L@2I)}-mVqJJ z;PY;CVQp9+XUA+<eT-zbr6;_OGYx_CX(8kF;QGfo$UD@)(jQ5EI;j4OGO8$x1nq~& zE(i%RfSf@HR_|sBYSR`Z<)(n{I)Jzd>~4@c6YyNWmn)bJ+S^wNI-3_XW{Pm5Q($Pe zWoU?DP*kXEC`3Ovj8c&MUGQ^he4L#;gF}N{gF;clz|zwrr6{>FJud>Z9s+b<L?&`P zg6dMsz|ia*zu>SSudr;eJ#alK?v{bcx#0b*1u40qd1z&b8>k#Y4v&CfC-bymaKErT zD#FVkH8iIxC>(UoNmylMxL0u$QauI>|Ipm9JkS~4$$8nJdIWSAL1k2UV7?cu{qJm8 z85N#V0Gbm|4MuT0=*$yXJi+P&OHjK7wD&T~IXw^7w@t1@(H9Wv2JNSMK=VE*Ts{2q zVfvDc9ZPWOjm#|ool6mzoNH;21Sx+l;rrm+N|53#ECnep!$J+h(n7M`LW9Gi+@N6w z+K&P4(<7xv7XwRA=M<#=0sNe!Vox_W__+p9Gf>lD4qP5GUjc681(hXbrWkm7gjGd> z&a{jO0`*6$K<k=3-P{a3-TbnWb92g5oXgV_J%S99J$%i4DlPL8BZBf%!aYIf)s*-c z7ZfKM<y3<1y72+sQI{K9l9=aPmKfnzl@cCS<x}Nq><by=1@Cc6HVQLHaSsEHF{FEj z!QBL2i;mz2C55_q1%$a;hK7eZxkUtn_We3$gu?0tw6OHa1+7&Na!GX0DUL#)y8`XK zaIXO0kKySaRhFCy-j|Xd7!ICi2j7u~<hLx)`VXJnl(HnFl;WshQ2*1QEZN!8$luwr zAlcZ@Fe<_qbauQ!WOz<-fKg6%KuDyCADaJQ={LwdtSS<;_7bCg8ky_q9Fz+(19cr; zdI5ax3VcnPQyOe-m$!RRptnZ}Xdh5sBzV6UWL_8?-|i_npmW2J#*Fg4BZ|}EYq7z4 z!E26+J)KiBKzqMZjUnsP{4*Vm(}J^0BSXM<s6h6bdKeUV2b*Sq_TPHCBtz1Shd}|T z&x~wGVnkrEC#c;LT%I1}oC8q@THga&*XrR^nPePP1`h{t-4>V+YafJy`{EW*{m}70 z(7KE8$b4u&-8Cx0FUvbTC@0B1%pfY*37W=(0>OFAump5=I$~ch$dB$h20qT9Gu5+; zJzWE#{kOn$Pw-uyDDDA`7Zjv8L&mYt+*A<d=7__c<>@GH3xUKz8fcHPdr%;_59fh2 z2I`Sg85!XSD!-8OZH7T)crsF4gU^YnN)0yvsY5Bd!i|G6q71>}h;-l_1S{Ln@(Cgg zL1mOrj%5+39!ha{L!48CNLL{HAn^rTcY`$c3OZXAQqO_MZqdr9$XvuY38H-R$wiE3 zfyNv?ol~HF#&Ym^GHB@r$^TwC=;NS?5rLqwRL~hVkTGCb-xOmUDx)9;DcvE`dyWC9 z97En4?*%K{p=AWhm?L=n+Yxlv33wklC~YRYhgGI{fa@NlxC5W>2O0+gr9ntt77TJj zc{-@w<Kyh)>J42>1lg+%l7oy}p{Fq~@HucfrBPv^bm^3noEK#3?P?haD?gGek<5gq zGf&W-hiq8;7-Tjg&O!D=;v1!I&IgHu&M-;N3(JAcA)%S$iX;xYgEBud!Z$xKyrLN0 zE#AS1JPz?+dPb15Dd?`1lBftT@VP1o|3li5iQ$p?p5Yl8$(11YmZt~1=C}sAhWUF3 z=VXUEql)=BJ3-seVUWD<;#%zKQDW&08`lA~@j%!;#~|Dw!z;)&$SowtFbU+x2*~<A z^tG*)o}m51MzA$5puR51U7$5_8DM{c%P?1{S((}3_E%y=P!i0Y5n+&W#ycE`ouE3# z17n}QD=01^jQk+|iQo)ZA7>|X(77i`;m|fuNPar3Y=@MQ;5BuS{hz@(sORZ;7$C}W z577QpXgkF<2y|~mKG+ZNau|^&(t;7=!k{t@t2$Wz$CU@%b8?bF^%(N_GiKT?h>Gxq zxWmm6k++fhgP`-PkkT2rJphU~h}mJFb1HqJB66y{-N5CgL6SiZw7d_@4|PWLQNV3z z_iS*xHz3%t9M+bCh=a>3P`v=!yOooan_`d%F4rLO4y_v?<sPV>0<TvM%})aDRd&xV zz?vr!bqc6_2AdsjlwIU)Xi)6w<^)Z9h%iSkgP`>RWSkUwPOulOj|obzC}9duD+Qo7 zS17h}4HPz5&%A*5J3(<!0GdC-;umlnA*IQJ6zA+>Pd7(sJsE`RPH_DVDVKsH{J?E` zSRMzZ?Wnx4(n#Z=f+QmoaGeM#FLS(-4Zv}klbq|8ndBY{E`JbZ0^}U9Ah6$|eSlz7 z(0q3>bj>KVJpdZ3M(xXcL(?~CJ|HSM8|r3Q-41Tsfa(mSHaDnT4JrfAk%7k;Gf?VQ zXj&)$%R9S)%YqO?Cs^HD1(WxVfY(ouyoo4_;d608&^BtKyIU2iKe8chTS)nb-G0!z zdWieLYo(F;YY?}A*V6i7lt-YpSP-b)fxNc|Jue%D8H5<8lp^Z09B{b`Zr4NR`qGi( z5wr&gpL$RphJ_2ft?Hfw8tVb|S&+tVK;=3jPk{0{D9xbt8^LJ<OWg#jgFtOF@E&or zdJ|GUgTmR>tvCr*r+fH9(+#BjhSoR8{W+L?0W5z)@@8N<=-h<lOeb)84H^>&g4RhO zHzSo-AUC;!(+VW6u*W56e$?4DADj*#<p!+p4T(#v^;UKPdL0T5D-SQjC~RpBt^EQX zgLe+fi;4&eNHH=+v`a!wGm^r?z~@O2h-3fAaKju({fwyJ!RER{%>ea-!R>dG{1kUf zFIb#_(t|f*{43qlxg1naRe|Q@L4F7~gv=9w`zWA(WH6}ibp-cKk<T!NrYX#FIoAzz zmk)dol&6bHdLouK2spg4rU%gedx#&PWi~V(N^(+z9Ww%g5o05u`EXF2gZn&?F?mp0 z0s94ZzcNT3DNR@+&EZ!@Mfic%zC-*#I3L2x8BjP8h#$CGaCjrym*6@yILt3C#1Imu z&~`IM8Hid(Lc+rnDNbQ#1XMa9=Na&xC**oKF(R-4G1dbfbB6gFR5vC?z{hdGas`lh z2i523^>j&2Dk5!z)*BT^1!sWInnv3XU4W=NAZJ5*<IaB|H$coVEGh7=EJ^VO?;~=| zNAe$}oQIB4gUZDecX%HZ>|by@IXDOAFW5d7l>8oURFab#hP2-grG4g=lWZJT3|mKw z($4^mySTWT`eX%``Uaa+c*4pr=ZvH%(0BoOz715Tnx;U)IjA5iGd&|L%+D>tz|<+s zH77g>DgDFyG~l>I+7AOa7imlZ+P8-6k3u`I3ErnHFGz9Es7x|WP7edE0|*VPOwP5e z^ma~xror;`#0cMX(0wbO?yl*edwW3RZz<t^pfk=hyebi8K5Q>2sQ(E{<DmH+Z_v5I z#$llKSq7-_>{t$}&mtqd@=`!&yW|B`g;zO&_a-8*Q9$H9M`*e2m<<|J0-2ALhrnl$ zq=bhe+M%F61NfX&$k_^@{%HXEctT}1*eoB={YmcS`Dkqc=)O2)|DmKu>~%LJt%Btc z{S|{^@V)ny*`Tm4NH#2i))A&DNd0}Zwg#l!1o;)#Cxi4EApQZ>p^@RqpnIqw{f$sa zzrZ)R9Ck-n0czO6_S%5V1^0zqgTnk=LbG!M!(1(cLo31SH>#q*V}hOqSnP$i&7os4 zmF4N6cn0-xKxrZ>HzzLz+8+e%cLe1rA7`g3(0X=H=OB=|X#E>_8w<S7(Ay&@BMK=k z!SWFJj8D*c)VVpOQNii(vHEaBr{EC7pnx#9oWP(k1JD?kL6RYOU0rEZB`92w@&;&* z2zqwEH&PoLY<2|X94|;7F-=Q^?xz8r;{XdkSXt`j3Yu34ER6!)0g1K#1;v41WnzRA zC~rXO1!qU-{6r+E|6=Ls3|bow8ovxf)Z2)15zpLdy0Le#X)ZY3Bh6!g_+Fr~KvzrS zq#RKD7t($Yfz+dLH{h9@ukd$CF7U~X1lQ4Cc=`bF_7nc~BStWHVsjTPEu*dzbxa41 z83eh8g#;RUd4;+K1%&4Kg4=zbVYt_I_=WhQ))h$e^4_k{F%vgXm;{x9&YlI0<KgJD zfX=4P#v>2Pzo2mjL>~lYov>qiicv`wXf7EPj-Wlyi1Vu<bsS2ah8UBBrhU-73{)M` zxCeCYGvthENS`(vwzkI`v4){EsM4{>6Nw*&#t+JLEcA4CLmATp<y%->_-7)<^wMDV zgY63f-PZ>yTPr<1pyLl7zMwNt@?m)bv@gy#B)inl*`(4Z%d^-MR@Y^kRDsT~@((sK z@X7Kl^>Z#yN2rTLR%e2&&OaDgoohL=oNtILvc3x6Ocb>!_W6cD#$-L69rHkK#o%z* zd6c2Wi4lG-Nk*nwkr6>5$sXW+q~LKZAJ7`;2ruyZJRf(%j1+gjd>_z#1mH7JLyKYO zs{45Ol}Cm9f%?|P$;M8_pfMJ-eok=;>bi*HlyFn<zD4ldSA;Kgt}eS2sz2YWvOEv8 z?kW+~Pj+!MM+$G$ws1&sx_1OPy+FrWE2?1aTuA<e_#3o;6m<4nGV(ee(3~TvPaWZ# z4@$2-d7wJnD~BX|4M2BHfXd<wy!Ly+)~`9I!_%x!j&Hhmr6Yo$9hvT(>4?_WDNpw@ zgr+rT&>44-@peyV(A@@(6|nT=8w~5WmxK3vLdFW<Yb)|V{`aavIoBB6_r#G8!EHoX zen6Usg!UmFivofj^SlsiH$Y`MXx~4yjZ_f~pO=J=9m4VlxIOHWpN?sE4s;v|bY=={ ze7_vxMnru8UK17pUK;?~0}E|OW||lx+L5N9@hSHtW6ylh8~~&Z2^u2-tu2WvOU^<G z1Mrx25U70zN(V^oO32u52I#CG==gg^QB*{Bfj43-1Y}P@RAvUIpMxRe*0A~#>}QXl z{N!9qV^6mr(7dKwa-LUNawgbJP#VbdbkC{s1l=R<?34jd>&~uu2s4oOLxbik!~Akm zJRo<XAh-L#b6!YujNq{%(7aYKY`)$JboXFLVz^;>66k&@r13XUTfh@EwhA&ARHwtn zbzyfU!_VY|<SB~Mv;nj}!k(rpKxL$FCTzYduoN~<?Coli9$s0V4(hjn>n_mPtf2vX z{RB)Ms0@d(LF))n(~N7WZ>EU>d~VtqzP1(71_{mx@Nsqu^l^4_O7RG)ObqujOmPoG ztk=RE|1|~K30nsTcb^C1elb|x;2R988+_AYV+fG7)hP2Ipt3YS1l^zT{DwIPlNb&< zCmzfE4JdpnVQ~*HGr-~NhZMd9$Gu!Fz~iK_d`w6^I4lT^z2S%#W2AV&Ii}<7Y5|XP zEN+2}=TzmVV{3Ck+k(X~zo5oTI#Rr(<fNdrBVpxMa%DyUqHMvV4u>1y=0N7o;e7#! zn?Plor-4tFZ>evl6L@V6sBTIIwfT*5a#MpdpnWl?Bp+wc{08LQ^5je~AF^jD%n;gt z4$Ov}X$0!eAnF?A_EIR;_7QrY8@vV~J1W<$Aj!iQ`7ES-L>&Sd+YSZIl_2`l$mfiJ z?&I+bt#opWa!<+e1n=FC0?qq@*3?4FStp3!B7D<R+%3`}Zg<K^u5>bowEsZ!7#3xo zZYepD*(C)j&Q72;@}T{u2FaDMHM+1qUs#o=M^Kq3WGzv8B&gpGx*rDImV=oSX#zSQ z1ynXCS2~p?WjbXh8E51~Im67VsDi|aBWPUDASJ@9)Dw06QhvChA84E<15_u58<`p= zxmTokRf59HDGf9>09(K0?NI`{=O!dAI2*J^Ki$i?#1gAISX<pWBg7k7EwnENy8i;y zeusn&a+|;jd0iFSSzpk;ASC^u%o)S#I?%n1pgk?f;|<_D3fyz5VCfY+{stZ!0{0Wm zJwf9+t~qZ0;B*KQGX=$^0XVHf!V_iR1!&DVq&@`C`DY~Orhvz1!;NwbkjKs-b6M~? zt_oNjfb~MgSRrTQM|c){ItNuoML_ca@|m8{b7XLjxi}Sghr3lq8T-P<xIpeP1m9Wh z;g^&cTwD|ZYyU&WPZ0Ki>qn4Yza(Fjvmn7^3GjU%$+=-LcY@|-(!Goj{ctbPcnh*T zc&-wQKR|0Yko^e02f#4{u~sz$$z9o?F<XS4!N_~B!0iplImw{2nBn87pfM0gpA&TE z31~lMq)}L<cLZd847g7XZ}*2)!p4UnV+4@4j*l}m-=c&UbbQF!4Y?f!$=|_XcS7<L z=saAHFqCuN5#t>oGvMJ28s9|t6(z3W<0mM2&L`KcJlVa%)El}+5p-rED9s_atH5as zt!)FV6a1V_s(i8n;q6tQJV^f;yvHc4#4!*wmV&h2HX=A9AGA*oS~uVrpD|1dbG1wh zb@TEH3C#hodxNa;!nao4*T@^+c#m69K!l-FaB!%h7i5gIJRLqZioRY9dY)8>Q6#MY z4my7W+L!Px^+W1QfW`n|`-Q>{oE%a6aVd~>e4sX?TTmJ7KCm!%w>)n|`41Y4g0_*% z;q6&)_+~kR+F=zwS=s3!;cf<rZqV?Aj!l8gfs_g0@v>0(c$Oh(Y%IesG9oA+R1Sjm zg4>Zn$YT;9KUG5F&lggU<d9^3UXr_IW@LDIDWse&PxmqauSo@+<p|m<2wO{1>Qk9t z=$&bi4nDs()1uJR#nr?&)3MOUumUcJ+(u6dx6DonugC$dS5F0<c>>yB=Zq)rq35-M z%1-c{6l87&+~)%2%?RB4M2vl%v-7=-KxaC;qOVbfj$a0X@)VwNHeZxI4xq6ENEr;8 z)4=0qmr#^-^`P-n$apOweZJsvJ#d}`ucvkbozD&ND`<=#cAgG+t%g%UvO$<hihEdT zvQZ9bt{vnTn7>LBBmCS_J%VzQ^85-Sb1QNnbs3`k1@(7e_Q2*uLFeM6ghS6uK$*jG zau3Z8a|_Q71&#M);0bdB-^^@W?IZYnIl9~6<8#iSHNs&=QQ@Wrpz*UP(0$e6mZiy+ z8RnpRA3CN1Z!dz=11SHwg5wzEf26fqpgCy7d?q3eK;q@;A)#TRfx+eJh;@+AvkD+} zU4eh5V_ryQGN^xA<ZYCb?E@Zj0N+QE6KNcn9vlkk2ZGasM>6Q%5KAx{tRGaTSd@8s zq~t_~7lY<Wios`wx#yH6<@tj2!rN785wLkA)b$rpxo%Y{uHbn}&>7-}Nx6RD`({9G z5X3qu<T(zIeeimq9BF-adWunwL83G0KF6@!#E1;&8hTJ&oeru;VQB`ub_A)953k3e z^NPsp@j&AppgDRoPv;D5>Y#0)Wbl1ip_Pz(uR@)Z3p|~R(-R{C;bYODv0mtWJ$T&< zBwn&n=59dcCFpJ^FXO;;P&|5q&uMo9-;)S#<9dXZMjE*pg3jymbdRb`GA;n$X9-=C z4fQXmF3rjH2Gz%?`3BA3j(I_u&^51+xCFJ^OOuQP)01+;vZ5mVsv;x2Ou_bo&i-(A zDv62+$^e}^8HqIi3Go+fO%G^35!603N%t}cMXbjJ<?%|3bkI3sp6-UAHOAm`GLyo? z3?jkj@Vg=0j!5TV_d@alv>lHaLoS2(899AAA<t76q_~y%1%(AUMFg8d>p!$~XB1`- zW)zl@2<pcmkB>msGeFnpA*DNT`wX&v1~m5R2`QgZ$KpZlWYE1`;PvKyIVs3t7VKn@ zR0%p4*e@d`JS9KH*(o<U*U~I1+$0^eKOMA}2v$x(+Unpmi&D0M@`N{{T@Klw3LiIv z=0(W(QfXAUUrw^IUj}Gj0jQ4!4f~uFcSw3dw+l9of|M_?%*|Ppc|y|yXze?w&x4#s zk<0|meffdX3)syFH-gd_qI`6Bt4efsGL8y&D+2cu-9hK)f#-#*JY92KlfnIF(ApKG zb%EfuC7`{8ZYe%_(DVx{!@=S2mK}u}?x6l&ZgOr|PHJvwNmQ;|Nn&_~Da762I}p+% zjogZpKxf;4?Sq`lkYr@)4%LIVyalEIpd2r^ps)fr$hsMD8C@EZ9p)AUxvK%a{sO0K zuv+MPEY$Smmy-f1=fUdW=^v5y3()7>!Sw^UtZ)Un6~~@v*qE}DPf%F48LSM4ltZww zBPai$&@fm3Oi)^KOoyJ`2p>a%m(?Np>7e@_l8u9Wq9PDuUs13;RRxky$w>kA-@}XH z`jNua%+uYnG$_w2Cn};K2b^x8aft0~5`Pz8+MG=SX<xwFfUx!lh{n5@%eTrCJ}w2S zqmqohAbap2<tP#QeUbJ128VhD2Znh?!QuqGW(CiDBWMl~9A=<$)!E57(HPVQ0+o@F zcq63W-^CT#e$YO7w6)%#^Q>{tLHbsK=T0GY8;<?pC~aZTye!hVJ2<@}`VOEpn*|C( zpB&g62xwfzF+bACvN9?dwigY&<`ofEE*9yj#^CcBVDSgvV-9Wug4R>R%N<Y~05aDI zx-%v+!pkYe8MNmgv^L5yFQPITGVcmqn*&-??}>0<0cdYV6lh!yc?~;4zStAIek>HU zh8xoF1)Uv$m>bPcg7_cao`d##;r#~WK82q%4f_<}IrEa7)ClmtFT80SZNDP&I%QCN z;pt06R>Jz-@IFv3{9Ff+UgWkbtR4rQ{ZNcP#ux(GUk09|M_rExn^%C(eSz2Hf!3{o z_XLCXJ%Y}82k+5D8pDO;7sMTn!Js`f;QKGIt)Yh8hXCGRPSm<Cgt?hcP`x>z^^^hO zpmkKBIZn|0Q-ohqBIulri1Z?FLqpKrY@l;!a*~`8Z6}aFAmu)^&4T^B1Vb8~mjJ4x zGm_lP(^1y(2P66fAoqdyZG@X<C3%EpM@9IigXZBtX8}R#Y)Bmnst=(1v`I;8puMrg zoNrL!?-Gezj+F<8g7<HN(+i%y8+h#pG<>nwm1ylj^mLh=8wOr42`#Td`(|^%eHh5z z0JxhV<C~y*5L&K**AamC{)YJEMncL@=z29!Si#0$lPeMZIoSF#c=&?bt0-oI+X=Ax z0OBUl`ZdT}c5q$b;p7z*Yzp813s(bMrwZ<KJ0aTOkbDA~3x&H8d<H3K?_n@v4jkpo zclYc9P+JJp=LPMHg^eGA+cuzd4@&>=^%U@NSI{^nI4sFsdy2ii0GeaBOoq#$#3%H8 zm*Dbr*t(MBO6XbN?xxA0vroZignIZw);z(-=}q%6)*gq!;}slEaQndLc$<`YXF7t? z8i{QeJZ=H)iv*8NLe@K>?^gh)Y3yZ%3GK=XM`P$bu2-@F<bEvVv3STBDWp7zG_nM* z<-(IUjr?HemEveuK<|D9jr%~)Z~(OxkjKA4<3&jBK*~$-@gH};vZ&0AjO5(p0?-;s zPv;b<S*ZO9?D3gRVtj(n6~b{g4pLl0+M<XujM%nhNV+j3j6v<c@^n}~4mJ)4%Io;g zwg^NS!$YoTL3%+Lzy3&+^HtE+1cBPZpgJE<dm#|zd=libN08khjNkrH6!!;*hMGhe z1O<eIS-J*=MtOyR$MW!vVFsd{uL9W{0dGgc+z%T&Dg~9(`1X!~^B{C@ETVjYtYO5H z?hQcqZUt0=>jqcQz9yvhb2=eAy`l5=@VzRo7N9UkZnNcwAgwbE1(o+`a~j@mj+pEH z+;eihLGylYmaZWNhG{{rVeY}9rf%L5L6xb{@oLDuNTB&?$hZ$A{2=QpVC_KAx>8Sf zKk(WzZ}-rG)Jn%P?@XthqzEU2)L_R#AK2OxXk7?O128`!jYmMoWWvCEd%T_9KzXG! zDigY|3K|AJ&Q1a0hE6FkyYaNOO?^phYlF@+1l6-iITfWyXPJT5D?!e%%C4YIIU9s0 z|A5Zd0geB=Ri%cTW(7wC<v`EIgw4ZX>t~qKYVHD08n5to@h$LnPAQAb^UF!jivq7d zgsr8=TGob;+V4jyPjS>A5zd|#QSLcLo*t1UQQ_rg$wpztps}}ru!`geXRqW4@ELan zSxN40RmoL`V1A@gMMko*Urw?iNR4NDgmGkvuX|)wWUi;NuS>FJgj+?jXAW3SJHoA^ z6jWw;x>UgKW=IFmBZffD$^)GZVOa{+lL@-x5n&H#{T}ii4xa9ydoY}`lZ;bJeIlUu zc!AyNneLw(RFG^0+Itw54Rw2VVuT+!OrxAZb)sViC?AD__9BFv8bIuGGy~r&;%-@* z<dF?=cOG~xXjxKjg(*ahlVc?KZoOitJk;Lc^a7YXsQsT3;aCbfw*YE4+I=5k;BfPF zvo!Jvamw{I^2+q9ax{jj1<M8GR3s-s$C*4`DnRR5N<H2EiX$WZs-WsJQ`}8TK<n&5 zb3Z9=;P6dP$u!JQaW^c6swqw~a?1vfL%LX`gW7H>&ZbCW`JnT@%2Es=^X-Z5mc>z^ zb2&UJEI@1EAafOA*-(F_rDPhEM`ihCMrI|K`$6L#ESF_s;bZJq9vN<eh+j~@&;u+6 za#KN67Bqg1Dsmztyqr@aK<6!+<VJ=Ymit#mWh6y7nuG3V0-qO>TLJ5DCPz4f?n4Kq zFJDM_=lT^V8T;jc?af4si(J3rsBpJRZ|59v7~&1zV*iK$XG?InB89bukCB&Qibqgc zQkH3QggfM{oB;TJgHA?1;bF!8pgXHwApU{6!^kJx5OgL8EZiaE9MH6wl4%Hze`uV5 z*-(ApeM(Sq^Hd}7o-E5Ws6I%(g8DnpF9+0ifyJ{w(tVmx{fK*$p!)su;Aa`a@&Npt z$S7!f0jU9<=MPHXP;)?gN3xTQOp8-t=HSaqP;-dN^Pn^VyGJb(6qY%;a62R13=<=~ za$xR)q=isOoI}bEyyZ%OvnBM7bF?&wVjpPjD<s}vcdvoRvS4cR{2=MZr2rCt&@u_8 zHrxnyADbWKzSl5Ai!_*CBHWm2T%3-@Ea)BfNM>a^S*C@Qm%-Gcq)*r#UM|S#GYqun z2f1uOzCQ-E&&m**-tgpMgn6FMjut8IVI`n7Fe&b#DESxWCd9t23`m#}Tb6;-Kt%zl zen||Egv2jsuT>889$#pBLP`7R_ohJA5S!+p^$p~%4QI$X%g}TOKDQhiHjwo~;TdH~ z?w~crkaUu2Tmrj4I5a9E!ywJ00<6aelpiC!vJyQEA$}lGS3&K_NQnq4i!`zXg>6oX zJ2ZWR?n8p6pOj3)oFtb5sGaE$vk`Kj@tB+>XxWo&6qb>k>z5C?-y2$|xPr&*43nKr zL1#ih^n>pg2cN?TnX`iCYZAi`TvmeO4RZe_Bz&;C0kxjWN^-ZXih|l1=<ZjX817dD z4S&e})@X5$&t2uF$yn<eP@45IswhCpE0Dg4J6c*pDighO-Aa;OilKFo8^kTy(DEM| z=J?za;O?3p=x$gBIzKfEd{+}<-2#gLGSdq@ogsA`)XwzC+zP|wOn93CU%oU?t#m?7 zo8Yx?PLOn%Yg(4#hPbEK)5Fj*z}Ye*AgjDA$vqpTJ_dzRl6y8NKZEx0K+;Aov`hny z$!0o1%TUnz#q#v1+?-<2IbDHy*`WD$%(UiGP!I)8i?DKm(lQd>K7{q}T`Dp>U7bpj zjKiv;!h_0Ej6iqFdF7<!hLxs3?S{2cz2RkX3EUshypiGqlglKcZGhbNLbwB-{u4cd zN?>^qi@!0;b7ImGW?KZDexYR-#BS7lm6zm^Q=aIalLb0^Bg&}4G}%3)0Ms7z3AY5z z7w1QX`xW_w8)hWumL!AQ?H-XO$axoZzEe~<cuqMd$~glTW=SwVB^yH4K1Ku+5oTHC zWso~AQ0ft|AHeAmEldNPEsGOFP}ExZ7zcs+yv3lqEm88ZOGQ<ZyQKl%_8iE5ql&T= zq<RsQ-eG+icwGZ73sd})jDx`EE<*Dov<z^}z_>3NTGyb~N3i=woC=blahu}dl>u5~ zl>%DZ18wU@<+^1@h3CNfGWhejQ3d#p@i6x=lN3lE&Q6SoMC4zW^0JihawL8QNFJ1z z;caVh+#0~#<_Pr@q}&1Z9YF2o5F^tNXq-dR1ZtXs-RqN{WE=+V6FC_q=emK`mVwtD zLCdw=$nc<?#BfuH8Tjh{EQmYtm7}S~C6K$x-9TqB2Z7r@pm+n7VPG1Xb^@F&L4MYb zaE9CyhP_W5NSpCTT>WL->kcdYLqZ{Q9pJV0pgsJK`B>)sN+S#{5$CE0XQyLP0~)Ua z)%~Dz;E~R92k+Sd-+ciZcS&(6&Ik9U!RP+N#_>_kAqUN+VcY=`Q0autY*=|v1sZR| z;wI3Y(D3|9U=3!4e+YCg3VhdV2BaMl3>}Z~2t-~hn2xx=6EZHI=x%8c80O>!vLiV+ ztRf{mr!p!yBiS=A$}lR}Fh9vSup~J*4BW5v33n?`3@gusjQIxTCm9Dhg}P>!Lhn8< zPI3mV6NmIQyg_IB=Y{1&ID10Rvw*~rXLv?gimO{-F!=08!}7?8An@8r#9iBvb6mmm z^zJ#?Aa_MLdzN^HgU&t+EA|XFDf7uRDN6#~iy3AK4co9PA7ik4!S0NT@GMJm&&l+G zwddU}D}8bcssbSQWmqOd@4fT_&8xeInFNG5X82@Uh9tS?WJg7KmZpH+?FF8bf`yMy zE_9t)m{(3DXl;OV2Ka1CY;gxpFNib^3d7RKaKEgm2qyz?w~}PfOoNQbT(``q@bV0w zOp8*VOv_TxxtI|~&~z2yTLyB2Pk06BUgw<TOv~cLaL+PWU7Td>S(=#Vs}D|(A%<1Z zGvq<%>VfY1v-EX#E%h-3wFQH6k~2+>Qo_TMJu@r7_Cn0fFh~k7FM-@&9#%<>Fh%Oq z;CDxkK{4t*8|m;nHXw0snv-GxZ8znC_CABgcM)mIC)h1BGTbXC3FOC0lTsfeQ_$Ez z8Y~`?D=m#u!b9PH1GQTtGcBv2<#JharfFev736-3fC$+6tDy4%f^t$_49Y=a5o%OX z02-_D0p$TidWYPLo*QNyV(bJiuahBXIFv?3qy!{;K-P}=<XEOfMfmw883lpLlLAk7 z4F902hu`T6S?dZ914Bf84ax&3c{9@>W5DAPdL}kJf8>RggVtw81w-=%N;s8+)^!?( zA^N?LvfBf?uM%_?D)fwV@E$Cz^N87`t~r3EE6{nX*zaM0)E$WV73kUWNP8>u5%VbJ zpnE;iB8<YSLZIvGBb+@!>u$j11bD7IyuvUFwEhNkt`vBkY7l(g4QPFB0BEf^Xdh8T zP!95)yC6AudkWrWD9;4l{gf0|o{2?mI%wPy)NTXS<H^vr8EE}Jxa<L~MFfon!0L3+ z+%nj&fuKDL=xssJT_#{Z!1cORz{(WJoxiZX<)C?K_pn^Zoz0;0<KXN1!0UwlGg0P3 z!D5K|1~f;Aw8zZ@rWZ2b1zne7=IP=HU$X~ppL_V_CmAP$_L^lRdH6xr>w)_XPSCUT zz-u%idLVvG2e0Rha02b8&Gv`gSqISr9v?(=Cs+*KotS5pAnx}D-K`kq9%cfXzXjcQ zmFNyy#{<1n54?^O;#Y852JIyW&&iu6gXXKiW8g&ItqmHJ_jJwxpFtH_=>)oe4}8vz zPi7GOK5#F0&|M)F*~z(KrLZ|7kUikAgR}?m>IpaUgRKJstHUq@bcUmQMnQ6=DRf;C zDBhhilJop>g2PP>yxo04XGFm7djZ=E3F}OdUlHfKK;ju5CeDuO$ZVfVOR)V&VVfQf zD&O<K=MI*F?z#5KgWjF)3M%tMOA&Wzo2J0@g&0NVL-vh<?h-FAfTU@V-A)kmk-`p? z<`Tm}bAy(Zur(kMy)eHbpG5>($L9z&8zv7qch=V#-qr&5$vmCmcI6~Fn?mMu48V7I zmx9(pdpoCOfX;OUpX&}^CkQ%k33iqn5%+atFC&deoC8EEBZHuAsZgXgFla4id1in+ z_?}6KKcI6Hkg^FpF9PZ}Rl>&>p#4eYaw)>Y3o_pCQeFn>b3pIm!|n%T68%8zeNFi0 zF->82M8Mh+KB(&k@#ys|_l4G7;IszGb6CRC6s7L)4#w6m0G*`=Z380RaRk}F54!gq z(nj#FMC=E_>R!<KrEcY!h<SWd=>2Bc%to}e{4=q+DZ3P@Z3pTr;SUSwS%rz=k?G#h z^BoXnN(R#UOUHb;IAr|^tUm#=13s4m>qq#2`VHXw2taM(z>>%arvgyl0utu%K1BiO zp1sKMiehije$t4rg5=!L{0L_+Xd4)M#w|FG(lg*~mt4QHqzI>s6nF3*uL4ildUw!V zJM>K1#BlIFHgFr74sG}H#BkHnVbm8v^N%O!-o_Ho2ymYbJg182>$sNsfXaP}+VzOG zGkPB{**&K;DL1Ur2imre0IkJCI%gNr4uJHJlTg~Rpt=t>?*~d(^y!zPyBXU59_jrN z^fU#j>)qjHfnl<H5a^zu{KRn39SSJ@uwrn(45^O=4O2@v4O(*mYBxj99mBeg#h=7A zJU-5N)`CITG=bXip#DHI<j!1pKh{6f$tlV`2z2&ASyFgtdZe)*<m?HLp!}#{C)W@I zgY?L}Z16re@R|g7*Yp4nKZDfpikyH<Cxggv$XzDj@)FcPa0i#8=_&3RIi65;$m^#; zW8L7j51{p0c=m(%hGd(<);odL;DW~_z++^7Wl4FUy|LhX20-_!K+ldy&hriipQ&L0 z+Jg$}+lCvK!0Ss$T*37gdpalQMZnKLfbRh_NOTWPhlCOI3=ViWK-y3#;QKLPeNs?6 z2G5?75XTDd;0(|?A7D3u&T318oihMhhXy`J1nig6BzH^DS=v>&>u<Q*;c6l4@<4qr zCr{8GM_B*S6Lilm_^dO?d7a?60ow<f8}Q44*N<)$2B0(%W|RTibBXGAcfb6|aMQdf z&^eS5PM|(l4(Pm*s9;A6Nce<mgU`Y=_Jj2CJV4`c=^2Rl1+7`}%SiI@g|!6@B0PeU zQ*e%7m1lYe<1C}Il8t@gY1YRG(kB9qy@AG6NEo*Rr&}M;Sy;wi1)zB{kQw0nV8TG_ zdXg*rvT`zgL)>z_KzGx)hgyajgZ4d`LdUy8sWPsX;*nDv6^u4Egkle9T&*1Wd~ZaX z#;pPpj*zwuXv_z61|B$lfzmwcc#bPh_k!{{qHeT=_Q6aGlPht?0oL&^h+hmVqaso& z6G7|rAmd=5IY!XjiLq};q-kW9YeiIWRBj@u%n0*CDPKv9KhS+L;Jc2&@dg`rg_LRN z<AW&nfZBAB{1TL$0trLVJ{I`?XHb0{Xk-a$la|8HlkqZ!o;_2U3>|NS=Rr_gGASH3 zt{Q9#8MDm|Ge($Ep6*qdk`e*!hk?_+TZKUiG%tCB$M4|g!S?fl-3Bis+$szpec7Po z6j0gfmXZ(JTMI5*;rYm^Ai2^Bv`(%ZG*=V_Ib)_I$vBEoenpgx?v@5Vp!Gt=PG!kP zp~&O<;B@Ed0W0s)3qW^V!^&l_+pzbwXmvMk4(!|sP+G^@N5OmVq-#0oTnU)_L1iEK zJUL@8185xuDa%0hGbp@aVGJ2_gWC=3)1$|KgtM2UPee*iWG?7@CqvLVd%4M=eRANv zMBs52^9Z*JSf94S*Tpf%)1xFA-j4<CQ9<a3&f!IsCFdHLd4lg;ax;huPOtLI0-d9l z3`#S}$<TQ=#P|rPzaLZ?8E#qy8s|w0$xjE}xdfV@^>*<!@&%p$23j`_cZU;bO##?V zpfzk@^RmI~QHG}5Gfk`D?b>i~nFPKY3?-aBg36Lz^3#1?kiy=*A}1;@5HwDR6i1*l zwLohg4ba6a6G8jk(arG4F9D7HL`9^VdAekq`iG<=n+3|B1(3Ps{Pf6huc{=Y3d0ol zP-Hd6iQz#8i6C=B9Lv2zklg11nr96xi43nOh%z!U^K|#i0kwmYvyjxddu2o#mE<Mo zS{f$h27=N|USzIozHe5jp^vj;rC&&Bv8Ritp&#gMR%a7%`wEiwOyOz3Cl6jemqdZ< zNWZcu_fXLJrUgm4pnA{{bPfgRoH1l~qxdZ<H^(F@JP<AqPgl6&#u+KjB0%?UIh996 zc&4WsR>0GDvb$wfVgzU|1mt(O%w!|W;*^M>9DgJ=Deji#{+W)3zRoCNS{xM~Wq>K} zSOU6>JJBe|z$XGVzd+XofY&s5I~#z^EB1uYIPx59z8#iVA?78ygY#>NUx;IlkFz6~ z29-UKFbAzuH7rT4G(^ki#ONg$U+Kv47-^JK8EFJMM+PaafX?p$oh=e>S?ZtZR2das z0UD<;0^M5ycb~ggS#mCDU0r^<pNEr)r-vVC{xjRt*)J>7$QK^Jp3b0r;su)HEJ@DI z$xHMI1g&u{PBQj1^K|yD@~ukAh|EgHq24V!F#>!BBq*Gb)j;YrcQ;di&^o8wih`uv z(2~g9in2(fVkC7)@fhw_nivi`?>DC`DJwrc8PulAbS(GDimLK-2k8&XK*=xQ@np~# zu48&+xM@KW=qx8lc!0|gPZ!5hzdYY`@Hq<MZk5Ps4XK>ZNXpGA0nIlj8JU!T+d#Q) z;CVcsaKEyYa8m<_`$6r!90Qc_#bLisIP5;QoU)`$!>lA@(7LJo^u%yeP#dQJXPIFX zR)XxtME9@)(77u9nT}Oa;RZ-y=49p*4rxRCXF4MMm1hX6i;(ksUUF`ZL8Osoc2uw< zvN(7x8)~@<YCq(F{f;wD5mk<X)<2~bBxM>JBpEw`%HC4Ha8$pgW*S1;te~<IxeWA3 zDTwk2%J<K71lO;~;SrT<S(@T(Sd|!2kmH}}XzCY?Qch$g8C8JK+4ZdQt@1N+%k-;) z<rjka4LMw@l2F4bD>1?=E6E*vj~To?OEJpHPH_j-6RsG3LyETwpRBN)BzQeQk~>PG zoKfP7fIGa9>@i9AbkE3v*KxT>VNWoPAeH6e6?vY>WqY_^K{9B)KWIz>(f&Zxd6_1L zXz4URDjZy%n0dN*qJ|SG?uf`JCdnO@_}t-((;Z13fhCFIp%uQU;f^c+z~ZAA)+Y4H z&B^gcO*<s$1?>aL$wBoeQu_yMJXFB*ds41N38+s9t@|MDlssRQdIYIGfFcg7UwqtP z^|fhfQl(*5GPwT)T89Rz7Y(a?jRH~h5i$>@Y{6*TgjFUvL)Nh;g6_C=$uILU%C7Xu zODXpOjk^b18mAa1mxB6AQN~_5kr6?qpgs|}EH`q?2Cqf+2m_tPk(Fd*P?los2&%K7 z{Xfg{B#*E>(E1}E<CJor2+-ZL6;(b)IVF+dDLKiNmf-b3pz$yt&|T1w^@IiRHd&@q z7HA9#)P@0tE9flEsBkv}<gy4y{b2?=OFJnSxm<$OPvG{wJ8J!wlxtavQlGfP%S~9D zrySYNB+!|mMmgYpSD^N<UxbqhvV3H&WhH2Rihrh4X_ApCYTF84Uinrgd!V#yk@6_2 zTv}LprjN5zvS&_tCj2~7$Xq(;JO+4w3N$_i+JA_79wBHBj5cS7c!Aa?2Sd)CjWiB~ zp6dmf2g7r|wW&8^%|fxKTX`nRIzWhj!TaVxbLG(eFlLam`NF_`OQgO%Xnh2D4nD#- z%pftm0(_n<p1p>qzM0T@V{jNk<`F_dbNnL=Q=EdsK=VkBhQ2P2kh5*wb4oqk4IyXM zfz^Y?2~qZlK-OR&<UngbKx;MA{c~Y^*2*)(D^tL2A<*20rw7))K_2KH1<1UTR|u$X z_3<dq1Gl|U`U}ZskbXgsWkgtcCi0#H&s?{x6!#pXDBNpO!0v*t=XLgiyU7RMU+_xy z%z~`(1EnYMcnPe1<pNpHid8?XP6FAT1)E2%0L2YBzCdFH;JgP~_kuQG?TOS^0`Jpv zE6)tbD=`PNk=Fx*#uJdk8DtjrH8km-@VRVMHv~9a8bpPI&c1guhzddSC&F9{*!n~0 zx*mA`Ld^4m(g@<LM9>+jpu53A<t%7^0PIf>zk<}<P|%r(VE==~Kx;KXcS?nT?mqyX zDQ}vGI0GG2K7qy~qQGlfL1!-}g$F|K#Q@8J_Yy<Sv3G>*XLQL2_3c3Gr{L=vQX`yl z{4<?GQb1?Y<|aed-N51xG-i<tnx_sl1CQH-!V@fqbhm&r=xi@=zZ0k119L6QlH9{G zk}_dugMr-V2s-02Cpp&-WPe%;sE_I43%Vm6EasEzRh9(W{}^t9+fC5<Xh^yPnF(EI z0a}ZKxW522h7LMM8)>c@Jg%OBm>Yzw?}4A`fVP$?GThG~F(L}&PRLqZ@VFF24|Gqs z0cc-3ByJ#OnJ4(1al>*@UpWdb+~IjN2O8%{XNn;5IwVh{yAg98lPS1e4Y~`=%NS8k zc!ADn2j7F~3tEqE76rQZ(iu^v_(b@XctOtx2d6d2ycm){K<lu;`*}hAK;*Ck?|DoO zMy&IM=!dN9i7@gii-Oz%ot<Rl2RR$t*|Z`hJghP`47T?Md_P)dl2MQ;Y|l2R+=j2S z$*}~>g&0TWB<DsIgYH&?ugikUfzG!F&4u~oT7u4U&rNc-G!BQ{DVm4y7c8B^;{<f> zWPXxSP!-xbGSGP}eu?3x5s~3J259TaP~^PbL3gXWnZoCC!1)1mP9{VgG(H;T9#$L~ z0lCK%G}Z;r<IYIy<v`=ml}@hU@j>To@L3RH?l~n<pm23I0L|lp)@Xswrp`#t3(ARd z2A>%dniy`F14<JC&Q5;8p{8kJ25w$q&W`$?u7+MAIhGNDp*f+R&Iakp?rxRIMqyq_ zd4c($F?LT^$lR%SFseB|!O*o$IhIu^?rxPS?qS(Jxu7$Ff(nwtL-Rp*+xUh!g3lm@ z`O81ku^e<JDU=VdcRih9;SI?f;5`<ocgR5YP*=kD&w%FLko1GXF(=m(vA?DYe6}HM zKT@7AsGVq%g0Vi!FVmKXt(2d%q-uY-Z;f!+ZMPOG5u0Vxkd&d7AkhwtTqtOJIx z>G#P4=TrE68q5rMdWFb?<|fefp!yA-$3SHj`26&A_&%&W$bDT1H<;!oMu6@WKwpc7 z@GGQV2iGkKdvl`-Qr*L{A#*N}cmTx<xQv9<S<tc{bhn37CTRXMvC^q3(%7pk2|QMl zoSp)imxR~#kh^9qOTlKq(mS+lf#&y8=-ec@tq;kwDN&%j;ANCi5CzIJu=8Ot-2h!X z2O6_;g4>DJE@MA~$OtckD9GBK(x`~!^dQJsA833KrCx)q;e@ttz~@DQ&-zA-4@jBi z<>6J9WE@!P<?dApIs+im$gL{HIXw@YevM4b{1NR9*f|)W`+L(pk=B8FIy>bjh6jP` z2*llG5HV1Gg`cMa4nN4f7ZJu_`$6djyp|CXXRxvgl19Mu-k|VvcQXZrCwh4TUEi1n zuT!#-`YND12S8`wx`Fa?SXoL0uDv6$bmExq=>}W3i4=CwdKTh7ENbzV$>6zqu>X9Z z>X6EH)cA0AOoxU^DXut41nuc?4=eT0DuAaI)H(!|Kfw1z=7Y)u@Od}kIi+DnZUrgM z8QGxm)>P!Xu#w9Gr1*@AhysoCqtz3RkTg-1Zw3$VOz>J}L)cl<p5XP(DIu`A5TyK# zQGP(<4zgYuQO2R9<urIZ29zFBAZZNQ?`Y*KID8Ouz2JF7Y<UT+E;t>ZU6A^~CEqME zydWdh8N;98ych_U!&9C^%L#B^LN52A^RwWx6e-+6_svCxn`ZlG6=Wplx|yKeK?XWU zFdJegTKfakR)(x=28WS1?CdW{euLZr2#RZXcsgZ9g@eXN!a!#L86@XgqPKG}<k9mn zXly?+!V6p{gZ2PI?=dfpfVacEoRG$-QNkJ;_i2&2mf5Mnrd5#neABX&+_1{1+={Xk z!)$oDfG^*G=Yl<;XFGa8`kFq*(0wp2IQlD)d3&^esFP!&QJ85|o)_c}Y;d2`1lnJK zlu6J&8F+lx6WT_Gq%Dgwa6CGr&&PO`r9jH(Dx|qnv_2lR%?_y-K;sjTxPtRh#!`{S z<)Hm3ggQ_g06xD6YI7mGEy+DBHw83i4Q&S?%SGl|8l<>emVnwdkTMS0zfLG~j_Bqh zkB9q*WSjb9F(1zy8hThD#$=)Mkm&Y-`?$`A8A<Lrd7!zLNTV=N`vx?ZfNoZ1WVl~Z zl(83RE(El1qB6?JE5jQ$4~a52=~(IyTOS1vPxN@f6%WYc&XBeTwzPp71`u`VVGT{o z;QlWtts&2);Tp3{G4{$x_HfEchV2W1yB|~!pv;S8MCSRGC3%E_=YlZ96=@C=)XzmW z2R=s~3Z5Ir&<okmoSS6qRRX@d7rX};G_Mz$?-LSQ?iE~~4xy39k-&L1-P75S<he)` z`=M=0M0!S!4?^S6*zyocn4!#1qS))~n2s2?bTmlzNKXgN4TIKIdm8y=MMC?Q2zMdW z`$Tww=f^<vbV=@(mHwHIS-w@i#*yKk#^`ARb&eBl&JrV@f(k(QfksATn}N=%0gpKc z8$#N+*xW<h+#`CvB6;2sJ=_p;P=4UKA9Q)7c__&IA-X?N);mD<cc;M9E3x?&B|pRG z6w%#+l5ah{azJzI;IR<!z9^J(5^RP~xLa{zcnWB48#WdXY2(4&2kPU&$IH>@8PUTU zeZCZ3o?v+yg>CK;Jv>3{K?$ToBFiRX=Oc0ZBN#ddhT+Bx#JnI@HN?g{a`|AGjXH0I zG*5_bKVp8j5<FLkE{{2HiQ-2x!ml{05+#ko=IyYwNt_Vr05+G2&wW_ckP&|P<~Pyp zM}%J$Y;GAnuOa7qtZFdJ`r;I4!-A*~*K*W&BvkH0#$gd<vuQz8NH$4xgveu^;JP}O zym?U6FhHNbgsf>uMokAuZ9uH)12SHWC~rzZbAd>6tl)Y&xylbM?Gp+!EOjN0xlzyD z41*L8M>C&F%L3m_Q{!aNo<Z<jXNs{;UQm8icnW9?)gUR?(kLn%v_2*!BgzBZ-!x3l z1?_{hECJ7dhQrsXmL<Da7)BZ8lqOeN8Yep&mM0li6em|&g4WLDMMe0QLH7RVltxvW z<|T$lC3|LOr^DKYNb{qh`C-s~csY@<`-BkTl<tXRo)a~W9Mj?Rnc+xl_t4WjVonrV z#)p-sVrd&A+7R%$Pn2>4d{#JYZC;fZRx^<Ejc*=!ZWYB0^s)zZmLa&m1)0ymvKPd& z+!u6~ED86q!N!9@VTEITY_ccxd>6z#A85a&SCSXJzvu~BI|Z4)%R{XHNe11M4p|2X znKLL(MVcS<35T?&y{ZZzV}>4vDbO?2jC>-%`>jFi43iP_eIR>1(f4_x&h>%LAw`UP zmB8ECkU4i$y`XtDv^hG^8A^yT5<_U&4LNrWw3igJZxps}0W`MZ2%iUq&ljS*0d(FE z<cuNhRO1qGdm}Bvz{1BUs2~M&1|@7?D#$&sc|Q1h7e}}{Pslxx*yEi>_weCJ6KN5~ zDLIjOPN4OpY4AM+VU}s$E}rGS(EFRg<urJYV+MTfIN}@w(-E-`)epKScXS^rXrCA8 z92j!WkO|6&gq<G)*$WHXqYJ+;Jv28Abbn5^w>#+mK5YAkA@`&p(sM>xinD1(q>*1v zvPWQkxM6uFJ<fCqb9c*x?fLX^1KSDSCj&lj&e;&WPADqE6X!l0$ayP7g(YJCA8qdt zvKxlLzSGdiaM)Q$&^xCfWeR976a2gz$b1{h-b&0fx6t>{g61+2XZ)0c?z9J=DFSX= zK-SBE<{**Iivf*oqU;Ix33eOM_=D~fh35yvej#u^KnWusXD1Lp6uvG5x<@_@PG{#s z%>$2RVmW)Q(wA2EkU6IqCL4kGQdTC0`x(II!ohV2;{FjV_jG0C!1nk+){Y^cdj#1R z2cN@&-M^ga1isf6Y&P0`$l!S^H%r45_nhKn&^<GF_MG~MctXd<A>#>1bsNZ?;Pow_ zxi5tMpgWbF(B@{G@}t7tKx^S~u0w&{Hw<<!bY1|`kAci-MY-oxMTUD7M}>p-aG;)N z1KtN4lAk`nYgw|AjIggMi9}kXf;9gKom&OX<3sx|V1I+gM&b9K!sg}-Kzn1NA_7Yx zb2X5&P{8vP(6KY{7(dEf4QP*MP)@2#KJuPP(0X~$xn)@9o^acl;_j9SKa<AQG8a0R z0!<f?_(7Qq1JAQz%t?XH79z!7@Lg?SKUSKif!$yfX5a%p_c9rD|GFh~T>)ea3mkT+ zYaCG4?Pj5d1Bx8zTwCaz2{;^)*MdOj$Rdn`Kx5Q7DWLTn7-FV5QMpmzdvrnTL{q{m ziXmgA(6E86XF!S{&>85F5kWbi^+$-aLrmcJx<omn&7r~U1nu($%^O63?_P$a55ze; zNMVL_hEk3tDE)x<KqW)_d0>A+_RE6gs-hymYZbueA-g@rD5C(hPT$)D?*Cjb@E&(B zke*VcaLEV=F@W4v8tjOo#>)eGmJr6;5GNG7VQCz$9>uMYz2;zdgX_lh40xJ=_z&bB zT=Tf_^aC!dj17>|3~0;~)RzbC;|VQIF><R+%1qA-1JR%}3#;<eBb>cJ?o9T~bjps3 zaLP%_4NM1}RSOjd-GK^{1Ks;-oMh}(<mmw}19OsdD@=Vd!Fv+n>mSmBopL~DYr*DW z!2SWxkAn7Zfzmf9oPA4^J;JIIoio7k0oor0>bt_!g4@~7ZeTf|9MC@Hl*%OIuyR;G z7qVUp(r<%@QEo;K=&aM^Jp5+kavy9Rj%S1^C@er>U7F|~mH}EDjiqcTg~y?DHb$I) z{Q*x;rqH^<s|vP<6q4r==@;Gq@HI2wJP#@_k<tb@EWu}Jp~N{X9FWsCWb6TwN5Nr= zna42Pj_x*}JOc3r9Tx<-8D5{cd*y)kp+<!U<s=&iRVEpO=0p&8nR{Z&qm`Q|=VQVB z=>uCc9E?;yz|RsxU#kRPTLzC$SUm;GBPeTG;C=w*74RA`!f6j0mWXr!NjE;3L6uSA zhGi+aq0sZap!06vxP*@LLf9}n;O+y*VWmlSa&8!SFE>U#1a&8D-6v@56EvO#J+l)s zrw-b~>{5Z~H$cXj3?S_e$Xq$}46aJh8rOiZ@=UP3?rx<~;T52K4nLdA6BPHEhUJmr zra7MO&^0+>XzRGa^;HV!-WZf|FK`}kLEJy%nO6c{8{wbn23~Ul+9v>Z6S$oYn~!u% z_s@gug@o?=v;>tw$mbeII77}-1?vU*6*S%g=}*GvZXtF<&Y}j5_t5%GL+ovAQqMPr zreDxlCTtHn(z#urG>f?N2ee)edM5!Wj`Ex`l5)d9dx}uv4>S%2id&xukbG!5Ed660 zpM%CDNDpjp5+ocEaR`!21+S?KHS+|I?WI7*_Ht0h(#%lW9?&zkQN+OGcwVr5Na>!S zv%rzZ&pbeP#{_DF(l+>9N+k1%I9s~X*CmuTXG`PhNBCwr8bSMASjNe~>(J6tjKVUL z-QBVh4K3mQ&j>?{eBUfb6R2Kr8U~luSkeIId9avguz}JEVtfRCUoBd{IMCeNBgiz_ zJ*+GW>p5+Z@-@QQ3$gY(r#ut1&KsNAh;^fmW}aBw?Hz22D35{(hJ`6KEWl?{LGSK{ z*Hhle>(!Ckkl;Qa{JbXgv$a5HwuP2}&S(Rj0|TC~a5l_HcF#%nL_d2rHwUzy6m)NF zK733Rc7`?R{9b538yrW@Zty;PB>1in&>mo~;;7*4bl7@+a5)8OhZaPE&p!f>7t#FO zVbJ(c5TqSFOwOPV%81N{v;(O<_J(vOA?SQ^W6<0O=)648x!8%}ftH{%@%@a#vLdt6 zjeM&@b3ylQM1>fJMuvNNfX-b=b_Sh`O_g(kkn#y=?>MM`3pqy`OMIsII3u5ti*W`b zXq*T!w&r30N|T5)+39j_IA)w7=WWoq-0(R68gWJ-sC-EQpP>;3IVavICp!Rq&QwZH zq>-nIUzV>S?3^j|IHkt9NJwcJbZ!7>EChOnJI=U(mtnLYcO>;bV<PXI1+@dA=gz^; zx5~;-4-5~=POfySN-{Fc@pSjAO0IMQ^<lwho&~vD`gyv0nR>drWk<P#=B}MGK<8jX z=4MUOQ{3Gk``O^_Qz!7aK4?rP3cQCjr#LDCat<1#?g90&!RNYx#+TFZ&8_)WLi+@u z^VtyfF#OCo$XU>id7!=%Xuq*nC1^e!aZZ(|TS*e49tMvQ!}a<&JLY*A8m2(|fuJ?5 z8By+mpglc^v-!}%0jZ9HopVUQ53c3D!P)tUbKlC-Q;iLv<7J>T;gHV11E1aDRt&nE z8sTPmy98tp!tF4%&@n$y|0Wo8pNuQ4o#PZ71v>LQ+%G37JggM5?hI^SZe(~x6{y~Y zjMHK{I}4gVk}I9E5<z_(qtIf+8CRgbVkr6<hp>IL2B5PDJrV06;Aio{$0HzTi^1D{ z;C4o?TUMk|Sb2(bMzUw-z@Nz$74Dbm?-E(%2S1Yytvm>hs){tSERPBgv`hh=IUnpw zg|ky3XGWr(n~GL%LdN%z#t0E(0g!M_PJy(aK=s+6KKE{LhcUFwfrTk**@GUomI1-2 z<qxQ?Mx1j8YQtlcK`3URmP7FK_h97<cwZpGJQTOV?>UI@2m;SxfzIv&l?BLWR>H~> z$o??!+FQ__CfPpDpmUAD<1dgh&!qygzaa!tro+yBLqC%eH2(rxZyFVhe6BQTjJh}- zUN1Uln|mVWn!s+u-uF+YP5%>d4gsj#gqJsnIV(`S;60nP+#9j)22?i`Bt<xtCFcdf z$~u%W99S5G>j#A0u(4b8Iw;vQ)3h`)BC-TD=8$Yy0zL~8o+rW#Kx-%AXW<~$ae0-2 z?{N*uPxlRhtkZ&=MP+IUz7qp<-h#6i{2pwuTR`<a+&$nr82dfeS&k;OIsZLy!0!M7 zhXbTsgzaAkr3pOkj_gX<I5Su;Jp6nSV*{Z6DSV#DsXRH?vOKv8b>BWHpA4pXO8A&F z=+1TMcs=U=YS8#OXsjdD%+n2ewkLS~IAmNLK1Pl-cLln8CNczdJ`F4e+8+%MACS55 zIYrd@7Vy}=ubHP?NeZ(2Je{4uW1pZs-r)8MY~BpCHw?Zf4K~LInUBV|mmfBs2QrVu zc~@=7I6rjE8Z-~&9%h2L?*d~!656)I9cE<D_krdeb0PhD(AX8Y?Ew!9P#8yLBqQeI zKxrH@Zcf~sAZQ*3HkVqN5+0f!Pzh@5<y0Zvdy)=HFR(Fn@R%of{tYrWg{;miGZIv% z6eNSj=%M$K`#|RAAajqH^M9bWE$Gb09G~2<%H&+|*#j<-p!@ioQw%`oh9?_?+U9PV z;Js22PE{E5X-H`V`&^|Xws}J6JSlX}4G~uGaWt?$!E;FvHQ=xZ&4YvHpb_ek(lyH5 z1$b=EGXgX><d>7;j7Tr=HZgdP0~CMYea6W1sFt1{C5ZcW!0MoJ0v>|~-+v2U+X3yv zK=+J;&-sRgWnM}~a;{0fmm!D--Jg;SI&UW<5|)lY_X4|zl}0%`l_epiofLPA^b{k@ z%EU@Y*%lSyRh$}Zg1)ahJqp~HKwq<f%^y(zW1Yvv$j7+Of5=So2&+WP!(cJ=J)cN> z{y}REKzRYu??K5g29P!A&~QyMO36!d4+Y(MgtSjMs4U7Tr5JqP19Eu=P7mO@MQ}L< zN)w(D5PyT$WkCC7;IspsivrF2f$I|w*qpOP8R$G4v~y{|<Jw?#pt>8@CJT0g^*JDO zSMa{JV`);Zn~@JVeffgg4JhprPiLo+$Ox~z#Bh@mr2Uf>(6g;j)I!R4NLdPMLxScM zAbotu{#39S@?Bb4=<`M<B;Rp`y-k=+Vw;e-`5^Gzma`LTTMK$0I(VKZ3*>&td<vfX zI4gZa97%K^kz+G>=S*BHpyPq0w`H?jtDt(pX$w3ak7e#*WXzek8bHGWTrQ8!nS@o6 zb5|p1JT@6r|H1Ba0nf!|!0#9Z-9eV(9u^!G?pKza8wkA%1U5E>xW5$|7w|NVHXf8j zr#nbN<1C=|4|M*AYWL(I%~9aG1HdrH-`x!~-fimZ47&pWT36C(t^_3>2mif1=y3(T ze+Il31vIXLn8$IB%muX@k?u7eGHaxf<|c5?vqgnuWPryELL8Cj+2HAz=5r)@;Px!^ zjxWf515o}2-D~Va>w8JFTq|faUI7~GfsBI%!}lkcdAhn~M|t>y_Rg0?1v`Q6TS*7E zkwN$PxCRA;1UqG>20LX$xd#;_<tC>`qTd4p?nfiqR*-phP+K0n2HZ5sJq$9g1R19Q z^@R*TXQYDKm3Yp)tn@{!$ws-a12NwKS)YJ<R|m@c3&uSi2)(Fxbb#7_pnDWi=XHEh z!vWj}gX|@MjRg|$Lxr!4Yk@atZ#U%LBGBEg@NrGhd;-EfNO$I7X}^H%!J-!0FS97~ zbOr5!af00uoF1ARR-WYUmK7Cl2s%Ru);7vVZxcj-&uejtNOTV?MfZE8QAS2mZc2`i zvlDE*7S!*}L7yK(jHTw}dON$p<JSi^k5dV4!-DPra;q?ajVJo#g4~SQw-e#)nSnE3 z8-eES;AyrDde;Kz&T7*3*FeslA-ml1%Ja)gGIq*|axnz=O>w%Hl)J+rZo-_WMJa=Z z!<|3`+XK1DMt)_<?qS&h5#Y1ZNQ+yeu;Qq2KLhl;%)$LUEc>RA+XnD4QD_<k<xTK@ z3-G;TpuI>)<qGI7Oy?BjyT?FvGs>J4=KW(RW}x0d2Ahk4-?fv0Vjhay5c3YnDbT(* zmOKn=bEYRo_@;x#YQb|FpgZe8=Vydl8byK6T*N)siIztp_c0jz<sh%S0*^~n!pnwy z?~vm3G}swF5Vv95-&)~Iqy4QY^B*|MP(1Yw=uD{s#F<^7d*O0QlHDyUQ#`<P3y`(5 z@UaQlzC_5`&Ir3r%Tpr!^1a>A?w<qg56m^qNXaw=uk#Hzv^4Sw4>gGl2dyW{E{{Mx z7a!la24wCe&oJ3D6MTPovS$u_&K+FNgX%K4dq8!wyJ<4kv4{{~+Vu5@!TvAsS`If$ zSJ2!?l)I&I66hR5d}A0Pp2qNe3hFOH+B#`L9$sb1?m=ZKMkbY@Iy}NC2Ygmmk}+rv zgPUPugjY@w{QmO{WcARoc1XJlX<j^?fEi_xx%ma29>t(_UIr-<UZtMymYIo};Jqp! zIkbL)qdrvL45SCXZ_*_{J;}(c(9^@f+!K<QA?Y77Zindm;aXRY{XA|9&tQWRPghVr zfb5C!bT%k~o>>h~yWnv}mkPrq(D}vgZdJ)uhRL4byyFC(S4=f7DUFPX3IUhv5r&}o zLC`%{#Ze)K$>6o>xuAQogYcaRj&OgllaUYT48AOo-oW(4aFcZSeh<U)OssALkEuFZ zB)Mm&r(_xyM1k~Xx*4F%0l0zI$s*QFd*+qE_Q9Ef_bM9)6{O^b7JIq}6(k$EWhQ~n zOU(-`1(ns1d9@(0zXIL;iW9^AihS~%Dk0}V27=bYS4D+afc9bKr#R=}_9xVxk-<)& zHLSUyHU6F;KS9SfJ>5++lEOnl=E3%+fXp%noonC&-$!F;nHExB1|DB@F|qJ5az!7b zg^tUE&Q2&VOLEV~BVUn?$WNef4=V=k6ZOvn-){wShXLGP@H%5c;THxDBY)8Sb<i*b z`7y=W6jWbjMCMlHM1js_$F?s35;mao9*PrD(g0|GI{3ae1IV5iKhQnbX7KYMoW0Bu zaTI6<n&SrFp9i%cw4Wg$t0KeGJ)<%zJQC!-tO#e%bb|5d?w08dI)@&7hP+!QJRI^2 zEd!h_GeG+n@P}=ASrnqI!4(HM$FM<l1|;8=m!*W4W7QAcFM_@=1m4~U`7<TcFek~S zz#uZ*6LF^o@)?kz@&gg}Rp52~S+Mj48H<O{4?xtx&&&Yr4MUcL?*RanxA1z|5vL#F zdR;0&XAKu5djvxKNq7z%yyq2kFGf-x#<|^yG@X^79$^65=j4=~WSmm!n`sK)I}EYg zF&(jg6f*aOKCcd%?+AtT2MF#VMw?TH+XXs@ACxYWD<Svug5wowUfa{z3AT@uB0HjT z-Lj*?b4tBHZ43|SoG|=sQ_vnN=w6`^)U^Yk`KuHo%Lwopc^=?)KGIwjc&^Yi88lbr zYHFAi?v;~F(wY6(^&r=4zL2y6F1H}_LZEZz5%Xo>Iev=f{lVwmfbMfKOmZ(r^_x3< ze<HSZ0pPZwf2LDX1bD0g8m91hJ=k1gV7jNfANc$x@IG<my$}d-#QHgKJ_3!$<WxcH zD9|_>Xx<RqhlS6t!qNyVd^}PzQr!LWLG$9U^y}&D1h2<DQS61rb#R7JWOzB2`DN7k zMC5e`;l@!JNp7%tL(qOs#2hnHegXM6I~6TnKx6Sy9@*IaiZqW5K8qW?N6Ie=YB$s$ zVX!r_h_kd|{&zRbNpa68i}LVA%_knvI|R`7oF_y3pWr>jnXoYrNE{;em4fOQr1}YC zt$<@XXdDJ~ZZvFN2dLc$%FjN~^%?N^g2XF${TXC0EK<0E(+^o^@}|T4;Ar)x54a5m z>A%4C^+M7GWIrLkwOlA=w+Cb&D_pNjc^UNVc5r!&y{|&UeROW9eX)Qr(AiX8$)J61 z0f;+RakX8OlQKbR*3lv*ygVJ=P5_-71r9G9ZB~$crW17UCD=Yt-Y-s!@G}6<*Jgs| za*@VMTnxeP0n35TnQ{l+AqlnDJ**_z9ema+s6CpSWb6sqkC%tuo(0+CnGV{=5``FF zho}Yb#RH$mRSK>zz-bG$jSC77&xk<C8V=|h3$S}K9TDv#kiW=j>w@%UIypufRTM-T z6_+M^c;$fa>4N$jk+%X1Aa)WRKHzdbz}+=H(ZeeT)K&-k!;o-T1VHv5rYC{!@rBN% z!}<n9xPfpx+N}a5tU+^?Na+pg?x4yfV@P`fbZ-)PO$yX45H~oQfzM-xhEs|&e4jZu zy?7$+y#@I@)d*TnhZGpV_fbbc(w3)70ixZEFb^RHIrof|^n=m92Dt%LmVwU3_4EiV z1+kN%ae;Ow9f5W>5%Gs3&at+|LFq3KTCO{1fZDIbq%-qW(7Lruc$kCxN|7O;eo{pN zMqD~uBDEDwlOvGwu#Yif?+}tc3m@aKVq`w(%sNkZ*d1M<FaVv|fYjE8#u4^*I3%7S z>4xb1V*&2_f!CJcDvyxXmcY_9;w~$2`3P^TJ44P2#$Lt`#C}~@3ij)|j_%iu@XCSg zU3MMauUlyeK0gdR|LIQd+7rvNB#)qiWbpckFxYtt@V$Ak^|eFij65{|WL6}5W*THb z&c4eqND416frS?}=F*VX7NF0kf$nlMNQ`iVu7mL!3j1c!+&p?_9w?23xud5ky06bL z8eN}}Ug;YGJM#&=_tF4#k7JTiB<M~>&>Tl;iu36D40s=RbbUr?l2K4jgb{R|WQ1=S zqz*tk{}eLziF191uZv@OWK~pVR2E`gSdx)taf*9RIruz?VA}0hMX@Ige7`Z`Tok0U z^&+5a2*7iQ;B!fl)(!-N=5ZkNe%_!tBHZo;t;2%XjXt3B@Z7^pd~yq_KxLp$rb$^+ zu4Q&qm?d<sKdj0J`<fF2@Ew&AUOCv$BXBJDb@w%j%#AEZoJW9MzEb5p3+S3N^s_9G z?E&roMcMzEoZ_AXI)f2*J`Kv62yA=fNB5=%f$rrbZf|PHh~1lNfXK%|Wy#JJu=A%% zQxNS6@Ez(%ciJQAf!-U0xbGezmkZs)in^Ag41Cs8M3AX}rempp81#&+JVUs>uz3_8 z&{+oVVU?h<Rmk2~&={Ygaa6chQDQ`3NhI=JLAg<&GYJclG7SroG9Al(vizz%-NQ1H zjY3Nj!%fUl&hCPY<)PiJP>>5cClR!F1~ljG>udr#7b7P!!Y{`sJf{?XH#}B%R^&uR zMCFj^PSD+t>8SQt8m73Ez`_AM-US<b#Nk&0W|)G;GAkq8DoO*L5#g4Ie5af{a=1Am zhf}#1O1y#QuPn<W!~F_UJhII^T^y0rI>GJnban)-8$t^U$Mhs)(0Tef2B7&0pR8=G zdedNOA={}aDk3L088praTCWA2R|Ca^rw3B_xH#gq2XvMpJl%M}(^tBui)*>Bb0}#4 z6lCoXc)Z#PHC=`v*#p;0Qh0*nCe;v{zB3)u$+Odh826UL(`Tk*Iy@ZVY1I_<9zjH$ z4+=L@zHTdhB&^#iPcn7_-$fY`o@0_2ZdwJJ2gA31&o3(wWz7`0{pDtfVU90kEmuKO zUQiBbJxXY9800*x(4d?s$X)aK5yqhW0lwGUFEJvcASurm#q2?|9*gkWg%YUyLG#UN z$?l-=h{{RMHY`YW&nZo=@<i<WcSFp9Cxh0KV9a|4f$pKqi;D0>oeu@=7xl;~j|$08 zhn;VZZ*4-NJ1AT|A?GTA>n5amZD+^ysPL#<&^lh!d1vsvs3~||0Brw$CFBk%Se=19 z$M0qAmlYXak%O`}0X!!Pn(K$mKf?BUgVw%)_Jg9Fp9-D>hOE5<%R|o%LSGN&lNW>- zqj9$^hxi+z4_O|3|EDv=&G3GqvnitekOyyDpzK{mHUqZL6;v;v%&9t~*Ex_e5x70* zbFR*&@cJLL7b7ad6I4H-*bAELN4h)K4AD->DfM)5EcG?^O^*t9tBMLXEJ%XfXM<QH zh{wJp_ppqVTyT9vq<xl#DbA>EoFwBg1IRo$BCH{6IS~9n_mZ5{@TkhjaKoJBN+-B~ zLG7JX@R}8bT2E(3Nd1qxmI&M?L9WX|bu4<gquYzzCO}u~=?p4Y+_Dm3?Lp|;4tP8{ zgX=Sta6va8m%l(^f-PM@>tPf#!Fk3VseR*YVu~J~@IBq&yZ}9$7txl$Zyu<<gdUdY zX#$;(whkZ#v{sDJ8O9!d<&ohgpm}fby0hfmoV+NbuuAlN3ihuH`krp=>&?J(Y#xy% zQQ_rg@bWSfv|cd>yoM6I2i_2L{xRfSE6|!l(3(Kd9DHg>0sO8{Pqg(DU^h5BrX%J# z%QM3(Q{egEtFi)l&rS-qGmgP#xD*&5pM?yzA6jPO&;wpq0XZiP8js*|*U<v(SNMD) z=nQCBpWHAbInS#s1-xFgybPocYnX!0T}Hci%M(#1mL!IomPSQ*f!39R*Y_f)bFg1P z`qAduJ#%5>CEzu@pm}uo8pE^*@OsE9@VY^4;ft7e#7v*K<t%)R!RZJ+oJd|vh<#p@ zMtlB^oidWZ=`ySsbY6C1cnYX)M!gpeOPYuG5kO%Ni8~{oaF7|GvI$%_gYpx2T{CFD z9+KWcbIqW;;et$)+@WVqgVx;|I~9Z0@kN67dKH8EIiNW!q<#iyT`*!DFUUN+X&y8W zk95v6IE`SWcaU2^XUl``q6h-7bBI9Pv4(Muw5KzAItS~A=R2QpH_(|Z#^8Bz&^ZZM z?s6k+Mowu`ZWyTV2~O+CVGQvDr0jvOxd!<YDV>ADB_OZFJk<!E_ASBp${9n?Y(ViJ zJU=3bGkl#a+-`7r>Xea`WtxoVzPU<YXU9Sx67CuFadyIez7(hr4cc##Q(=IotzPMy z<qF-~3>^<fKjYlc5;X1s>VFqS7<=U;M}!q5=Z2+4RHj$@X8A(&g6k#F+=F92V!smn zOi8qT4%z8g)PUANmLwSk878@hmcsYURHCihbt%qA>;=Q>Udw=Br)1Au#N7s<wa@{T zusuR3W|t*<1QjG1f%-G~*xXd$1KKMJI^QxPD2G6wr_who5E2%Uvx*?+zy!nB9_AzW zQ^5PRAnhKb$OzAL*nVb^9T;a^2OH)m83%&K;lbyf`h>fcCxXts2DhPu;PcU-ep!mU zTXB+e2K+2@(6}~eY(K);vjBPq0{A=%&v3*U3ZOfLA|rwdKx_29!DHe<hRL~*`WW1A zbI-{Jxr<(BB!K3wBEvyza|2=X!{GV~7Dhg~(Dk-qUOACQmX%S?83j?!<yhknT*o2y zpMk=$G&0;TD=Natz}u|^JpUb;>y{Z6UQU($jnIAz`g}KN+&lxkUJbUEVBqH7G2N15 zP>iyE7~>3g(0)nF@)Y-+vZOp;P(DRTUv#<O57eg(cLVQ@0naTV(myyogXSBC$GO$e zb#LyLkh7|d!RO>z;#o_98K3Cq=hOU*1kcek62NsK{NB3JGZI`3kk%f+&r=vZBO%Y1 zw0efX9K2suMs{Rws7X{vdTvy14rt$HD0=-#;v98Ol6zQI3R?LC-4j4Wy*3=qMldk; zcMr;p3dzXvcZQ#pgjUYda4sHOT?ZSRg05#6Jrlt)J0-j#2YPM^XkC1H5_Qf*s2sUx zA|UoR_<+x<2~7{kbSh2^cGUKCcLj|}!~3|A#$lDoMwXy6GRu>o`{?2GfYdk-A#3zJ z1kiZ|p!MA7_u+#3WNuN0QJ{O9JW>jha)ZiJDow*v!b8nHi5aJbj59&j0fG1FJC!9H z<rpM}TbBA~g3f9O?O)0<iV7>w1oxl7eS4I#O3;{8Cg|KB<nhzg$`sIfF{NHr1>mzv z5$7#{&J8E}j<|xPJSW2xXD9F)M$mXFcux&zeHPN#DCjQ3q+mnvSY&dpWigJi)^tyo z0_ZqyMp+W*3|i3n0C`Tuk>P$hiSCxgpt~e->UDQBOmVk_>^F7~GXS4ykZYM6m4ho> zK;zPeWl`>7#b9^mx)rB{!`F?2`>>$-EASYUvtxQ7XwJ_g%mA!5!YLbcH!DuJxPsRu zfcG+k&OC$a0gdlrj;(^t2F<sC&$=iDpP2#jHz=JLnG&Zb+|(c{!qd{ztvoZ)J;#73 zcjbmvMS{+U$n(kpo#%r`5BMxykRQO~nMnJzLE{XNbFpxRn+5u~FnC@lz$2^}u@|R2 z6KVf_3HV+T=pBimc?2XmtY(467oq1#K=$uBdli8CU*LUG?m3|IDyl$ZN-3F!*zy2$ zFKcL?f2LDGvH^6DS8#eZD8EESq!)nCCBQab4xI;x40du%3b!;&HVT8rH)x$=R8CSJ z_`Hey#E2l!oq{km;Cm?{VHsu+2)*~&+Zl8|Tu@Fb5ob~)ySr7UxaVXfIXjxc_SbnL zjeCWF*1~|!Ljau(08@+W90AZcHt3859R3S%wk%G>a!v^-%%S_M(9<(~EEQ$`&ZWEz z6epm0o)q^`q<BQkBL;Z*WhLk4l&2uO6?PVkYnX3fSWX%!z4>N2g4VFW?Zr0s2vP@` zr=(!NcP=FDfXssKdoEAT%_#xhtC^A;<{B9hlmVId1I>#==l>yPZ@MSwKI6Qgg2?a+ z^n1=x&Kd|n%)#ZSxEq4Yp~Q%woTOkU3s3iqf+(Ym;>7Tj{1j&=qsZ_ILr@tHI?o~* zG=Gt00$&G!wAUN!odYT0vMm(L+Jls`Fe5ipf9PHCkU4nxzH4xq?w{!tlH%b7I=>KY zKR$fThnc5yGTbeoxld$sU}plr;{%*;AoYcRrjt{0o>xXHcx)76FTyXNbz~I<N#QvL zIM*}aIOhO)J%c|iPC)a+sAnuxrG}ek;WQhzR>H6X>27Ao8U%2ifOO_HHOv6#TP){2 zfcl5T#X$-@ZK15)K=E@)4rpB+j<_Hk&+ev%N$$vD08RIhI4y~c2+B%y^#iS?#FEw^ z>s$hJEz3ab7?Majo5BmURwO4f+yr+TbdSma-J1<=13}zliJT6T!rcrajWR+~KxLu} z=D8ZsaCQc*ag7RhD@E1|xkDnXGSUci2Zp6#ihE9Ra;0fjk`Y*}G!loOkkcWoo&=SP zko1ERc4bM~83if0-Q|wBp8_fTL2G_sXJDb7sSsfV&!3<=C?_ex7vpRR(0L+|^Bo{< z0K^$?;QjI7x*A&cLCPOc8x~rp!plBrSmO$JP?;ZT6qcW4RFO^0`X^lGfZA!G`BK<A z4R9DDt)B|X3oD7t4XZ?pH+Y`#&vZ%)g4QEwYGCnb=IMqRw@FZQk=+GjBg!gpdoTm- z4gydcF#|Do1S#KO_nM;n1HEkpG7D6HL?P#2&|0Nj%iyR8Kf@#s@Oe7mb4bwrlM>-o z30j-v4_e=hRQ`d^(g4@PRr%@RhLE*f;BbWBJ%Bi82j)lcy{sN#22tUGsCnAMsWLI# zupq@f$0#Z^C?mz)7441$40*J(MjX>Uq4hf?jX7FE&+mYYJEFNeD$@~qAGj$bT%q%& zkn=kr=@k*SkUJN^bx*KqZen-^sC|q&r{@7GFT!##?%RN*XGD5;vxMB2l4}S)(<RUd zv~J5$ALRBVkFXq1m;7{S{R&zK@0(<tl9QYbE(7yn=h}h87;G-w&lM@*VU?+%{DjMV zn0Ow<ogjN6j3NFa%|7@YJ86(`HieYaZhi)l5ncwKE*5b2L)yF<0a2M5Q1@j+?tXD` z1l{oh4HM9PAwfB*u9msp9&UzF5niU=!HyXLAqMF_A+C_PgZUL)=Vq5CgU_Z2&G&UK z2c3gkkX&h63{E@F(0wZ~_0V-q;P8U8k=8hRc;!TfgZ2X;-`fi61G{CXqTek9>RW@( ztuV@|N&)Q+aCc3Ix1C)I!2LV0J&^fdNF1ZLql3X`|KXAY``HUo&gNmHC2+srv>X)9 ziQ#U=(EI2?d;Fm1j)eJx*4X(tL(dpOvL7YwV1xyv-3+?NBPt>&KgkGO79fQ^{A^LQ zJQ-FF$`jb`Edk&E;OqwVD<sWf_y<(px`WRns*H*No%5XzUE2#O+rZ%oI)B6?tTHJR zv~IAXDhfIl3YG(<2c)(hs5~MjUqjO^xL=oC2`?u=XPtoChlvqUIYI7j29aoXA?i2K zxl$>pXHt4V@)Eec9pPJ=1iJ6WI4IxK#UvfJR*?udXCxcvltxx&!_qZ0-=KyIte$|C zsh-YG5OpE>>E14m#Ypu|c2sypMrwFir8mkwdPsK@!}ALGUMEPNuJQ!U^Md0JQZK{O z2c%p?vm-AmBFH<`z|!A47<xxjt{b>5?CD$#^9MAqXP2h9XXGShBH!ufm=8)rk%+Yt z;C2Eyte|C<Z>A|CuADPqZY)hS3Nr<jH(>o?B`D$%!Jxa(!SzUiPagQ}#vG`-!T$2i z#8GBAJElX+#Y!LWxm9TKjNvBJ;;3-bycG9zr2GOZmtkkYLeg?taCtf?Zzs9CnR->0 zgU+XO3vqReim1#+YJ-CM`hGc}b{q0~k>uPk&^cjP>N}J)2a2<#2(&Z{P3zF`ceDic ztsrp<aTh#IgVv3OgT@WO_dP+@uV6O|ZG6uJWG|+A*coQv^yO3)6%phV2{~&Mtqk$Y zNpXdZlVpI#Gjmcg&f<cWXSsfc$$4I&u@I1*5Va_GJ)yLL5#ujtXO$&J_`%$g52>R- z_ez!^%5Y~##F?$od<`D+&JBa_rH1N5igToT1$_4%xSxr%FV!hOF(NQO3L~96<si-! z4RVbNkIG01uQ0%9J44-(WMt|IG6x#3kbGfS0#4ID@bC!&ov8p8LoN4F!pATft&N`& zfu&qPuFv4+2c`#PI+lBb&#um?Lf9Kv;)9%KP}2Z-JPXtgMf5!&=P9ALY0=8@ELi)~ z(*<7NL;PI{&wJ@U!HyMJ+*9O@<BlwN8`nLmAju;rCpi!8Y&qod60~qibkE64bgux7 zrx<uc+kHOHPUVRnUZB1zM!yKrj)c^MKA<sD_lk^2qfqd@tDbINIZ*~-Cdtm}dEU;+ z>E4xav(mjQ9rL_{lZ!o_Q}PmnlM6uixCVHD?oG5TjjA%q_63~@YaCRWWMrBbkO?~n z0Ft*M>(xQyNszWVRrXor5}YT3kEKDzyPZJsSCwQ8+N<IOx-S6Kc825|NShpV7Y5|) zJUAb8b|`dBH)t%;-K5MrGr!QM5|YP!D)ZBQvpfw*Jo^C_FCh0}S!)QotF=56dbTQj zegw206m(`gXq+y|$i&PObZ)!5n*pee0A8nxzDCv=G!Fn8-wH%Ki>){hbYDSIX0jQ2 z-wd>G4m4hlSTAadvKKP|I#=KczMCAn<`;ZcFJ#RvV(c5do;Ekh*sH_`az8fcTszEl zxuCW0X!9V@v-VKuOTcH*d7-$))7dE_B_gN{+>djw$Vq{(K?co@fbB<DZ{!mWn->Ag zL+T>f*?t~gNat@kIVOgK&TS6_?dweTgsok|r53cG6nrMQsbMngoU{lhto{uI??FMG z69L67czy)CKOI5s3$T2qDd_Hwoa8Knba0&KW)!4=&-cOz8x%dsM!rygK*mGBdePI1 zs}poS1ROTF>sBmb;8TT`PEh7Sz~&*&Im<LGi3&G01iJyYRvjrXgU&WfMx3#T^}IN6 z+cp?{CNre`g`O9OITr%9+uRFw#$9l-8R%YUEb|kP@By8ph>{LKYt<_<JYAhil8nQu zqQW8ZhJF?ycy0=`emfIBX9ArM0o#w<=E(PQ&jIbP1Dz9=9N`Q;UlFuM9QoWoke}gw zD^Hh#QczzCnlC`}KA^l|5ETkKt2+#w#=v9epz%M@{D}){T!7oJF6CvBAsFHou=53x z!W(|R983)NIc<i?(7g?X-kJGjo^A%9b;ppqY(RUzGA+tHE1jy6j6q|GVSbSjPUVT= zrg>puUcLblpm}3M(0v&h$<C&Q$(5kKyA!D01HP}>r_!Pf6I+7pEAw<qaSP0Gatbsk zP7lhq3<z@#3yyF%Df6jxEcG!qft(={0jihW%6*JL_kRbXiscqmLDa+7Vy7pD2c`!E zI~w@qRFs113fQ`EPj|oklyK7`aNo?uF*72#JTocWtvneNhsM5{{+V7*fuU|r{swMN zfd;PTfuU|LfgvSMfuVk*VxwU&nhr+u!f1IgS|*Ox3!`=8X!~HajWpUO9BmVhwh2eu zgrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu z;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#E zINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=O zj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6 zqiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2 zXq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0 z+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVh zwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y> zZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{| zn{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skL zCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R z2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS z!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qisU^v<WkP zoV}`&jKeA;jlzPHj4Ta2v+^@N^9*d2G_AR~^tH6K^c89~b-47k6imz&wDh4u8fm3@ z$t9Wjc^bL-DWy57Itr;31^GoK#X1V{@#U#W1&PVo@kObHrI|&k@$s4p)m&VuWr;Z& zO8WW=#U+(Fsk%A&i7BZ?Rtk<ODa8uK`MIeI$;HJACHV>^8L0{`{=N!Hl?sU|DVcfc z3W*9fU_EvUC5h=Vc`<qV`U)WJV5MN0;+VX$#3F^{{JfIXyb=XlY>v<{GSIY+$;(XB zD5)$+%}+z9wzXAIFD@y{%u83-M2IRxM??Ikm#G62)lpDakBx<x0<}ypCqFqcr&v<~ zsu&s$3brskPzBatXD6nlAh{aJyAThQ7NjJWq~dbFrbdjCk&$Vdsj<0Hj1rQg(h_ru zQ$e27*H`e!FH!IX$B9BvYC%q7a%ygBUJ2OW5M>J0F?kC5`U>G0sd>n5NzO>jOHb8N zfVu$`4M@RW9FwPznWmwL?rV@?3NXKC<d^6rCMTyBlxV~#DJtse=_8}O{FKyqNGKKS zCl?n(lYo9^UP@|(URJSvaeir0a;k4)0bZSDrLe@KpOcxS4~~D`<ow)%%$(FBgkjY& zF)>P+DIn4cM5H8^B<hyw8X1|In_DCsfrNBGL~(L{K`KO9Nl|GkSS%y4*fTFDGcVOS zKQApa9i+?(Bw0(6!%}lnlS}f8Kt2PdI9sqwi`Bs1wKY)G(+@~3D$dVK%yCRkPAx7D z$<I#BE7mJ3O$Eg*Jb!6|<4Zw7K>?J)^HR&5;fWlYzedAaznFrs2IU)2@Pd*zD4z1u z6p%w1rEox&Kq?<nbda>b%LuTckldt!&<M4z7EIToWkpEtP{=G+NXaZN$S+P!(NQQ$ z&CM@M1?N<>{0LF42g-F&<%nWgQ=uA~lQlH06~MOD>gy{j!1Gu^W?p(|kdG}WUsxp; z6y#(kCxQxe{jB2rJnQ6)#G>NV65G;}G+hhpq{QM>GZUTEN-v|R2(PNdaLZE9to$k; zXRqAE@QNHzmEq@-T$-5Yi(H*ld1e(PdFG|$MCLhVL>d*F`BYkz`D9vFMn(9Qr9^mT zMMe0QMMn5lMMVTv`4|;c`55_?B}F)uCFO>drg-?4CA+&-B^x`HCFcc}g}R4TCL39n zMut~7MH>0#BpdsMCK;9FB<1;*rsRd?1XOt%M}{P4Mg*5<CL38ACg=L)BpdjZCFKR> zB;^HW`sWm9`czt^CmRQuCb@@}B)MB=M7f7m`e!;hMY#u6d3yMjC54BkM;iN8d3pqu zd3prpM+G~%h8P&6N9JXxM}`MwCx)BmdAhr%2YC1yq=r}I1Y|lHM24p%C*@R>g3Jb+ z>Fi{X=pG8SC#)*M-P9;D!ZSV6$g(uWJ*+gv+0oL|!z(8_BCH@eH#9%O*)zj4*re2_ z5)B)fmPNUTr6q-1W~YQ#<Rn*GW+fZ@!rkp-lv5hz9%kZ`TTm5X3=Pjv!;EBS*HWKM z3p8w5nq(A|6Jcan7UdCE3<`HpnE8ZPltqRI<s@fX7AJ;#mcha%(#WzT**&K?D#EiY zG2ApeDk2>exB97u70D6KUIkHZAllO`!mT3NGdCzB#oe_eCDWkNH!IZGuPP(UHwP?V z43^LH%StkK%7N)g@$fQ?3a&_wa4XMDba$%?4mT}M3^&aQG_ov>%FW3G>&YrGNX`q( zNeiaHFGgX-QQ>|DNyeUFx2JgIlt+aaR;74={N<Yq^_QhDD7*}va+34>%93*3iUY&_ zvZ5mVs>0kYi=x6!t9<gJ45PxzGrdDfl9O_Ca=kr*Oq1Qi%AzuzvXYEU4WhzL4Ln^8 zECYfa^OB8&DnV()t1=rkzTHZaVDadao0IM1jL_@j?3m|eXqe(}SW%i79+{6wC#J<o zMt&Jd9=-*h?$CG(HqA-(0Og0EDo+;!Bs<`0%_H1R%6uxFGNRlA(^K3tay+4FHM!Es zAgL0PHiKL({b1=bCBi8?G9oAkWL|P^SVc;BPGwYZMzUun31J@r$qzng=?Ro)Lc#eh ztSZo`q5u?Dp!6Ey>{;OLR-Wmb<!Km|6<Xz2<(2H2S&rnN^7N=&x8h`@&;n4nfbv$b zyQP7rD=ZwGf}<jwiX+4Qa+1QsN>kh*VTTCgjItEx?DSN_ic(K!i!x8Ql>Df06ZG)N zN_2NCjWP-?_VfrVk8*c2hzf>;4_f}Nif}hc2gQwNIJ`V5O>(!)iVUx)@(y+ag?YNC zvr|cuQIKJhduVB*yQP6ou3J{5QCNA3GdL_Wd@@bS&~Z|(Wp-4UB~)J+sQjx+t~4x8 zGIGmC&wH>kEhOBnoXGORC?y<G&iNQs6hvlPLehV*VOElnVL7PmPR_I}NXiY$Np&_Y zOs=vt2j{=soNO?iRRGSXps<MyHZ<}H@vQU<NjCO(_pJoWXF~FEvXNg|vU?az4><4o zfXfK4{KyDDucX|Hf~4Fqmn0+8+{Ew{u$lgOL6s@tVV0EmB`UlkC(<~mEIAYGc7xOi zr<{NYNLoy;jDq;f#Q+pu1nZ9oXU}3!_b9`pTt5R){pJl%KaQZd1()GTxnahja%!|3 z_cR;Q<#;A2P94E{8eA`gTjqMYo93h-+6(CcAqJM7&M8$X9$p1WxygCn!A_-75h<WF z3@h`~!wpNIc{j8)F+8vs&5UAC=j6PIFav1$;FyjmXEIRC0@p1dH+dL<%R5gG!{nq) zM^HH)k?0;)3T=zP>`G6J@J)|$jwx2%c++3VqzlN4@ggs=QUEgMa<6C?b}lZ^dx zywTHqrITT@JE%?%&G!x|PEQNYHji*OwTy5#g|&0a!0k9tTMh|B>z#<8P_MwiP(L3} z*QkIH!yva%Xxqpq(^A{VILa_87+MDh!^^o0u$++}a@nVkR^FARWm*zfo@H5@L)s|i znf^KDnOMs%XV2mYXRoSABg^ur@StQ*XnVuQ4M&^A8JgZB3?OcW_yb-}C%NZj`WXA= zB)NxWrMO#Gg6g;cV^BLG)DqIB3aj$Ug|ycKLL5P6(4-9vjRQnF2@gyU2zE5^GlaHJ zp>0V|cfb6UaMPmXN=Hji7e{cLIVs$&JlQ>`G|JdF(?8S8DKOM+a7@Ppdlq}<LEE=s zUS&zfftmi9o|$QZw%CTKEQa_Hl_98GIK+pjOcPVn%uJFDK*Jc&;UXOc$k-EP5NwbR zQIR=5g`$nJ!71a^l+-liq(snwlMaX=e{c$~s|b#kB<7?Rl~7|S3dI@3kNKf!8-8I5 z%H-hDAw*6`3=k>Ujt)5yIphQ$mZ0j8QzU4pB`**<q~w(ymFo+x9%0RqAv>f*wc#YX z3?)@Xg$LzCW%*@BhS6#$iAaBtGK^&8RvZ=KWiUEq1RH+D5ysFiI;q1&e&KF8QCX1& zky%b7Zn%hQLq(Y70CC+al7@-=a-!VBa(#`wGH5nTM5I4R86rY1`)M*9gz087hxBpe zE41NPNY^v8gv{am;Zp{KhE|+MhkHiWa1T-$<UDkSdr-<C$W#u-aE`y*h#AhY9OA<{ zMxdS^qLT+54MFSS!9|f)6d*0`8R!*9$w@|OX67blLv1)mPfs6Z7=ifF2Xvj34M3P0 z8yF@U8JmH|b0{3tA>=TE<2sqSphbGAMbsGDL3hk(`0DAShA$}dj}G%tzOpDAw1R`G z!#s)MhUH1dUIvg^b~qa{>|+#^9To06JcfNhtBR=B?ErP_>C*Ku^sRENhz#+p@*8R^ ziHveelHDyUQ{2NUM~8tx=>>*yq#H7af+CGPE2FX^js0ArM%+-4Po_y3)rNzxmk%@; z5(=&Ib#cq^&GI#(*^m$kej#O82&t|B*AFxq8p7^&GKYsic@9T@qwWyV@GGZBhl)nv z${?h&X$TD!A(cyINNh+Mg=^?2Y@`ewnHmi7p(A5Z?{SC^9T{7um|CP5r;QFBr52I1 zS<TeU%skoHa8PVkgAHxyrWO_D7Y(a@YJ)zQK}EsnKoZ3RNg<B(8b~UMitwsTGWLRO z9}2O|@e6S@^2{+nEM<-GLo6i+ZIjEiD1&X)fv=0m%1;jr56VuibgD`+GR*OG2Q86C z-NxhT?q%xf?v@<|TDn{5l;P=80omda0^084mIq$84KmvuwABl3OORnjX-ckJrKdZ5 zTT6OCuv2AJgqvYvgjWt|i;gFeTd+Xe=HTu|T`K_FUG5hd0b2S@#5Nf0%d5d#?tDO7 za3Y)vl0XA2C|lr4z}rd^!-K%IKX~BC3$(Q<!zUuL#4jY$$j`{P$~VLdEDznD0$&0S z+KvX<k`fBpww9Zbk!+Atngj~hP|((}sDdc)_BZ6E;AH!Sl%?VYpe>Qfd7y22hB?W3 zUS-M9EsvmWRG{rqpsh)WZ45|piMfRVdCMA>?F(?dNLv?73!*YJ;QD-WE6O5`+=`Pc zv(ph<3c^glgI*rKp!9>OwyGpK37iJqvZK(pN1|@EG)zv)i^@pOgl|CrnTM7h(Y8rq z?>K`8FktH+z}qsx=>@z6DkI80C<L+%(9b2wJqNTsv@|i#FWECQ8?+s>%0E2N(BD0< zDk`Tu6LqVeQ!Z%BS5z=)O9XhEooAA9V0s8_S-qQAPO^JNMx;?#323WZggZFwVDq=& zZDFwOVxTQ;VMZA_Ntuu>XArlBRe_e~M~0i`MFp3q!?)&vx1u^)K-7e4dwK+AL>c=f zCuKSnL}jLDVBIq40Sa@+bWg<A!TcoSz|u(Y_C_az(Y!tA^Y-X=G|0AML%*y@<H#!C ziXpeH7<n=vJghP~*RnFX($pv=JPcIUAhw0Mqiici*&2pzYca+)M9l5QC}tpUG4^x@ zZGD56ulcBEfy*_}c1KIdmNX|z(AHP<vI<u2d%EXTdAbJ`fVb!yg@Lv;S4M>!mZju| zLblqXwMCLa+i}s#BltG9;EddqaMP?5_nfk%%=7|Jk79WF=k1(r?g`x*mljr03Tx9~ z+lJ-?-Rcx(5at}}>gEz$>Es?_U>O<|<^`#PoK4_c$)M#ad`rD&Fjx*{&=q5Ay|GCd zkz42WQw_^ALG2OGtODe1@<{2qJQK9#48DC9w#_UUw5=Xn`=dM)(nbMqn}z!Wt$wQ_ zWpFz=Hw@N3tMV~&t4cNsGf1wqECd}l0NNs)WMrC?lm|MV0cm0jPr8QG^YCrj1yP{m z4qQUZ(YK~W8f6$J<(7cAvHLoErT92|l|)83m4mj=Cs%r!d1kvg1%|o~ic_FGGZ9Bh zgyve7r8s+<d1iW9VxEv>YB<CPolHPI%^^PMWMr0VVVsye<hGv;mi06#sRk(qsV1p| zVZD-LX-P(YQD#+YigQk8YF^2(8g?220Szh+MhBiKA9!-5`oI(N*+_vAVFrormX(PS z1vyc!e#MEPGf_NX=OP7VMpliUi!^ZOA{k~!g*avVx`!G>(QGrDMX66Fku(0JY-lrZ zGfZ*MC`-=GF^dWhf)17hK?XHP&qRWrv4tbt$z0jwn-!Jg@8XvcSvB%DxedvcP2oW~ zzV3nLQ6WJ&Lv3XfzItPHl@sU;9MHLT!@T?+UGX&XRy-k>Swm>W6R~Yx^ueY?$T>)c zz9VP#lhF_#h%yEBJcsx|lyO?Jv5B$8=*GDe@>V~kS|(c<7#ms)hJmPIIQ%qdgBO(b zM+coKA9MmAd`#7Cb0`%s^gv(8jAp2Ql)JA<WF>ee2R@^OI4srEEWFYabf6_<brRz6 zM>9`Xx9lhn-}Gc7%aW*IC(!I$dWyRRWCqbSC?F)*DKj+~bf9q%=pfGY$Y8XU5Qd-` zLGWq}@PUlb!!jZEMEJp0l)zV|U^(b`cpT0f9%>p{m0s>!<!UnII-)3P2{t<pUOfXo z)Hlf}66tVgN6UZ^gLE%rKZ9h@p_-M+1!ybSlEPsJod=s1L^-1#EbUd9k`e(s%p0-t z4f#N4_==sVhz#&HQSd>TSk!`6Ux8-FK?hx<raNEMG#mz9X$L=O+7aUrc+lVnI>y-M z1z8yfN!y4#R0ckP6m)2`8}#sF1Lz<y=ul_F@=R~gf!<kuxsg@A2EJA4Mv%@u(rPdF zsEi~JzZ}S{zeSm+Yerd$vy&h6K<o6-+_3T_cekvla6`~+FytU~)S3JOPsoZRP##A< zv=-vl2;cNbql}EC+>{(2XZY#^NFK+!N+2iK+u04CXOUN(rGi!wI6ES(J_EVcGy{Ao zfJY!`1=lb+P~R}eKit>E*TuKOAAFd$CuC*fP&iN@mj0lV5RmjXdboB<=CF!W$YIrx z6-A&`qVTdBbyX3z@*3^1?O-R2G8@&5@^pB)4IQw8t&a3YJ-8e0Cdk3nCh4FRLl~C; zz{@VDg5*jk_y7>7u1L-eD@ihr%7K*UXl)J1s!MqN06FL%wgM_NKPoS*G}1VzAj!xi zAGFfb6JFk@7x-5?K~`1e8G;Yeh73|zU^z_N60%asEyXP`$H^(spg27!+cF@`H7ppS z$FbB0wh9SjlED=$hq4+w%M#WegRa1aAH)rAFM*Cg0M{SJkh%kTg>`^&NwO#CG5}{! zvj}IzYU-$voGgDA$12|t(B%dd$)4~s3AREh6m-Bg*2Di{hi!u|_kj5WeOoFilT^lD zIq=gtD=jmUjs0>!m&YXL`IbRWKC>(Zt;S8Rv@8c*HUnO%>}-iPnT5VBE+-q*PV@_b zt{Ow6m#jpOu+l_h&`M{=a`1}&T*HiH52u2p+>|QNML3{?vjYdm9gfIte*$;AnHmrA z0V6X|uW^VE7^Rt{nWdSUf$#r<9tt&ja5ho5x}~L=nwcb8P~(gxlry8yPkthJz)~?- zg%LH*S3+?J@rNs+XhU~D_~u2T@5&pTp$f|Aqr*d#4-ffLe@zm!+V;%^EpiXl_p5R> z@eLjxLqZr`an$=tQ0_^CHAk@C)r5H(6L_-{`XX-d1|@RuX$p_Z^$UqKhzv=m-DxXC z`h%p!=qTxDbQlOU9E6eXC>a9EjWmeL0;P?p97vaZ1PuXUrdQBVGko(0@%Jg>Snq}2 zg#q7tNABUvhPhE$p+<i0t|qiQ0gXt1K=UL~_b9^dKyvYfoI*m2JJm+x5xVXWwB{3p z=@O6dVHHnj(5BOj(V?D^GSrhBY3P>~l;ICPX>Z63^*}el1wv0@#5KGF+C*(phS((S zG+c*wOo$lX(Nw7B;z}(`%+XNN*V2l~Q_xZfDN4*M&PgmuEe78|os(HyqL7wfl$%(h zP*9YgQktBaqL5UnfasknWagFRD-`GFrj}%6=B0xTNlh%yOf3T4b)TD<mswB>GEWaA zqaTw8y}~-R0(35Mv4X7v?A~()kX<49!Jr;%v4TcHVo_>diD!xqSR8sMI_N@l$ffEE zwhGa)F?sMi(xKXH6{<luY=fMvpaD{ysbH&MV6Bj;U;{QsFDErGy(Gh0AyZo$Y9_>p z%#zex1zWJ1=uEJ|Q1KK6TLqA0v;mT6axuu|U|~Zf;oQ`e%tV-aBP0p<9o#TUV<gFf z#G(=fTll5#3YjTZ3NYU*Xe+2&sVitJWa@xC3+e?Y7Z+QB!XGXGw$(}jOu+@=Hd-Mr z0Ed_W4j%=D%rpfJ#k|yVNWevBro_U-LqP!&#(D*%#TlTB%n@op?gTq9GermF$dY0! zg=mlmVijsNq2?>3<`kzQyn|wg9!PC5#9$B;rU#@I?69KLlG36)r~_j1YGd+fdWU&P zAhCU7Tz6SQr(!D#l8u8xlMEq4>dBSh`)PCha^14PL&mWC3^5OZDfG?(-C3NU9_Hbd zk(B3G47!^cbayl8PVpr7oT?OOr`#lC&}P}d^kfe&(0$%nQQ?7*JIamyst|{;I29!2 zf$lK}-D?ioACyxX1)e(1Pmc<Bt4a(Hs{|ju;cl3bl$%qY5?+y!;vQNW;ck-dooShz zlndL$i+blY(iBHJ*gbARWw1M*J)JYkBO|;(Q^a1NsT8n0{2pB=@Ey94P1j-IjlbcB z;CoKfA&1bI=A^*G3p71m0^WS?=^j;<oavYkQIie2&$8UV(y74Hr5s|vvuSZuxM^OB zd%C%&dv=j`CG6g3(0!}m!$b;F+`~#h!}(zMxRn${gn_~sArIc9?4Dx~6>ga1>jrU? zr!&O8ps5s)-o%KYoTRYg3N*bXQQ<)ak-?6Zo-qA6sQOXH0$dEzq2^SfnF9(p&^_YN zJF7vP^g$Pv1e$qzIAtW~hLxtc=45+17pHqw<>!Iu#NZ0h9kJ=)4gH{lfvWPsch~#4 zLH!1vA`i<>40kp2bT`b2a?i;?mP2-zf2I@C6p<6uT*&5skok$>k?G#fZlFU2U<aop zC58v3fTp-W=>??5)7c3&)nA(I5muGx48G$QMLj4SQ!AYcqFnOR!T05Y{FWC~<)7)4 zl<e+Snc`-Uo)(+~x8Kt}40H!LN|=DA1!3te+$bkIBG?ohcFC2d<tY(<`QBhN0}Ej8 zf=vHG{o>)3lj0FpnUo20D`<HTY&y;qJncs9Lj|DsZWkv;_!)$`TSCJFH1>wk_JD1c zH-Jp@!S53XEu9!Lo8|ot+?)aph}gJaNy@#hrlv%+Uvw1W<I7W%3KEmE<BL)YOEZg7 z<Kw}N8l}?WRE6S_qRiwHC2M#SM<LwRDZtU$TOrIbNWs(3%hfr=)89`)OJ4)l2+>H- z$xlkm(Nw6`*HQ$vSQNraQ}wcn70QhCjP;DcA{xn>3PuKoCb~ujhUN;cWr=wTk@=-y zsi4%H)WqV{6ot~f6i@>wBUQoIGep5BGdVS{I2G0eiph(~)7Mf^(9#F9^g%7H;#7r< z)SQCUqGDJ(t5_i^wWK7qNTDoOAvr%KRUtD^!7ErHH7`9gFSS@9r8E`Pz$(c|%`5^{ zk_xF6pb_HClDyR7Vui%K6hy-+GcPAI58O6`c~c>?I5aOMHBCXI3|i|$>)kT&O(h`L zr)B1)rYO|ZC_serN^^3+)p1N7k|8cwjZn0;1qT4c2sJf@G6j$jb|XTHN>gz-qok-b z71K_)L{ReryTieE&VseT+Oy6Xsma-(#!gvcPHCz_CMb9_b2Cda%ThrxrjO#CfFh_A zsO^|jnu;1WC6xuK`DqFegOIQ61cef&WL{}*QfiSp*fpT|)&kk55LlX-oUM?bl$DxX zqL2)BoUTGiMrJY0X^BOdIh6{fphQ%XuTYW-3U&o81%I%PVuiG#{9J_sxI4j)DOM=Y zNX=6yPgTgy%P$9|CWs@!7G@SJBr13X`}^sFW`S}t6Z1+GK#qkaMx@w;*rA}2pOl5_ z^ZcYNcnm72se$$9r-6I{PA=*Y@4&nYYIet$<Oi1&W#*+T*g~DIS5TB+k`J~SCT9&! z{?LvGNO^Jz$V^bkfYd>PM^C{&FQ-xgl0J(SAZbED3*5pl$Vmicio~+S;N+sr0+{Y% zEPe|BDaGkQxO4TA6LWGP0RWESXo%OKeu#y65h>7uQqx^43NTVInu%qakdT6z2hjyL z51v}{^U6|-N)!?y5eUlQiQr-^FI}M|Be4XOND`AvN)vOyK>{jdQd2N|3kzRxDn^aT zvcwz(TU!N4Rs{7X>=o42L5*((1uIyzLe$tQAfgqdP(i^SoQ(89rD|S!W?H32Sz?Y3 z*eD$ZBWOb&WDF=K^U^`GnrMmN8ScHzyn@maWKTkJ3nW%ki;6RgOH%WaAtk1QXBs$7 zCxdktXXfWAq$OtN6zf0}g+hK&W_o5`Vh%K<u!M&nI4>fH2Pl!|DcFMgFvY2EIr)ht zU<X@+!UB@k6f%qb68$vtG!^VY4pp#H$V2mvZ(??;LZU)$Vgb0kg=$Mg6ufEqMUX@c z$_SZh3W*BYsg<x?nVAQP(%i%X3>W7nW~cfl7AR<doKsv<1n$<QRurTrmlXTtm!}pv zCl;s1<U!*W<QI@5;8`uXC^fMpRRa{ukhxQk3Q+f2!4?!odc_4fnI#(PI_eNvkTZ$y zEaxT`M1zcq&Ww#!um$HwaG)Xg-Y{JXN<sFBfB}cKLNzP`L1vaE=IE8=!#$^=8EdTo zHWQSj;Q0-^Mu^f{<l+Qg?k6ggB&LJ&jY3jsW=@GNDBKg%VL=WGnapA*kc?+uNFu1b zf(E{ZdT~yEi4LgL%+E{BD^b@0dlnRAh~hjbH8;O3RUt7CJVpR1ofGpE5{rrw!4ZvI zzZ5~#Y9tmF>423(qYu;*Pb?~e4oyG>p`#CZDXA3-wjlHLGC^$rG!4+G1IQ7eAO&d! zi!0bE=o-ScD!>93WGpDMlT$Uo%5)SAp&1n%w6$mn8WL#b8L1^1(AEpI_{&Iy3<nhy z<rkzDl~f{!UPfZEe|cU2R0dmlkE+5Nsmg`OfNLBbP~L$00Gg8^vM`h3MKeSty3@f) zULjE-IWajSHASHeREXr~DddB4T|sG4Dm?MQ+zwAuP#qd+$oUB@i0}+Xj)FQ7-f)E4 z>z1dWQCw04^#>#pGcrNLJ75E&i%W`P!Px~KMIhOl8U+o6JZMZT4{QoJu0Z1|s7X69 zH#H}-3RLuDR2F2U=IN%S=71V5sVSh`otcM{xRar(gIpDC74&sAVq(fQ_0z3m@<1sc zCaGWxbw9#CU<W`(aiD%JE-BJ0N-fAqOitB+X$*4Jfd{ODM!b$fvL+&1Co9-1B<q#r zhZYn-N-Pac1uF%0b!+fgQ7tGDBXW{+VnJp}BGg}yItCU~5SPNGiFIpoMq-g;iH3nD zniI4^p`=%wlbM{V0m=?&4)FkoX<`W|e8JuXm9-!(XaNfe`^1t|NXTkL$LYpuYD7Eg zM#Ulm7_Nxe5C#?a3JUOWhU*6fw7QC+u8NU5I8_j-2Bk!e$wTvMaAs~nPO3suW?l+t z*;z5Dw^5Rjn5U4Jh^>JPQm3GimZzhTTv7o|;_zIQlwX>c0!sdgP#H+#&jFWS>7}{g zvz(x#uMkf{lT{9c2WnsBDA*|&!nh!Tv^>4Uf`Xh%jpULF9fiaqs5#IO0F{7N3Tb(e zk^!OwE`=fi76li1`uYk*smb|8DTr1>TAl*LT_BsG-q4GO2!Zn=v}6Y7Td1R<%FqiT za0{gbR2?{iY5?7w%<NQnlQv%=QK2X`F-HL`2TR=W04&J|iz{e=YF8bF;*!Lo5@=9@ z+2FbxG*nzuqhJ7b3n*WJ#<xKlpl(#qg=mD!7o~y<pS;v^h^-o#pj@Y*P@a*Qld7PR zsjCaM0$d(NXM(D9ka5wO3ZQI~SX2TjuE1dj^?Olj37WrsGb=#7R#4TDnOY2)5hzJ4 zN>7Eg$T2*dT2Ydkm!hCilCPr>59-rEodIu(WT#ewI=sko3JN9p(b=h$AUA@=!5pwp zk)2nPkM6qEqI7T-4GG`;G-zuc>d-`m;>^7CoK&bNhEq%OVcmwrB3Qu=3i+Z`&>TQ@ zE!Y8YcZ1>sI^O`Qd?Bd_b-DpmX(tvHMQ0+9xI+R&qbRi)l+MADV1pGPjUZ$X7Nr)W z`7j{02sB5dke9Cjs-F`}GV}8={E?TRU!b6&37#N96uXW&<%yNWu=WDD{|wU!@?>5< zC<m10C4-Cv>qb#(tpM^q!n7dh=zU^tDyYp2>b@(0Mma!6Wu~O&m1LGwq8JDot$~>s zk8YZKYF=s)q#!OXNi4}s1~n0ip+zyItp#eGf!2#EK&F+7VQz=#s`S*nV6a~A)XHK7 z4X83`YJ(<dsGwd^DrkNSsS3<att{42$c3r~XA#ik1V~sfIX^Esu|y+R58^bi@ijFH z(Xo)SMhC>w%gWEp1Glr$A`H^d%1l!zDbI%lRIx&0QK~{tetvOkPNhO>VQFHH0%%|W z+~)%||FuAa7$q60m0*RCo-d?zR;;6tk`L-3RVrj8mZgGN3dNupD9%VMNVNy`H;|j5 zU^`sF7HA~uC?r9B2acj*NK$tMO;bVH8i|k+16ke)Sw0CO4@%XUP(6;IK>`@Z32K3Y zLP=32q(K2HxS?SW8ks=qQYJ$B$!MZU;4oECs8vW#EJ@B#(14B1fDF>tS18CYF3wEK zNmWSBEJ`lTNi0$*N=-{G0`(w4WjaU|)Vf4)H#`X<3eHrukm)Lr^A%xE2D=~5LwEpc z2(*I>bt{wyaU;~UYKR3;_266u5`ne1;i(fG7oL!Yy#l0TPzD}-1gR#qOaU7Pj#!XM z(V4M2proaV)F8{mEKGC_(UPWXUNNY(jMR(GELH%Giln9}<by_H@?rgQ<U|D$1T_ty zaSci=P(8K^VDEzqGgx>amnR^fDuB|qh9X1<)Cf?dK?IO{nIKVkqX0B)1}ZIKtpcze zhyoMbXa>0?I5;TYF(f2N!B#;%C9xz?w>Y(^EVW3tC>1h*q7EL20;zNi4t5QR4~YzL z4F*jxgWRSLDq^4=KrlZgvnVwg)I3rLWlIJ1w9K3m@Hii+ri3)BeLUS<og<xnT;o0b z{k;)JC8eh27o|FbyDCuKkd8$Plm}7Zn_mj*Zh~#g1+i06<wFZn5=&B{T1vqjR0S@n z#U(}gl~5Ha5FXr+M3CzfOW^#JRD?)O9>f=j;b~B?B<JU)WrDiK8sLNt8Ld(PjY<}P z>xEo!4O?6SDy-8%EdUMh_+@6ELUMjls(xunW{!S7SZOgNCxhw)1qFzZFGzDRT(1?Z z9)^SrWDr9K)U{VoKv*0O>!ao?6qgnh6oJOP%M*)0quk&+05Z6)pirEdlbTmz1xbS# zrUYl?mxCHEDW#D5Ef+M*UXod$kegauoS2@fke{cJl%HP$Dnnr=LRLY5yd9ERV5JbF zl#*JOnv-7uYT(8wfrm-e5o$nD0E$PfE>F!%1Ql8-sbwYk`8mZPbqbJ>feBG&KD41* zkXn?6WHyKkTF{Y~oQf-4TtOH9C}bq&rR1a*fyd;^LFI00kpko@ASBbk0v-^RR*=C! z^tkd&&&w}LRY*=PDgh1GCYKhM<mW1+=A?px4B6M2V1+5JP#G(Q=va&>bB5?HElw>0 zwFVRtb21Z)Q;WflEYr=;LvmVnYNd02N@_82DGFXC!v~CtQo-d!ib64{b_G?$B?`%j zd3pII3Q4I7MXBkaLCT`k6otfMg+z$G3h=^0Pay<0sGpNq0&1P<rlb~t3Y<Jp{~$#n zH?b0AOnzBvQF&2jNl7ZW#Rf}dnZ-d++d~r5trYU|F#{q4I<Wy7ZYn7$%1kOP0ncyX zcQ!a<f*g!+D%9zqu^p<p+Oedhh=8-<<8pZlrFo!<i#%AG05#%3rAq)t$U$ZFK~4ru zVS%+l(+gJX+*3=y?V-HH+|=TN#N<@)fDqg!kU7vSm!4V@l9=uXQwK6FzW^iD0}_jh zAuTL$PYyJ+2r?R+{7N!X6^aW|lQYvYlNAb}Zbx=;0Z22<Q&7vS6kzRQ47(61GEX59 z9>ck%#o+V@?tv<lg8D9?A`H~`s?<?P)l1g{)%xI;H{mb@85UZc3L0Vqc^Jb9t`!CO zpqVI8QzR!fJuw+H5tCS)pNE`n<8w08Qj;r_b5cF>^RtVs6ws<aq+th0@`hBBsksFu zm5}x(Vw^3lC^fYzRihehpaKyTu+~4gOI)l_o>`KiprVjpq!5qZ&P8M)<RLk5b*5ko z76L7<QrFZ2jT3<i3h-DFxD8PR>Bc038;b@NMkb&cJ{Zr`4XwrGk_wvWR7iwJ11Qcx z<v6^V2cBuoPs#$1T!LF=Itr<IrMam^pb7xm;DH2%UJBSWP>g^ET0v7$P+j1v7c{7n zQ<`c8ieqr|LjlPkD+NVGgt1U*P~ify#R@!n4Hbk`=%rxmArhdR01k9;s|iwFX(>RG zdog5~s35T<1LieQFeW8t=0L{2qT^y>%Jo!Y^^wPRA*nsFBm=aTuOtKNOHex-qEW9T zwYWqBWGJYK3bJ1T+7kq^!EJMpEybzn;Ccc)S5uM!o4e41&RsyG3Ley;0E1ek0M3=@ z6B{t|paUkTU2|wd6fyw{bq%D=3~G3Sra^5%!#U9~LqL-t;1mOGb;5iAQUvt{G(3@0 zKB%FhV5<P?kVD5|L2V8c0Z@gJSmK<YTL5l)f{G<jqJ_-pDCp}el;;;^D<l?y2Hh0W za`MX|^Gu+s7Zk#vSyE^yfWj~%vDi63uQ)#^71Wl7Ok*cQ1wb?N>hKAFP*WI`#)=e@ za}tY-Gt(*|F|1*46;~6j8y~BQ7(hl<htjQw41vP}u(+fM6c|WDmI%X<hmTRlj!_3~ zAw$NXNPrKG>Vur4pRS{zuC56iIZ#l5hAkpJ<QAvvD3l@k@Sxy93J*0k1r0?=cF=<~ z77?jYK>->_df--$MvPK)SZONQiday~OhH>Aw>Vuv8!}A?a-0Hav4*`uI&|Oy9)BT4 zph0txD?sDlkibw-(1i4yp=k#)lA@phNefi=04P{s?k~wKprP}zr(A@0%5rrSGV_vi zN>ftZGIJ0ec~HER<?5*v<>!}x%Uw`tLCZXNwo<nV%Fi#cgU(ok%Lqs+1Xseg@EPn} zunFprX#}Wh(0FoLE-dU3v)xd&Fc+$W#xBZo^&p)SNIeIRT6+bAs2<2Zm{Fh!%CcO& z_{`!kXtfJg53x^A1!@pj3#c9ec@icT4{tAqB!ZSsLp4H81X%*^nu3Hu`8W+UXln~{ z2gEX{Q{h&`$AeTr3nWm0DuRpvsRD^Z3j~;9xu7OJDA#7@r0Rh=8u}X1ar!YaF)^{) znlUk;EzK(Wur#Wm05;230jv~cCYTXz2<k9`%mf#7AO^HZ2G3oC_!?l1_6iy?N;WY{ zpzH$6{$LqRO$BX*7$v(HCD80pjFOFGUVdI>ZhmPoSV$Wd%o-p+fb2y|J>c#Zczi(t zY`#Kbi2~RPkXn#&>af`oaK96l#Xw<Mlv<FQ2pSuQMLf7kprZhr1can3$RMveq*#Ox zn<LafDvUe@RRtq(k~4&iwiGL9gJ;^|Q`j(db_!q>#U(|UD)JQU>}(Ybq0t9T+|a-T zkNGM<M_VCI!(PaMA{0Knf|P|osR5oyL7@mrhLBa}Xz8M)C>2yqM8o10Vq0=)5okSr zP-=2%QE_HjYH(^{DQJ8Ryu2P3MbKFVBx^zO53(9$D73~^uv0KVvJ#{M6dyT>#h};# zDU1dYFx9#W@Dv783JFM%V$cX|aY<2Wa!Gy>IPA-Ek%iE#P*A|-18r?+h(nAA7vbPM zrUD5bG+EFw4VihU867(62l6N`Td?>VG$5Lqis4z%z!S)SIyha7h#82JaoTAMohX7R zgVr+;4m5dzIN;C*FZD0WMdWte;Q-ePO`Ga5F?lgDd1>IbNG6CG6O#wpvj8#}mNXO; z^l}pmkjB=*^#CNdfLHu$#3+Gtu0|#}G7S{$71VWgb?p??6|58>nN>qwL0w0|6to*c zK}*31TySWBCw25Pi@~%;SuQxEgS-X7_6iyrSgItAvfOBcSg;8(N_u*Fpu!1MGL_{< z8^%HkB+xt|B&~yoKZ`YEl+et!0yQvm(VA%>Cuo8iBuI*(^8lb=fr>&?40`<r3IuRq zYQRDhQk>!N0@VEomw}@ORLX%1W5ggHyo`g4=|IMJG*UqeQNZz#mzEFBFW@u`9`1uQ zdZ0r)P+4$`C@nJ`MGi9k3Tm3_fX0VFtu0U$pOz0vOsHN3nUB;u1w|6LZK4sQ1aVbn z9>mL;d1?9Jior?&bQ~-sZKM_z>A_aFX+V7sk<|oQ3$YNM&h@nvGK)(R^O8z)6d+?u zkg<MH-wb3i$Ss+9PDT0UpwT46x<+WL4_vt*HI3n601gFEYZ?*^pm2oS46y+ouO%5p z`Q@Ncf#d^7{J{H<kWPWVmI7qeaj}ALDQK=LKhHl2JoHoq9-9EK?oCbvFYp8{YmScx zFQtr+w}*73GZKpfKx->O!`pB<b<pf7cybb~9p=f@yt2%q{5(*PN})I}Gc66gEErV& zA_4;5j4IE}OUW-s4+dzLB@{eKgdBPh<$8IEWtr)TCHX~qpg}sv^whi()P-G812T&} zK}%9X!ILfexy6~OH6=yh!4Q2&*D%x(6slmi6??i`D%dJO)P_33*Fvd-v?*BX8K`T5 z3Rt+wt|{rDIt){NYD#*lKAK|3yp*E+Owc|rO!bKnIW!%f{-7~^h-&@Jf{gsU)SAqK z#FU!Mg8Y=4%=}_3K5)(`%FjhON<SIQkBQNbiAm8$s0UTeikZbA4}hC~An$`lxburj ziUUABvNDhv;3kiCOdd)KhNe%XSvHX7{DKmsd1?jN=sNl^LqSQgj)Hmt#0GU81;|K0 zD3_$Cg2vBbZ3@twK4=mdlAb~GSaMljYDEb+>4M}z7}E!!G5}t)g0lr^dJj}^>gy|H zl#~<{Tj}ekXO?7?Cg~;T=jx{=CZ{Il=V$AKI=lLr#l@wm#rj4TrVw{PlU`y<ifdVF zUWpHAWHv9gNJAYo#-NMv6{L^?1qmo=fow#YP=w9S>4O&JXBI2urKYA7gO=bXr7Gkk zR#obPc1nV_Kc*%pg7RTmX)0_K7rOZ%MFBE_1I}`wlXxJx7&g&V1R6e8C{8U=2n%(M zcl8T{<lp$r;$ZNE6g>GtxIv)NV(1!bcmWOzdr-{7HG*qQcpn~`4nWf-80BAP8a!S= zCMY6uJ)-!76h`RT9&V}vX!s!|wFI<G8#M6(ZUutY#h0d{O{^7xm&GQQ<!7cqq6w@u z9I|0Up*SNmHy5-p7Bp^JP?VpXS`6=PA^8kiHb#RcRX|GAWA#$=%JiTi2==);B$#21 zbkqt*K>^t?SjGV*N^q(J6VQeXTwzQes160kBGjX>2^mO?!FZr)a4aQYd_2f?F0NrA z{{B9}@$NqUPL4j{slfPnaHhtWW#BOlT7C?gW>nB{F3E>2Jb}6tv^+jPO#vhU2?3Zc zaPL(gvV04?YXn-dfK(#aoX{!=R6t}T76(`6CgtZS*n(mSYBW>`ZFC4!I>Fqf0a2o< zpr(eTFDNxF2b41KX@siL%P-FZEt>#kMZ^*k7tqYT0%#JZI2)AtQY%uE!802r3W>#) zd7xr5FTb=n2W1T^sK5yUZLF|WKx$$_lPt)Spqb>P#N=#HQ3&nXfP_I4GN2@gJV^}_ zFUibJEpjW(O9n@m0%D0H%pz#B2)rT&<a-4LY(_!5PWc6(IZ@EE#he_lBcO{94M08z zr9`;vV4WUB!yPp8jy{B$3^ov|7JUE{A{m_-s{u0|oW#KmLU8^AWjB~N6p~Ui63a64 zixhHF%TkLH)1lkGb2F2R@=FqnvlR+UQ%h5IK<mYlGr+}HQmR5?GAJXaf-|+gzCu}M zqC#pWc*!s{;RO`s=VlhC>Xm@DrQ{c3G;2Vk$e>aLqqzfGXI!2M+ByZTF?19%^2<R^ zQ^*8weke{Y$^^&0LQ-jZdTNS7CV0kAUtb~AGdwjZEHkwn)bPpl4_2_VRj>r@*@A42 zDJjZKPfrES)`8Z4=a(jDD5Qd_3fL@Xv7Ulw2`DD@^}#b^IjJR}g*e3}`31$`!B$W* zNlXK;kc1co7Enk_Emr`gmSRvRqBvg%w2}c53Q)tKVF6x&UY3}d0~(9h0qxZ(&&<gI z?ekH{EU^Ns#cZv@OKVVB4b7M^^YCRbs2apbCMZo8DA+1MCG?6?i}Q2JQsGGiB%hO? z4rzfSZOI2WZ567~#z9kyia;G4X!Q;9JvgtR3_U>e9w>DefYX5nEX_f)j;0>C>eYZ* z3rnrwG@6+QnoLQ`NzDZ>`+~=9u@2k|;Ix&JpIV%!UV<EBNkyrN**XeIrQp~E*{`n; zN<5$jG^p`XTv7_!5SFKqs8F7oSp-@#4O(JWo{<WgqfUh8P{<;y(qhn3@=VYH2PGMx z{bC^FKnWKue}HTQPcwpZi$W&YO-ZSs6q1$$Hbh6EG_NEx2dpRw(%}HbImkSHeMCzm z1#*&tLOwV*fyVfuQ+kko8>m<Wl}w;%+SDTOViHhFN=^i40;pjzN@@8;$*D0)V9U^5 zT9OZ%b%weMbdp12N(#uGiFpd(2{~|LE&^vzka?hlms#xT9}McL7pInlWag&kmzHRN z<}N^K0OAQyZ3${jfj9nxv_R7;M*hZ<XraS|@LC03kETLR4a63GeT9IG#JrOHT(4ko z%L0_k&GjlEvgrDdYC8p#tz75|o%8cx!$_e0SfF8f*eW%BeQ*Xv*8wU~ic+DAq+tmX zl)*tu0}|nx9O5p0eaNIN!s(u_hK4!{nf}4%ItsA9hl!pEL^&uYCWF`f6e%DE13{ws zus)%!0%$oex}z}i7c_f<w3eh+l=y+xw%979<R^pIV(USc*MvZ2G@z^4pjN|YCSaE8 zK^Yn_qjX?lq@VzrKTS+7NiA|oEJ;MnCMqa^=MzDxh+q)`wH7qR1!HQ1MoLu`jG*37 zP=ML22U^0VV5@-UVyHTlqzLVX>+6Ho|A4DrP>TYQj3GgeuQf)L>k$T`M}m$5ypD%D z3^YRrpU!}_+90*8Uus1OxDlg~oP@l@9@2`4hnCq;e<GR;;E_AHNwEF_$l;)zm<(Ir z2@(K}I3g{<1PLW4L56QYEBc{EgM_iJv;;{&3L<btp^*x9rH+C+tZ0YM$%53u2Vqdk z1(+w0Y6k@cm>_78KcW@@w_1?W5Xdu%&_))LcBlwwUbCn)748Fgii1~iQ1igXBqxCy zvd}^bS|{S^??4;fpj-!4jMT`4Mhj>&B4|%9lG6}AQ?ONlDuX)^w5tacPGDz&dY+nK zmqPj%@xiGj)}SUauKpXy7f|O1r<R~Q9ppK9c^aHr0&53Ai!(^`L;<7`yl)s@Vu4G2 zklmo%1$F^)S4v-BAyFYOKTj7lq?VFclma%PAU~%v4b+kWZ%+j;5Cv6R(3Kg8jmqFP z)1dqYH6JMi;XwvZ#2}|3C*+ch%wj!IzZv%qM|gS*PAx&&Y7A;nBDH5gT#fA1O1PEq ztO&CLyr%$MVSq*`Kn{k?x`5&e)#$_&(2x<_%^)tC(P(CZ7hpgW0Hicf00kkEYm;+Q z6G6p3+)#)B=|KVQw!nP{Nlyw2wHn}(9o!i}j1EH*T`717479TZl=2|E)g2X5QVT#e zTVkF9qy_*rUm^QeK@BSKdh^`UoRZ9f98mj6O98$*wpgLKG^sebC^HGvyeP?6$SeV+ zFVNU4s7i841+_=v9tCk>-UJ65*fFJ<DbU#&uo%cd(CkR8HLQc~l3IWie2FP3!KF#a z%}}U_MsX>u7=#-HIfDo!fx|S&c1<(`5rRl&LIgG7M(cpQ4l2n&u^f|!>PW~cKx9Wk zMPS|s<!z7_$OamCN<|3iC8ngfq!xhf1K9#j`q-?>%P+}HL)mWu6@gi$uMgTSl#~hH zbqDGff<hP+WvNBrldu%hGK-4A?PySxfh0lYEI2ckCKW?_u@EPq_EU8fK>NNx8W6oy z&<R|qomG&0bY`p`WC=64{6q2!co;4fHVLKx2@VC=LR3iW8Z;tT3R=pn2Og{e#Q-R^ zLPoGa$0+1w7M7+eBtb{)K&|Rjh2;Fw9MDJ|Y&m->ST7EPK{LvUd6nR1u^uEYp)P^! zqKA&zLBxVf5|guGDHLg&E2xSNf$WFUh=(YJ#w$i-L;VRh36ew+5f5u{BSaKz6`<yU z5;3T40nbqd`2{d5p?0BYgSY}}O@0A5@S(*5Xd#^fs3{AoVIb>@z*!iyo)t8&4i8Sy zP^<#13s#VmSgBB+nv(-wlLs~<r7|xuHxtxSsf3OhfXo3M6qlb;3|d<ap0fk>^dJXA zfHZ-RL;<BX@D^&=yareyBBw(G9jwGRwIl;%9D3CNmIUk9w2lUq<LaPT0IkPXP*5+( zFMzU&GcwakpzP8-WFBPSG*qfMzX+zP2s9i~oT?s^7aNnOmzH1TnwXq{RGmTm2Mu%3 zXaZ<MGGezOL>lBEkT2m!7l8M8Csu+T91T$eD&`avQc}}E+c^>|p&r#yfXE^(oXQ2w z8s!%u4Mu^ChVPbCF+|>j39lMJ^*Ly0Rv{-fF&h*ya1G$$2yj0fG!Sp4ub)*6S~LzG zhfmJQFD@-g)delQ)P?H+c?Z%=1?_)>3&S!$LOQW19W(?7YD$6Q6t*7`zO({)N1_5~ z$7eBQQzG0<6~pLENXUT83Q)Za@@-LSacK@{0Rb#Tp&Lg*MFMz_NHL_Gg19mtR7-%Q z^y1_5lfa|0FoQDlic^b9Qd6K6b#Zwnc*hYW(4nykQk$GuoT>mxQ_%1NiNbV4LcADi z2uKDzE&&M$1qFy^Sb8H@KQx8n)($P9jbL6!a|gKX30Y79b2q4)pPvNl?Lngm8X~ab z2b?mXHA!+tVqQ9^=2uWq$WPKsNiEQW$bbtJkbTg`GbDaM{s;F8!33zC0ht1Yv_QaF z7BnJ^SPz_@T7q=A0B9LxF-mR#`3z(Xq`Bf$3Cb>sr8y;_5zAE27*7#ob4x0ylmV}i z2GtM6sU<q#(GgHO1RtTJkO`W5&{9auDb5Ftc7aY|NlgLu7L!twLGyMnbMzEEpaYWN zwljEYDKA|iCBGazWK~cMT4AdN8kI@O2aQaXgU{Q^2dxxH230+v^IgD4m>|_jpvAn1 zxuiseywu_n&=Cfp6N^A)BKR<+B85cImdC2pJOywE7&2y2T9m4%06kU(l!r4*6w1NX zTS{sgXn7N;QU@(I%gwAp*%b=PGLQycY7uCEBxq6*+*>Zr0BMJs2<gm&e53%Hqbe!M z%u5d_$}cE}ZXAI%!(hvW;nUXO1zwP5B4}G<Vo3?85Cn&3YGQH*v@Ho9LDmATl}$}9 z0iE-coC;d#4ps_@AD9ziQBn-89>Jjk+5M;vI?)NV>$Rj3v>^n#sW%;bbe4WGm;#+$ zkqBzWXelJ;=YXdtAZ@PHykyYGJm|2jl+5A+(1N(sVg*QZq!_ui3ilXNUji-$I+Fx` zRus5Ufg~wgNW6l}0I)EqEe#pG0X5%1Nml`U^pjp$t}|%J2fmgHROW-t&{0r_6i}eU zM=~;@Wf-W@0M43-WiOzl0_)~Minzp5@VaRQTLswq08r)w<w$!_UMR_TgeZWCS}7#w z7gRz8!ERPifSLjEAgB~ALaK(~xfS9Os8^sd26i4qA4D3tCka(ro|u!3q69rTg(v1@ zE0kmu<(H;sD1g%qXpahLSv+|7FB!Vqz9b_x7rf^joGMUb9yC&#Sq!Z*6(ETl((X%2 z1uyGKO#zMOfyPg@AkhV0LkcP+pzHBLhU&+_S7aa>A$lP9Be&zhe5Cc~pgacZ_999% z5D%;X9KNVcX2=<}AQiA$6XlFr$b5Yev@}yuF$9?d-WdR@Aay{Q2-I~2ablq%jvk!Q z1gnq;Y1`+gL5>6fA4LOC?NCKUNd82QQe^+4h=Y%%DTdaMs6K;q20+Kw6eGNb*&Bcw z2Qdh=IUXEHprH|PlLfRa0CGScsF@2ZaiHlHbm9V}MGIZu0NN1(PJ^H!?##TB)S~3n z0#NY<icWCRUjSM%18w1gwxvOK(!kfxfYc#xa0M%e*`@)pOGlx&2()G$l!f%Q6jF<G zGV@AwQ!<Oeo#ecHU9ctvP?uK$T5##XEdU+oPz0J^1kck$^+I<9qG*M-${{rz%ms;g zPy?~~7o1kW3wso_6f!bXQc@vxQ)*F3W@<64T*Ei)3GYQ9l?e*SzJ{bcJkgDskTGK$ znmH6~!G$)WNe3$WV4<6xS_uwfP{Kw^)F|;^QUaQ`09DkG0c}u9fTpA(h0HwASXFW= zsP=`OsRpXew4gf^KovtOcr+cMB~78Y6g<C~Rth>~4JwfW(UxBXPCKa;nZ=;Q1gpo2 zK(l_Jsuo;mD<tL=r6#6;cH@J3Igmrlkkb;>Oz?4Jpvl$5V$iB~(C9fdKtTmOeET`H zh=fYPhIBw_4%~hN1!R5_IIn=TLC#Eq=t0yTph<d2@dj=1!h;5U8U|$j1l$I2>lo}6 zsA{n3&=MSE3CMC#dk>-y+<wr5l&#Q)19VM*f`THb-2mEb4PVTn0dfn(0Q9w+;7Sa% zL_V_^>9{_KUo;WgpapYgu`B2h5%9);s2YT|P}jqk<fHlx)a-*5bWp7jFM`|!@*pBc zKx3)-u)!mcpJA0XbYKb`2hcWdeiC$91*~*}?+k;r9ziuPq!pT<2TG|>ub>w;;0&CK zRM<myn1FVWfm{g67a$sR{vL>i?5GU}w{=hsg~M!cfRuw$47?(RcbidL+AgV}p}T^T z{33Wg1F2O&p##^frUv&AXz6uYW;$d`8F>5@ywnCB?vNk?Sr0DHz<r41M9_3PsIn+1 zO4WsUIz<7s0te{;IT#`e+5`qWXbjo%bns|3q~QZ;^Wjoi3|0v<H8~?QC&eGs8HDCZ zP-=j96dE-USAiP6pmqm5FyPZ)i2Zg*jb-oxQFv&eNT9B!gQW|1aNHqv;2~ZCr(y+L zXpks?HWq<SgoVu5fH$duHv)pwE~sS(iX6l!4?OHaQlOq0q|poSnSq2sI-r4oq8v1< z2M!u=mkx_YaJmPX0O>!1>snmRQHU~#Az+1|P%ce{gfm1EZXBEeNidK?3lv=n3bmjz zSU~|a-DZVYkpl}tNb*+z9akR)KSBd!I4Jdy8jx6P^WxN;H1Hv+pe_xhQU{q23c|e9 z@-Xnpn$R{ss1Sp?1Uxwdl?NS#3o7KmVqiBR+Uy{sAby7U7CyRxy?ubkF@%mJ02OJ- zMFvX5BTFEq6nM0Nd<)58DB2)G@Pw%Ys#HPI08g6G+5_Cj1bG#dz(HfgkdQ$rgLxjB zC>22aEy2|cG&m8729%=F#u~t`1P?8M3mI5344O_#gqKvHfk*Ik257oYPr)$-w8%39 z(hPu?Y>9cG)lFIo&}Bo#ph@n$^i<HWC}?{(xGxQ>^x>MIL!qG39Nq>1Hx*z_E_kyF zG?xW$PJxPZP&$VOC@6%%xdfh_AnhSg1qkk(<fnn!OyDwB9dc}{I#esXl?gd^O2Jma zH?br`FE_CQY8kZs4Q{=`LK0#+cwcRDDrg2vN5K%hM;WF7k}5$i1Vs)wj6rUMwlpBx zAts_Z1Ke&?0A~qk1Y<D@ls&->4yY3qG?5z}Ad4V2K=;>yb5=fh{x&}eRu?035iw~W zyx#!i6;L`<cLa}tCPG%hzzP#sVgZc~lz`4{1MT~Sw<hz86f#SS6~H?cRltKW>I(2} zYU+t43PqsBKDnt1x(X?&$vL3nBC|xHv>>f0Kd%I|JPp)T1nUD0&E)6lL3bz;2yjKD zb_gU)hzejx4TjX1&;SJ-s2BoA8d6ka8^A-3F_cW@k_uWPhqUV*+$V?T7g%=5OjF29 z1uYg#EP}7sglB@3)Eq>g0x>BIigHTRKV)PSnwU|86%_H{G(0#GUJ57}K_hq2QUsLZ zKy5?Nx%2QwI;b~`C&lS1WPuKa02L~kC7`YlXqh|qL<RRfD3lfPWnoCf!_|Y`nF{T6 zg3}#1OM{I;N|$K5FjEvt8gj-q8VB+{=<r0?X&}(k%|UqvJmdr#n<)V;;7m=?0Uh0! z3>tn0kGMh)XMuP3LC5AMR>I7IPC+Sv&t!y#b|tiF1@9CiB~H-F5^y?%_S2w+8>qPo zUXTkKGSvVV9tN5^3ZQup1IS1RxMGKvw2)Dq9MpMFkWR27M7K8;R4J!IOFm>aw)Ph& z(7`T)*AS_Q5)d?F1b4ayypaV?@}R*KNbeao><+6U{lTX*DZoyn0VPPJ<D5Vx7%XH! zedfdx=(1UGRR=mmsU%+katKr+=tS+*yb|c)PM}(&6m<Av3g~EFP-`110oDl)1n|%u zxLchDKExX=2&*wcnH200(5w-3n?9t_L_0PLGDZYFOCI7I=o*wF(D7H9-~*n(WBmG% zZ8M<d9ndI+SfG~*YL7tKp!87;>X9Q4ctP)^(oq06PCy&Zz$GZu6i7o@5oPl$N>!tv z5TgWfJ7Py0=$K2;?q|>@Ht_Ol@CurwRM5J^6or&h@b(XQ#RJ*|2g;G4ic3L39X#Rz zIu0E)83zu*guK-91W@asJijOfRstv}z)C=HB7lt`z@|#TM{l8e4ZKMaw4wkdw|anw z-yoy<MX-IqIhBxzF9siF2&vSdR~3}xr-KiYhQ%c;1wk}`0~dV$C(`kspp>l$<wM74 zK;;?O-JqlZZYq`Jhk*{B2Pq3n%mEieP&rT{f%e-#<4+nOB@n;Eb1gWZLUJWY2_l;! z-3JDW6!dW^u%)2Y50E2B!L}-ZCS-EK4Sz5TQ7l5!0<3(^holpDLIL+-z<vjN2;@wp z#xk_23<?X>fe^48z|BBZahQH2^TC-B6vP@}O*&xrA=?2;M&MwDl-LRwr>255gEFap z3}|_5Vo5P<-6cF4!7Fzmd!#`T0x}VtF<>0fVGB?vf&7A;GeAqSL9=t9%T*vJpF$Fa zjzUs?Nd|13J_&JXHz?;SKtmN~3Dj&*W`KGE?ii3;;2kKC<)DGy{4_|$1w|NmAu`M- zh~_gWi{d}e4OBLx<!beij8xD$aET>}F-p+l4ao~gCn+K|6BQKH!7Jt<E(hJwQIJ}s z3(x7`LJ-tcgdY&0fT|hXs>=i&LszT^S)%|72hgT%h~E*J9-iNEhmIm#3NuV$p$#z> zoMga*H_+)%(4hdJ098YTEvU8tM<Zl+SP8V-4mz|3)XRcQt3vz@n$v{sEJO(o_;P!F zeMrhk0j;0}&G6@^LDC2;^1vG}^76rJ=)tKN6b_(e7qIiu;C=%&9FQUdyx<=?3k&fa zC{==LHrS>=B*i893ZSW8g@U5gGSCJTh@-&G1_gKk!<+<>OabK}(1F;PVT#C|5Q{-h zhJ`bv4-J|x)Px2cNEYr1Bx#slaA^%q?MP(@Tnnhn1T!7(7HIgRIoT6BV2;J<pumC3 zLi`7_9#r<i(k)0IsE~vnF$AjbL5Tyr{vKu(w6g>9l|4MsK)i*rd*2E!2`y|vLk2~# zS_{=CgkN!61y_UBF8J<AxMiSX1KD5jpaZ!a8hnU|L{_PT>_}+rz?VTIjetN6Nl8ru zEm;8h2o|Q$YzC%4jW(3l4fvEbaBmCTN&#<G0Xqb85+SJV3{IG!Au3p)L!u0%6Ec(x z4-9Y`gQX7m;4#!?2yu{~?V(M(u*4jgJCTGy1HhmIkzsn^{<eZlGs4@d7z#iK<-i1C z27^w(iG~TrLPTM=VuI}lw@lCun!~afD<eNY8yaztmR&SRBv!!|5g?$IbD%~7Vi}2J zadB!1sK$ZJxrKvvu_b~|b^_lXm0ApH-fF-iTmjY!(**D80&N-wHCa;fL6s+H!%jv~ zYN~E|BD9?Zy40&YH5GI+DyUwCoL&NH6&8a|O@K^Tf%QT~Au$cU4Ha6s;D}v_vq7h= zK?`MQLlso*Lw0L`vMS_68)z#D?DkY>;}4WmYiht}c!I(MUaY~Q0TK)L3XlpLa#T4? z4jS8_lR99BlOvs_izQ+}6*6kXfJ8ti@)fJYqX*(6%m@kxuhb}lgabINU?QN!4jHM% zu<94IiV@bQ0iEUw=_)4Xf%jMGfDZO7PlcoeQ1dw#e3B<h{(&SKJ@DdCEL{OmQwLs5 zLA`@zUKM2@pCUZW5I1EIiVnybbf6LmrK*NCkzpo6ltE${v=$D0{(}M{!b-q*wx;Hl zfRY5bpo6!IL2X{pdA-mg8|oKGkqap-z?&FKklVN*i@;WcF1LVcM3x7+7phlHO+gX0 z%L<V|?zcijK+9(#EVNaAMX3<WK{Gqx+yF_Bpwa`P9;F0=CP+j%0x=C-qC!hI$UO!q zMXNt(g)nF>1!xO%Mq+UWV!9lf5+FscExb_-Sr=Fg+B*$Z0cx?8g4S;#trbG#FpNA2 z3M4uv3DlGZ8YqI~b$F)6Oe4rr;OK^@9^3)x0;$tLr*$Tlq^83M|3FCwTHk^DokZp- zs6{Z_!DHX>8XJ-hkg6hx0HXbXz7QrXF((srf;M>DDENFu@Y!bI5+8Y<9(+9?{0zTh z1r2D449y(qc?T*BS|$rQwGp-)29k?%^2<{}n>(^oD>2SP0adS{gn)b#l?GS?X!|2* z^&9BW9mI*IA&KcwX{cL32B3FKT=GHF6`+v>#LZXvpri4@^C>9`9wELyu)(onP|*iU zxsc#M?Q4K8qz0Ym1i8EnWEJX&0;q)o8CHT+n6M+{b8^7r=*7@#OQE<juOzVo++N88 zoj?uRb^zMJ4Z7zLyuB87&7p2mBJ|YR+(h`U5qMJut`{^bixDfJ6b8+tP<x9(Yncil zYjHt=tO%9{t#pMZD{!Fz(g&#<p`|8BAQL<~t^-aU;PMirAFUh%t%pPuW1#T`u=%i& z1xR9qo{WaNx*2@Y9wdkmBY}`kE~qjDov8txRD_*mh!orK^Z3Ab6lGSWf+kfVc^Mo- zp#D-c=;S?6ZCVYUID(wd4L(E;q6De8fHWKikprhD(4iXz#R{Nff<fDcA?GPV2V@}& zrXWMIkeG#?$qF(69Hy9^64ZeUa6lo#4n0Fbq#;cgkeSHg1-b_Y93vnJkT*ef5cH}m z(6~P$B#Kgt;o*R4J?N?hNc4aV0pIe6;94ob0u5v>XfO<<2<$B|0n6=RM}q4{PznP# zOJRemey~KYP?T7Xn6XCMA_d-B4q3+vTBC$FwY$LX9l)C8Q!<M{qhByrA?yGL5-8b% zRKU{@dQhWCLdq-9p~beK{anS!bvjD&1S_$%RZxfJP2`aj1%zJkt?{7SqpUzZBOT}p zTQCPXH9`U(9J=U53V5^^Jj4j`A+(N$uJ#2jnJ!nz&x0(rQg8+xH(y$knFG3Q27KUo zCg>dhk__mCN=YVU{uZ?EH#09IwJ5VB5!<B};7%26EE#FE3(;o+v(U!5P;wGl6`}#I z!60c9oK#SP6D$d?+pq*ER1(tKgq=<bj$EigsKp|(O>h}R5<->+6?Bj~zSylOKNpmd zK#e&)s2JD|Py&MTL2BUX2-5O`b*G?V1#Ru<KpUQ5Q$eHUaDPL54fc^<Ze~Sh9-^j% zCrnU53Y}0vRtPIr6*4i`6e>VFsJNViY!2jl6!>|EutWz*`j9jR%1=mjL3U~-I4Hm_ zgf^EU-iL<<IKjAOrskv|iXgDb$a=u8fNKE-ENmVQVj9L+F*Z|SB`YY)z%n1CBLlWx z0c=04<OD@9xN!<va|*g>1Cpab<3h-7F|hAow{k$0fKM?^1Rc{2>QjOX0%!{s$_5=D z2%5VEYX<ujTB$<A5N$<V5ai$y(Au{|P%j%iHvqXR0q%{=Vo;j}v_lVa&K5YppjkIL z6>=^YbTSXz_XADPgUl)h6)xagt205@ae^+vPEIWboer9uk(dd-UIArD1iB>~+{uKD zia^~A&efnA7|h57ul)p{`s|xo3_5QgK1@QWs|PY8KTRPs1-#$~qY{UN6etS80SAgE zaG-z^9@Ht(AR{1M7x<WFPJVJ?4)p$sB1lPAmRJNS(~1#WHbE&1IspMORYxH+1ytF> zdW{g#=**N@M86T%m`L#iZEl9~G%`~lc^8YBFf}Qj*bGOKMY1Izu{b#~2XwC@)Ed~` zj_`XWL8gI|6c!tibz|`lvNY6Av;!c(%d$ZM3tFZCIY0;$_K?;eQmE9_C_s5A-arVW zSOs@3v1?GEsR=ZrpjecOC<4JPFHougH8|AW5;JpPL+0Q^dq5Kb;N~23cb9<<`07_} z1$8U16g0hpG(!^+#4Jb*f>RnK;elF+@azej5QgW%GH53W)X0Y94$xc`$S6>Y2U^mD zGYE(eo+}0OkZMCvpn@bpJ@%sf0;nEv!2u2|kbGhicsR{g0bU4#+S8!1P)IolR|uIA zv4u33LGlQ5KwAUAH_(7C>&Zz?gsgT4b>~1!v@|k{Ln;eWHJtMEL2^1^6ZAmQ4@x{B z4?(IUs7pX270_%0a=VU#I<$;bM<@r?5}@1Uk&g|75AcFgtRmD-$QdQbR)S(1)KV`^ zg;ezFpi&s>H(Of;_<f(?0vwx-pymZQP>`ztc-a7TD`eUo<TsFO5XQs%%<%dLDhFBz z0g7p8zda1JJV*mnwnM@IUc!T?eu^{mk|CF%pjZc;Unxp0&H(Qv0w)Ks2GEVl3ZQMH zppjANN?Yi801BY6ECSD~1S4-fLoED*>`&7}Szitf0H{&eRDfn75C?)l6+!|Yk`X{_ zxxpP_9J)a>Jt!^$+X>D-pfCkR13VBxr9@E)DEu_w;RWtFf>!r~LJ^X-AQpp-faXAO z=)?0Mr1uQFvIaG5A@>*;<zwCzo}LP}89C+@(4r2~5C9!Cl@F>TL9-2@^Gd+yF2j=q zEVUqKM69VF>UI>3U{8VaGq_6t$zo6sfWr+m`IlIfr;wPQ2pTvCpCgi%2s*kOzGV|~ zhZAIcN<j@WX#jH*F-0ou@;;4})HFoKK`l%@^T5R#ED#{s1l02ayI3Jc2|COH8i$Ti z0+**CCxFUQbx`y|mz01C59r1leeh@iq=yVT6f{u*<}G+hiZqy_UXl;1eL?G)pdkct z2GTTc8T6V0qyz&!4FS}V1SK(u7KL)qO-`UKtMJGGPxOPc6L^{ua>X4uCxUOj1xGn3 zX@g}^><8t|MDTj1(meR0J@|PG(1m@V&;TX>vRqI>20B9?TE{@fSU}}6d=my%S#YTh zF8UBoh8!RXn!DBm9c^3yZF_>|=;4Y$7Q^!!GzFIBBC7|f04GCGVVIbcgBcN^RygPY z8#nlrb7cYOE>&<Dl?V;e%wh$&d}bPWp(mofkXelA#)FOzR7gxN$}cWfNXbkC-#1yJ z06DG_v?vF3P<(0yXxk|~$|2LD;4FgDYX*fS=>92CH3f=YNbLk^G{PJMoi?=xrCqcc zOmIgUtrP*ZYKuxhdmF(++K}bXpb{FK0l>{}<e^SP2?nX_L9PI&8qm-Rm;o-TAgo+4 z1u4_uZDCNV0O`_$pM|TYrT|d`k2loJ2y6eqHGs5(?o|P0LXf?XT!>iRfSN5}^HcD6 z2e|<3N(EcU*&Lu?1rPSY-2`_DBn82>f=VuMriQdHz~K)rw?Go$5L2*KPz0-}sR1{> zz)2WX3BZ-5RurTrm!zhE8XKS%JoK1RkgGr%;Z}nL(B?wG@^A$TPzw~08voGBUIAQI zftMeG`^S)lOd##helgg~U<acvIfT@*kXVK|5p+U9G3clRkb5B&qYl_&_|{8MsfXez z$ay5lhUg*7gIY46yLdpM3epR92HYBmt$JWVaF{{81kSSHFab-!Ljg6dzzS|i5&?M_ zaxjTP8l-s)%Gw|~Xc3M`J$lHcuYxNyj=&9NWVaWCZzo8G-$AblJ+fa%L0uDRZMTj> zdVUF5Go+pZm3ok~OW?;1Lh~l50i_9Tp<BRP=s3%GjKmC2c%YNip$%wA;DH3d0SF2- zaF~Ha;Nb=mRfG#eA{J2{LM})Gk7a?PNI^jzHDn>%KR`txXoe)ei0DuT7YPs}Vc8V1 z1PL6+upvE=&mcF7fp2w#+%FXeJ%F&ruQWF)wWtQ#Sg(PVel^g;hE+gUj3J$@14)da zBn(}p3rWM!&;VHl4hnF1fq2Mq4%t`*(yIYVP>{+N6nrSIgPcW=tPc^IV6#CjO-R8G zD|~Dfkd<SZ>_HlLM^*_gQ`8|T3o()kvjk)88n%N9uW8`s38rCSVfc~^u)`t#hZ+W5 zr2?}XtN=a)lb;4ID8PXVj#@}*3Tb76N}3$dj1gEbG+7|~(h4PXK!pV?Wx&SGLyHj$ z|3EW{pw-CW99@zRO^->XnK>o8pp$$-H8{u;E%>QKi3*VTgIuBw8Uh9n!YY8z+XWRD zph__hv_}JUTP%1438NM-%Pm&WSIA5&0$m4*QCUK(YP9=~!Pg;y<}>p^g>YIPyhPB@ zgk7%`7ZX#g1#cIEZc@|MgkG=&4MK<^_K-`Kq77peAoqoVhj`%{A)QMFaH`c&NQ2!* z1WLMS6-!zkBC$ekfI40Sqz$xK3dRR#0cdQXS2H>aIjMPIuR*IBNWGJjnul7;fLs7G zFD(yLk${slObBcRG;4y23aE=fwJ6A9<O%`H$QtO7Nd?dV9;~bc9qL(}3UBwoMle9x zJU6i@8+u4oZfYW^=Lw$X2e}Vq8`KRTm7s%-a2(?fk^;@(<RwGSmBivEl!YA-KY(<> zo4_EB9>_6hA`myB3WCr2^Gz(uF2*Jf(E%RQfVy5m0c<exDua^5bfjrbxaArkamW>U zpkRlF2q->b4Po#_Tsok`;EF)Epn`6vObG!S2JsZ=c=Mt(J*ZAxs=);U$Of>@2>)n+ zFY5%Ehf_sr9@su?@=%|HErpa(uoD>(<py}78<e~t<pZd|0Ii@@AojR2&>_ARmEhC` zIf^JVFB8<Ot^f`BW9%0IrJKYY(DZzYdrp2*Vh*Ue2O8t>O)P*`t?Hh6X&^Hyb>KZ1 z9lu0Boy=l4kZ`IF=zLB;9eCqJ9ei7+TTXsri4K_QnOCBdlA4^Kk{TN1iD1E3Bj}{& z!6e}<ge1aT&;~#qNTsUdl30?e11|Y>AeD>`w3^j{j#CAtrn^=Y==dfU=me*h=y(PD z`{{V*mE<6~6WUl;2c3cqYIH$wbI^xgFq4^92}&`bcmmO&kODR2{PObxK=%^ofmS8K z%Q5JVKgd8Ito8sYhXx{OH8!Z%4cd7P+5!bxYlCC+1n9z!{1Q;_2s{Olp9fme1+TKe zCv+okpNLT^0$nr!y1W9u&jQj})>H6J%ua<5SHX7h!M6s2_c)*$1!{Rh4%YxJ*#`IQ z6H5}I%MbKolt2{}C|^LgPk}-P);I!9EQ9!<kb)f4Q&9<8OaxL6O3?Xf(6kBa4I^Df z1TP~3it;N!3rZkSh^T9zr@Vp^3Al;@Spq8mV3xp35s=OBbtk_0DVb@R;B_jn1g#D_ z178O;W{{d!q66A@tdm?)l%oSaD^Djer$i?=wImUK^e=Ri4(#%6&^@QA<q$t;pvl2E z(S!FxAnoY}?PNnv9MG{exRXJF1M&-ovmv9Vu%rZ125s<a#3(^Fdcsx%f{F-uD<T)> zYtRZf$mLfs_gg9Gf#Mpprv`j<D#T0>39Y@r#~gqH7bFHB1ctVsAYvGsHIWV~2C0CW z1ge>k41zJiEiCv!$l#U$sEt(wTIvWrOCL194pE+w2s)b!R;+`MyM@?}n#te>K+azQ zr&{p&l<)!=k}4b_r5vae2Vp_WJ8(FI`g@?oOrZ0>!FMNvD|_{L*gY%?;L&%`a3ZKd zq?lO@H4P;iLD?NqIv__ns0;yx4zyVSVnPE7<gJ<-(AgqT6Cr*F2NZICN>44p2q4t+ z7eE&RpxB8>I-v9g&48fEUQkmBHh~BB4k!o^;f82tf!s-sry$V;9v;Ku9Z;nK&gsat zHbM||=^V`IActdQa_|rr=q{V0+|0aG=ye_iprQl1ldlLg{8tKUPJuiCNgvRmJ<tyB zT=+evC@BPT8aT?z6G$Nn3L>a>J&1^2JZP61sFW%w03ZAYu?KRf1vHu<9tTNSA*F7F zjk$X95W`?W0XoP9%mxp5!(0PPIjDUZ$oL|v{<2)C;qbHr&R>Y5kwMuY40?1vyxxKc zfGeqz#B^}s4yqKu4De)iQEDET13I!E%t+0FjF~~l1i@nP)ppQ%G5AOtsO6#ux>?>< zp(HUK>_D&($PNWt@acaDL7088RU1XAc?e06{h;n?Y6a*xap<vYsX3q}9;rDHuY*m_ z12tga4HblbsB=MP=jVY8LrB2_BQeJrBBfvpKBf?K6*}bXOt8t|tOIs3C`EvLpa)w= z0hUJ(1h7@mORu5fg0K^=7`9CXyPc3_6xiiJ<LAh;c3?+j7K4s3%1j33t;C#SNNXP| z13H<>6MO(BC?H`oN>EAX{9N!&dRR<!&dJY91<j#@>j#7%GK>8|lV=DWkOB*o&fvq$ zj^OjB^1<1v8nWQWN};+Iyi^K&R<Vm~K#;4mV~DGZl|o`pW+G(j1T%O*4K&b&L*<D@ zDaGK`uHfaASUNKB&K0I3^uS3>4^&hl_cfrUIJ8Ix2MC4(U<+>{txeRc?K4x0H59-( z2{DKUo+yQkry;@sl$#-qa>#B4*W7}VO0Y&ye8H+Z*pb$tfXstjbpa|I!0Mpqn1F=! zK&cpXQ6i+00t;mpBjOQM2ZJLE>MxK2m@i;S9<t*j6?An5*m&^B6KZfEtcK?*&<!x) zO?#ki>qw%Y5-~3wG)||f3G2)1gPV@InN_JN3dI@Vu7*M~C_#Z^AH1Rs6t%^m%OaB% zKyCyrc1ckv&dD!<a-kdBK#kx^#4UATt&q_Uuu-t1+Z7<iVzCa`8c^E^e5fLLI;a?Q zeI+O{f_MD6`1>m4Cgx=pl;(h!o)jw-rRG$E4TChfGm8{JB@DcEt%o#P2lfLj%s|eD zh8if+z;d7rg9tlFbx;OU2r3W3rKW-cgbyl8Pz1oK6jt!URDog}MHQ?dhADuSa42fv z$rxGyft&$KgbLumNlnoM7ncxc<bf7_!X=Oj5{NWR0Gy;CJ_MD2pc)nID_B_wl|oL5 zFaw}z6WN5!VtDC-o?amaLDLZ;!Gh8bINXaBG{6SKR-1rA9x}EA5r&QLfcy-SgRF@G zMG3gysF9PJ2MG#L`a_?Gz!(n#ExpZ*1(oS=2SBX{jSYdl1g?0YnGJl&HI@n(zJ3vW zxg*Fp@DZ^{XKsT=2a(beXsc!>_@YdZgdSQ0RSlZ=6T#PU!qnP>7kNWR><vM8hlBKj z-3SVZ{Ji8;74S*gAYpVP>(s459pZqZ)U?cs)D#8i{mq~)sHrK4C0QV?poI-kvj|w3 zoLEp&S_C>Q0;CV!N<|c3z|`U~5*o<Ro(afEE3lWLX&>Z4D+Lg#qGAXYgPLlk0A)ah zp+N@Pk5>%33mlYKKw~kWl!2Vvi&7IyQr+@A^UCtGQ;R^urLbfNPnnr8IcV%b8lFgp zeS^9lMd{!xi$GZoWEDhB8aNk1_3NcUGa{tV0Zyy%(e1RnV&vvIwv?NehjcV4(n$cI zrf6Co=ulPYapIs2GoXWTp)OJ}1o;`H3f@aWZ*(H2-J#7>*laLlOdaGJ(3--WR9HhC zJjMqy5*lG3w<Q)7<Wy>)Sq|Oe1kOQV0x2*+RU<S=pvFKY(TfJiVaKowQ;Q+9zxj~n zYkp3OKZKQ-0$BtJx#<FyKtK~c(0Bu75m1r>Us|rCke`#H1G!%hoPj`|1drc=I!yVn z@oMmu?BMJGS)UJ9ssPdp5(L?eA`Y5w2Mr&gmIh#BVUYmp`eYV|=7A0oO)f1$j&)*I zkbt^v;8r~-^g)A9u(>f<%z^v?aR%tT4)C~u2AHo0@;l_(aFC1@c$yF_53Sxou7Tzr zkl~<^1JSTiAo#cevJdiez$+>tNgk50kvs=V^2i=U4^2=piJAd5K#qV0GCa8|C?uw& zAbA2Bfe>GTN&{#->cNTtNVMuf%K%u&LsLD-`N^e4;FSv?=fnD>;8+E@804zbBDf>+ z^B_?SiEyYeI4y$-P<VqQ7@TfEDFT|@P(uS|3UY9OJpdYf0*&B<HX4EJ4zOV`H-qL8 za`VeT#X3p=fRjDMU1*+%=>$6tRN_H)J;7!k;H4UP#WuLUh3vRaNlgP?WSO7s4LZ>l zv;!IH4^Xy&W=yc>LHzuj6tFH^&{!sTyRvs`C1?pSC?UYDC@)F`^`pTmVQpUp1(4Cu zk_yx!M=GgcP6ut{&n?I=DoM;M0qxcW1ps8>cnVlIXc!<h4>V(<kXfQ$3_Bwmd@Kzp zIe;7i9!vmjo`4PtD&(f-<`-3hFOq=BL&^yasMkOducLtEVu)kFH9cBPLi~=1NXVKs z@F9AjRw>AT5F4OIgVGaPDvw682zF{P%B}2Jx<BxF9GG)lQqwe`5dm^N^w5=%qS92j zFgTJ?awzCV4d~IoiLfw*x)b7P1qCP<lHNg)2aa}7Q2><z*#=o>f#eNHc)<$^XcZ2Q z26)gE<bY1GMg$PDU676wye8I&hI$PpQlMc4Eg4{u1F4_&Af83;0;i;=!4oHV0u5Zr zgZ66U$P}p+B}IwJpjnjy@Qx60{s1o+1DCn*20iGiVsKGel9&!369KIsOa<>81gAu( zS)e2V>d}L%(qaYBi5{TIT2NCAJo^mpp@8?#qpWl*1{(w^)Is|XL7gN>Hyad9pygxv z&>;xW@~_mKG_awdya^iUhxQ5-Y{Azr!*=3;I<ZK53}FQ|k_JSghSbO)yTAnr$Y4l2 z8)>&mVo3?O{|^clJunBHQb1}!W`YK6z*1liSPE43W)_1IE?7Bu<0ym=R)eq}T&jW$ z0u9b&LKaIyJq0b6K<N>rATg)JI~8<+6zZ~Muyr6cAS*#V5F~Ao##wf1rDvWGXu~UL zkw0XR8Ou5dkQtC12MP=bPXRR44z57Z41ui@geU|15j3U*U8@b|g9o{hEQYp_Ksr#I zsGv}i37e?{NrG^U5@@OkWpWA0Bn9{(U7#}{K&wu`ms!BOiVC309@!HL3L0sks;2}# zDF?c|1T+&18a4-|aZN~j0en?0I0Zsyno=NZQ9&&V(5)m&h~-BhXM&m~D2{}?Ob?42 zVwC*yOF&Dt6H6f5eL=yLnN(Vm3dsYYduTw14yEQ5XM*n<2bJpJ%?_Y=OTlU)I5okJ z+X3y=0XaUiNFh5lDKSYGWFlzgMP^xIPHJ8W%3jgTJYCT60cKFeD1lCK&q*vvE!I<r z%rAu<-%wDLpOlycy2q<H72#=Uszk&{UU5lkVv0h38bS>yX~Pug#V8@i46HB(g(f)v zp)kN}ML;P5a=r!Fv*2W<qX4m22YihmD0jgOMbiQb;$k!{;6Xr`#b8Up1f(E9+J^zJ z-r;6K8stT(;Cp32gW?(BvJtiy1L`J_Q^2P!6_usJ%S=%2gcJavlME2~A0!UVH6RJF zQxUSDRuOaoF8Jz@4Dgf$N|slIS%s3RpeICvj6~G}_9`flq22|R7$673>oW`oL41YJ zO%N5JRuRZxNEt%dS?Id(xD4b#ur$=s;24B<o)FUm`uYl>!@ppu7d*t8nUh)sy2b`{ zF9G-@soc!GOwd>!D4#&`4X6Z$bz>lPR1#ze4Kkvan3GefkeHX4Q&|P7;Xw1ra2paK zmtAM(q{6PG)7J-&zPaTWDL~o);C=m|wIQViItr-PfbMJrU3`+CTL3z}HK$UcI6D*6 zj)bqC0w27kudk4vnwMGxx>*l8G>BODoLQ`pUYb~xm{*bt+m{4hRSxcS+kk6zJJ7W& zsYT!l8|=7}@_YqQ$p9`6ic&!vLyJI{i5BH1=0I;I0<BF39iEe#Vg+tM=qniNDS(gO z0r?*`x(7N6p(HUg4>Fn!KCGZvK^N|N#ED&rIpD|us{lJ8H?b1d^G?iz>@EPW4uF;% ziJ+rI({ob6r~2wCc!HJ>WP+N%#i=@w<5fW_K*0t!4K-LnYY$RWQ&LkDbU|~TiFuWf z<^;%3Fw4NF1Eu98mXxG|%m&TD<%90b1TX9dMRR#(Ne0ASptb~L6dZb_3FvNmkXfkV zo&-A4CZ|%tP&X&FEHy_VB{j7G>^RuiFRU~{4vS*=$<#0}fU1Yo%pwKQ4OXyVMjo_< ztfqtSWp@Vc4K7N}Q-EwCE=q-U=Rt`YeMAs$9^^o3%++GxL<1kGfhh-#4kDE;&@2d1 z3!k8Xg$-nEBsvzlFBRk<Q07InV?iYvIEBKDhh<}Z1tS7U40=Qp^vu)5obtrVVx+7A zy{HT9Fi-&vyX)HqmR;?16l_3)@^(53Wx8qkMLM8mEZ}i;ltc|`QxxTwWr9*rQYENP zEdoa*I7xuosk-Gwnc##28K;M5M$jrnuiyx9dMz$Z&VXhzP&UZPLCyPM0}%-ow3HHj z{Q_wBEa;$){9^D;8sL?k#h|(r7FwXiz@^}GaA4^PZg48j!~l)5%;JEe%v^BO0+C!G zv16|g4e6G^=TQ(U;0JzzLlz@>z?*gU2$z6W!kmLJ31S!M6d?GN3pDoOp2;i*xd1%J zs{tC6hbBC@4?rzyh`5@X0;E0#altc5(0-vCXx0#{Sr0yh51Y(^+XK&UC{9IWBOU0y zZ=QK6sTEL1fEwYDt^ss60Z1TIM<H1UJj4vHmBINAX*U2Y-e5!dDA!1V<~U&r5ND2n zDqvWTB^lJT0jC1cd6|$U9Z8U_lb~h9-~u=^uQV01XIKI34#@Er(M74SQB(z81w&Zn ztgo*C^%*2GK$d}n01>ZfH9ffh3mwJ)wR~{KvW|j=1|$!H0}a%&RtK%uSBO!H2emR4 zGBx3gc92G>P*Nqb-5{qSl7j|l6dzd{+~EfIgcTA~vJ#U)=fHtxm>^Sb5Z{5CBakA! z7*t{-Hd2A2DL6PtA)_({x@j9$Oe2f{^-EEVNi7ELj?Dx&2*4IYZYzV<$&l(7T-`%Y zW<h9%I3Aox6|`*?V8f8GHYiHlD;eC~0)-rWWC83|*ad5dTf9s1A=7UNdq8mxx>!{M zBQwK89$FH^t%O^G7Tn3u+yu*x5HCP;0w`R;jsgb*{_qD)JAvE<sdT_;5k5`?G927S z0h<mDABAKv10!(YE(O~R8$$r~EkLmeNqNvi#$lOCK?8KYcn;`baaaQ?sS;B7!;38i zP$L1fEg3YN1k(t<-vBfY4+;fD_$ok)oMg}pD5ey2tQ$0`h$#s!xxjZxg0lx|QdUq% z2I*3;1!b1_vYgD~5^$D*_zJ86+_i*eBnUe`MhRTzKw<;jK87$s!3{|UNP!6P1y~iB zfEKCPrupEdBxLLn)IV0x0QIhQ6hLP|K@$Pg0QgQ%kOF9^+Jn_W&nyA!gi3(!HOwtQ zFZAJOKUC%=!+YqEz7}-<Cb*jgvK!<UFb6tUjMl#bj|oEc=%p4F<rje>0vc;5;vjnv zaRBuTh6+%i!3N*b6f__e4onr)*+`>~XvV-4V3>m9%$)qhl+3(zEDnXr;B_jJ8VqYd zNe<>%Xm}w_z99{ef{v(%Tv4Z>0NbevYSDoT!(wm+09q{y;z1G=wD^YRNKiEhGafY6 z1=&dq*AF^F5GoC;g+MxrEAv40AE^Hc-VOjtx*+ki{G#Mk$OUB}!_b$MfRusqJECz5 zIp-g01FX)2?ukHc<AU_U)Pb%#R{`4<S^zqJ4!SG_qy(HjAj{f8K?)f}gT^IjtT-<@ z6=}8``LGCZ$&?J54_APy2VGnPG7}!EFmVN21w`(G3~#{FHzbTfx<K;-;4xqD$UkWD z5a<rOoJvrU1)5R-S8Dks3W=c8+>$ej^7HabL2E$3M^ixD4tA18A~>|6c0)#+iZe2E zb5p^m)Pf{onxUuM2L}g1vn-^1R0OGkW_*y#z?)KF@q{JpKz@KY02HT1si5n9u!UV> zG13eqXgH1J1HWUGFc0N`co$S4fxDcbZLA8~3ea6`8qh4EiL{qcK|!M^733BLdj*Xc zrI?t!ATSrI6Cwv%hM=wv4;GLYAwdDDI+1f5xadL6w;-iZn;|6=^7uVSlGGptjXFaO z1f`$+oU&BVIRc=N200B9`Vgl<mVAL!A&NXmyh0b%f@+Ks(8;>sm9?<)AJoKz7z1*j zzCP$mG+R5+^6}hE#Nt$lL9iAp)J1yGw1!kTg3JK*{)+WLHh~<2?qrAxcnbyIMuB(& z6uuyL!lM;jVj_6}E&;Xx(pbjs6%=E@s<Al-;dN98fFl<<AVKbi`5P<=ig}C-4vBS0 z6$+}xK#>H}3Bu4i2E>E~C(OIh0v?xrP-*NoLM5@=39$$i6e+1WiIw2+GC;}VAm_mR z1vLsY(ZXX1S{r~gfpBqZNl0dHYJO=6QelZ<Jj4+=6Ax%k0bLRt!sx*PvJp{r;c+Zf zA)=B&D!d?aNa+tEPz%ad#d?rXs;N;hGB7}nI~4VJBC-S$8t5)3E}S4K5YoVeMG3Af z268o|#0Aggfw)K*RN*30HbMei@Il=ODg!|UCMa=0g&^}Ixy70>O7Id8p&8Vt2Q7#} zHyAaXP(liHg&?Sw)Pq@ott|_yia~>rAlpE-5U5oE>f%GyBbM}l_KPGIr-BRxl`JX9 zl_F?WB*=iGRPf*vEC`_q1?Fsfcr^``0A(wfB<PxT@EIxavJE7IXW>D5YKdEBQ88lD z2|OZ#7-N8D22j+Zb-|&ddWfWg+TwvUZs2_tNY4trsROEaK@BXJGQ<D_EYE>T7+5zC z%tjoR3!8z2IuR6dprRWbcF7=bgG3OK1CCg5(nlJN*TPtd0ooz~Uikr9_?Qbd8+2|6 zczp<{K7&+LdXVlbc!?Dx1%VW0Bo>3_=)ne{qyca%DYFE2-XQ#bdx)tZ*Mh<V)TaUs zql2tLJ`5!uvO*oy*#k?1lNBgV;2NL~Re+w92}%>-W(8aec)tTeIoJePx&T=X*-Zj& z<-+PC&_W*t$U+y;rePh}T0f{=Ap1cJJXBN+p(60x1XV!d2%V7dL2Zyj?9)@p&%;oM z+4TagIZ-i0atqW#xFKn2sHTA98SW3rk~PdQfpp)>AUiGKVFT{E<>#cpgAU$*gIEVz ziwoHb0WlY@P6J^CXiXYi95l*QU8@5MPEaWg@eJ&EOH`Lal7lbkgi8gDu+mhhKS2=$ zTBrd%`T)eV(g#N&=sq080Jlm$c+)k!KLR!m6n9W_Al(E|s~o&A6~q9?I4Gxp>?i|m z^ni+j#6VGun(e_RBJw=AJqTLPUW9y~8CVfwG!fgmn~<#~Du##z06t$c4Z2tuWH~JB zqAbNx0G(8&7Z0|fI2ugFg2Gn=l>5M3xTvi{bgZT(q-Th1u0CS1Ja_?<6<C`>a(;0M z=<avuDaG)U;nH#v(-lCIW1xOW3Cbyopll0rDL8Y(r<4=HldcLm`T5zU1u!L`kOW0r zkSp|fh_ckY66A1%Y&JqGKS1>$IGRDWz`_G!B(#!%tP6x}2~hxD0f;me1kQz^Qiwo$ zK#z5JzRAx6wWi^1CUA*_$Z7dVag~+_9eo9#T?Siz3(5E3f*0h0{5-uhaQcL7I0E|^ zDgPtPBg$`SX+(Gpl$ME0>fn)v97x!LB1;jzq!^lz;aLdmZfFWrfZv9VQ5}GMjN%b^ zIDo7I-5CLzGXbYP=mK7lwM6GOu&<!U-GU8)I@4MqQ^gRP<5UdMRwhG&Lr*0i7K_oD zDu%J(0s=jm!K+e83PW~$aY1S_=uTV6!cIt#fl80$Bxt<_4IF6pgqjTUonmqlY(Y2f z-~lN_4}5ULA5qO9M*-9p(8|ry9LVKvxXsqrSAe@7G)<P1T7>L=s8d0n0nLvjC&7nm zAgZt)%AO3m4LmsswB{SCAJTXMiQC#Lq~(Fir{pAX+6VKIQj&rK$PVb`qnSDiNUOsY z6q1Tk6SE-}!-F4M2%sb^9JxO=Hxsn_8J?RVH6+|}kSEb|J}BrxWe!{sq{09lTu=mB z-vevcKoVR@K77FzQU?WO2AT%YPIRyqP*<re7hZg$DvL$36?45+j1t6h&}wP$ursP= z@Mtqg4m8{Z@;T@}4NzknzAz7@2^N^31cG(7Raq`*#09j9DXFvsy!-;1N<hXIrKV>V zm!uYfHfZD*A(jq7yar!91kw$^+!tgMS!=2)^GiY3JA&?`0i6<v?)n&|GF{O2seA=U zqXV=G7rqP&k}<(cC-M{^^%-;}6>OTh7<27cj1s|hR2qm?ePBOB!wM4YSk_d56~SW$ zWmOfdYCuoepj1h?96>EcAnHLG3DV0@uv0KpuvaL_2N$LqV8vFTj0Vr1AX^fP(m}-) zOclJuLCJ)ueH!Q}E}~Sxex^7$Q-j8CAqx$lRbnwNFJt6oaFY<ZlL9&BGYEP|bOz*B zO_0+dy=%}~5YVDlST72)NfLh2J!m-r^z?hsvQ*H4IPfw7VnAwePJRh=CkM<Ba4Q%( z5DjktgTf7D94O$ROHV=B9da8DXdMM?`99Q7V6~u32QIcix}j5IAPYfb?vTNDkXJCq z%Ax&BM70L3)R3w)kbz+Lf+p*r>JeQ?&`R(`(C9JP6|fb8;MKrMsh|!x<n%qrICUyy zni70ICS=J(Dr})I$o=3E>SECTFKCc}LK1qtBxLOXY$^d<Q$ZDh3x1Hh^k4ywwE5ZA z7CbYaT2TTTBZOF@09geDxj0h|dP5?Zrw8(cf+FOYLWp9d;t~`P;N_pTNCtqlpd@*) z8MX=<AR2bXMNJJVAJS@uYXe0uIEX>BiD18}!^#lUkyntJ;I=ljAqe6_7uZ1d1A~$W z+*s7UAgGW8sR!$a1Se)@LF)z}B_u4`!08Q4fZFEid7%3p$}=)cQi}@`!Ph^7VqHTK z*^tz-)S^m_%;IpkGDPzn<T%ja8u;2h(2jb@WksM=4E7S(rXt9&4OlID7Z%xA1@O8L zXzW2Xf!Bw?SAu}j4Oj#;n*|AU1$A^IVOcjhzaTXQ<PvBGPRlFS0j*~*PEA!v%gHa- z2k+AaB^mHED%@UB9tN!xsi{$bW@XfD2pPah!?Di|lrF%<D|}4`WY-%a%s>rD@ElJt z!i5?TMW9|Vyf{Qp3ZS`oh%(S@GiWa;l$QqUHh@DLOh7{q>@l=b6O<(qlR-<Ak@o(B zhX24FURZuq01fx}WTvGiS0?AAg8G)w@BwLu9!CN0?<1dP0SZffeFe~|`X#B5y_(?T zi4&7RcP1pm26;frK*m7EZa@=D;48C>^&kS^gaZmj2p7~eQiR&52Qvxk7zNPr8zARF zl)~KtR|nDzlY`K3ok&+)KxFh(AT-#1c=Zbr(^CQG^`g`~NS-Q#UUvZwTX3Trsu^^? zB=|}-uqmL9VNrfQsI>_(M*()XmYxb&+)4p_ZU#6+auJpwY5=eascE1z2~LbqmGR(f z^uUJ;L8A`ri1^GrNYo-X`a$hV$R#$O2wCtVT$mf<GmCxmOY=Z2L&RwcPy>ryQj1H9 z@+;9!U;r7KS?rXWnU{`D0XSUXX(<Pmjxfe=P)BLvA>&3U-B)lX)q$<`0nM~SyWOA^ zgsqtlaT(M<NU@!qn3Dq<f&`EEsVAkT<rk$wW{=?qE`hTSq-77<kL3!w#T*m?sj%J? z$WD+<7^o0}B>#A@1HmDQ(CLVtzaX&!%WzQDsDfbQpfVsofXxL7g6x8d>+7S9WW>i8 zfG%*1j|VlwGxI>xhmh(yHLs+oQlTI}GY@?IrUJO02F+2YD1chW8L7~PPoO3eXlgn& zF9oz%G6kvn1}y?F1N#&y6hXB{US>%q_}YxT6j(12oLE%A*S>??4s#XK6b2+5bs((? zr1;c<oIR+ZucZLl>gJ!913Eqq+{^;ie-NW#1psuw*A;pS3>F1NscEh`&{MxLHibgd z4mdO*i48i$0I>zr1Mt{}x*S&hLX!$c6oS;F#y%qIAQmdb$Cs6+#>Xqb&vgLhX-Ll) zq}w$IDYzj5dN3`JRu0res1raXB_wc>^g#rW^nr^RP-sDQf#NX@Ht3!SI`cxo!`~Tp zpA=}bmI5d`6N?qfQ*&|<E(942NttSD3Lp-&T!Zo;QlNQggq$8Ei=ep<qE8QGi7nV5 zcqT)*5E5X}-IU-Z<T;=VJd!HG9nj+BjMS7;&=!G`eCTov1@O(+u%a5V22fugI{XiA zx+X&XtzHZl1&u(0lRl0i1EjSkD5VqJQ=pOoS7`(-tKn+FX$@9_>p?sTA146&9)~MZ zAVo3hE<i7-k(^QlZk$0P7;Lu!c)1FCNeM0F;YDRxE@+h<M)?mKBY`GQ@YEh?NM8YT z&>i$JeQ?zXu?!SqkVF6~<Z{t!Ur?%s%7U&DfiSUH36caQHCXw8(LeyTwm`0c-lT=7 zV`1|QsF|W9HL)lKw0<8NY0%;U<Q$Nfp`u9Pha{>8(~KIKkZJ)mY=)$knDH}Y<)B_O zF5?j)4KGq4!42BhsF0ro32)HNJw^Fdsd>;YFZd`M&?rhqVp*yJ^jeQ1a3+8hMj-1! zCg{b-=O@L-qxl(0Mz1W_8Pt5x)rCeqG#!Dqe}Zlg04>l5EdT~jD(LA!tpFJhT9Suo zU7#i&$Sz(5SeggrP|*4*h2+vA&;?r1`U|vhw<r~K88PVklUzM`g$SPa02fC(NcS*< z3;wjsqEwi<sgTkI5=5v?1gOoaDey!OT8&&<l&6rNmZkvm80h{D&~<mvp{7*GHOdf& zfQOP{wFM%EU?n*`rXV&$)0avra^Vk3*Qq&3g*d#a2XCDs42ByB8t`)Q_l2yaR?q;| zAmH7DIjM=+(8+(0!LSU2s8FHV5H10!NReBTpkfKNWtR(zcli7v%Cuo>4!8=3F4E3J zY(NIt4z6gSB|gaSiXcIl&5&URczVN>0*z{bx2hu!u!5#MkXfK)1lOzpYFK1~t^!Xg z%~8mNba;{Ws6&!ED6y!(tcP{uL45~gyJ6x;$H#!iZ`GC6LF@b>@dzqRkoBbIfV!+G zu?js#6QN!~K^-)}m{^nw9g+m)mm<iRmM&yerZh7LyeTuR6tvk1v>gnj2Ie5pDf%eJ zf!0!i_s)Sfseo1(mL+E9Bqrsg>M6Kpf-kWsC`#3Zssh)gFr%PjWAH<7LH<!tP=~|_ zVy_H%^9^Y9732)4IYqjedC57Y;EgvR_aYt84>AQdTLNOkvIVx)M`$O9C@3IZ+XYT- zh|OqL3NUAb_5z`~5qyp@^pr5-oB|0#aM=YWP)h?yhXLHJ0G9_K)u1X2Qhmd-05~1u zI~D<yLWwy+1$w|M==^8U=4a4JcWP?j=~j5!Mzb1wvj9^2K*zv9WiE&bb|ok#Kt9L> z9Tf(WDb0i&Hwcq}oiz<!*j`qesta<AE?CqGH0-W`rXF(gG^*;<yc8t0pg;qe4w^N_ za+Ed5HQ*u}QWQZ?sD#(1kYl<vAl4w#5bP*z@QEbgL3L=|5Tm4t<sfeGFbBvHP~*V< zK{-(y92Ssu#bDPU^;VE<O)SbL#wp<b8BUjg+yN?8(Q^W^QJbp=?K6W)FnD-jaWK>p z$Wknj2caz)Q1PBxt`H9DMWz;k`^IQ?gEqeA7eG7?FU&z{4Z4gA6sP+7pp)!MA)9MJ zRRXvZ3MzGzQ+2@YNd<7;O$GNpLG3}9E|_A_{!nn^9yHbl$;!Hrnd215$Soq<gUTpy z2PG4Hm?TmS4$51g(ia?Su&Zm}*#+cl<be)QJps)Ks97EARB$$j*0hjTvI3|OL#+Uz zfdv}NhL-^-)gXA=JLqf<aBT>glS(ZDZE=JRK!Lm1U|ER2!3)ibQuE-G3;OyB$mh+b zf=h5vsS94n1X@%9Ij#`a?}3JGc`9U!bV<HKO1=VUhFbwrh$$eS+zhYwps5F8JEY{u zNGyg4fiCV*gm&psoeHYtKuH;a!50aFE*LEb9fe<#nGAL!v^5QiBUo*VW-ZtxsOJ2f z6fBw{T>)^QK_>tZ!>AzLP|cu&_KLwW=r%({Ap^sp3LLb%yb`i@4KzFqIuaRdGn!^l z4giHLisO+S10VSVI}Mz$KuV!$5!&U1$bqbZBpijZT=inmX7l9KjQpIG)FN=RO`$xq zBqP5Rw5CQE63`%vp{X0*n?^DP9P<h#MX9ME(~vt^xzOG>bZixiBf)hY$fdYq#1>kd z!jb{B0EPFd!G~;sV;1B>czQ=~K7l3RnGx3C2rfx1N!3HSkr1hD0i`F9p`fe^*NT4K zU}kY}YDr0EUOMQk3D7_(NHsY8p_vzwkiqstD;6*tssvQ&fcW02l_1S1ApsY!sZoG# z8%1B(1(^+iDMU=lA<f1?><8_2gWQP)vI#L8rvM2*@IenC=OJAd3OX1Y)J;W<YlG}5 z2A}O(Pz)|q6ksFKaKGXYS){NbJzx=o#&Fy8^%b&HQwtOl!S_^x7Vdy1T*1x+xet_X z!NVQ!Vg@b+N{X-xO2JV9PKbz91urT=W`NuZ7l5Y(P}Cu>M+5~Q;&^R6Xx9e5+z@OF zs%y}dDA*$Ua!}=vj0!K@;iiG>O1PWA2lc__KxG9qh`>EG@N^HP98%B*T|AbY3LSa^ zO}Bwc9B>W>7y6JM2~x3(@NTZ23V0F?vPl@UOd4E@X+X*dSpL*OE^A=3uMihOJdZS( z1#Mfw*1N(->@$l!^I)?DAw{Xk6F|_VK9Fk*HNazDpgaR92@$hgpcn(!xX?KVq}x<L zX%MpK864%%x)q$b(C6~N<Ex1!klpd{H~>vY=_o+vG@zjavJOQ6?A3UP5X>i7N)~jF zf{uTO8VM?VAZ`PtKxlMAC*?rafqaK*K3pS08`y_1)$rMwni|lMC(>*U^qM`m0U)#C zs*&epuopj|2!N#^97PcJkOVaw;Zs|nvm&609_(!NkwBOcumKT_RFjelQvyzl)QB%o zT7kL=6pAEA7bxmL8bJdL@bJbJ%t)4jnxTl57mz}ph)~8A0wjeq!VsJx4QsGMasp^< z4C*IPkqBLxg;tw^kC=ljD**)vOc7Kcdb-k4$Wj0uT9lWP0~*$XtRI2|Ll*jG1<*_r zd}2ibe)uYA$P(mEP?my5A*h>^4C-nqXuwu*gK`;6k1J@;uSP1U%F|KM0Qm~ioddCA zl(6iA2gNQpse*h2$}`BzgyB8|#T#hln}#~bAS=+Fm>>qENQ5O~#IhpD3F*F$5%Hk` zE{-9t@y`CCejy6B3Wf#-;I<Daj0;OsLHABWS_L2hSjtZUCw<VVE}#V?(3`VBCA=+U zH33L%a%NF-X-;Ah=&}(|#|$J^o|p-0!ypw=Aknm((&7xz937$z010P;4z^IRRe-n$ zcG+7{D(JQs(2xv#YDB#l+=5O8jk%()Z%Qo*hRvXWTVe1e%`nr!euNe$pu>YflbWD& zj9@-QNP*k|ibPP715Z;!Dlt%gg2w{7r=bNZlD{$i3hrycyypgzS4he)$xr~h3^Zw# z0=j$-Jc0%7&lY3&6dZ(bp9X^C4R*{YSPl}rAh&{3DJXoQhUq{?I6$dPUtb|Ozo-Oa zGprv4)()}|)D#cN$Sj6VLqQI?v4ZL|)Kh?$gpl34kS0Y6WRM<Gae_u|!6mq!f(Gm~ z3#bfeb`E@84%9pa1?aK)DKK|{q8zLlJie<BK8(i^(P0M7a}}o+!7d<%xS^;t52ih{ z1hnlKG?@!i0(S$#%2EsyVBK?QrxN4{NJ9i>3d}XedJ3Lt;1(kMEXZP{@ptH^W!S77 zio2l^0g7dC4;gd<iUPRv50wFp8-P3lJADfr8{p)jSDasjyn8WGM<EHR5t68v2|8mc zNiQ?STA>zH7C`-)k`Ep_glq(dlzZ?)v2wx7r9cH(YEiL5Zf1H$i9%AU0_eB~$VDum z73`oXQ;>rd;0KDr+zPS*T(Q7%n1QtdglPjwSkN2=6-DYoKuu7vg{X@L>w*;K3JTx> zJg5qgcR<#Fb7OR7N-SuA2eJGcrmCnk58Ctt&xmB^DWs&9DS&QqN&&4+OHIxOpY;j4 zuSx-)aUsbToWr0i{D>LI%t$N-y92sJ4_+Q9zzqgV+bU?lECTauY7`7W+ZGMMnG#e> zfXa9jC3Xtvg*1}kxQ5w5hnIn8yb|*iG9fq1!Q0|F`S}G3py~lS$N{nygkhlu$^($V z1&Km1c;{ti9xTm+yY8TCIg3(@i$Ql+gVq3p2TL_zrleMY4*dg3g8T>CuO6d>WnU&} z_j+a?O16P!FIX!bW!<oXf+jeJKwJg#eMxdgYLOmj$O<L~O64#%&NcMlG8ddGz#Y5f z{DRC>@F`XWpnX8#tW^vvIY1ZDfxF(2S_Tw0pyCr=7eY!~TLriPyy_^<$xKd#CP9!E zNZLw)X#iUTy+HuvYLLlb%isk$xXJ<>0Fr}EH6ljEpaz1IG2D9a3?z7{0@N@8uhRfk zXrRgNVhy+|up>aWLK?u3MM4lYP*dS5pmwLEmX+k^=YWj|3u!6foO1#tW2k!2^^~Bs zu4$R+dN3h)5{3!rL7Fb$x&|>M363RLLI97jA~{n*0~~%(qd>t6ntcX~!AcmAE1^BP zOkG{5O2|M3G@T;K8dy04G6>w?gR0PjFDe1~3Do?8N`O~p!q||NA&4braJwL(3kp|o zS6Uq!wopGpn+J&I8Dy<DIOG))6|z$cN^}!*Kvz>B;vBsCqdc(~k=_)bl?!+j9#l7I zDS%Fy1P2A=8e35DU6h{;Ivy%TAu+8awFumtNX;t&%@Tu#)W8F*NvWxM3Sd)G!E2;Y z8dG57;He2-*@GJAP~U>K*FXlT6yUuOP?Znv^ny=YRwxFI(I$e913}B?pxq9j=mL)< z<Wz#zZ-LJ=1+`nsGa#eE-~+}%r3I)^11IEE@Nl4lMyg)Ao<dQ6X-R64Zdqn(Ik-{= z#TC}>C0HvcOTaTKsBVL{;4#x2+|Qs`EJjUs;EE2EWI$;TRM9D5RB}ia95@I;JqASZ z*n*FTg%<xXhk@M%4`E0;2XBxBwckK<y<l1kd`}}d34t9AYeEK;7H23V!prK+yb@5L zr@{rmu7D&Hul%H9NMW8*T9A{OoLG{o;OPPq%E<xM`LNSIOY?G4i;KZ0yn`=528CBD z^lULulL%}iXmwr^Xsx6II2+?iLeN<l1z1%9O+4U01WnRGvlOh32jx0g?TS8t02fCN zM34qWunWLP7Qy>$U^hY*wnD9dlzyP@T53*lDs1xtxK_vnt$ip;O-!kTcqTJ1T}J`3 zQ45@NpeBG1kpfTmfSQ+?@S}7f3(pdvhr1Uf7MFmVbD1eR3YjJFED36z=A~AYD1eW- z$xJLs&8Y;%3%K?IhX<^9f);3?qsgF21->XaQ^5|}yi!wxwVPr=%|1I=gzIIdK*Jbp zutFw$2@5#wKm;M71M#6orh>MDp^k!q4$KI6NP)5_IDo+F!9f8IYKS;E=%IZbBrBmJ z=m&FvydIL7oUH*i0bb{U3qKSK5yc~Hzdk5%N;6Ybj4--~jxZ;K#s`Z*$5!VdHB@vI zlJj$NQj<$SO>@wZQmJ{#nUJ%RwZN4qXw?j;wVjg#S}zK@`5TnL5zQIM@s<k78Hsu6 z;8QLYK&5Ra`1C&Tby=Vy0o;EB=~DqG6b(&<#DYw)1(30{%rdA}eMmnXmM4%dOoIu5 zTWQcu>Zuh4{zYz(D^`+|z%3!@d<J|P4KxF$2d=-M^%kfU1UmvW!U4*+8XzT*@P+P$ z&d&q47C^BFH4YwmAhmj+gJQwcVo+JI05lzf6@Z$IC<;IV$O>{2t3b!XE5et!g9MNj zKu^s;C;$n76+p)#q1hO09n?KwHpnJW!pg`j)&m&|V}tY~4KqMfI#>&6XQo1O64-RG z0Jv+Rtqo34;Cq=$GgCn0*9u9XP7w6eF|bN-0S&rg2~+?h3`of=DgpTqtOn!?uqmK~ z0OG(>Bsh@4N>Wk_K!XU-$ri9sUTV1urf5oPfoBRxDQKcEJ~*`m+!loFp4WqD!7Y!J zW^EO~B_t%5+JiC#C><f)I1iBlT^<kimA*bC`+!u!+V~*vq^FjYKvqM85)1TTBWS7w zw};eWtu@5<Ah7o!8bJpRL6R`o7A#Q<R|me-Iv}wmLj!6&B*j98TojSageO&KsK8Bt zxdc4oQwz2bRMZjEn?qZk13$kDoR2^)l7hsN3@fB9pb$@i$MHa2A+$Z9>ae^FUgwmU zoSa%vQmg<uCs`pSzeG1BH3xL+ZE6ar@s&}m2kM?dVg%%3b<k1WX{9-!6RPt{it=-G zK#SNFK!^6`C6|D@U!Wy=sfj5lD}WGPB3Q_Q#}L5;IQYPqV8F5qD4jxVv`1Xa2@$XY z&#LRCLlYk;BxCYmZ4FnDDWFyZsIY?sy$-mX124S-7qtp0sfdymRK0;(mCz7DI<5fi zzDN)kHh={xwL-wx4I`CZpeg`lIpp?DFb{To1+2*qPNSfL0aQr9(+SEzF4zQEAVA!& z2kJF}8|z53jtW=?bRmPwsKdE2N)SW9#RoXKq#|t<20LF5kuOoY#;DPRvfqs;SAt_! zUtb|csU*KNIU`01v=11xJ)$VT0DL1lxb2-<30g1?Uf2n`UL_lJtOdAW0<XV7L=@Nq z;DQ$H3uqw-4^fZ|Qivv&r4|*Zf-a>jO@;Ua?3#l70%*KJ1i|SpIVUwSue1PE+CfV* z$V3vPVuf9v2}@v(DJcqxh$K`A>Q8`-QGi#ZxRX?3N{UNr0jL&$9f1KA(MU-xfVv)( zaKPn%N@@XelM_<Jz>8SDjKpG%Or)dYKyE;kz<Qudu`*L2zJwM;5WUc|DM1!Oiy%-K zLQIF0?ifZZfV>MbF}O4doMK?cg2NQl7y=K_!$Qaz6rKvD1<)9SMqwqarIVSThdYFj z;sQCCkcDBH5YlZ1c^iE81c(8421Fdx{Q(K-fvPrWYZdHY9Nq5}aJ+zYs2GCvAeIWi z!$-vsDS$!Y4~Zhg>?<UoARB66VTHJ14;ESw2bSc55(3CVkaeCZpvwWF5e10`SRnw3 zHWUSLA&{Ef0<gcpCc!22Kp|EHP0pxRp;`p0%aODqNkYs5%VSyrTSyOW?xL2#!KF#X z$wiq-sYMEzc_pbuX^F{@sSt(mOh`8lRHDJUYbcosxfQD)lZRO<LxwAm(*{%omMpNW z0tI)bK!rS{vIct>RKGxT94ypfZ6??q$<WpSDEh%#KrJ{_Er{`4s9I>F5Zo7mx*aLQ zVB{2d7egT{KZ!tCp>MyzorgfZIHYzvhzkoGxL+XcM!0W4g${a|4oy6eFoV>*pp=_a znhHK`8yqAMJvB8jX?=YK7tp#Ca1jj}tOs4k1Lx%DDL@u{>4UfG7Q^<ygZen2x*-qA z82B9n5Gyi4lRK#jpe^q@@Oc4H6%UclO{_%H3m$0BEd{M{0*@Mj+AIq2Gnc_Skk^ib zeFCaKAV$Cg1>CI!&Fz8Ox?o)p1)xwU0-dN8mIw+ATS#*RtN@%7LDqrI1Pg&y$AHwq zrQmUZ(g*-+Dyl^E`N0C9wnB0eqyYdiGFJyuErD0QfE@rUj6oV|u{8@o5@<~WxLF!8 zN}#+5?puP|)6lp=v?RgFmrx4<WCOT#12a%s3Lp`%ZNz&6Y7&^j$TBGHJ4gWMr-8fu zP^W|Qg#vh55Zt;=Pc4D;pP|R3fHFS30|Zu#wVX)>nGI@3BIP8w7%V%1JqA(;?ty_K z3)Uz_D^tJ&j-adMz%>-CqI3bbLqQ{pplvOniV9Xorlx?7{sI{fb1H6^LRz!PB_dP= z=1NF<1sO(ZMF}wjR9}Hk7Xs0#c`49x0wbn^Qb8NQkhY;gJ(-%90vY5`S13kQ6rd$t zxcvy*gN5u%xENu7!m}J&u?HU8MRO&1X(%);fmfwLGCgP$5@@O!G%c)9oS&Ooo{?Ar z>WzYK9s}*<DgfO!1nT<~=PQ(_f+t25GE3l^Ga-qzEEh2-3E$}i@;7v957G_;4Uyp8 zJP2|#Bxiz@LS0*|11^bR<pDVVK;j-}V+b*5hcp`jNxO(<kRIL!4MepbBxFJH16`mF z9^gQ27X+mymllEUTh6IeC@F$8(G?QmJL5q6NkMlog8Kr{s~f=cyIKm6K1{I=e7GKb zItKJs4)97&aEBr@uQ)RWd>s&Uw;gzF7_@~IGROw*TPP$dfV$kN1u;sXb}b}1f`>Ul zO$1O)Se%-g2dSt)tshY74<G4(_u=902lX+aRR)qil=fFVOfg8UjslW0P+WnB%Hih1 z)q+kj%z-F|8V_<>Cit>5NGlD@FLqS0g<iUpSq!dLL6(5bg;d-cikZcZphdxo$Q7U_ zsQyz>gm_Xfv)Hww1eA`Ga==|CM1vO65dtM*aB2eOqq0QM-Z+%4i6Do7+pLhf4!Uy@ zR6M{sFc7zZJPz($fE6Qb0c{oq9g_;O2b^p`l?GTbs22lK46Z)mj>s%_ga(QN_@GCS zqace0!0OPFwE{d)L16=)w*Z;0X$@TtiBe%@Llz`Mg9gL{X@UeO#4?Z=a*qPPZ6MXr znX$3ZsD#-GU2=(7{{#xe;*7+i)D+NyYEW`^NlnWHZTbfvq6uzUrskFArWS#=lv#m? z&%gt&kS$B4=)&o#B~}V~`S}H4Ma3{4tUC)&a0NyA6_pAakh4TV8LYG@ITd`(Z+2=W zG>~z*3p54;%JQ(@EZ8h}@Q@sMkP8x_kVFJ7o1%;Jp~lC8S6+h@fXWC31)NrZ8em9u zFxU#v%JbABa1MdG5K;=E8xKj3;3NUD1sbc64QjA(hWj0KCm~LUfKmWzRs}^4cs?9y z#u2$VMmkO;u}C2wG{gqka}OQ02D=NCr9e`kfu{n{VT9l#U_eeQ1`qil$w8A2Tt{wd zNk)DOT#qk=i_is=N7o11Lktf#kS9P(#-Wpq=yOldW$mDal<^>a;I(s*8ze!~eu>3F z`S~Rv{R&8ve~{b`b~$L4xU?h{G~WaE7-$X=#7DRit^(be;93o|bO_``aAyjk2_gs9 z0ge+;=E*Dut;8!TgJd9(LqVx4JGIhE!4RAWic-^HOwf96D+NQ0%mA_q9QL3ng)aDq zo$Cx~nuBaYUQ7>K<p_;WNECtt196BETs<f)=IX_R^@1D+Ns!<b6v-K>;5rO+F;6kP zic2dkDJ_CXz)nm6HDvP?GD|>B4cN9-aG4MCDQJohap+x2WnN-#W-_!M1evS=Ej>U3 zwBQy8$Z4R`3F0#NRspaRL7OE|({Cm?szH+~ATL7}$$?Was1XG^YzH*v3*MFu@gih% z324q1xhjY6cn4=3J%}Rb{JgT%BG7R?5KF+uf?Nk)8HAMiHNgIWr(KZaA@ir8q6(}F z(%ykJ$)R^Br-Gssva18^HfW4O;};ZRptY}{3=XPz@DCtB(l%(e1?~)p5Nh%Rmu{ea zQIOJE4<YMVQc?tR3v%@bS~pab2cB31xd4R0H)?=ZC@E-zJq<g~5!8H41f3R_3QFmq zYdVX-*WrT4xRVp}Kt~HCfzk$~tpmzkko{^PpX-5kM1s-^$OaHbjL9R;Y=PInpwX<f z%)Hbf$oleB6%|7bkSVacVZouS1K*yERN{k-1{G6?lmc#nKns&1NZg}tAVLaFkZ!aI z50Frdl4DtZW{Lv1V-K41NQ7h>$ha%$CeTdKc3s4vKsj`<3A7Fj+0&paQ($}XN>cN{ zbE=^BB)As|N!W<hkP1bq(9K|2&Zq>L1Ug+PH8BM?1p+Q4^NYX+fC@UW8$q=>VrCxX zLQpuW7o$zfKzs=fRz1*-Aq5JM)eB%Br=}py?|^nS!BRww61a2&X@+3rNJWlTq=*Ht zyacI69k(JX#$ovc+!%w5k(4BYwi<%`1X<+@UuRI1Uy%vfeG2k4JTZc{%N6BAZU}|M z3}~>wv<MWdptGq`LCw(=4NX0TaOf4Gpo>*OBkkbo9~`Ej33E{DOi@Tg>Sg7DcE6Tn zLhhu6U#AYqp^Bhvr;wQk+PsC7+`vYHtCkogaM@QJqXcecqj(flT!Wkn8YBVlPyj_i zCgkq%VrYS)2|8rE09r_aizCz&k6zk=N)gbY0BCzKygdf0f<Q$Qs0M<%5>ym|(-lhd z0lW<pYzsmTR!2i8LLm~iwhD+@P>>%K6zoAgDv&K2ASK|^4<ccu01^NdTu2Mb6*G$i zauPG4eIl?HMCk=q4_##sN>QM`Rat6IenD<(9_T_g&|XjVf};GCQt;HEI;bQ-$=&K; z6JY*_4+=tCjqvWFRZL7C(g6wT86_nJ#a8<IWu>WE#d`Tg>H1|x`st;aDXIGKbXKgF zQIeaZ46;Dix3suK*C|yuQP&OHTvdnX8(5Bk#5g!%gC?B8En|>o&=3u*dIN<MC_+G$ z58}9O5DyYC;1~fZfMf^MC<BYZRe-wXAdSeK2`tkSppq1<5fpULd#}NKa4H3j#2{h= zR3eda9aKn0DkS1T=7LKr(5x}2;8Xx*8n7LR$z;$N2y`V8{K|LG@;`9CL_f(lMk%xy z(uz@l9&ZU5z=YjhtcOy5!D0eYZb3^ZP#`EGYEihWpjiZz@=!7|DB7U;80>m*phHVQ zSOi0JC)nqpXod2@@rb953vO}3(km<@DL{3V!S3iln$?9SWss8~L%C(S;Prr5Mr+Z= zX+dZ8#wdX_YJe`0fqDXJUNzVspm8@)0Rl>Lpo9;qbizT)L{f{O#S*BssQ?=GgmfAe zAVnG61E2y2)+`4VI-n&<xdk9&pkWI#8QkCo4d{c@b3B?wpkWed*9x*d0e%e$C|J>p zOqgb<@sK7PXfWI*6?BF^Od8yTg8CTb1jrZ=XvV9uAT>V?wB(=&tOKQdQ?Q3iSixAJ zZYtCuP%;7)yKuW9RRhdyTU*3p10*Hb+h>0HpvVU;U4@4wXvYzF%_^ja30brQ^AI?D zpk^*mB?7C*iENxHz$~=|_wJ$of~IUZ1?pFT&+389D&-~Szy^}Rv$C+-7!=EJXMsBf zAg_X#uor{FAGD7F?Vt)sSV7LGK%^DaBnK);K~WEG9)SE0ZiDK=LIos(Y&B@9JLn)D zSi1qH4svE9ra>SlLs}1*Ed+>OjP@7E3WyYRO{BiQLShNH5K7D=t-$~>29{;OEeG(( z0W=AN{0=IPkP0p=DGn6#;HHS43MhMHCN_;2B~Yo19#oZxsTq(Fu*3uI7QoA7NV^EM zy(F<D5uC0-Z5~8Yfed(o@&c%Zj?#Sv)iEH0p>9KwqlF_8^#-VKg6d32#G{mQ@SKJk z35fA4l$d~Y*+Kp+!B=L${e^Q73bgpg7P|in7V(gAE>J}Ti*cOVA!Ase!8mXnKvM>I zNDt4*7sOI%ssfc^knjMt-e7`|?NXp77I=mUrU0Y_QV?TtEJ6`V0SOa^3>t#niN|da zAHkeaoC<A%gDl1(h-4->HlcL|Bo0BHb5N;B?l2rSkAhn*&}fC$mhhAV%TbW{L+Z7H zDj8@!2dZU2(|MQ`otheWAX5)R23%Z1gAJ78pe8{b0V)uXMD@T6G?C=s#jYM~k`X$s z2GR%)GY|u0f=g<F9%Qf<t9HoTA2!X<aDci?58Ta!L^{}fSUUn9PM~%HbW9P_EP#zC zLUI)-v_P#zP~DGFih#obz1~OF4>~CT9A*l(3Q!p+7joRHf<3r?Q?OD<%FIjAKvn|o zuYj$9)ZSQ%S7hZFM-qX85~T|Q5{OZP=)qCGf@=1}JVfgN-iQT{8i3LixQYX{aX|qG zTI7V$yN^+F$xKnG%r8Y8LJQUn5Ax*vqN3E~lAKC=ltwWqs30)~awx2{f!FnrK!C)B zni^=|jDL9^(nt+*?*Np}Fh`mQ`y5)eptNmJi*AGi2{;#bY6G_+AZZPpN}&lHJsly- zK^l*cRx@a0H&_mwj*!v^c!(5!Fg#Q-a;U&<0QJbAn`WTOV0|-%Or&iyplE;;J76b6 zPw)a)Jy2~(hdRLH3ANaVZ70TM0xX)b2N#O%kRU_09vX6>JPNJB!NCD4KT!MfQ0F27 z1F9Tx3ISLnXkRP%Oag?s9#kt>9_&bv>Ck!>DhFACU0ebh*g>qnhD$1x<wip}kj-vj zV?c!oI2u7!s}Ag310B!=N@ji@_?&*!9#}DGp%2Cx=b(dEbMni<bM+bd<)CZ<YBnb2 zq~?OQ6P08@7i{KKD!@Cj;0h@dG(Zj=HwPtZeSPo<A@r0;tW_6i+6*-54_<gwk`J;c zIW?uU2z)Xdczdq`<mxr>Dgw~4ub?Bt!5h%Pjc!mpfm(s!?hNF>0tIld)Fm|yRPiIv zv4K`QC_u|{(0U9#$e0hPQwPZm;DP|fB$x<cqrfV`9Yjc>f>N?VU8o1C`{9L_256yR zVo4%2&4Ka;TH&e=8MrM<Eyzhs295E-#!?i(r}2Xu!01cNL4yW)sl}kf@j>>2f)uo9 z7}Sgh=|*2%4hjiSWPxml=Nxd-gdX$+3Q2T_W4KsJ1rh+6pq=@NDWLU3py3H{jgM+7 zIHh7u3!rNfK{G*+{)vu)I@o*aI<WYJm_wviuyfR56BVgxAk83ef(A*Eu33b5tT?p< z>|->^l+>Km63_yr6!6KfShRz48%i1jDN+EfZUODefDV&E_xC8kG9pL~JOn{07`({` z6cJ!oz||pcnm`&>gv;uInv0<37HrieBoTw11i5Gdt@{bxeW9a}oP<&)fMOn00znHf zJ@^(jxEn$DAi>68;2X&x?I2LNf(!shD{MIeVrHW>59}T{)cXg)VyQ)Xu!TtQMi<x= zP=*ATQ-~>kc$NXR5CV$w%Rq}&KohShEh?}mc$ft~C077Z3l3M1AEA7>&p@-zP%+Sk zMQ9-m6@e7OFuT=3(FXFWJt#|o?1BXect{E)V+E4|+lRGX=n1~_08|`<>K>>&Kxv>T zwYW3~G?NFt4hEtSG<^*B4CKB9L>ms|A&54pISSBKqM-X$ib0o*m*$jc>ZRouxh5uO zAYF_Nn)HK&9LUv#rtPp4XdrFiA|GXn3pC~iu1g_~0yidb&T?UCPl1MDAq5_I-Ud|O zfe$?Z75S+t&~_u1Nh|2mXZU7J(C8~HvOq2cnTvbc3X(!nz~df}mMEc#D@Z(mR;*Eb zmI;=d&=(Vcd_i1zBbfjR0_cPlMq)%sW(pb*KY`O0BxQgS7eo-AxWMz|pvVA?nOG&} zRl?U3gRUn634-QOi*pl;N)%G_@=Mb*Kod`CndzX}c+l~X;7&JU6bZWQ3S65*91F?_ zFj4fySy0D-vlgVNgCsM=R05=F2OmKN1scde&_scPtpe0sh()08HpD;}-wM>u39igd z%FlrbffNO$rhzt@>gAW`foArh;RMg|psUECH4?}gm^65?D#(6p?PHKa9F1eBa}{hs zGuNQecc^b6{)HAx-l?Dsics$;*n^ZRSSdh!1I}|Onjq_jz$+Et;?SuQh!i|}LGA^` zIz$+}-~v?2rGN&ukgU$kQ$SaNVg#rX02O6mrzqHBD2_&$1!=p2>;++z6F%T=e~=8s zK7?7&yNlrd0aqJv9ndBoBz1t|5|;L{)F+T61Dn?ZUFrrq@&~-8z_}#92waJSn-idE zKQIr}t^zZl*TX^Bpfh#BCn7?F0~DEHeV}OsP^AWs#RA0q0>}nESj`Jo4fYi%9zd53 zq=9>*Q00ie20U3o2OL2fVTvHx7ZhwDQTSjq_7xpaO|W)SVo4&TsR1iSz#)s;{X#em z6byQaB_&10AeSlRrWU1x7mO5x9bF7*xIq<wR~&&Hg{B?sMts^K3ZUA-&e7M09$N(- z0)WJzYfdU?))dk3$jpPY6G6Kzq0tK49|vCBo~Tfomswbv3OdpRd_kKoxV;K4$WlQk zY$O&{Du99-I=Y|$I*L36d@QB{_(Tg(;sV8TJTx6(6h%;RNN9poW}q|{K}S64C?xAB zfLD1z(=CdJG+;*SC?FI=X4pWBFu`dBWG?K~UX<hnIhO;{N&#KPpreqX14|vCxPwet zgA*^btq*R%6hIDphF)P<l$vJ+InlZ(6|!9&b`G=^EZm?bfEJ>IFSUo5tCtVHFSoiD zDh(;1KrJ6D&?+3zX`s+H4vM28%0Sa2d7wCf9TEgucUEi#k5lmABdjwAt;!&0i-OM; z134AuI#4))A_`g&g3=!(v_QQf(6X!iG{`-h&}^#!x$+6yO^+}m!NHEH4w{)1Y!#4w z1XT>O7Zm8=%N*fWDJW=w9RpsH0LpsET+rG8O---{&{c(?83|A@Kn(=v1uy|kIADXI zt7Bn}R-{a+piz>q13tnHYC9-pBQMBEE6RsW!73<}<VS;Vq0OvH1&t<X#)1-VQGPDC zR0q2Nvs4A0WSyU%T@0%AlTsBR7ovcV)If~#h56;Dq!yzba|1ay0j>nB0&+f!EhM#q z8vRI758^_OEQdw`G=aendx!EN3z85wZ$a({0VM@!06-eHir{e5gWC^UmIO)`pxD46 z1-jSA1#-6$c!4I!Oi<Yd%8B6g2dZvC*PvlB6?rlQ+}woO=aydtK5ZLZ@qkQ2^&LnA zvQ+@40qRYV1iDv2VhHboc#t9p!~#1|PX&BvyaqhX6zrkNJ~by-!3r^2i|uHBq)9Na zC&9@YboiDd=zJr1;DV<xv7LJa+HL`wVpV{QgMy~qkwXydveXn%LV<-N_z;Hj{Gx1y z#G?GtycF<#m@qx?m_wu-y@H}t@Zm=qNQUXa&h!VF3=0o%1_BjPAk$#FkP;hANI@e% zCj}fou#43oX%kYXLo0BYa}m)FEfT;P2BH)k{Fn-1kqYYbLoGs>0+WOq1KGEUcCrx2 z{qX38Ck?2>K*K7q1GwQQR;Pe^s|Da15u_2O6kd#jFCT^2l>*++11{WQ_JFenSP5vG z2P6SPk`PP<%s{Y@K?jV2?(t16hgT*Lb&!aF#Q@}r1f=kX2tZ3oc+vuAw0v*{ffSTr zJ~WIVDxkGKEc}qvqRBvYfeL9wczS|q17&ycMJgzn9iKAPVHu=@!!R`ID5yh|DC#+4 zkg^FJ$l$s`4_p2MITzZ*!0twH76jdd0y$7i+0e+)2omg|7zgb+g)AL}#B#9?j)Th7 ziy@JQ=pz?{ZsS5R3DOA%kLSX>=;ety*`QuLXwd}ZWHQiIK%f&1L0c!0PCWx1ZwpU| zU`OYJ4hDm@yI?6uPXQDqsfj6|A!E={5}+1fE@+`fzCt48#3axKtH~MQp#T);;W##} zJR?6R6?9Zbat0_jfEs-YpnXk<-LDD|bKxh4f#!w5<+cV!TtbpEC}dGv%pehP(T#C1 zIHnnpwjF4P03;OQy8}RmfD0>VKL?g$pnKtvvJ6xNd!9i{_Y~v^Y!x6VK|<?OoRxwC zA{BvR6I9jesX*Nf9|*)g07CshgzaMh6&K({7?SS`>c${i@}S;2BAO6Y3@EZ=^5E?( zNUI&5I3Vp4P%{u*6oUc-%z)-r2pigA1anFf5f_euLNT*AG%qDJO#@^EsCxuS%#fBI zhz%Yfh14jZTT(&FK(~xR%0$Hd3-KUHYtSk;aIPu<Ek=b6Lqlh3tQ0^y$UujgfsdC1 zU5t=dTvAk;T#{b|vI*iE$RG!rbD*|@>;N(KpsSBTY*6rkQ!2;^(7;g|XweX8j2m?H zW_l|406Or&wI~*XF2+jCQ%D4z7=TD83TcTT*HnT-3bbn?6*LM3o&W;54mxTJvKG9- z9<gQ@USWWh6_p|%;tif^(TGv<%ma6g5oaDF%|wIFG*!@6&<F-k#6f+piRhd_s|{$r z#E2cxN-0#IfI<W07UbyFOGZA81ndjY6(-<27#u;`;i(Gj03Gmpc#tv-cYsU=Nq`5g zOF`);GY_TC0*4(qy7Tf&z~^*>ch^FWJOiE43)=gD5&R%WgNh%}d|qN^3AjrPD$+rP zIC%d%=v2a@%=GlsBG6e=sd**P%Ob!r1k#BJ8E~2a6ChK;?g4ug)U|@8I(P!j%u`5C zEKXHO&&f|p%u&eAtjNrRu9Gh)$N{a72Ooe5H3?oGqnHKGn3?(D6B3{uMdy5Y0*AKG zzyS+NvLK^CnHAdK0`&pF%eg_~pee|r#Ju9P{Gwc>v{|N`o1c=J1D>UVR7Kz+3k5as z!3>bwj6o3t8O{M2t_RkD$kin<Q++`Of!zWd5`v7OfLw+gW~mjR1Aj_DH5R1(1}eV5 zwt|MJ6l@is3P1~lirtFxbHT+HNDjKz7L-VI6iO1)K_)}}1}n;thf6?G5VwaEm8PP& z45@#N@ChWIq07CnjH-c6KpJd<cn_YAK}R`f=A;y*=79%Tp=BIsya(!Gq_$}>Y|lz@ zD)`zcSg*4L)UyC3V{m%{w3-uC%p%1X+zjv%Mo?oSKTQF20VP}l<ZDof!UdqIK`$S2 zaXmQIf@Wk>AqQ?E)Pe3nQqapw1l?Azkei>9nU)DTV+|bb;O(ej7DR<V$T*N?xPlmd zIV`*!1C=OA(97xJ>Ae_qUlwTS9n?ltNX)AQXKj$d;6gtieE(KSMj~|2g@PJ-YaZk# z#2_Ui*uf)uNI{pIn3tFi8E6AnmJ0c>14+T5fpjAj$a1i5a7P}T>X4EeG?^r#TqFf< z>w@%wf*v%|hBl6(2NtWT0VP{-xeHPU)&yN@3r^(F-m^xG5~$e=4<cRAoR9)I`GJdD zP@xVs4}2UpL>9!?Q~({ErwJQ%0tJi?a%UJ`sG^7>*Xjxi)!^YDD=>+a)}do-pj@bf zhyW`D6PzKfK;A>-1H{l9WXClq5J3a%;4&QSdGrAvaCw&suQFgwEZFD*q+tTq3GTd= zrz&LU<(EUMV`wJ_t{EJn3Q46U;QqEkN`7i_o;rBJBBZ|uHUZoyONH43+9i~enU<Pd znVgdfs_IL?cilqN!^UD@Lle+s4Ub5;#n56IvvmrUfX6?yj|ob=proUq5T98LHwCh4 zAKYj_j9Efl0uzK?=wt=yy27<W?Lq1{Lyd>0sF1{TT$)M})1l_aLu><&8$eZ~%J^g! zmw>y~P+1HIz{?hxKFFXhxbqJlngvHChBjD_38o9;4%eJqD`*Yvnv)Bv+`z-aP_IE^ z1vEGdx{w|w3zCFPUVzI|&`JB5c{!PRsk-pXOd(E!kIjM$UQnDu)P<zx7UV$Ag8{o0 z(w#+>1IH(%6m&^V(?FF(R4>rj)`MDTtAMHyDh@VG0oI7n11)mOOb!C|>WbX*K#MNX zbfGB#YX`UJpv4qud;{!qj8FzuqZ&|0X`*LDMDYjN;Q~$UAYUqi$`w6O5egNAtXTq! zfRZvKyuogO57HtpumcUULOUv0ClWz{51JXW1t0KU3{@JP37c;N$%96F1Hd=$!D=^< zdl19BkiJEJX%Q&I;He&5B7n<uWR-C5fCZr=#ZbfTAw$q0Jt~G8AoC!D&=6@*c?%MQ z1v<Fyfwe@Cbt-7&=cVc>l$7T~gA5uuaJ3qU`4OlJ1%>>)RAgbWB?=%jFht>l+4`XK zRdBZPGV{{%!G|Z5rb4$3Lrxdg1ULL*@*sQP3czxyWuS&Ibd?@x#-kt=bRiAoU}(6r zQQLkBu+#);7(qP(iY`#=PQex~4{1VzW@e$u4<Z0AufQjisDoE2tAo7^(hqSBVFSSG zASPty6_l2!TZ1cau))QkG69(jnV<ko=oWzH2f)by+_r_R4T4*aX!t<pgdk>sMXQmf zWgso&{JdzeBVv*AJxmC+u^!15SO+8)bZcC4Vu=PqFW7F>VHmh1EWtyZ3Nr+v1DcBw zQ^lab3-<I4@Ntdz^AGZM^zn>x1>LO#y(!7jC)_bI7)8nm+}{RumWmP!3Q~*U1tYlQ z1eyH?jfy2IfUjps%So-sOv(Yxmq1Va1E(WUQxddh0<>ueq`EQ{eBEqf3Fv$)(0U7u z!3WqJD7XoP+$4e3N1%`cR|qJzLmue5=A6tb@Xp_m%7Rp|l0@(gK7LTSRQRFPpyCU4 zRWQg@aDvG!4k!YheVbX93XWhz{9#xD8ma&_%ZpM$O<+(D5#}Ul+<+qkQYtDS?JNTe zgUdybJ2H#Gy%IF1;<pw(z7Qrt3zT?B1IiULp{xN5M@X{_<X1%F478K0C^r!~>@aEp zRO2A6FPNF2s+GjJL5T-QegU~j6I2pFxR9WSo+N|_3z9b%!wwB7Ee54N=myUeNG~@( z2{ir!n!W+oi(o<6P>ENtzn>mt;c{kLCB!wb!*TOKt#FX9K{2lG2u@<q&Z0tEQEG7p zq!k7>4>~#pzC1ZKF*yTzsjDJl?=dtOA?86E#_*;wG!k<QN-DusmIkat2^m*c1a*C3 z6F8vJDd<2$ei~A5$11Z}0kl4}BwqovN2n6A01aXtG_l~Z26Tf)X+Z(#4lYm#=A<Hu z0eD(Z1aHMp1g-mnT=ENETL7{Fl)O>18B7x>szE9g6rjUiFo|e`Sn#+HV)P573|fW2 zvl1w^fQoVOs0Jt+KmvLY+rbm)p!Nr71PtUVMDGJ+IHXmASQY?ndO!~{1&>caLKjPR zx3yJ3&v|f{!8`!!#=*)PSo>B3CJBjOXn_t29qg8%m(<uSft=P2FWPWf1qwY-;SWyY zItqD^qr*T}Lj%4fF&z@%kkpP?rVr8uY8rye76k=xn-hAPNqTBYNMgEQVs2`2L1J>M z1}Ggum4Qr#szU764oOT0tAYCi+@lAzr@^C8pcV2Zx|w+jsgU9d-1G*;D%jDW08K52 zEN%c-3LqKK@OvKU0w2h+>^X@gAd{eu0^0>?dmt5appbxQ#oPUbDT726d;}llFG$e@ z3KPUtu#UyWsU@)T6+U9Eqo59NY!<77yTqD^QVi^SxID~4m}eom5#CA%_x9nQfsBkJ z`3h8`qd672uMliYX&$IwoCg|^F3kh?!cxHNf57pUf)U{G&QW3s=q|OA%-mG?>d4Fz z&}<oK_pw4^adBpP9%y(9VHjkSL?&dU5ERa!RwSfl4ol>z&<Qy3@-mPT=-L1rF$}6y zz=bH1cVU60fMYlVr8Gr4L;$1@n(d&$13Gae6SUh3sjP&yLKXCp$6i5N5e`L<9b`wM zM-C)jkScmmuMix~h_nDoS9#zwyb=ovaw`3TAxmdKITg0#2VNb3wSt_3>JvhxIBIVM zY7KN=4Qvmj3IUt02hQe5r36G2UPz?n7o}#VLr(%hlog=a_~KMpfs2$VpeHh-Xao5G z<|hyvTL9_7OH6o~f!c@EQOH4zt3VrJ(4ri2Uuq8eeW{@G3~VZfK17!iQu0IcIasY8 zsAz*UOCU2@5YasFT0xNGA;}mTsE~3V9H!9X5L%x=DR}=(3wCb|>?qiv(mZfx%Sg=u zx3%+&pe+SZv!zTI<abc+1>XV)I;Ild^MVW_fCgY7t+KMj9B|7QA`Wk8fjnQ7TB4(n zsiTksIX47Mf}IIUgQ(SXSz->jF$}FE$`W(1*AYdjptb&>p#`vh&`F8VNPwh$1#o9U z1KjI}##mwwR0WP`DoQPh&II+tAU*&Y2|lqg6J{bfxj=IO$mQs6%qz`JN-aX9O)PGN z83hVfh~prRDNDpiHR#TP-b9oMGXmW;Xs2vK3mee%E81i%D2TzK56%kEA`lXaAl1-7 zf?0!bDI^$?lt7%0;c&>v2}m7s@<#VgSz-=&v;&+NbQI9M1xnzcAcka!qSO*ZxupT( zftG88fzuw+tzqC0ftE={ppD_+@(0lsB`V3=fR+f_fsSw0N9rL$k_4!M2TAOpv2Ji` zPfLW1V1PNGK?ca;PteX`$doTiMnJR^-SR+dTtGX$RS<&3(I9gnqf8**BV^q2K<5#H z+QiBE1*woVw4gA8t~*t*h0JB4v`j%JAlv~j%|N@WN<gP4LtG2q<P32tEXu**2u>WO zMR^Lyj({vo24_&1$3d=u<_Tz$1Lb&7AcB^Ofd;=yAim7WFG2PnxRC&wLsmfCw+7Os zP+FXr4j%J{6p0`)h)HT{;Nx@g9r1+ZNw_|}cu3@>f*0b0Y(#3y#VEPJZ+ipX(wPc6 z$Spq&+>b!)#|Fg;;t--V@Cv%jJka79@VW5N0uyopA95EBv~dQyCK`MsTux?oYEGp> za$;$5Doj%<=nm{+&}KhSNJ0vAP>8{Jut-q=y9pc;NIpVJ{m_yg5pOy9C1B;CM1c}p z7-KYeGX`jS8B`afW#*Km7J*vGXw?8nL8=>ARzU-P!CFx&c#Z`+WejPog8YTtQiU3+ z4!U<4vTz5Sv@%mbw=tGflHyMAdUB96vr{Xb!AoR81GJ#l6sWC^o}Iy}y<sZB=>a@u z1{DHlX3$P7P$Yo+2%dS4Ihl#YD47{<lP$~|m<YIF0|h&>UT~2M%9G%t7QQJQrUy~L zK|>BEp$A%5P~o4Zf$Ty}aIL6o2y!55?nBcJUeJN86Rd-jkOhsyg95fp7gU(o#wbBX zFJhFyW3~#3kp7W+F}T4DTCsqVJV1INr3-j69a4IN`pn=k2DM>94gwFhf<+RGLF(Y) z3<@u>Bs^z>L{LtYE=@%Q9Vo+*d<dC3#Ao2SXwZmZVo`c2cr!$51!%|_bnQ5FUm&P6 z1CBk&PzGWs1#$>5$S0r-49l{p5d$gCz}n%F5Ahn@Zy?QJAyD0r4+%C<GX!>%5J(<c zI76lvG7^h3!08Gk1Foq-g)gWA2A!e<y8HpfY*5&NByB+lS0(2p78k37QYl=hxTG>C z714eH84B8eUkuuH0g5xYRq)O!w8)331lbL06G6uyAv;$<O<0g#2u}|rk7Nwocu2g1 zTm$XH=av?igcgJM!+?6#I^f|NaAN^H6a}#nMA}0VUP^v0DCHoHvBO2c!|brg0cip4 zIzzY#WGQ%@4dO)501k9e9ikQ<;*c1GALa-OeB`7DQVkM=<bGR78Ub^VJPbDs$^cVf z0-A9_?jj|7LMk^<28GPSfomaLt##1(r<uu+Ob9Mkz<DmS*fY-!v{((ASitdElnUCp z4KA_cAtr|urKT1m-$V`?_)7zA`%{1(p9MXy6x2R}9Lxz`v<kY31+=;X+9Lz^DZuuE zhWJxKx7{ifrGjci(3&XFJu6@@fQIQ)@<IMe1f7hX13FP5IVV34e4md3C?$gpS5s3^ zgt{N<dUyqhn$<w6;VH*n0c;d_XtP)YMal|E3LyiIA<!L>ptT_7nZ>C(u=+a@I`RrK z1XTJ#91p#k1xv^&*g{ewIAq~llOZ7tpJauGGGyx!SS7R(6976H5>me8CKhEw;uGvl z9R-aTrFf`?@$sN$2;?$UO&##?Ybrz+G?jr|3r}T`o0hS31j}^u^I#V!xu&JT=HEbT z9dlC?^FWK3i{J~CL0cI>L)s9pfJ;*a_ztn`RQNpy@D3!%1OA})7P$Texd@yp5a}{I zwGv(tfD~i;7UVo+zk-&ffJ!s)suV~VfcI*H2G?VhG&P}(3~+wL3<(sMK`eu06}a1A zZGy~Vki+4Q1EoeRsSTbW;UzP;I|}JGfy{(<wa~{4K*oWjLA_DXsZWp-#9$(zGq=>y zhfG0b4<d*_%|39V0QX-(`;Wk_S4e<lYU+TlB+5&MrU;N$aPo#WAW>^AEQW#$VN^3< z!wXnK5abpG4N&4h)dv~+0g3Bn7DEFYsWl6h07WHuD=#?0z(SCaR{(8C21Nnv5L-ki z5AFoeHYZ4iLOv-VS1%qsumtM%mgeMuH^zX<9q@S|(EEJABQ4;349coyxq8rC1ug(# z8o^SDumzjo6)K?Nom@Q?nE7S7@V2gAJY)e0SQ*?-^hIBwwLcJb2+I>;!!gc~F+NaF z4?MOBHVRa^LUe$+plMvtray3Sfvg90f<Rp`Xe%7le+3=xkK`^$^#L2hhm~qj%OFJt z*dTDX6RaP!JQ6f71Zkdtt<u*A_aea^BFHc$box&rEf2Jr4OD`GR||p`tAhd#)R6_< z#GP0I+KB)<ZVuELO@;Xt)Sd?U1EdFZQblG7xMT$_-YZHkR>&_(NiBjd^a53vNTak0 zun}LxY^(y>{3g_X@cnS0(<wpsHG<9}$Sek(+6lh?2ofmp38!N4Ky79Y=pLt{{9Fat z!W~dwNCA{Ql0i#0plACkAg_&3sD|yaL<tt~$&HBh7VrWZdj1V)pAU2*2kZ^dhFXXx z6hOm$pmn>T5(SiO3rdr6GLsdcegGc@o}!QmUaSil87<N+FUl+d9X5{cDR7X2;ughe zl==jGZjUwCBjC{&cy@$Xk8xNM+L1A^i?C6gkp>$407V<TYKJM)NXvs>Jp_^lO|XGz zR5PJ9CyI&ik{Q(0K|ehPBvu4I5Ec|V(2;p?I)^m6AwB_5#H67vnF8sARDY0y2eMqM zC^Zdz5fzeY$Rz{ROk^SOS_n`P4XPACX)UuDy2=pl2k=M=xIF_NB2WO8lf|HeqY>wD zfI<ai2q@VgZ&?L-5L`we83sB;O-}_Z3U0iD)*67?UC_o7TnktdQbK@?MpPjX%fRYT zN(~KUe}PIaWIkk78)B@f7(5b?ic-)(3<d=RdLV;ZfuO*Fh=a>%Bp;#4fEK|(#@L`W z9ykC&Gu4oy6f%jf2ieP>2x@qO4rR(qL0X9dUMvkha|?8ZaWS|c0Gk3@$qzfx8ghm# z${Jlz)PVCHB#>b>1#&<@lLmN=G}zAK)SNVk&q2uxtOcqD>7ZxCG!Z0qLRyX>k3;z2 zb|dI?5<L}^><)`REC)h^x@Mr0*HCWtjZuP_2QM3Alwd}H{SR$afd{o<E#xBb$voh; z9VnrITG2%c1x2Z4nfax~kiZ625+D)KiZ7@I5F<cCWuQJlQchxCHn<oD?;V4LhXQDu zS0?D({iM<yh0OH4{GwFI-dfNQ1jsH(j}2TVLE0M-L2w{KYinr!hGt~2XJMv;6x)Le zcz81%;x@1%VnbL*Ar;>302ycnG7!=Rfkq>?&NPw>(bYm+2hDEaWC9*&17{UzXu|e= zfNBVcli~5D01j8s%?PF7g~*T)QiRO?f$G~5P#v8Q+tQDei$M8~m{l;S4PmfHP<zQ} zL$C@8>b|8pC7A^|sgP6IK$!%T<3QemRk>)s&{KdEun2D<9ncR7Wp&7n2e8^VQ31M! z1l-I6S%7juI4Czlf)%6}k)WZ0jL2NjyaOtgz{Meaza3O1s9lp<0$m~uF%cX9deD-^ zRsl;^hvpfuLXaL<H3sTlgD$ZJHBzAdhfLCed-n>U?KByw#i`&+tWzrr@{2*S3K^A# z9nAom6@VNE2g+eZsVSw&sS4?!1=ES3^X(v}g6srMzvri<Dimi{K|0uIb!a~5tklG! zY-pQXK><x3Je!g42c7@}Cu=l$P$RS?AF>S$n>=Vr72+Duqz*O}py@t{3Q#K)n~FjO zThKKa#i_1^rHMJ%RDil)Ir;g;sh)W$sTKZd*wlb-PKVk99>c(<26R|Fv`Gya_r|6u z8&q*-q$X!W2bCe~U(muONx>G}bcQsh!2?*>%qjz!1>Tqwl3Gy$PI}msfktf5lPETI zrQn7Jc-%f1QAK0+r9c%<X=V!e@=gPAO9bAW1NE*5H0I(#YEYV8(6Sa@sDR8zZ+(Fp z`3j|(&{M8JHCQS5QgX06w6(#m0OeAU-r|zPBG7su9nhZRki>MbU$NE-nQ02JI)T`7 z3_1>3kXi&<-~%cZL2VXLe;Dq51<(c!unQDy6(BoiK+1JN9=8IIz<|!5i!aTDUx%&$ zbt$U))Vvg2%0c#N!2Ag-nZPY;P#}N<D=jB69hAKj!Iu<)`&y85)nJPbK^YuW#DOPG zOF@YQR3pLyOCPdK9Jbycq8JoN(AWa`8p;G20AC)26bhg!y`UsBH?s=53Kvvl!Iv39 zYZd5G_Ym{JjRnXSH28gC1tp-vZNRPpRr#64phiMTNhPRNTdo6M6P}l!m#P5ir6ZXG z@5&*pggO|yv#q!wH90de2h^)hECCJeL)%~q;G5w*p@l5mXW;G`)C72tLmC$F@orG_ z7ODhPG=la#L-)LZN3%eY1M01S^B9)>l4ZG|zB+8fCTzPDNEggd@I`L$MiVIdU_ORB z2_it~_(4!qg5nz~zB2PNOTaBc&=HW(bbvbS1F{b`%?MTrZY{x-LM_$@ozs~Qp2|$j z0bjQZkpN{{P^%SL56DU%*uEwtYeC|!pq2ihaS52uK!T789!Vu=ojGV11UPoolTtw| zdz`^#BK+hBkUq$nNT8Gi)(fg8p+z<Hh&Paw0z^A_=0G1b^Z;$agA4$TMWurELVN=f z3xFJQ2o^;)5waLPRRO$>7Q-}D7efl>6tH6<CS!>?T9s3vC;`u6+k)1`<R+HD6FX=v zB{)byYjlx@1i=MQYF<hRWRoi>X(}k>rY07b7Nu%vfXg+Ifsm!i;CuwWMgdk-!HQ&9 zl){TFP;x}dJbI})NC^`p0Y1(HWInvrotlGWiUO9g1yB@W<YLgMAL5)=Nb?_5X@G8r z1gA{+C>UaW3?z;~mM0_jIK%c5LmUBGy$7C_fEKi%9tw0fep+HN=uQ^!PElB?hJN)S z$aX|)5SrPc0^sZgQ2^Ul2RhCMQZ7PvkbrhSB9tLFCXrMk3u7n-wXZ-8Kv0VeW<68` zTnb4Oq$va&A4IkURR&25yc7-rE%1faE0B8&z`ZwEO%3)c)NaszI$MNVNPF2eCl|?F z$o@K1CxCX^ft7%g70f#jm%)=2*cyl!l4ghiSg!)e-eUAI8YH!lVFgHu<OW@$h%w|1 zEoCqZdj;@9TBviNDG*!;VL9gv<PFd=U%leeg480Y9>}m0SOi+fAlh%3)`4w<>W6v{ zWGUqA&|r|U2tyE7LB*gNK+Zt14>ak3X#(7Rkm?*{HYg}Tqp6VNY*OGA7-&p0H8lm) zPJsrL0%-9bEXp7Sq5^o&FU0Lo2Z0W)1epuvLfr?p54?y2G!qD#lY?}FKxe9g_DX_| z6aeiVPti{-DM?Ju0QHO@*+@Y{*~HS^4BjON1x+qwqj?I{4n*MkqDp{67E%g;ibK!< zYe5QVXC~+X573zbsd*_-|3m8&1(5SJ(9A~)HTYUAa6~|k|A4vzblMhp|2xcC2#cYe zO>nZsl915bBghe{0|{Xin-B(rqCFoHPT<|*C@zIbz_WL8G)xFo5r7s>f_wpwA*d_C z6qtbabD^4`vybo&1vFKl1vy6EfrTa58c^hcqPrN>IRse_E2`nL5RayU&ZY*-L-^1j zhN~)0O#}_@L-QkqhpYyD*c4(XJaj<81`z^}iGr8hKnwx%;p!l%K@sK!(27178@%WM zdPpZIZNbFB27uO6q^6V>q-r49q61BEsVQJJpi90%o&a-TF$xZLFaZsFn6c=Ap8_^s z0ct+NXqc%`FMvl0azSOY0>mZYMmfZ*pq!nW2WlNCAoj0=w!{`Il;`KEmw@i$g|GAj z_wGQmMyVy`si}G3Hh(HO&w#=bbp#1w6JiJn6zN5&pz13cHi`>%0s4u@5MfOPdj$wf z!Ac<-!h&gpBnNQvK(!Pm0n!X(gS5lgFazKz12nV%y}twEU>tM1puGvD#Tg3uMVaZD zpl%X0JAgwHv`PZvKv*#X4%Ld}oYIt3#5zf=g$&GP@a19<XMnB)QLwXBFaWJ`ftZa= zg^hv%G>$>358QKs+;5C91)N(zvfu;-A3BGotRhJCq4px6au72>MLb5O8CIIAVhrDv z3v~i04G=NX2r^JXK~V$T5QB|)fkrMtW`YZNsCm$%($&LCQ^8Ydpy@?e*9#o((80na z&|(zuE>Y0tQSfYLLSAZl0_cS3^86x5(;ez@kfnOy5f0dvV^F38w{k(PQSi_R=t2e+ zV~{wg0g;L(240j`j3x-rI%wjM)(V<nOdgJDZ_pJMAj_ft2aP#_*4H54XI+p}nx2W6 zS0mgNfoRYJhchUQpk{*-1T>mKK>~>rXbJ(1PNbxOZ#7BG0S$^K=B7fIkSajhG>M?; zTw8^bd~oj5fUUeM)=@A71slk4kP^MpyyA?^v=VSs!z4hd1hkqgKTQGEZQ!Mmh+TY0 z4n<X`2bxT+)PM-;D1a=2nGH?G7*-H88e$~)R0vc9Aprxi3lWH*b$*EJC(yzXG!6_- zP&i^4oElUN70_ZDe99Bbup3we9t@ypg4L7gO$B5*9R-L!Xuc=WajxKtl#$&AS!ArB zprru1O#wP6lng#R8kQM#6f*NbWgTevC#*CTbOlc_d<_ve1ho{BGgI^wLNYRo6;ksO zlX6l)v-Y4;64G^3C<pHuPf>_b0<YqLX+reoier>OU10dgcw&x1W?n{WQ6_le16&+{ z8@izEp9>i$f{Yx3a#1pPC=xUj3Q4~Zz9Do_65&H<(Ar95b0O}~2T>q%AcZwbBte9r ztqyo(p@@Q3UVwuYstQ!3!}p<rszq??9+ajsG9jbQ5LbeQJwa_CFbi~m4>VFin!vtI z0kw`mbt;O5dhsA(kTn|E#KG$-p(cT{3X)0DV4FNsV&Ogk)hVDE9R+NvK;Z%|SRo9M zvp{W1bPt0Yr6A{kO@}37uqcu<&<DHH6f_j|<DwIFs~mNsVxwbX%5`J4RP^;qQj1G8 zK-M7I7N7zLb9xGP!X3Qj3*Kf1T2rR3pbcg#Xe+44DCr@cfd?|TSOI-jDj9UCbRK96 zKz?3HVrHH~VopIuVqR%(YEfpgLUKl8QDQQvgaju;(Cl4CWkE)2o(_gVpf#1C6|#^4 zXxL)AoYaz%)FM6jO)H3Ph~U5l`3_v5fEb`K4lV`FKfs&dVWo(3kI?I6kQQ+1fKlgx zWI#m~hz>4I0*zBZr<`n|%ck`pc~b)tYw+8HV1+G;CgfpJ1zUyS(j;iif>c4WTXJR! zcpd;|A*=-jy3MaBJr$Zc;KQ>cL{J{ZW+k3`uoJ?uk|hcbe2eof@!yXbuPWJKgd@ z)7SY0poQU(YfsQ_l+^((YJyxh0xCs7MNLH|X!|NSY9UAIflUI%Ft||yzC1oTwHS29 zBiLodpguHcU!D$VAqPkuSU4pWeCRMFd?Cdk#O<J}7Bu`{3=49I^`HqQ&<&RgprOcO zaJdIQ3jkb;gO*-GVg`0vD<~6#!WkM^pr|YW?GT070U0d^8Ck4is1aP61Pd@|b&swa zlwCj}gH!~7nns|JN02av84z1QJ^`({P)I8+0(I;m-5gMO=!5GceMlXOyiEw?WJvIU zQ%pf>5%eTYq@)AZ3zr7-kYpjPBXCTEu7yI5ZAb`#HXf&zC={ipgASZ3Dh8j^3$Zgb zMFG5&9?}2?$15nCgI9-?WTa+-5=&+oXqX@ov|}5zbR-{AuP8VM2fK#EheQUr24lHp z2-LVi3cKLaq-c;3JWWD)P+!1Ttb<Pb16Pa+MXAZ9Ma7wAso<e`-JJaV?9u{AAcLX` zR6?N|4=+$bF$W&0gKpRYhZ`&-!b=c+eFeyYdB~Saf>!mVDu8njybqIDf`~)~P@;x< zUtb^GjVuDCdPs_d&Jls~4=4=bBRt@kQ7?v@2nt+?Pr#kX)I8{cnXrTmN)cc;Knnw~ z2SDipnzEsR22uuzM1(pNK9V{}-w9ovMs=+YsE~pM9Vkn{9R{xHkUJX?8L%*<!i86p zU<blN7~0edE=>Yy0F|xaFo&1Zpj-sah6);>>;#QQP>~Lv%mAJIm!Deza}*>WgZ%>U zuY#7=W<n1%glY%xC9J3fn+VbZDP?pNVw51a^Fc4Q2YC@(onSf&<Q7QQ#&8!XNr9x$ zody%f>N=Pt+<}l%4Q367OF_%C!Ha}IHX)6Kz`C6{8q(m+X+f~8jlInZnQ1~P28tky zGa*-)7DLiBq^U?kz78u*h2&$D#vmx(LDgF(VgMEFb#Pw_A_)%@=%^Ax9!Un?=mJ;W z(8Le657c5QR*#L&Oo@e<hiw%S{$3&2foTdFXzeYyaAiR%q`w4;MsRVW4w_4b&a0!I z(Sdw|FUSB8#%PFv1l3*g!KWUBN^J1%I?(AI;63ZbsYPX}DGDATzCQ5NB|!TT;I^YT zqQJ&wrdWZ*6<`YvK!P9)N#!6G2t#W)G$yDN1(nFye2IG5DN^L1#Et^!-~v!~2Hn~V zDv-fLeQ78nH8l#EDd6k@vL1vHra{~K@Qe;Vt{PhTX&{s#dj`oXsP2cHm!4Uc3XUa^ zzw*<NoConFtPDcmB!;jHG?EEk(qe_ASqEA^Ba4CO@j%`IVI)`KOR6ZrgA^vv5)<JH zc$$VVKxL?c0=SL@ms*H|09<A!f||{FptHL`U7%>lG9?{_pwx8NiUQD3AJR_n^i<Tj zQ*c8W)<}Z712p3VO6s7Yp<+Ey9||5r;7G2i0o7#1;3FQ;hhlR<*LkECD`*rzT%`l< zU_et1EXF`%9uR3rw4iSXfw}`~gkEt$PG*UQx{kUgeC!Y84ow9+1(YqMAmcʝ@| z{fN#HnxTm96DW+q5s0O{0Ik$kfRu_*{or|KbYB+~mFA^7gJx<JG{E(vjzV&2QBi7M ziH-tfmoPL0&?_*oVyGOXw+j}5-F^b*fNKJ1Y5{o>EC^Ns*9g%H3KRufP)i+D#ej<} z@boxB1L95*XiET*wLm6=4FD}hhPW9^?-Ha6VH|j>0P0aBw}5g4B1ByCN{T8Wp#pI< z)GHuW;9v(aKzC#$XQYC?io8VyBnMRlreIYeEF&wR*#kYD1?m`(Yr*Rhp?v5{NJJ>W zj;%$%fdFO=D0_LQrWSy2wgD9lptJ%CB`XDWP~%ZI5p?AZWFsx?v}X9RvmmwL_KX!| z_8!y$0SynOf(~ItWLapRE)_CNjw%N-0(R2_q$Qt%bkhS=1bi75NF`(&uO2vlFct-X z2K6AZ4KomW=|U>9k#I32LqUN6D%HU2=s*m3{{lTVgCtc9Ar62CIjCI*%N>xkfUFE0 z;}Ca&TV)CgFz119iNy>$c+5k_+ET&iabmR$JlqO#3}lxDbnlc7V%aSug(J4PKua&s zre$csWeq8I!RZh^rr=J2#vN6iqKMxup!kM`6l8QADPcea(4r8W5g^5bTV_!)q8b3N zj(`LfWZ#5dN@^PD{5M#%fD!<_83HXhKub_S3z0$f1lVLmrh=+~W^+&;MAwWIU7$HR z&?-~VB`hVWMc}PJpuh&%3Cd^?2cwl|`Os@jpf<tW3291#b*ZUAwmyQ4Qc!?+4whg* z1sp7JK}k^$Dgljg(9R7|=pt){MX;Kh0*X$kI7}x@8=}$y83L_1z@Y?F0WQoyk|2MA zIy1JAweO&-dlhVL6+pQarWV{M2X8D+MvMc)j}(LT=|P8z6)U7<rlqBV>K%og{AA># z{K2!6APXU;<%0&I6%s)kV?c9CpqV@9m8}}e#ztnA;Q1$ra(i%>1YDay!yD2h0F7p8 zD<JMhfk}dnyaI1vwSq1RMUQ=Oy8(3auev&tHP92VK>+|wIgscC#}K$kgA^68vJ~Vv zaF8Mr9;`HnH7gOiFx9~AfX<b`S4JWiqF@_gDIK8$7BLX(L0k9`*E50aMofu7qZvH~ zfT|a8Aqt9pa5um+51zz9Z8)%N;1!RR0-OoEum;frgcm}fR<}F&rVPgbPn2FD_*AyE z%yf{uK{i6VFeo?O!-eo&bq`Sl*&PRs9OOGyAkswL7oP`;JrIWVhagwnr-H{DK{E^x zv!I87f~N6HK)b;+%Q90+6LS>OGE;L>Ku3cXmw@lH2YC!+8mu6IwwFP|kd^765-l?i zd>R92JP|bI1U_jnFD)}&9en>pT4uTn;+lBSC=_%{LTO26jskKgSzlkl&p*V~3gp&e z$hsX+_5tP1%#_q3&=4o+24u)GUj^t6M^KdLDnOPv7p3M@f~JTdBdL&m5V;Dac{!=Y z#R`@ArQjVAiRFn!u(iSpMVZCf;0`({XuuAFUX2Ku8n#jZ^)=zO6X<j#E69))tp5!< z1O+y-Yz0}a0L`vYUEr<<{5EfBKL^fNQGuM)0#37#%@d&gX11X7QNh^)<gS#|oYWG~ z>g<$M#O?)9`#B^t8MK)I#zZm%+M~zQRv~RD0@h7I9wNYFIJiRvN+jSofZT#p3fhKJ zlCJ<c#3!v16w3-RN}wfDF-pjTVW3Gn$Y7g7VonZdn_Om|F7#}fJa8ckFZYTe6C9a& z3gM}#73#$bxu6Y0x{xu$<Wz;?<kY;xqRjkacpO6mMi1N}R<H$aSAhl_#7a;ChItlI zwiW9rU=${xECKQ&sB{P|P6cTM34z+8nI+IESX4pC)F-MK>JSr54%`<784NFWKr)ae z12NE}4zc7s6=US#IdzrH;$YC&N0B=8cG~pR5-SCmAY|2IW?p(s9yGde=4f<ti;Ih( z8^KXbh8LKiecKxFrU?GdAL>XHWRJWa!U9kTg9>#}(8lC}SB2<7H#IBRDySRj8S5E? z4r51N@&HbBunkZ}snGEsP?NemH3@!rXh}wDCAdI<jBkMF-f|1To4FIq6Dz@Ig{MGn z@q_K_2G`e_IpE<v$mOb_PBFxM$C8pF1zUyO#Ozex!~zX<@R2z>;0XZe%5KmEMoCFg zW>RTMYOz8|Mq-HqVtonZG-z<A20R-BIvxoeH=t?-w3oD?Bn)(H53&{DbL4eE`{5Id zQWJF`Nn58l6?CsU*iMjM&}1O=xEz#`M9>LK(4%ueH%&uh3tFE-=g2fbGLV4;@aaR~ z0U#vDfX?611f81<HVE8jRZl7{Dap?R9UlaWIt2wJGaxQYO#vGNYRrI-8-h4n9nm;M z(g7alN7n%MHg@&7pz&Q)<3TsA=R=x9pfkk5nH>}^nZ>Sopy^f6emC^E10UI%SCX2N zSpr%~pp#ORn4S)16&IxD<bYiT4q#X!aLUimNlnZ{GY1p^>fn9CX{9+i#mPmfsd+l! z8`yLbOH1<8@{>!8!K{Lu#7Z5osi`SCpu#ONxkLx#h@$+QVx5%K<ebE!R2}G?u{yL5 zp#!C1`k-8J5WwVMAr9iF7U`s97K40|0yhe>QX)kMw2>(<AADU~Vo9n_MrKM%YMu`0 zz?G8JqTI|pkYHwBYEg+!W^ry}flg*gYA$$7woXodet{0S)Gf$CI1%EAy!?!!)HEH? z?px6IL7lw(;*7+UR2?Ln^729JGIa6_QuA~QK&Rj3=cQI;mgp3vCZ^=)<y695T9jH? znpu>ZqEnO#%KoV-I$--#bc$0Gb3yexG~I(F@{1tR2EGCUw8ji>3TQ;SxF9t(MF%vD z3CbGaPKQoeW-;id0QHzWNI3&aAQd^8dD(u!pi(BIq@=(~U%$M(T(8_%FTW^V-_X+1 zQXi}WQuu&0WEMw&w4mfNP?rfcYk@@cKok0oB^suX)7sRnz)2P?Q=F5ToT_1<qX3hG zSOROEg6v68Edg5un&}~68PrM8&bU2z#83}ng&Cx41zn8@=`<kQl3DDQm{VK{O46`` z2VTB|dhw{ff*i*R?p%SEVL-UHkn@FLrebMXr>EwDSHvJLQ3AL8p=N_T3+e;F`U&8p z0KlyxkPK+GX&(3>Lzp~V3cSJxe7+2{^9PnG&&bS4RnUN(912&0sN`Xt97G=zt_ZZt z5_F<3$V^NP(9sXDC6LxTTqD@YQ15`+(NOPzTaC`3wLqYK8;~=4!DfTxAt!5t5+X<k zxT6CmP~4B=djto%VFcj?&>#VlG{}5{&H*XX0WHf*g@iA}6HxDgodPDHbp<>Qi}G{9 zz5!_m6}6ztG2uxD)yE1DFT*T>x(I3@xQhnfL0OWS3=SkKQ1cLU4GB10q5CnwGB6X6 z#bBG}z;!REy#qSq8ln>{1n(N#D?}p+!;Jzff=_;dh7Cd8em$@-s7MDjM^OBR9s(%W z5`mH`bk7gi#h{sr#F9jaao{iosQ|45g?bjI07(d}3>1@)w2LGIsx=iLqR5sY;vX8O z$@zJp@I%t6qX3y3$V{sQyGsLAKh&dG_soL&8ww~x_v-5C<Mt2>A!pv8MsK2my+V?L zy@Ey}XsQuB$Cd;tei9X|6f}}Rr3ZNQ0^9_KCm&R|f`<d)caA~=267fQxS4|Cdyw;> zW1t|#pt3(d4RQ=0q;&%^9x-<X4K=W7@Q?t-6J&k4I;hZx<aF@*R9we4f^<NP2Jblm zM<ew7X^<3nX*lHYWUx)pvKVp<7{=+zAeTd88mt(!ej6IFpke~z8i+iSm7rZR;44<) z(Tt>7O%0v~Kt~6Gw(_VW!T@3_$iv#UDC)Eo)D<8B08s)i3_wgM14==|uqd?{TH_e# zDCio3Gapz5#6OTe2dF|pKCTngR!2FG2GsOL@-0XR|Mm7t}BplhHMw82M$K~fcb z%LLdicqap=Yw&kc5PpHCb3|PRibzn+T@1Q*!Z)!1HkVOcmTsk>j@fcBGB7aEFD^@m zOl{;QmSkX6W@u??q3@emk^v@seLxuusqG4y%!cfugLODS$y7a~BsWJVDL<uB2h^?B z$w*C1(E+tdbaGQm5_KS5l9J34q?TG@N=i{`aj{NfQAuWUPO45~ab`-YPFj9`Noo;T zKZr8a$uQE%FxJU1(aA8?$uQH&NH5ASEzrqJEYm3l9sZY}2XA7fWR~fqr0AsN=%keB zq-CZjCxZ74ftaO5sX7@&I+?lYIysp-xrv#1I{7&|1v&*qsXC=Oa1#=Bl5`T2l8SVa zQZjXtQu1|@igc1QOHy@`^HWlFK(&ibN?M*yYOYSEPIgj?4roKFPN7awflg70PEkp+ zPElzRqTyJqQ=FJvpi`Win3JPZT#%TjQ(RJ%pO>yvT$-d)Tw0(5T6d&Vs#BI&q*I<$ zqyz3sC6=aS=Iel3x}f`Dvvt6o2)F}NbCXh2bRZ)VIt7VEiMcw(`K3k4sXEDtd1Z;k zI>pIFnFS@F_AZ2xlA5EFnO6)q02U_6`8hht`8kllgtl41aaID3!;%!8k_?@aBDg+C z-wGTApriM7Aft7uCE)hE4!B>WlarW~nxm7Gnx2}M0*dz3B2dQ=Vg;nD1vf6gw4|W4 zM5mxAKOLL~AiV`dhZ51@C`rr&bwn}~bMn)5a#Qn4!33xmpi^9$o10jK2yalg1vEPg zy*Nb&)a1`E*MW7R;Z1CCCp{B%Qe**WoE)@OKM%CeKQSk#60|N2l&s29L8~0WJ@c~E zBGAZQaF{z{4F|XjoeS-%gX{$@oCVkDa5Z|c9vVm^qIV9?EX8H%I*ECixuDKXa%K@I z^(W_K78E3wWaxkv$mJJ-x=o<|S8=jVYEDjOL2;@MWd2qsEkCbBH!U$4(d7Z{I)`6F zp_8tYo>N(np_7@Ln4SvCf~nwSnp&ijn^>H!lbcx#I(J4Fq6lmwbV?o`IR*JSmFf9; zIv^T!E2IwSVi29;^30Ot44vZ2+@$;*a7=*-un8sL)LmMfs#BJkS`H~+Kph_BP7UZP zu~bOG0k2!Zy?De-9lT>+P?V|;8IpztVi0sJ1-k*DK!p~RnZ?io3Su^BrAl#dm^+vU z>kh!}N4vU50jvr#838KiGvPYn6#�bx<)1vK3s$gBJWH7H1}d))<0shXPe1pc2&A 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 z%0A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%0A@s0u+XzJPV%3f%ogN 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	`$<Y!3o>>=$%?Hj-OG z^$}#<bDl3~Jy$-cKLM)uU}w?8>lN36kPritQqUbXptH$9=c_^ei);p(n?dtL26)P1 z@E9>lxq+M~;Qe0E`u9rscrMD`h6tqbRZy9QW!wx)y#pR^f~P&mTnlIo2yC1TH2zwV z4Lbi8bhZN|{Xx<%sNWiC6jqf?%D59~jVkm^8c>@CX<iq;mf6$AB;7X{e0~#XjY=tW z-+Kmlk2<&>c0}0^0llZF%G)^w>c7wuq<zEa=kb)JfbKQ{&0#>sa55r|!TT)Bl5#<F zAQ=To?t$ru`#enG_g#R(6xJS#jPNt?K{@9F<-8Q|7y_*RM_<zgDpMhSqfk(MgZ4>* z##<^u^GfiwYn6z$06gwN<1V?F^}K&x2}o~tRD`D)(im;NcLcnT0GlgEUb6$bV*_-C zaV4y5NDHoj&7&f#GYg0BM}XOlyygvd-U#ZvD(H+@Zyf74L30`@*w-t=_dY<^BNT!9 zw`rh#CiwQDfX=K2tv`j%Er8+)OWH?k6FcUE*MA`OF;K!e584)Y1GoFD{BtY~L3_DD zV_crj83B>G1v!z%f#C6t<jM?i8$Y=+8+12oIhwygV<M>gWI<y!ImqV2))zz0dV;O< z#k=<=7&=#lV~sZCz9nd1!PybIei=0H1Z#^y@-Qe5g2n}r)+K?~nt}S01lJ^i&gnt5 z2eh{!8?rtGoKHdHkD#-EVe>$sG7z+eIU71g1e!mD)-jnCxk*_Cm}7>{86hbipmoE^ zNPTQSzsLy3Qb>O&v;dZVVd)**4uy<C!rO50IhF8o@EKRo^K9~v$_eE4{rcefk!(cS z2bz=j2A4^Wc`3P;1yRn9<)Cpz@La7kXg?2ltrM>G0ig4Xaqc_A3`eZ-1uj!S^(Ux3 z28%anc?_0=jfX?q){yy*DoA?{Qm!M<Rlv%36fu2IP#KenG7gV4SK$f@YtTMwXkP%* zMnoFRh3pvxjr$?yO)5ca7eMU-P`@8i--7yMNcMvE^dZlifZOQk>&r-=9|f)FNpc3Q z?eGMxQwPrtLFNjwLG>`=>^isdOyqJCl2$<H0_K43Y%T(|6(QxdWu-4@T@TW|%D$j+ zaL^hIXjuzOd*Hk4@{rO!NFA2GIb;t)d3scMIVf!5<L3m%t&!F>f$MM3-H!QD;eJJ- zMxZkx;dvaAF2L&_Kx=Ej^Q)jfH{v`f==c<*Pmf6N@NqYk`CRaN<(wqvK=Aw+qV6_L z@^u5PJBRdLL2Yix`c}h&)LhV<V@_$5QAG~u{99020}CVEc0$(e`GV%4z+=OZwtQ50 zdA4sbczp)iS?OWLUM{YXe2wMY5K!3$vlDX0bzp@LWPKpGP2mN-a}TBlx!r|6?~gi9 z8CU_DPY0I)h_*dA%wc!DBt{f~_GgzR<ph}~yMy`)&^z7@{fa<yHUX93`|$jejJ--g z`8O4`7d+guGz@$$57K?5nczJa(0kJy)6wcs(Agc}F-b(6m_X|y(EJGaTot4}H07YX z>_B+}bk+xKEWH%F8{qA0h&p%Byp<uSY%v3^e@`+p4NZ-3%0aAQgUl6!>R=FtuJ=Mc zpTa#O2ee-yITzU+6G%VI9kh20w2u&Uo(8Nv21&b-5niCPia}>+mibgVg7%%4Le6|g z4LisgtU)<ZZjkdjd_(fnVdtmdwbwbLJjvLvDiM4(v15f#cm-%Y6SPkyCn^GTPG1;! z?LO=rVo=<J(z<U}etHz-Yz~YtM0N{O83W!g7m{mP3AzUeJ&kyytPO;YtwF{NDj|D9 z9HHp|GDisA+Yh<B06b0(x}yL~UIxpdj-f;9g)s1bCq&voJ?{{bPr-8m;4}<A^TGwW zy$kBE`jvtE!+DUifkAl!6#pRF6Fjz(Q5qE<mYr;Xo_@f0mKUI&Ll4UDpz$zM^mE3* z^U9#QFA?o5GoL)avZU}(wEHGN<HtznlYr0W4XVNj_sonepIpe<V$e1hO8){<27vY~ zI95XHTaf!4(^1!ZLEAd;^|rX?)sfHd2b%+K*P#0cRAzzZ39+u_F*3|SYhz}C$}B{g z06L#CClj<!12N}Kv>(Cye8BMrEz=<Jh!~3l_203tbpnqmVF_Pw9R=@W!rR%fdLDZI zM@qP9c2sy2XiaZ6C_RAv4=JZDL47~eb==_oA*e0`&0C?avo?g?D}gdjSP~h59ws>4 z<?L2~=WMTRU+_A4$X+t+;Q%jl(_!avc|zBbLGlu~Jcjja!F~gsPml_mcS6j!gT{)H z+LT~@=<Dbq<Cl=}An0C5&>6u&IjJ6?dn-X_vZ9yCDB%LKBQz=^19ayG_}n*8S_0RF zaCd;#IeVq0Al6cW)uHx(LFXcX)3ZM8{7g_=6_i%MV?CMRF+Fg34Jrpb!E>69`QG3& zG5s<?YYoBUak*g`Q6AapDaKwI$sSIibr}UonNDfRmFW<FL)zK~$+>Q&$wpCS$+?Ch z$?joUiQ#U=A-Q43;5$(xeDksGcLblO;S9QCA;SQCmn(SBt0#1S9&}$G%6>&qID-0r zXnQ*#WihzV2f6PQ+Lq1(sSN^;tAW!mXzyVz?0li1WY0{LbwP+W82Ek&P?|xM+2H<0 z2vXY}JnjS9Z(p7nVGKTF2ULF}y8*Pv5!p=CwmeFm0$o3hY(DhtXIS3?I+qD9Z$WK$ z$XbkI@R}>1T+p2pURBu6nTQ1KlLxJ<iGb`~@pjID+!qPC%Q6EpPK@ZY!N=6xU19sK z3!r5%)-xv{V*yCv0@)Xt?d9SM8s`R;2atJM(ETND#d#^2hT!`byx@0wfX3O<VRr+8 z_i}*G8*~QkONE^K=NXO^4@hTZg3>Z<ywwN1-?$<fb$%Dpr-p_dyu5?eACPlUz;lnF zxP!P8+CPJqvEX%G$nHTd6Ot=IXB@!qH3E%M=0Vqj7emelgYP+o^lvI5_Yr$J2SUqq zXdMO5*Pt@p7u0Ud1Fy}5jwOKFG|2ORkTecn?+XfF@VI=EktyhmGte9>`0VV&h`{v7 z2=M*hc`4vCC<4Lf^d}o-7=q^iliV$hL2F);-NQh4xRrp;*aw~Un4B91zC#Oqe<qeS z|H$joJi+T9;cFnk`OF7=w<W>;4s863{JkRZFoTqZk(IDDO-O4iT)|`Tptw!;MD(FS z<tuod5janS=Q%<5jDp4)A?;e&7&^4yiIj)IZGN2ltkK$&rO>qq>E58br;L%-5kSf- zSlclVyq+l&?-~ry8uRkxN|ZS!)cdX=W`fm$$_&t0aIy#Z-Y4Yx2tGdno_Bz)D*?OD z5q7@~B)q_L44%+&A;)~=eJ7#DPC1cAIT=Z=ra37_;5|Q85I;I1$_!Ay9JJrt4Yqd% zYg$L#Ip$oR?i1pQIFCLPe4bU6ze~2EkF#TzpNprFKU#Vu<R(w&3~;@OS${f##ldwd z=<Ipqc~;PQj3J)ozFFyIQK0!&&>2f^6^6c9j+Oq-$?!T4Wo{O(CmT~wFh~!yE<@R4 z4&DO}I?oz(mNjTymoaF~5ophHqPwLbXv`aYeyY1$d9r(0MlxtUCHM{&$T~+**$1x2 z!Dsz?8G_Eh2CZ3(j0h?Ntsev5{}Kl2Z-K|_!!2_`=Z%Bz9E=2=0TynV>j^pw4YZ#i z6SNlse1A-Fl5q;Sp9b!SfYOCgMnPn5jzLs-kWW-Z4%m&M+2DS2X;egVdT4G~9(Y~0 zb4oHOO+{vc&MJVO*W{d%om5#-5Cs}bH1;e`at|}`aW~CL0q>j1E(Y1*<L;M{Y!q4? z1-kb+xB|T9)5qP-I5IrPz{lMSbWcYSNKJ~nU%rpKUvXrFUzHE&tY6R?KhU`dkTzOg zvT;~>RD@@73i!O_<YMUEMa8M%IXOx0fyJ<MBz-_@B;745Q=BV6=O2|N=LHtS+P^*? zejxj^5}hkR?cR)(@CpO)*$YrRKy9+9aMSGM$_h{!2|gnY;+CL-q`a^kANQb~$h@$; zD5J1SAEdE%AJCnG#$hF(`Gn+3(Eh~i(qv=Mn%BU5(A^B)!KQ^tMmeS4urLIl1zM3D znF*;sydY^X6S9{Xw0;z{P7kzJ5p<7A7<g?wXx}kxObjy(dF6oa?E&3`0;&_hWdmq^ zqepfb=nO&7xloY1UqNfIAZI?Ngqvn0=j8+-(v)9t5cmuTQ2aRsM}?=jrFuB#BisgF z(+^(f=4BL=1B&aY;0o})#z{tz#gH*t!hTP#EC8n?(7CLj^c3NolL9(>HNvgD0CZk! zgj)qD9KdxXSl+|85KKE~Bt?MAEVuH42+$d*ZlLpAlfmn5p<^D9`&_~IYE~40_R&Ov z&oPCZZ{!JX|AN-#gT^^wXQSq1gW?R5-W|)ZpShY}2I_-C?Wh8cjVFWl(SgUvQ>s8` z#Cd|!9H_krJ}1kx3U;3mc)l{iDFmb^34G75qot>_MV_~dg;}_vNgmi=Zs4<DlOvo> z3cNE@EFzpeLFdROMS$)}0-XhiET2=Jnda^Yk<WDkhhszp=v>)~WS`9J!U(tW><G6C zb5J;@1*hx#=ai&Ig3YK%0f|Mpm6v)47o_7eBhuLtJk|{LFL)d&(l`*jel8Mp-g-Fb z4i#VUT5O~;Dm^jWBt0_N31$5bN_`2vvnVLSt1`*h3v@>UXs!|7W&@QKp6+3l$+?!0 zbt8!L5+H4~2tNaOIS;zm)F>k-(x}8Aw3igJhrT>L3TigaH7!ti?0rbcooXTAdr)9! zE+d%<YnMXDRzUWm_Q#ONXHdq8!0Q1Z=>*)L1g)C`-2nrdQ-S**-2aD|4O%;bbY2^{ zje|Bm;+PJ)7d$x=bcbvOXid5$Xq+v|Jrv1orzFt%-cex&@b&?c9q=_^@b)h3{3M7Q zAZ~`-;{s~agVx35A%{QMEU+Hv_^JVD3=wi(wvRKo%?7#qjL`kRpz}O~k-|9y($_#T z-x4$~0XoME(wDa^4b2V(oljhq;tV-I542wc!ykw=0$JM#TKgIf3afI^7(oVT9SL}D zf{O0L=LY2SszBq1pgY|`;RKE&Xj>{E40PTjbZrRq{%O$s4QS6C=!{Cx8hudvJ2}q_ z)CK^TeTZ-Zr3uIyY?v6Nj{_bfNQbkbV@$Alb?EuvC~aV5e}Lu>JV9X>;hCNYsvle& zVe5vWXUrq|Ztyt_EaRSFH@PF{F=$#ry3YZ$ju@B!(A^K;(*;ehnEBBYDR05jD9W0| ze5l`1)-w7)?*{^%Z<y*42%1}kmPyd{0if`M_S=xlH|Sl+(6r{54;qW{afY-*k^KZ4 zmjah}9)1Ri5l-cxdK)x{nCjsOS|b43x1SXioB^q8-24o{=Rp~Ixq<GQhO`k(VEG^3 zt_%rxGl(=w2ldH8ccg&Yl-Z#10#Lik+XK>u2r+g7pOXVBe?zn3=RShV*F>W*(-b4i z$|zUpoyDMYSP||k1>OIaob6@+o<EC7DND``@{5cJ%1U%LEdbq{mI~ib4LL{N3+2vr zryOXSh3@}G+7k;pdlh`IQ($^Zgdg}G!{A&uqsTD7tmNFB@)Tz$L-2mQV5c&8TLsjf ztpxAOh21X*F0U}}h6J7Qij=1yXQzSNxRCJ50L`PJtW|=P(<tc#a%W<tV?Jy=D>*l( z#M>Em|Egm;T73g)hZvxkfipdT+7_U+jkbOQY6hrGMbt$Q`;p2@c%1~vSD<z}yiU%9 z<u8yKps`!fJ#Xdd7-m4rTWI?ALT)ob$5Kl{^JI|`zQvx-DUdQ9bPu6BXs$LHG#&vO z_r%O6(7YZT9+U%`r-%Zb5eat_(p+?KdAgTzWC^&OL7M0FswB^?$aCYM{F0Js2&%i% zk;L<`<xBkW0BI*e)}?u-d%HvUAag)-aUdGhcfgj<!F84gXf84gbQXO9IDDNU^R1ve zhQWEe61IO2Vs0p+euJt<zLOR`FM;OUy$X^*XB4{UWP{f4fa(lzpAcHFK+hD0&L=|b z0I7l1D_GLJ8O$7S5Ae8lDYy+AoDN!J2d#HN{e5V^7iA0=TUsQdJoNA~^@NVugYK^Y z^*w{&=RKO_gT_Q*{WzH0KxM2q>}(MagY-xvNEztu9*SJ{gXf16(aSd%18^G_xu1{O zUWcs5MwFwV^LMcJm!V+-nwJBOcY@aCK>E^<awZ+gJs>r(cCKl8N`zlN#<|qFu)XNe zJx8tu87aALA<(;~!FwOUWi{w5HKNKv$epsF{)Q)PObB!qB62zIR$Lwd9xH>DnV#S_ zJt&M3WeR9bDYzd99$)dv3#v>EH^_(Wvj*4kuzlm8wePSqjo|T$#qXf?FS$A3aizrY zKyaME?aRu?S@y!?9b^xD?GrRTqKw0!%)MkrM)*PZ-sTiX1w+R%JP_v<LH2t(!Ou~{ zI2Rs#UY8^2Otg&TJii=J{s5h`92pUmg9s0lJ3S%oZ+GxHZ6%=lUt#?f$eIny(q!1$ zL&z8(<UB1<`ZNkFh4lI1>lWeeg4H?jJOK}5Cs4o240LZ>iZf*Y2zWdkG}jm53Er0r z>L-BKmqxjVLGSVawH=}7fgqn}2Rf?@bS`i(wl#;4y;PvO3xv_?uad~{k{qP`3qIQ* z$~_dho`8<EgVtHY#*;zrfUn^Jk3S)qkq=p;2%TFCcFKaZKR{)RS0!@a1lAAq$#XJH zHcHP=tpt^sAisxICTEs|)~9Aih2%r%U?)phSc1a|I**c+Ygv{IKBpLGIR_fMGJwwc z7J&9-c{*o+(-+d3QkWmXWe}phXzG$=WLOSbYY(}j6+GSsU*i~Q?3DvbPu}1;k8*I? z0v^jm8gqi~uPy+cO$0ALFw!w7zk$<TSrT*~AaXc?+o0~C`CqqUgqs~LJze2<9Azcv zhGnF<hvtLN2@Hjqg}lZdvPKEoz5}&ClMv@WL)NRMxaX9E_sqik^dNVk+iMEmqYfI| zMud||y0^Pw6=<9mWCmzn1=;<c&Y(6~PB};%wB`+@CK+^A4}2UU8`j<|Nj8Fv6@kkr z4^W>NG|mR<8$srfkn$ol&OmaIdrOnT!z!ad_mvuh)}vUKfX`|62rG_?faC$NnUH=6 zJb!}EG6kyvt%*SG(?;dyfZ9|6$sR!kNk*WvJPgaCAZkHpNTG){_?`pMUe9FkeZ5Xe z5y9D|p!*6y^&RrvzM!@95OvVL3Z#Dy-TMpn4``2ZNmPVaUR1DC7HC~|l92)YZgkK- z56B)kuv+N7W$-u$-RB0rLmjLRdEX|)9>|y};yg+;_24;MlN8V$JkCh%e~4ZzX&=0& z1u2YB_Wu+>%4vu@A>oh1osh9z@IDexXGd^e0;`AD8xS*~b8zLU!A@nMJ>$ulD0Ki- zKgzfcXq_>*j>MIAV0~;*+XH$pN**GPAZ<QmInW-9sBlo9Fe)b*be=7|OozA;bhk)i zxM@ZbJd9yyrGvs2=6|Rdv|W$Qub}c8EDq|+!q)r2>mEqC6a_jr39_#UURI&hb<R%c z@r?*uNL~QVRe{$u`w)3=2x{I2mD%8N4rm@W1+7mgP7Th0^(DdU#8TYDvQk`O?J3Y* zNig@Dg6hEnq_Q2J4<K``ImJ=ofuQ;oG9C%4Z=vIZpuPY&d_eOM5l*18J=-TQs36$` zv?j?3)MtmDV}ep&f#+#KWjbgb9AwWQq>Mo>&){~41(hM{HdD}eD0pn$6EtQ3yMrzm zUVkIX6>yydvNx&(Tqhu}7lpJjK=*uu%3-)3@Y)FI8K)3EpmHrg9W*B#8E%@H5?-F3 z7@h)JO9$Dj<qW#F+ytEFA^jInyBBosq;F|dxT%p(wrN0+Ygk%PsA)JXU4!NvqCCQ~ zz~}jb<~2~#F6h3kpd4^qIXfY(`Ezm!HFN~sHwqr>h%^S5htO~U`7x+671qZEmlL3R z13W*0xT7L7JrCXna&d+49RbH5&OQMoKY{(`4jN0e3<39Va+CADgH1~y?TU2JnY&ey z;ZZq0;bEZhQj0)Czd#?*K5rDify{#3#{;j2VQzJHO!qR#0o{|E6BTY)<>`@AmI6Ir z0yfqGDr-DJcTb0#W=DosK=#Cd?n!hH1m8ImmKT=elUo3tXK*X^M9hhS;|J_dkUd6W zr75{Nl}SdX;CU!dkCcKG_w@8YBTLX&X=#eHQwZo@wB+0zgVbQBz$DO}KgQXhGcQ1A zi-GcLeqy*+L5hcOdP=w{lE2Gw+i3{C+YB-09}GD&0h9-lGeKuCo0cXS2d0DiDv6cg z^J2hf$a;e2WsuzJlj-CFss|IpgL0BH9rIAmgMo)-3h2)5j8xD)m6edSs>$w_#fjm5 zrk)<4`*hrjL2DjBXI&;6x#dO$8|HxavVqQc0N)W8YzWJr;4!Aua7#lxb|L%};hUZq zZfXFz*9~-bjVEaBX(=?VR{3Ot=Da{@0FDvmAlU7o_9G-OLCORO8&n1(@}fmLWc;NV z)Q1I){Xp{or2Pc0BU}v95%mmc-CjjOQaE@V1#*r6*e*wXPuO^2Wd=O|`{aV=>vBrK zV<4b&#hi;l<3OPM4Kq^QA?HPc(~(O)k~nnltTSwHG~!Mj$QqHH;;2x+43N9SLFea$ z8KCxY;p;b$&Z5W$uiXHZr!JA<e)&<*`$k~lfEgyB`{8qnqrm+;N7$GrEFN<pbrj6Z zP|)}s)K8#(2CP1Wv{hktK<atW+z}|OA?8EYRhz))k9>?lWj(BI2WcOI$~V&X-XZmA z;9&@JYgo2VF09US%=OAd<eMmGQ&{~5-=BwCFM`4We1135Sx%6&7vb#X25yHV%mb%& zq&+vF{hFl_ZWX1_wJ(Tt4jn53%faMP+fM0-J_oY<LFJ_*+B#s+_zTiHU{D`F6LcpP zWM2sSdNYunptE{G_eDY2uzC;TFVJ~mNw72kN#`he43uub=@(l#L+fqOdB^a&H$1Qu z(pP}5w?R$2&W@nIVM($(q>TVo3)-jU21>VRYk|Ri3zT~qJ%S37oijk<#hxBfB~brD z#sR?YN0bR5w<D)b$UZ$#dI$p5#ic3k7AWNnOl?Z8TP0}yF}Pm^t=qw20BOhNCS`-x zH^S4Hr6+RV3p7_<X$srJ2x=>!_t!yvZMgs8V+EkQ?NH1`^fSQjf!x!Lls~bJ8~DQ0 zHN2e#aSyh=kRZ2##{mK%dlB-Jkj9t5W5(F$riwx5@OoDkqsA*vd%)|cKz88|2k5=N z$oos7b5>~KjR+U?_yv`hkw(QxacTnEn*eHuLiVj>BHF#MxCWJ3Def7d^FOQLYln<X zL3fqrM}p^%Ou&6LP+J0YpI;(qU0|?NW=eQ6xPJl?N6NdEp#4?JMq$NKnUMA=^sJte zBx64V&{?G5aD|*DoEH^tk{$&<yQZQn8GJV$c%CK);Wj$9Bf<TO^nA~7Y~?6;jw1s( zkHg1-K<gHAQw$QFA?r<}a!o;ZX+X-#JVbgVp`3M(3<sAD;5C;>`-?$sS@0fTPo%LL z(4POKoQmWm@YpNrSOBO`hniQhl&2nEIZ>c{<j~7w(3y0gasV{m0b0`xRtKs-p!f8F z%Nj%(8X4gUD%Y|>_m6|hj;Kt~Ipaa#dyQc62`)px`ao+{;cJR>lJh)EQ{0i;$*_H- zP6ZIZ!TblVS3!1w_Y#B3bI`msJg-B{wnSMI<!+J(I?oPtRwt7EMnskQD1BJi*dcO# zgg({=y`u~?mklltpyP?)b520>sxUL4`+$(^0?3#lq+CSw&EVx-n7bvSUy|nw9&1g4 z^dCc$3=r)n$QTQ#4j?#QjlAw2yw(MB)(Xn_GIYEO(pF3{as%B<g>p{?L=2QaoWSFg zVIVcoeTd+48`S@Z2r7s)fULg*kHHy*83cx#W{2j6l_VKQ<pf3q86-o`+wd}isDsZ% zgY#tus1HF>e;>T(2F-5dJP39h%GxUMeoD~!AXQOe;CZQh*csn}Mim*!#=ga%b#mZ7 zXr3=99~LKu8-n-K!pGR*Z3LA0S+sfrOZy5mPYtmH<xEU8`%%``LguMZ^ShTp4yZp? z3F^DR+MS8vrd6Q6k0)eLKmq73-6&AM!`-dQ)7>ivR0bzQ;~~n~B;BhLaqc4|zodkL z*2los-b4C4;J#T_l2HZdJUCFjQ3*OnIw?00)Sm(EtIGhH1=<S@TE7+v9&-pS#?rsc z1Gz87JuD;28FZhvqeYZ^juGhYS<qU|fUxq+RO4dM{R73G9)_U%%(Q)+LF4YB=>hIR z1u2=1W|6RPbM^xDqmw<eOiGdWa$}6qfbw)EwBLazeSr3*p@)A!uoJekO{!8r_qd1q zxg@!}Rl(B&)E-DWgQV%e+#JxjWoc9;XiP07C&d-C7e1&UDL2I_#UrQ^w5A+1uMG7Q zXf8Q761=t*d@g8SR76k+#4g`-?@SA5I~CH0favjaP7F8A2AyMqoYp~pL6-;RLv%4n zIf_(vpv=93+I-+M^gwsjfcCk;(>278U^&njGki@tWDEqf*AP1Y11$qk+y*)e3Uc3L zvM2nUd`Ng9_LE>UgW&mdS>X6EfQ4}~+`TAgZ6Wd=e7!oh@PeI70NVGC2q%;>9em~$ zeElEf9;+g-8!91ttRZWk;CB~*)<jqNXF4T$8KZ`em!SdV4l56&`;tPz>-)?==io(# zL+?<6h(XkX&Y{Q#$AKB-yaO;h+ZS}s7HGT{eBXV3x+i%2%@p-60Ze;fag1E%!NU(6 z-;gutLG4<^SU?`QY=iE@ajS|#x%&w`mjlZyAt@f<Ia2T)B`L0MrBQBPIZ5G`Mp2=l z{Yajm^aWZIQUy^5n_q#Xby&U(H4ZXOLYa>T=aT}Ed{VBLVUn{`L6i|_k7_8m4U0Ha z7itd4XDy@lyTRc=WE}!^D{^?^tV3X9`>6BdsCL8d-@+Id1f5$52^Xw&3Dg|~>k?0A z$GqTh(Ed8F@+6}QSpT6Q3A&E}ye}#@2Xucs=$zYp(Ax0G+_0RaOsC4IaKo~c+^}pP z?Bi{DVG*FU=aD6ly-`k}yKf8<-9h`qEsK+kOu%O|C+7u$@0tazAA#PJUFzuyUT>6> z>h1;_i^&0%l~~5}u-7Rbeg>)G6*<JzDao+#!%?T;oa=#>`JUi?Oz{3GBCTUPYs$kZ z12oqUiI*_&-c4^<y<`Y+GkiS)$b9ge3Zy*-ac3C3%m<a}QJ}UJte!EznwQ|`d3riq z6oSf%6gO!3Q|Vaf16wZuX?H>LUntfx6tsT~T^>{(po>AqCO~e-vbGV_zk!@97+48u zf5Or^#E+0O2|;VyVfPzD@-C>12Icb<_na(9*n!4{VC^Bu8Hlj`eQ4@X%6T+7=z2Zy zzCMJzVeJLb9_KtroFM9Qn0rC<2jDUnc78G>976IzXODsQ9DvF+&^cqKN$!X^gVigb zJ__3YL-=_&;4lD{<KTXTDR{mg68E8?a@x`pI%fd$3+PVQ<f{Di@X8dl@-`&}GPmi3 z(f0Sx#1!*#am8P^<W!WVLF*PsSqPtNhPcZO5+8|>Hd?kXv|j^vJIFs!{W$L#g{%>S z>{W%FuL!S)AngnAxp<(qpJ5bezbdRB>+Y5v<pw%m7rZYVRF{C)6(Qy<l8eFT<K$RY zf!2S4)~rF#eS@0?Uc(K(M+AN!5aRAQ-0OfK=e~o_vn~hEf5Y25kUWKQ79K3_KzCP0 zxd#O%=USG-+JTATrl7GK&oEa*U(lLGkUJxcLHGE9#yX+r=7HAcd4z$^>;U(Py+P+| z!Pl)B!p|v!#1G0mHzbarX$LfS92H(}23~&vO6TCYK*$<nP}%^mL4=5b{Rg_k7<9fp zsJ#Pf4}tb{cxOV-t<Qn&fkB;T2bE9IHV|lCH0Yj0u-`!DgU)h<rcKbfdxlBwVW74V zoQ+6}D1I>WbVuRC(-`P((&XH*(8%y)@cquA9$q<N?rwQdI|`BwA?ubwV*a4J;gR@I zHQ=-5Ky?*(FQ!X=dQwDKRf=0!RTTK#W=Ck=@XJWb_R0xy56ew)1)bAt3bhlfI8;wg z725re5I5$ARYgU38AXK$fy{uaP00b>YZqkz+N%*(mF(`81zKMOD(69N2k+;N@GFlD z_sfC08<yu`?Mu*}RcOD#4=m;lx(gh#CM4SzbRP)po>@qn6?6tWByG6+VXQ;)hRoZ; z*G_=@R}g);#wtK{0@O^<m=I(R9c?@VbXP3eJ-3i@E-^ePG|3RLh7Od5B8}WY^H|wv zW90==@cC+J-4R|6vb!QBJghP`I0GaPEz{xSFgZ!i;5iadT~?5kYnqdsoe>%mS^>Iy z7u>&s?YBw_hu?J>o)R9K?OO>tC*IN^$r!Z$Hnh~s-4HaVYXHg%pm|j<7tmeuUS%on zmf(GCKAAx!;5%-?YabBfHJ~yGG&U6#UJi}#4AUqNFHn1{G|I37ah9q(<Xo4i@N)1z z{^W?ToaDT0P@MvGCur^uRG;U7;=eR9FRa+pJtq%zc2QI?xXuLM9}I6>g2E=mz|zw_ zs4Nn?ztAVws|<8rLz)Np3@gYv94PV#wTQEmkm^71o==kI^1*(Aj3FVd+i@$;3~~pZ z<!WgFDvv<txO%!p8Ab&=86;IYS|oY|l_a^Cq$e4BrU$r#-K_2DY>*C%Bhb7C$lsvz zctHDmqQHCDgTV9Lu(l*<eKIKAQQC5dc}4JCGI-n))NVm)b0OwQLF+WZ_sf-fA=XAf z(iiA{N6`46k!3OHZV{w8vNBNofzDY6kD2F1<s|0?g2#Db^B~A$yI}jlbw+vy!e02? z3cMZ!&0&GYUy<wqrF*1)86y9H(kFOa2W)Nz(i|O9Ji^AYJV0q1ytW)k9me`{BzHi@ zgTeJO@_NBszx>DuFQ*je^m6ZDsQyY{tb4xD{7?|(7E~67IF}oF9u}PL!F~ac`-1Ey zCjEodK`|r@$QxU9c0&pi)UboO2_s#@-RTIvdkD#2NN1Eff!8%e<ysno#?wG)95m+= z6>eCb;*pJ5JC8_npfNvCe+aaevH;YMgr;khH5}kM9$4E5*&U$v7vxS#sCv-&52!4G zh7l<J!{pKKdqs+?Qt*DKFi?6yZihq6KvD-vmq_6T+TQ~!bIYN52c!r4J*2R*i_-aW zaQr~VFY>*N5bMK{-3iNY{@^|7NPAC%L3>9)^JR#6IEZ<u`{Us2hQN1F!sh!y^Xo8m z2tR`Ji#zJs`>1QRVB>|BhAHl0mBDU7ej(uYCBhA$xj?WxAZZ#Yj8W4jsGUvB+AQ+J z8eE@(?q|zQ3{Nfv?W+RK`6Y$Bl|~vt?lVpbcdJaqT;o|18R1pr?VJK{N5JO*!08o~ zF5z>Eu=N_Cb_FO+!S$fEE0D{JVnkaTl*Syv;|!oXpn}}P!0Y0X&KxrH^zh41G7c+_ zat+D>uMH1HoL2#9XF<#WjU`5fBi76KBdzU3T^oa(1`I%Zo4|LI!pmdWd>ib3Y{Z-! zY%U!+f57^HpmstQ@|-cKeFQp(#RoQ)in8V&(jSAQ6ZjgIQh43tVgR3GM0OV}FC<sO z$25@76b6MqsLf%J7>;soFtkkv3n${sW^jHWvn>HyyBw99ljoBM+K&i6Qz|1V*DnV= zALMSBk(^tMQC~sQV|pHZeiyX2BsUOsy`QsVdQx~;MzV2OWmIrF>~7i82*_FOuyF&> z94KTC58MwcPxmr{%_oQEfyS%w+5s<XL1`T{whSpN;AIK4jp>u?myzUNo)0e5E5U8G zVo!IZc4K7@sQn5Je~UtIaQh`cJ;*4`0DK=WybJ-&xj2E&TL7=?O9t<Yb1MSPA9#Y! z*2o2~-zxNUx6Ji)^9v8EL{<x4bLSNVT60+GWE>S<Q4Be&AGE#`WnT<v-Xb6cbcQUr zZ4KHZja1e_$}3R&y9`MUQXC=Xia}#ONycFYQ4wC?ej~Vjgs79?`2*6|1)pJ<kr-|Y zTK9+6&h>-#YY=yhf$o4v$%KtFgT``@^@G<3=OpC@LC$Igm%XN0N$!@VQIIis&>1(N z@drek1ksiRm4yb8;W?#I5uT;UeR_!d5q)%6zX6d(K;=Fx{e+>;^McNr%Bg^_-}lK4 zGf4)WO#)d*4C$jl)kL_1%1w(hpGqv)5OU5-m_e9xsH>YxaHW%bh=FBjP#EY8IM6vd zCS_@vpnL8@%c9(Ks#2W6Y|tJ7&^<Dxp!K7mzQ0eU6SS`m8fy;(%>x<wLC=r@jV*xo z4tToz<)?(37J=6lxj1G<1ea%m&K6Gwt-Cb#&GgUoataJ}bMiNEa|$$YH4hARa|sM7 zaS9Ce8x<Q3gVA&_niodPgV8c^v|bpk8%Ns*qiv+oHsNTSaI{T0+9n)r6OOhCN85y> zZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{| zn{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skL zCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R z2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS z!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTS zaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n z9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhC zN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3 z(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1 zv`skLCLC=Oj<yL$+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0 zZ4-{R2}j$6qiw>`HsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$ z+k~TS!qGP2Xq#}fO*q;n9BmVhwh2eugrjZ3(Kg{|n{c#EINBy0Z4-{R2}j$6qiw>` zHsNTSaI{T0+9n)r6OOhCN85y>ZNkwu;b@z1v`skLCLC=Oj<yL$+k~TSLMpZii_HUr zJ&Qf_{K`@yyt1OgyvmY{12g?IJu}k+ZEck_t+}}LwY0SK6>2qgxb(FYOwAOu^r1o; zX{C9|C7Jno8oBu?r8%iO3aJ$Z`9&qgnhMoiT&ZP=IT}h389k_kf~^9Y9!-Vnn4*}x zn3Bvi4MnKp^3<e)#N_ON{G7_P%$yv!l9&>xf|S&PqSWNXl2l~#G!?3Ats!Q?6&56x zWE3mdDn!S^W%TtGpr#Zg7NzEuDA+2L=B1>jW#*-(C?r)Xq@<=Lmgbbe3_@~Naz<uO zN>OT_Cd>es0ICK4Nm;4MC3+Ae1B&tsQj1C|;UN^Gl#`#BlA02uqyzJLOi4^hYF=q> zYEfcRPO6ncNl|I44$S_TlJwLPD@3Rv1qMi8QEEwPQ69`eIdEUbl+?mZsMUmv5^`E5 zZJd<}cK~*0LE{50+7)aS451pKenIgpSPBy1`ufTW#rdU0$*I1H1qGRT>7hYBwke4v ziB^dP1v#0?iJ&y9pH-ZnXPumpSX7)^Vq030rfXrHlvtc<W}=f?>17lZ;Z>CwZdvM? zm0#uK?3J4sUXkOOm7nPs5?Pv<=bP!{>{XRy999`=6jtS#RgmPFmy#2i=adm?RBYx` zX;J3w0p}O^7<m~chF4@KhMSZng<EE)gjeMF<Q7x~82MI3R(WPd1ea$f8(A7A=lbO& z8~Bwa<pt#=<ppN?=M-lm)Q6cQyIWSKc=)CV1Uu!XgqvoixaX85WoDEl83h?8xrY{b zdXyw5=TwwNcmx$hWu|Aq^}^j&5}0IEVH%a2Q=H_Sot|n~Q5oTGnw;WRVE|W~8<dmm z;gu6<<Yo{R>}cuf9%Y!6>t_H83vZAfV*~RD53l5;oC<>ok06-crOEDY28j^2B}Ih5 z-I1K)Y*FUvZdexO5mp=(Y+4=};RW&=$Pb1|xj{KmxjCg#;eqLqdD-bv?qRu+5n;tC zZU}cJhDYXmhQsw|CA#MnM|pVVBxPo&Bi!tl4+`Jp+^|wl7lZV0Llid#MCKOcL>dQ{ zg3M10H_Zw4@G47o535Y^$j*nG;p~*`nOjj786K1q<yM~Q<Lrd&&*T*Mu+o%p!<^(? zx6CB>P%}@Dpvsi+&|;*pNKSE2$w_g^PmjtAD~&V`Do8Ri$@dOMGsmsMAUQY8ASJ@9 z6e(Pa{gL7#!XwBM$y`fs<nVO0%uLJ;%Sv%J&5jC>DoDx=3rx<nERTxtGDr=Er-foq zxAM%y@StSR%yN`?j_?4bt+0})2(OID+=?9kOecfnys#V}q%e>02+E6!2sFcpdsH_j zr+9efq<Dl?CS^Lo(?KG#Tiq%Q(!vmNnHHRl9HwwRDMn$L$?k4hiH1&PNgg?%yjBc~ zM_+_l@bJJ0JE)p8C=E)_NjVjzpgf2TN4T4m`BXYZ1ciD928R0ic)CUfgct_7g+lbC z6O(VDX29H^o){jO9uVwk=m#|emZm)2{qj@7O^cE%9W6aw9KrcKDcr3***&K;%Gfv4 zKhw)8Fw~8TwRZ{SBLkHr)&AzB)&BZg3L2T|dHF@DDVhpe`m`;mlZh&*ql_#KJe@NN zqKr(-l5@kdy+bTa{ahkVJ#!2Y&7cTBmn0)ogQ##*18`xVX;FxxC)lyj$FQOlocJ;= z%CIFoki1W&MS7S)m~*JBn@ez|lY5APWoS^CS8`G&sE|x4OL2D0PYh2fO)~b%iE_?? zio*&&r-CSFP(lhdMo)l|Mj3`lxg}NLOylg8;^XX95*guCo)~VLmt5&-=9%s06d3A? zTxkU-f&877pXr%rfUQ|)p`fJ?Y2aBB5yd(R@$t~=I=(2iur#wMH9j8P>Vwwhi1r>9 zg&L-yW+k){S*r<VfZLd{n$}#3@CIUuPO4_L5{#>4Yg<xTkeZ(cYN2K3rK+hxT3C9C zxheJ#rbeo!l~O*q`Grsob%{Ny!)#MEpzhXzD$s!_(6lPi3rQ`>NG-BW)zGZfD9Oky z)`7V}qeLfFCttH#skAs%p}3?dGr2^`8YZcb36j>V2DKP9N)$5lic1pnl0gnm)zmD> zD9SHa$V)9(2&pVcbuB8&FVawQPRz^8FHuNN%*jzmR7lQAEG||^ELKQ_xAv4YYvHEn zX_RPImn9Y{q}rC~rKgrS<(KBAWagzi=VYell?0_GmuP6}<l9!)TBqd~X@C@FDrDv< zq-y3zXU5v5MrX!aXQpYC=;fE^r53s5Czs}?=9MVg+NMC65W|aX(Nuuiv7q*FSY~Ru zURqINZmMfeDo88Hv?7S6V%t28B2DXjy^{O_ZQEiHrIW9hlwVSkpNrt<q^6aCcpzFQ zU#}=LJp<0Kt%bJj@(~^`LU=emwZu6;x1h8nH6^&DGAC7|M6;%*x>hIOHdU`6zc>@r zzSGIHjRt#BDJ`=iHATtR);3=gVrq0rEId&1Y)h;)@@(_;AgzDD{FGEpHMKl7HA7ol z+dRFz{FGEs3|T{bR%Bb2pP8ayU|mvFSzTm{;f_4b+T_HN<P42s&Fb3BGz}$qR|1g$ zi)w1}N^^2-ZEcI7?or6pD=00_(8$x&$+QN=RHAK>PMU3^UVd3>QCd!ZxlRreCqgF! zi5F?DuaQ_<l3!DtT$G=aqp7b~l3HA%k*1xYoujFyrlFLWRGgnvT9T@yXlt8aQxmOJ zl$w)Rl3A9jq=S&tfd*2nUS?iOYK4EAMiD$9HSKH-G}YALZiGb*Q~*7FB;}`6YU-eg zBBd+1NoY!t6PBh<CL-R8H8iUo)zo0=QV(Q-UQudpep#wBs0XIusHx*<3kp(%o<u}i zfkl`tB5B)eq{5TAP6?c;2eSg2qBX5RSqmk9fMW-g%FvYRWZHuAqfU`+fQF_uB$X*- zf)c*2Z4rpl$<za-a}W<i>tIV5nR?}!DJ2<dY8p@$!ewATLt;1_q(&ENTqY#jXyPz0 zBNddXzy?B?SWWZ*tI~xyHxrsqHFdyzTQI4cua^uiRzmU%pgysMx&S8QlbTkd19gsV zDkPF1dSDI)dk*Sw9hfz!O5rYnxEA6h<g}0midSgxmgwcDr4^@^1c1BkH8rp(L61g6 zs>sm*m&U%ZZ08G(PNW2oT$Gwv0xQrolu|Owlr*hN^ol`c3?y=Fl?)9GRF!mKf)Iz= zDj69V6jUgI%|oOuJ*?(sXrw|+)TxG*RaQtju_V91%0LH{NURKW3i31aN>Ynl%Tn`7 zimjCL^7B%abjmV|Gm|oNGD|A0lrl0?Qd0AjbijdY1$BlF#8p;GhNd7_>A;E+xbj*} zom9QVf`Zh%6i5~-(bRzlA2_WcOQvdq{gn@@3cw)_j!|o<FW`lgtr8@GLP8-EO?AGl zt!*YKCEBJ!(-PPebbFEWHPqfb+kD+jSf28=t%i6t59Z0dT0{hAXh4eT65GV0bZ~`M zte2CTmtK-#V{1@T11Sn@Z4t832C??lwN`M|(FU<Psi1lTn#LT9iV`dJ3X1Ye@<ELa za4`)ExSUFjR2{f3P-qtCWG1I-7;5UJ<rldoCTAeV!cxJBE>#m&4d+9uVU6lqO}&i7 zV*m0y*r1ResOHxIwJ6loG)kiLLDh7AtY)pIP6@(~DezVWQW>HMYYUa=ftw9JnZ+fV zsd~i)IhiFIN(xHYot3IrQk0pip{b^ZqzziMYNTq`YFek}6sLk48Tq!Lwn|WHx@$#& zhLT2Hje@3<Hi`vV`I&hdN;OKF+DaM<H7c4)I!fu8N}4*Ew#gbLntDa41v!bysT%n@ zAm>=8Yn13@Y9d8l0j<52n396zCrBtl(>2I}+Mr<4PSpgvEFalrr9`_7nrM&%GdVx6 zBr!9uSOc1v^TDA3OU>BA6gBuDwRt{LyAR~pYE+y25_40L+n0E1R=wabcgMWU+(dBG zsVFlq-5%;(kRf`Y0kE*d94jO-M9KrjS*m7riC%GPiDOAgQD#zUNvehtIKe6Dq$0U7 z7ZhZmhH*Y-cF5PPPKCEJ@-=O3ZFLRR)Ifopuc@X6ikEy)iciJVnW|Y0QkJS&Qv*pY zwMbUdwy|9X@(?&5Bl;ikJeR7b25NmM+S;aKZ`TKx7Niz|#=?tIi;FY!^AvJRi%S$z zGeNxyg``vkkZy(iBBX}CjsmD7prj2dbn?>_QbDy4ycDv94%<R%7mZXkwNykArBj`p zpI2N`RGM6pUu0EXmY7qTYE`0xG@h(zs8e2)SpptgRy5E_&d*EBOfQ9uH7gp_g6ak} zH4Ug8p!yY7`uV5XV-*F5ja7+Wd_35R@$t6EX`vD<4J}0AMJBvhHo{sg8^ziiB9+QU zv9KIdqMdJN3-Ym@ZHX>Y=O9T#6PhWom5K$aMQQm(xuEWsni>HGdU^Tf_DC8)d<{)2 zZBSlyNi0c4<cD$%&1zVoUSeB~TyfXxq#`OAs9$yRZNb%vMk=UKG_cOJNwv<@)`s-Q z-~j{bmqBwkmduk1soy{?&=OEn%r+I=th81Fbw2ab5uJ>DH8qWV+XB$wwp&hqVu?n+ zj-i33rVfTeNS%zNFcYG%1k`HPw$0Zm0o$N$n~7QtIYXiq;#3S%A(}w-3aB9i&+ba9 zN}7t046gxEg6u?y2*`SULjwb?R7i^pi<`l20~ubDUx35xlKcWxqd~!CXrKu-8PY&P zsaO3`Jp}GeL7JAJu4Ae_s4oC%;6Ox+qYYxMl*%*nQu52eD%8|8Qf;FP64O&7{K3s6 z9S}Pb%FfKoODzI7d9*>oFePANNV69#4pknjsgsJ-VF4SRir%nAY4syYBY2-xO${-2 z0!cR|wy8S#wuz7wn6HzE*?~>f1oh)nZKEO0dq^ihCm#|O+EBrKJxKUzgF6SYcshF! zYw->uSf@rC#A@3X=^+P8YP2C-3>qXlsnJGoF<9`WMjOM$pz3PfF>8(zP+e4FTM}&$ zt5=dAT2PQ$<eXTXs-dY}qE}p+R9sS|VW_F26p~*6ipi3i8YNJ72F$ikjn0qNMovq4 z(Mn1AMJcI8O4=pbO5i9}iq*6NsnaE_u2!>FLsKWU7SzpmwS|r5fJzeR+^IqdBq72| zmV8?S>wFtfJ_og9t@E|DA%U7{3$oEVQx8$J+ahynY7`B1GWC#)cUwgR9VKv$pp==X z0M7Y(u&TgT(LhrNTD(I>&tR=mP)kiOJGBzrUW4R!_<$6sv8s~^D|!|3)znHfkSn8n zO`S}zm`*0h(;%-`z=lwe%3=6WUWJ;PMulxPWazEfDmu0n()WP$?{z|u0}K>`CAJ2z zngJ;&A&%76E~y1s7;IZzs}q2!)6u#FeN+M7S_6$IX%Ofbg8G0c4I$7BqizX!tWY;I zMM)<_LsL^HLj&4X)Iq5rbg*>&YSBAG$epkf&>%+%Bs4%pQ93@WVM7quf;c!jHC9bc z14Kc_EV2<@70v3D)ST3kR0WW1t)`|9nAY(HkFMy1+eXLgWFrEyM6)^^+#}K`(X7>p zM@S%7i;zB-b%|}bUO|3=hNiV<iH2sajuVP%MAFx+&V&rHmT1DpnOrqWbfT-XQ!A~M z^7E8*!0Fct9^23nSWsffv{lrA*Q3x%*T&WuYXieLR#Qz4t~lB_)>;Y6P#tKnS1&0O zJg!;{>XT(;7Q^|r)wL)kFgy{X=!z}@g*Lj7ZFH=r4!R&DEUPmT^HOqBi>y+0l1nPA z@^$j_l2ffRYc*?Ybzq^83>pOhx9rfv0c>V|9;gV>$=6XdK+=_#hAr?Qjar1?;q?gE zB!u6Qf(N^j=#p4X93!5on$Tp0VkT%57Sz8~KrQLe)j%WCS`%F&IzLtq8dkQpwyE~$ z^5EVtxW{RzX{D{54-dbRqRjO4)FRB#AT}(}Z9=5?R9gd31&cQLppyx0`Q_Ug+UM&U zS{Z2S<k=cp=h@_2=V@zeW=7}f8pa|TjL~_J@oDQ+8+5DSp#g4C7ullAN2kW>6x$ZT z0!Am%wn#6zq(Udnwnz_@kU%5JSd)5=nwmxq*f>p{V(1V@4ye>l!x^xtI^cj!t*x!C z1tsTN4NdC`z0i`(oMPK*Q2CTxQks~9IWJ+Ar<0yq5{%TsDz+*D34xUsTP1?nkY*F4 zsb!U>lUh-dnwMggp_7=B;tZM?u`1AkjunA<DLNU6#Sn>7ozjAo#FA7nFSXbzS0^Pk zEw#uhTPH22v^c{mUZ*rKv#>PPGsP-I2RyQtnquVyvJ>JYr^KS*%&JtY9H<2#4?#zS zi>-=l!D9whIEpXu6cwl}$_JH|nV<?c&sNb;2W8#>mfnkX5^YPOgDZ2B@^kbuOHzvx zOY)0iH8iaiH8O2Aift41@=_~GG&D8!Qu6aavl1HlkRqa34_pXp>L{kx)Z{~x1i1TY z4YE?x8afG)rdgc_azc@9T5VcpUSdv8Wi@ExLNQZKEfF*k09q@g6pO;q(1a_^Ow-7N zc4&)`CS)MBD@qdpoN>UN8@<e8Fs+fQ2^(ci1+^&Ad<hx?gETgf6qbNm6Pngor^Y<< z$`W%jQxp<QN>XzRN)$@+6;e_m-Q3cmRE50!JY8@ICgmVTLX<SY_5X-$Wo01}D71!z zr8-awvCf3fXXV+J=oHze>J;1NgOZM+4rnL>H1VaTrjcjs2CbJ7qYIGsM<Q$lB0aSP zY53A5wK%ybv!EouNFz_D2;7l?)c%ULwu#^*f@pju!cs>fBrSt;6==#UJ+%asULYE6 zZEe$_3gOK>$RKI4Cb$KigXEF`#5jdU9@uuMXL4Xhl-TCzq}mqg<l7eOfPz6M(KZL# z8m+Ab*@{%j!E5shXchqV|Dp4=k@=;NA)L&-<ebu!RE3g^RE1Jdxu=&^tdN$Old6!E znwDRbssL#X>SYxxK|(Il7Fs~+6xl|CW^Exw4y2d^l?Px!NI9sJ22p}s66$2wM(RPz zLY)HJNIh6-sFPwF2_3j~29<|8xwesdD8-;owrwP6iY>KBC*C$v4_p-L<UnkII09Pk z=@i3_LN57qd=M!L5|@ZJ13au?a|qA?S5kscvl41cr`kp<l@ulB6@$iUlysEBQ<JhY zOG1!D{E<1n`Bli=++qYTRtK%eq^+Hg+G9%7fTS)(TU%(`JUTNL>STpXaGBu(D!wC- zee8mzR|y&mg|*`~6b(Vcmhl>zwbq#3Zcs|pNrg0{^C46w+;oLJyn|QZ(Jn(X(4?hr zVo8QxZf2fFs;;4#j*+Q>rVhv}8u_-xsU;zqxvBZ3B^r5P2~ABauoO~~Mzq`1)RHtb zbxUjv4QgsMKyFjC1q~P_=cFbU!HmfVtsVf$Y3h{NCTVEuM1cCOAeL^4re-a2BLZ$P zWHbc(5F11elw!ekE@*}#H7~VDO$}5L6=zm~=A$9wD@r;_CHbYv8K4<nrC6-tj>9kw z@T3B$hYc=I+-$3pQ$h1*R!R_B2{Nyy1YT>Pqywg`lt4pNO0_y3w$-_rDJeOrR!R_B zNe48frvzEIpriw#t&~dg3zTYg{7?t{bRb%+luSXhgAm)G9GE`H#39s9FsD{06rKn` zEp|vU1<kX8oTLMqLMzEHfR=nppjm#<kOU~E@@?IsK|=y*C9#@1a2arq-qs^J6*P7i ztEp2BGR7(&?2XLYTAeT?+aPv<dXgYTIv`7t>_X&ic-;C$L&oPo-I-KdI1i-@grc}4 zzW}5*AFLL{fjKA@>>yBkJP50U5VKY~`L<OWsX9iW0n>cY++3b*ezYNMFc{pS&V)p1 zUTv*Tp>2?kCyI%%-jM=mg$TICoDXi|T0=XTshT=ju#xWc)Dq+x1ZfmQQ%4DDOkD}w zZ_|WSL!jn2v?EslU3UVu0KRwv+*<_qXf<_QAgwnfJsFwBCHX~_puz?u3Yu8)F90oG zDb^^_Q8d)lsnCNCg<#DESo5}CW?p7VW@1ieRVrwR6v2bI7(BTGwhZQA4R}wxOe0mN zL{rCABNf)+1}$&_)h8HzB}noiX`WR{328(hJkJVtMn1&Dka^40VpwX&k^(^mVRT6> zq(6eDExIJu3e&iNqSUm^3M?8R652|-O4=n>CGehMacT)P{4qR?SZoDa0G5yFtU;UK zHnxUX2O11xYibbV42H2fnYPuCbqiKX1_}mBIwgrkpk@?!#27`$v7{t1IRmt`$_kvr z6~G064tTl^;(jY7Nc%#m)*9LGwiz0kI?$n_JV<hchL%pTZJu5#WWAP7qHUfY#B!Z9 zIMX*jB{MBEwFuN20-Fg{ZCeaZ_D~JBiO4*d9@{h>rLxS_a?q9!P(cOO53#`>oCRRI zVa){aDiN$EDS_8G<fJNTT0vJ8=t8>sXy(GkWFWSnu5Q6@Fr<osnWm`|tpxQUsMY~T z1&%5Q*VqPV+yl{NfwmAKD+U$7JSzpK{E`d>s5J_Sc_|7I=R(?$NvY5Uj44W*SS!`k z=#p5ytisaNqDp%Z+ZIHCCm+x!eLxbRse<T|SVT~OH3p~Vq=F^{H9$%<K@F7xNQ^*T z1qmxyZr6Z^i6*pggQg!)?HvLRBycM;wOG;CR?$#R4Qd#~Tj*v%M3po(briuV0&W&O zePgz;QNs`3-YzK0FUw3xRY=SObp)Zg1GGd3G%g3R2a#)R3n5;F*@rF<^;#m_8R!}i zGEk+Ed}|woYA!?+ssv&Qq{)u15Lpg;wFwR%ND75^3DnfUVkw!$p!r%2&}0~R+ys_@ zZEYbL9AY*sCqha*6oYJ|!3IIpLCZ>11w{~VK~zA!0}H#<JdpJ%(C7x61QF5zEtP<d zOQxrmKoSR}|AJA3;_Nnn&4btr^8u_mo`~WoP^knj8nAmEYzdNqNV90*;s$Ckxa|O% zaf*b*6{Hmb5`axDL8iE@kS6G$i>$yR;AtPoSWt;Asv~t$ZL6W0OP~{FP@N@^X*6*2 z2Rw%fu@%y;s)g2k3aL;{wusg~R73}6o~{PSrBJ8qf{oGyEkc4=i&rC9u{KtNw81`u zOh#&AH4jOF4$PSddv$G%bfA;A$WAB+Em+in`W@nOXc+54d=9n>tO}1dh*E8A#z5Q+ zjuD8n(aZw78Y~TS9>~pLMGz;K<QLc=1t_Qp1+}1Uk;FhcKn-QEI;iu(>Og{Eg-}7z zG#99<faERw*%a1@0(I0BKm*4}>DC&wU=F3CwAaW-l<F`U=)j~-i7lkD4{|cpCE#QR z;zQF3Y{48jI3TeMO_yL1Z~)b6T7i;tK4i2a6LWqzA2f2EuLtoRSc@HO1t^$TQxlyD zUlFK-U`8NT7DFp^CD6L!ni?c8BP|jJXH}gdTLbGnH8qVQTSHTbi;8XGDHnOkf*xc- zHYC3Q><CR=ERs&(<>yfOB2Xp;rvNKMQ&_<0S(=+_6>Dh}>%%+<2_;SBYzj|-SgZg| z8bd8GG_BQ1vo)|TwlOiVfEMDA5)QpUQd84Nv(+^;Ow~2j0_XUG{Bn(A9V1O$Jp%)C zBXg}{Z6hN+QwwN`3^4>fsK7}PCHE&*Xuxu)j**EbB={f${Lp3?G!jGd3-mQmJ*-;{ zn?O_mcO`9ev^0u!VaDmEfu_w%@(Z-F1OYq>Agut1Yq5A4W*9Wbqq|lIG^qfsR=}eY z&WXtxn3G<b)!^h4pA3?<t*(VP<iP?M6%crI9x{B5)OCW7ULlzUYgfWeMyao{=|Gz2 zgJ=RZ!crl9E|9^nmK0nP?p8=eis4vT;Q-Q%Wi=7*1+B>a4TD&eo&j0yH;DUEKn*x( zI}cZ*5z<HiDFiuM52_I~0|Dkk3Jqw(2D3w(s#%>19+HD38q|#`YHFz<$D<4#X~0Sn zof3F|8`QJ~^?N}LLZl8ZZ0Z!+j=~$*)+xws4oEsiY8fLu2~|gGXc!_d)`yRnV1^L1 z)F2|%pd-J;1P(mafoD(hEAfW}*iq0h(*O-%U@mS3t*ikpRVq<abI}8h+(2hsYc+KY zY;A2_pxt9NwPFp#Tr^~48q!pU_9QSI0?w?EsWgx?tV?W5ptS{}U9OXAn+g?#BpQg3 zpguEr05H=w8Zx>E8c{4z(t(fV!A1b#BYm&|LX>p?sF4$&n34i9AL?Xi1YwB7y$o`< z9;P%jlnfwA3sWAlVjW+JgXt1TlEp9!w9Wt=63}q~3<cKU_Mn<t9%5_?G%W%4A-o%? z3kmVm6wu;s(2xnJbp+bu18V$`tQVvS)SN2GFTkZ25}D}Mg6krXPLK(tY6a<mRDwmI z_5GQc<xh!bbrB>K@`(rnO&u(XvAeqjR4AdWvO%hS;At!$Go`4hY2<3;!v}1zsL(0W z)XCR__0kekQXm~LaP+}@=O8m6F4Mtb1ax@@7FkWCbtka$6eFurtEvL+M+6nz(24_E zyCdp<4M+s$+lE4tJH%6vJPFG4kPHP$tROyUE;+LpIu8a>1`QdAeuPRLc#9XDXTi+} zMDkApZLKU;LTvklFL+DTD1k)}D3bGRp*y#9ifl8Xoi<RP6;u-Dsi}deBJ8sxU~6*{ zi%URD4<O-L4C&d!1g-OIi=q9;BHLo9;kDoeG$@)eHpmn~x~Ulu<Dg!H1f4E!pMm$3 zLQ)f?JFfxqV2W*qPJyknMi_bkYU-fx%PFeW)F}lk&DYdP(bP${b%tnyjF(_lpAJ(4 zaUQg5o}y`8U|X(Hppy(Tv0S56CtVXhv6yR{0a>723Z`@mz?4pzZ3d{2(k=y&x&<Io zr_$EIy3z(Qqz)-(t+ll)ApxFb3zv(ojMeeCO@cQo5bZeVq)INhcU1-*y@jMLP?7`9 zwtxr70`iNkGIXGA0}v-u2jX$70;nd4@2pC7auf4P6LX;4WGELB^iaWc9Y`x63A!{T zSO<}GA;aDXel2+F+us&6G6x;(P&C9ku;{O*hOs-^UrkM;%+?<qUb(jZ;J}1TwY%C@ zgF2H|;E|IuNS7$LRtGlV3l-M|seyGkp)+4dLb_$TMUd_~q-zB=2CNI#ZH3H`fiyuy zbaQp{Aez9PtJ+!}M@U+Rq!QGIqE3jdBWRu*wntef7&^lb8(s;~19x{J_S-q4FRF%a zPJ>8;)=5IFf@T|dH0VNREORt<T=if<0NpvMYa0yBotipO%fRl&X%|?QM61Ao1hNU- zi3JT~D}mPbCzfO;D<Qhtj^KVYWVazaEyGseM=Rmc0@)1>9bLd`KuwK?D|pQ|)Z4Z& z%fRE4knjUVw+>Vl*u|)dz#a$1E=pSmUL%5wHCWvSqH{B=z(@BKLt9=TvHZMZaQz3D z(*sQ#LmdtsuSBYDQM+!C1Oyv%#9S{AnjVG5JVdE3Bo9ME2U~>z+EEWt3Mwu^v#PlD z<0*YXOZ00&v!0-i2g*+ORPX?dP7!Ehe`cCSG<eav4rIN$juK>$LrF&|2(<AR$4o|1 zG^o+%lV1*71s{vNY&{d}^7dL#I|FAFg4Up=mFVU{>L=|Y$gX7go`2L>hb9g1=>WQU z(5#|e1WiV;<WiDfU}p<fqYd6bt)>P|N034VBnM%^B|t4akT8hWE&`Waa5=EcL6Tqw zq_{7(O+^fW=;Xk8pivxaSLo(q$Sgn9>XQ5dU5Jy4b-|8;6kkwTkiEK)kkHQ2g*c!V zyqW}@kU_~(!xcJ;1D*KQE6pp;$V@B25QkJvcE-?z4pR<ZL9LUjrWUWEsRP=p1?$&> z4994ep-fqVnjuK}05y|At109&5TLW==*LHtXjX&Ik3bU711;t&0WG0{?}jP@t$8d4 z4}XFE4s$=mTh`jz#gHgSgcPn&>F8p}c@0>meiNfJW7X6YD>Xoj=)71RkbTj4v6`CI zMYf6t)=5RFiP^QaMKv`VAm>Hr#e()T)I!&YfvYSf*y0cPx(~#X4y9V16r_a%pgt|A z=b34XEyPm6<qbx;qmyTwX^%rrFTJ4D3bd966bpIaQV9|Ouyvt2#jsim)CLCCzV;e9 zAj;N2rwEb_G_5pppm_u=s0%w$1J)4(=>VlcTLaK?K5+U6>j5Wuu%IsVlnqTC==zyl z&{-9}sVSL>5a%S?Vn}Ex<>%#8DikLdrKaYACoeT}GxKzdQo*N6Waj5tDH!S*rxX-a zXew#yfelP8uBjo$9Nlv8A}?K#c`2!7naQcT1(_A8Il4ulQXXtBl9|?tH8mQ=knzGI zP=j2fSW~A6nO~%-S(_8>6Ke}uNtTmXk{Y3*q+P77R8XO*0A5`N5{uMO(k=pvDd{L7 zuN+gfwe?X`(*PNvZL5UP5T#+DsiX;QYJ(!h9uhT>qClyjLdgmqGq6YjnGZT802Cqi zIpD~!g_aFa4UlMo#t2w>txkchq9G`WfEM~Dri1&tpas65wh%PxK}UMzL#kbn(QsL? zX_}xU0PCgMBAqFa0yPjcP?ngUs;OzEk&kG$l;jtH%t33$Kx~2w!fb;JV6zc&(uxkq zI+!}061YX0npW8IQ$Dn)Ra1kpKw*r;16gg4yrwP(-j+e~BzTx36Lh)&XfRkq2~rCa zQDLV-$HPJU-P1Hu;r%&9@PP#={dTw{Qb`FNe1n{$09T-?lL=Zx4?kc5ApzRuqXF|N zXzLt!<%cFH?hR@+z&RFs6oN}JMd;BGiUzgt$kb6R0PVa0m$a}Z5$F&HXd?)+aRQ43 ziUYyAq4fZC-#=`{a4Bd6HyKh?LscO8-#Qs`R!%a~zC$G^f0szmfiuZ^C5h>vo#ocx zd0D065^xJu(H3)NDOnR9tD4oNpo{=1)RS$Kk!-6it*L=@BQafq5)&x?feZ}5bfBE* z0%;+m?6d+8K|mJCXhQlv>7XrSxga;e!USCD<v>c!GTR(bm6U`ULf}I~Ksz~-6m4zG zKtnm8U`z*9O=X(3xoT=CDGPKc2+Vz8ojU2DkuK;~6%D1LR9K<_jlzKjWk6dlQfoDw zG_5^hi^M?d$SUBWXd3~}5-PSC8lE~8nmVI<7KYBA1;je>M930t$QTUr@^5@Ayxq~q zy}^YwV*ESS8a~ni8SzA%L<3tg2|8#8)CNigr)t>xQ1F^mP<gDAXIla-HxYv$psEXX zjSpnqWMXDsNil3J!T_8qp*xqLog-+<$KN4>7tFPqkS$K&V~fB$o4}o5knNxmwlv5< zTQSiCZO~a!_&{5lZ4RU(qf=~~1MQ!HTaqc@u+W1#8d|~N9zsh64I@LwaUjtL9zrXy zO@W%JQ)-(6wI~_7JO|X>1Fg5zP$~e8QluzB`wIy1{L&KL{4`idX`;>VA%!>A0d8oF z>gAV~_@_Y}1s)Lv$1lW6FyA^=O)VLcG*UHn^5Got>d|DZMx)KNpr<%YJ*k@2P%BEn z3o$_l&Oo>Orh`hdGTRJ|>RO#VO`S>z3tXfl2D;#L)L?N~{YFd(fcB%8<b!r!=^>2M z$+0cbE6B`49x8*679^^vX(ZYzL3eRvKpX2iDNqI|=_MjgB2WOYZGcn`$+n5$X)(w# zJUY3yRT{}UMw-?swz;4M%^9}2(T1^*wq=HGiftk|cO=>RYovm<&_G);psF-QO${`C zl>ugh`Z+d9(T1^VYT)(gwzjrqkXDmMzP4?F4wz#LQeTpvtE8!uuU%}H6m1Mr4(T<6 z)=`2LfzFB0Md$!6ZU-F`QIeky-pCA6mjXIQ4kUqO3(RO+TiZ&A#ra_O*kiL_CtusP zSO=`m7VKP2$SQgy&2abS>uMD17HHbpLVTx@uWMVZi|!$qSx~=#91LY5I}z$+u)S(( zupqDp83{KKq(%p12fC3~xO@mQNyA7B<VYJ^NSK2BjO0kLnP6L?zSY!$%`+l759S_3 z41%?Qod*vrsIN4wAfXFM0-z{G1RdCNnCn4SgVsPHrJD?hCUCmRsHxG&v`LCK03`%a zF%F8}GH~w%bTpT?ZK)1~XA7Mm)zrz<PP0pjHUepYWNEM$Kzczsbdhv`#6WZZO2}yk ze3~708||TXfV~3JY_E}t=>nZhZQC@RO0XMkA(Oe9&@CHqjUbm`)2WN36XJMHE8PCE zhnNmG)m|eL!+ScJ*vv%t2*^EHv|{rJWTyyPG{8d~6e=J&i1)z`LWBj}N3h_92*BMB zas{T9pu7UDZowr9QtC)SE>)l@4{REErWP}uA(twkgomtF7m?wiCZSo3D_Lrw2PQaG zAbbrD5>5Dq9<ZGtF{p3#jnL8xathYK7Q+amA>oI^Y+c(lB(tGPL4HDCgq>rbW19mj z@^!#tA_a&O7C@8CkR$p_pog#3YFdHL0#!5s4LyK%!R3P%DuBGCqyr5L__~EyO`ROu zoSK^GSa3B_4yq=dLDSi=;z1(^Q44{h1hmEuv~CbonCg^6Ds)H*tZC(p!bOTqWJ6$) zXJ=~wF~>Mow-{~`Ocr4nTto*}&LEox_7%iUnYN%}2yPNY24N1Ak5v31n*$Agu%kc* z8O7?R!Ht4SBFusb=#;}(W+0CyfZ9YQu!_8dz>ptO8wqK!4@uMt-0A~2qL3PK>5#B4 z(bOr&+7N=tBN{>)nmW#uI~Tp3hva5-DHMmJwK8>J?gKdra}AJYHB27G{Tk(n#0ZH` zJJ2bNNTSe~u>&74s{twHY@sy}X!{eg39#f`Q-fpxEV;o=0G;~;Zr9j?^g~#-pxrH? z#U@abL41&V)YQN=F6i(Gq;?>rH3M~vt!*l@6i8Q1jYcZgB?Xl_Whh;C$RZ~tooYlI z)2b3W_lxK=S(Vj-_hX=p1|Wu!aW3hAjauoXgQmrE5#v^1fm%%+@NiK+WQHQMwiep5 z#?`UJ)0?D9UlBB>0_`_JYadt_2J5N{l;N@>Ti7fSc>fZ(v!{~=>5HN5InV$Vkonq0 zIvKW^+Qm94kh0M>4LW+Nrj}!8n+Aztcz*?w2(j-o1(gk{wrSv_N+9Ebpe2eKH8m-) z3=Nv4v$0Ks%y_A(Wq`~FB@@uTR#1{fl--yaA3i|?w;*3l4P-$MiUr`Zz5rC#mx737 zf}MNF5?6%+s2f3HpPpI*Et3+HN=r&WgGib>*gJAiZOG*qTn{*ZgV!^qzze5RLe`{U z^*K}<0c*(47Nt4`nmWkY0whoinKgqfBN`nK8#3czu(cbcj9P(mIe1tDlp8@Ebd+HN z@U$zWhn@*3NnisAU>R$~F`w`;08IU$HYXO%$cu$a@(Zj|A%$>$Ep!!r9<;H6I28uG zVWb3f8Y|)i$4t%YOxsLYLs9{Bl5VtNtZimAXh&&gv;m|ESZtfAlW1E7-Y{UDXPXEb zQz)`cj5dtb$wQvi&jTH+s8fV2R0I-&j68tWt$_|m1g%;F2N$#iN!7N^19jeuAhikH zBcSR;N2ONNnoD0xQ6Vc3v^P;9)KfuMq0CUv&`8fvL07@Zz|c(Bz*5)HgiA{yqokz3 zN?#wci?I}RDqSv@mVzhb_>5vJh4Rdl^wbi)tYRGn*f=+s13FR-!hmdm(=7&XWX#OZ z1B<4nrGc*20%?OVi}fM2Zc<KWUJ8;LghYO6UUDinndF?z0&L<bMfq68Q!5H`@>8%H zm6nJ@JU<7kqcSqnGjc#HHn7=WP@0y8T|B2au>`CA#mR{|*d;O&v$0ELR$&*<$;9pz z@N{ZgY7y9FY5B>e;0=mUUQsS+f;hEAH#f5)6B1RBsMj^rH3zH7POVIa1zt{KQff{y zSQxUt3bcJEH4l;;N)nTjKzk3t(vX9jbTc7=2uU=>`iaTO`9&$PGyxYaEy+*L&n*C* zX9v~{lK|C!(DVZnO3p}4&Q8j&C`wGp%tuiSIuWoaKPSB?zZ8-PU|K*YOci7%XG22( zE}WT|lb?=aL`qR&dOF+-aD_$r1qB$Qxv6=jD4KKgON${91JhVgl%EbdM>r`F6813h zqSWHdDhvZ5`2~kChHb^5*hV$BIKK#dR4|IGioqQoRD~spNsu^%IjAH*Kc@torMR>d zobwAR!3`}~Y2gN%!UxUsLlza}gU><+hc@U~>HMN%YXzUo<kY<4)D#6@&k)cZG+c;o zv_e`UXghPI0_ctz&df9g4F%{?$&j-v6>M#76%b{(f|?q1lQrme7_cTTPELJ&1xH^O zJ%ymu^vvRt)FSX*D<J3O=T(Bj9d?Tz7bhpgRE=l_B}h6}Qi#<-xWSr>vsMAT61SQQ zVy;tBetB_fkwSV-eo|siF&8H%)WI4s|7(IYan&MuNd@9A6}{3-1zQC$RZ|1H!;p&$ z)C?_4Edrk%4Uy7AaFrlMu97tu=xRnqE(I-^9ig5I;oyQ*0ipyXg{>r3&;rSj9z`Hs zL8&>ZiJ(XVt=cI9pM(U8F3@TCdBv%EASEbP>g5-u>qBL^z_F^YZ)XQC0<55}<pPO- zbDWiebAC}On4bbYTnfD6BmlAx9DFqnG$Ewr7b$=b#Lmo1R{%{jr>2$WK<kxah4Rdj z4A7N2`MJ6Ic?ymJo_Y{N^OK9MV3kv1K_+yYJ*0xthtzAJ8JhIe5`Bn<)ZBc84oF&n zs)i(ceJ(CYbV0bGrI{%Twh9K;;3$NM1%rIAV5<N=Ck=75mLB*90c$QU6+O_3_dJ)x zl0*et1r0<aO(DN1GaZ~rIHC13e6kLFx<D~RjuVtxQo%Py=zzs_6f&(rDKNiCK|=wQ zwhXKlG{7<nwqU9_S|L**RzXui(H49bxwS&3wl>r-&XS@^(CwX^oZt-O4_XWaot0LA z9Kfego{^fTke8aAT3no1R0%qotvInPRiPv^H<b&d4dNDXnvMrm=n%Vg6qFzmN(!L7 zz{v^8#t<=3hJ~=8llm~%aB`|Zv@2+W#?R8zQ;R$x=VfXrC_&r<H?J0y89}++1Je3P zDornj#;{&;ey)BAsQ50?w=gm`1-Y|U0ep22C}=>o)pBuif-or1AyyWH9a?M6RjZ(> zp@1Asn&4=IM6UwUm8J@LiMgpd3ZPT<brisdqk~E*km+2ISgOb@E&<)yggCNYM*%W} z1wOwWq7{BDjWrh+$U6Z=`4yR|DR5zh#GIV`@?vn_gPxF(f@E7sJ}9CRGxHQm^Kv1_ zd!&HPDb80Y$w(|w$OK(El?OVAz7&*^!8cBUD{j!qoC>+6pi(?16`q$glr1dG%`_oC zC_s0MEu_Q(dk^IM;)29v(6y`}HncITprogypc$=Tpb%@##R-y7umy({n!F)c9+aBX zN^^2Rt4N^gAZBVSDCsIGXoGcvLIzw5D58ZjCxUMajt5Xq0L2G5IYLTDa7oMsNq#Eu z0}PQuP!kekC}ycZk6{BXqRFY$0OuPWg=mH9T7_89q07mMB^szkK&{c&S8xVjGot{h zoAZmn!Ca72nx2`*#R)REpeR~F$x2BfHd+DZbG?#$qy@VQu_&nwG@=4^BD7#oR8-MJ z&T24YU@4f3QzaT4aFCz`8HXkSt$H|9F_S1L=umV+IN;bqO1wCgp|~B|?Shn4pzC)* zH9Djcbp$1A1<1W=C7F=60;nL*FD+3}%1bR*QpirNEYB}W;ewVOkhKT#;A$Wh61UJ` zffbmbL;R4OsG)#qJt%>IOAb);0FMjc2P=Up98m33oC#`dDrDwmq!wj@uX=-c1AN&7 z=z=&DH!Em>4h;mgffW*y^2<^c5_8HED~lBh5{rvdixm=!(u*}={(_$$1RZmMc?#Sk zMe#0f4{_Fl@`%2^f-CqWRY;8pasn)Zk;@%W8J?V2R8*+|x;jW9F|QI_rDi6BQZ(rP z;>^@yNK!3H%}dch)(X1w8B3v7&Be(HZL(N_41wOK0~OK%mDHe&kzY^=F2*32_9=kN zqmq0`#SS@U5s{xW^AwU3i&GWKQx)=3Q&SX5@*&|}lnQCBfenI|$)I(gMO>VmkQ*wj z6hOHQ;`HiTl#&_dl8~ar<ZO762Pq~Y5v!0^l%J~r3VNtCX!$ePAt+*?HlMz}0?aWf z3W;gpCMH4?IGGefjLR$mISzb(v@@bED7I3Fjs>+XLG=qKsMJD~`L+t6v<wo{0L$v@ zD}=)XLLoOX8xma5^sSJQSPW_a6+o|_R!GS#N=+`wsZ_|%1BVmHFi1{IP6byE;0Ael zCOCZ6b8<j!;mkB><UmgBf|v=_kBAm<Se2)$7eUN{W(RO4Day~~LiGl0DK)69fHt(C z<*J4PC}u$ZgZmk-7}Q=+(Mtv0vV=%WI!FyAkT-P{z=z~Q^9rPL0F~~rLrpc{@}Lrj zlM__Bqg1QWAhQd=MJ?DQP{9B#M?g$a+W@`xL(+oOZiAW+Ypf~67lZDD(SQm=jRaRt zh}Iy?Bv|zVN?SUhQUP+S6}TJ+wNF3|7c_$%3kpCL5~u`$dY+R+J0J}mnDNjm1!fD} z-Jps&9^w}TTX2TZgYZD1!wGHxK&8PhLRAA6LMVjT5e7Qa98^qka&m$^3^h-|78+y_ z^++;cQ{d8I9#lJ$feN;en8p*7pio4&5!o-;tc1v8+NpqKHQ2$mAQIGM1SQ*AaLgf9 zL5L{FmIqMMzYe4wuCK2U;_u>b1!~oSDvsjP0?>(T;8p~rxC0*q068KKQY1p_7EmPw zD)PZiE^TmsC?`J;)a?a{7Jv`S(@{v(OV`s;fR9>O6_+Fyfr=-6eT9_#JoOR<h(aX$ zKuyoY5(UsbeCj0%F8;o{Aa|#5adKj~$4UWK-yoH93ib*b;Pj8k>KGaoYHGj@76nZO zD=>qL6H;=c<XKP<adILBuN6w&#Kj42Zh{*<5L3WR9k@$DjZBCHLd*@?__TsI#^6P= zzP^HI8aV00i}hlKq*PF0hbZ_<K;0umC8dy-nU?};vO~2%0uNl~CKiDXuLjo(AS1vP zO=byr(*?{pu*Q6lovFDBum*fdMrtLj-2tvoz@~xX6jZE3>sSS_u1rv07(CXh5DqG% z6;g|fQ}aOQMdnm0loVBh>;-oiz_+z2<mW+3@toAM)ErPn2Qm~<)+c8qX6ETZo6guG z7E;E+%4#es^x`opJ>-HsQ%3<T4=cz(We!*Xo>CNSAu1602vP#*>nj8yHw3`Cph2!s zS`7AQMyf(F=;}0thai<#BB=5P^|U~JKghZ1;HHR<LQ*N{B42O}fdd*|ccKJxDmXEN z3KbP-rKSOKB;3_{pezVZdkWg%?vOUR0!Rh`rAO2rA;?rtuxIojjTvx(!dVNVAelV~ zd^IZAWjUF}C7^hR1w6zO<SYSge}JMjKPLrQ24WaEiKQxl<v^FMBC9A?NKOQI8`Beu zk`mKX6_WFFK*tQGrhrGxKm)JXayynN2X&2L18AJ!76KMUkZDF_2Y~#{32Ljuf>|%A z2sGZM0WKg=!VRR93swyxl@Hcjpms4_Kjdg_lnx4HnJ**(f|6fmUO{Pzf-N*Dfd_LS z6F!LASx3PTWFNQ+1S|IhU8)Ni2SNz?fG?(0uvGvnfi~@}A>Hci)JiA|+VtS!1a&bq z6s#etAqLt&I1q!7W#FSX5KY<O;sK&K8bUz~0FC*8TIQT!TVPH>RT2&AWr6#4&|VhU zxu|N;?y=MWYtaM^;y?^mw6#?LjSr?}=B1{9gA$yKK`s8A{Jc~JNOK>Y>k!@WfSkn4 zJm@6>kQ!V8))5D_55T+Zp^gJrotecbIw0`|Q=q9}54Mt%6D_VG?MxKKh?b)js9ypa z!qV4QZ~@nS&;$Zm^i>RMkrgFY7V9XamL%&z`c%k%!C@ODP&6S06{ws64ZSL)mZcU| zmSliRCh%BtQl&x>=;DghJW!LIlM^w<3~~`Cij!e&98gmO)NTW*hKyg;!c#p&16qQI zWEhkL4=S2;piu&jD{zv9k097Wr4R)!w2Xt*ldziF8q`Bf%YzLLpx6QHmO$zUaJDM; zO)bgDPjLoaer^jJ&4;N259dPyT?ynzkPdJIm#BOQ_5f0|4B8Y0hd;Pukcn(L$W5TM zf>gO@7K4r)1zkK*2`l6>^Ye6&x}FLd;33ZpPz4UT=UpKe>>sE}5ZjS50jRT;nwSDA zok4{!WULuF*a3-eu*)Dr8jyXnp!|dqARse9cN!`|qKOmM&Ih-n6_BzVD9BKg54c4O z=|N#M?7_hWaXr{1ux?0$9%dsr!$Ag^Kqi5zZ0HCbELB7DF#+eII~Zm>)J9l&otBtW zoC*~K75AX@4+$NZ26zC#Oa%4ti;D7#G!&GQ6Z1fqX@c(7g~mxSsMiY{I#kdGMG?qI zC53{b%={wI;0Jtg2R!Ozt)PUY3VH<zc*H>g$y5b(kdZJSYbz+J!$+dQl@!Pdh^tY% zp)fy0!v>?kL-92=Fs@#5Mq-g;iH3rKf+l2MD;^QySp1upuTWf?oB{PKrmMgWcaT#- z86C-A&>9V%1~FZalqSG+1tg&(xf|BSf_Vv4KBj|vlaMe5dmq^pP{jaK3`*YUa;TLC zC<I|12B%B~Tc|G~JT*0BE_A3LUhqRx6Idy@EfHLjn4GPFq9r}GL<3aGSV7#&$%*73 zXaa;9qkx(yK~Ad$SNf3R7kNGqRKi2XGT~$Cpy8O*Vo*v;N`(yhrGU~TDA|E*28R=< ze1o<M;K>`7x<HeFkQO3zxC9pRpiSnWVQ82_#8@=QI8X%&_68&ufwC@i7zLvc0F|)t zm;qUbE4PDu4t6hGHK+guiE_e3paVDX!AVdJQ4I?%c&h@En)Kp9fdKa~C&Cc01Zc1e zY&K~41-(jyjd_Fog(#AAz$0alY8mbX9Z0WD6B=dUnI1?Z8WewAuvCWDnFr1NfTwz( zgUiTMJ^EU(42u}c*3t)gq}G~CMGv9_OS4wNRv|hT$xuYSs$i>7%?0g3gE|6M3QCYT zSJHtABlYyH6qG>XDXD3oqi>*lf2|ahY*I4I?36&`n$R?11u~Tre2jc*u@z{T4b)tR ztglJ2f~0GZa!|4b)y7GQ$=RT$8Dv=93Ov&R>U?u?aiWYpgZjsL$)MW{kU|+WH31vd z=j4R(Y!#rhcp#~o8gN{|4()-u9F#^t@ralxf(+1LH3BrU0+B9-Ot?bA2{ikvtqn@> zAd~dK6N;dKgmk=Yp&c)<97F?1Qb8Ny9FR%i76Movb`c(^;)A3?uy6)wd>pj80!<vg zAO=kw8tPC#`sC+lmllAc8Po}ZW(1fAK}93T4p0gLl?kxK4V8x^V6>(eL=c*$L7MgA z^Yb(mN{UKTAyTkCl#p=}P$~zV9D*Ek;6Q@e33C!?G8wwt6I=s9-GERA34G|8l92F$ zHbFtz3B*Kp6zuR~aNsCF4TBsqq+kzea)Tx+AX~7(t?Eq3C^bwYC_G?^3HA6V1!$8U zNk4eV19VF-=!$KuCcp$iX%6ZdWamQ8vVb@i9H=n$;3-U4x(&-rEe9EZMFr%zpm6Y2 z!4QMN<u6zzG*g01hejr}L<e_FKpsU_1{#%ugmpY<MK5?B5qe{Vh9+1NW*(#+2G$GB zrJ!hm%_xDzp-T0j2Yf<0W}vPWXu)ti{4NX^Xwjen$rqTqKp70-p?K)(08q;d>^>zO zaFGE`fCzVk%P!C=2T+X*G6U==L@8ejDufWqq25GFtB`sI+On<&4YQ(Yf!hF@@X5>1 zF94eeE5}sy;6k7(2U!g?A!FDDsuaOPM3C`rMDY+0)d31)P^S;lvIctyTb2h^POzd9 zbh9qJdkgN2gKW@?hb(4*EZT<1>p;5Ipr8U*o{$lm@Ko?HOhHjTXq_CW&j`xW;NhRr zJW#O(Zle~12JejY3?O<yeJn^u2Pw$ROD|R^&d4v#Nl{1#tqCZ~FHO&Y#5Sn>0L?>! zy#mb}phO8evjdtSzy^UzPDrr|Qq2inwE>P@h(VA77T!lhl-Ljn4T!e<v^2t|I+m1x z+VzP=nTfivv<q&mLOkc3lbV>PP+9=$Q0J9^dTuG;*-OxrB_!{_JdMW_pb;r>YJo;9 za_WG%7$b2&6C!d*!AybV86+K`m_!USfMOk#v>?ig6>LG$plAjO79<vx6vH^lrA3f@ z029arr$KQ03uBfT)M*Cw8NiFuK(#q!2m|WQM8xO<s2vLGgl2;7%F0X30nhA#Vi~Fw z`;ZB!lz_Py9G&1Y0PGadDwq5;kT1a11?+lwaD4$XS6^QNvT8>mFSWQNH3g&+G>8J8 zc~DBr&(}*zEK*XiwNt28NXyT+Qm9r)N-VNch>wp~s8s+r{a`jj)|-H)??B-M2|AQ@ zB%qMu1dV{%Du9Dh54^w|l2IX@RERLNj}0kQI62`VtzZjl*TKe;K&@d&8bB_pA;}!- zESOSoxNt(p?x0JrG8Jr~E`eI9t6+$-;tI*~XoyP4`Yg~Y4Y;$=WMIoRKy72V8qnA{ zEWx0v2L}qI(Tfr`-~+}WlHiEMnx+iF@d&aB))#`?2=g~6=^^@V_TUOY!Ab#L9mFPZ zd?ErIZU&^(1FL~|r$Dxn;xce<M2i$0j>Do9Y&SHR&<#O$9eAjX3qENHzeNh(5C+xy zh)xB_CRovcsAr3j%Lk}!(2xd|1K=TH_%c3Fg3io?rA(+YNa=<!5j+m715*SGS8$pH z=T&I-#_k+s*I?99;3xpO0Th->&?*i-DgiQ358(`O9hO=QpKu3-D%gIoI;c-!u7gh2 zB8oM*El5Q@xCevoTSPkrKE4WSd=d(FsOylu3)K&{1r+pP|9PiY!aH`wI-sOnl$uup zZOIpd-3u9Qhp7hDxX31fQaG{}=qM!Y;xnj8kUl}Q0^AhP8aZe?9Bdl06u5Ln4n>$@ zD2i%oKxHl`r($wx5sCwFNuZB9fR<%v=9NN*;J`5ls!hUEK{LJzDfyrgYmg&A)d-|< zrH}~jb3+F;Azg2Uq}1d@*bFpE>qZmYLIJr^Umr9I0;-BYHy<nHWagzRWELx=L#%*a z`I`?}g#sTN2U!c!0`(oNKLMSHg&JD|TF;Z3qKCXl2E0l&Q6U+$=m<7B3Z25r%+G_* zu9ia@Scxeq;6@c_N);SA;PwP4Ad*sZ^2_x=7C{?Gpc-6713ig=PJ@9pb)jh&rHu!5 zKQtYHk{IYD81K|dXyE~}Dm)cB2M-EJ&|&W2)T^PXkdayhT4)Ln;=~frj3sDpITLa| zD(JjIRA+-yYdYu(&P31>RIuM5BkZ6tX{b_gc$FvSfiGMJ*$E10a599AT4m;eCqhBK z*Vk7-WO@xvNP`~~e;`euV1sA`2X!hWfu|NjODBc$jLhT=h4Mt`3OML;E|8y*%>=s# zv_uYE+d_(9#9F43e1&+Z!!<NfA_R1I1SF`y8uj4Hz<C@#FkuBxJm9_*sA?>>g18iv z{Xw2Y44i;{15uZll41q!WrI}I!baI@VWT7%T`63J4Ja4s#h2u#r{_SfFNZdUA*~Hq zkV5;3@U}E)AuPObgmtzQ6~XR<rXAQ^25c2CC{~hElk;;yc^9S^6k(v1-1(46s7z3w z0dy;Qa!F<xXeBqe(1)4|2{(v)QBpBj2tF(VbB$7IrY?9<zAjh_+**hCG%@wVhfgr| zgQcMQVF3&|FCHmSA&oes>J6zjD%Mb_R)BdKI^3lI?oV-oyN^&Q@=ODbv>+P>OJ_)? zK@&XkVtvru8gv*CGR*?&0Ya+>aK!?xBf*0NkQqn~NCZF&94knwhVsB^5}FU7GEf6x z)dOgpq8ilfs)e@>pa}&w4h&lR23pV$&NRW`t%(|tjF1W{nLzucARQ4{(*s;jLh2Xj zegn)_FVs!Y>IJpU3oZS?zD_KGITTtLqEw2h(CrGbAYZ6J8}g8rJj|P*vKo>GIKho+ zP^||FJkY9r$R09y=?p2A;VZUbCP0G{A`8mUpzr}TK2chtuqqv5Hq;AxdHE&qh97Le zO+gc86sYwBYL|cv1I06OUbThQCJ^nQ6a${afJX|XivVuhL0b#pO>NLfQd5H^JD7FQ z76KwL;o*g3HY_xt5r?S<;u=s&0=JUEZ3A!#02()dTL}$J=%6EPn}(HwQhaG1xMBvU zveaT|Y%779)1dH%jaI>&k)2uz%Qm3Zni%O5SsmmkS`7vLm|$&v(5{)98inXs9dIcP zG8+;F;35sCEw!SgC=r&P3ySh_nh#cp-2#}=h*l>!IJ5FI^E4Ec6d(l`xSYZ6cjSTs zJg@?F4=8(qQVTeLWP-;7V5_P?!mwC{h9D%r;2&iIdtF5@GY`BENdq!k0v+T<3{8MW zp>+`*KAd(Tn(r#mc0ME<fc*e96)g{dQVmkMi`*nc2?fY7FnI6_G)90FNhk$8O05Y` zaiAmvT9RH;lnC0ems6Yyjv+`4B&MW*Qyz`116Ky190{=v$$^9{)KNf`U?3J~8yIv< z1<VC)ZcNJ02Mu(AI$ic)<)EdNB}Iv#ED1_2;9(B%1~RBlXqbTe4Db<|ni^P>2P_Vn zK2$&*NCr<radL8k6TOuJ#8`Xqh>Zf&N^pe(Z7jj$VYXR;RYFui#Sn&oiwdYH$S`PB zgIZCX;5JoaN(zVr8r$WBXH$qOJ*4o2Hj`krExhzq(1eC0C{U163%v6UI=&iK<!LB@ zR?>pD*1~#{&Y)@z-s#g(fLuXb1S^9;p$xh?Cq1zw6`Jut_JD+8GoSG63K^R815M2r z6kyn)kd~8}uA@+#QJR*P1L{_#Lza2N3P5NKVs)PaD2pl~r3TPwA}8FbkR5)hc_kpH z!RAa9Y_a<ltOmO+wvdTIkP2`qudlD*mk&=nuyG<JKjfu=dLSqb6PR}t;jV*LI&eNN z*CHnrkP|r3!W|mU(3UZzO@Lfe!_t_o0;Wc!sYp;}g^uFD#)x4i!}y?{1Y|oPXzmiM z0URE%(ir9y<iZzR2*Q&Ov_$8Gr8`)%0&VN71h1|KC3#TK2eN1Y()b527Dz5FF3Hc$ ztb*+AfVNaqAO>XSrNi{;!rQl?wcVi0l8cHGK`VrdOQ1`RpveV`25?mm(gs=ipaAM6 zLM#Gx6*BWuGRrbkN)vM+1Cw9_z%_{?_GF``23Eq!sR3VC0$mMIjF@)<4I+UHOW1$} zXp<)>$`v$0D+|G8w1xtr4*_vcY6__A1FhBor+Cn0W=UyL9yob`TO%+L#O82l<baDh zcoAq1cUd$fBvXqNVim05Z1BtkCns!$1uScW*S0{iDY!}jH7G!S1ubd>jVORRz3HIY z=;C~64^;s&9|H=<^86z3oI0f03eDay*MT!Mq$>{cA;fo3NpK?31Dk6Lb0L%qvYZo^ z@gZV0H83?u`f6$vRKU`Zsd4DqBv7dZKD{5bCm1~63+8Dk=*MY9$CO*?#%gKC6l-bd zX=$qHLp==A15VqZ*&ona9ME+F(F%qNu?pJoKt-E&2S*P`BYgLxtpeDlXaytCDpQaz zzzGU24=p3mv%DT?W*ct14tzHyJfDHR40S1TSpX{p(G5TjVVE{pOBB*IjL%O?!&-I2 zodM0;2tKIhM(}EC6qJ+{G~x3Tp!T31q-_XF?r1>;S{e>g0a>GkMFA)*p(Pt+Dhpwg zCWZjGBMC~JIjM<|efq_q^-rMDvqbO(#JQ=t`9+lqIjM=+#R?kAh6V<vpk2O@p(<GM z2kGg6-2xMWHuNC1GHM$StPb2`hp&-<R0wb}LYl$D1!$V#Vz@O!T3jiqIf<3X5eAK7 z9Z)Th2t7OkPdN-<P)U^%gkS*zY7m2R2CRgERz09thPGXbQ%gcJb5rw6OEge2Hq1jc zHK0X;@YW4Hppe4=nqZ(Q6&yowbx<4i-~w1`JFpIL_YP_jv|9%{F(Wk<G=qp@8>lFO z+6Apy5yO_?RX`vGdeE*j<gjc|s}0l;)j=xq!7hUIo;X37k&}}XY++7nVp%F73sDA` zK-E1tcA^yp@Dz+<IV=-^M`yqx1y=_PTetuTVGGuinTKK($PZKqSg_Hk0Sgw&FD)Tt z9ht!jHXd#xTChSFk04tOsvUJ8-BTR}&?-czuR&R*peVmU2YfCDD3^dlKnrp~E7oAa z4ed2VgIAP8D;TgLwh*)66Q|&^6I8tEftQUyJH(KR04%2matORb1#UxtV;Ist18aip zxr3}Y1*-<HBgLUg8{#BQ)UExnVmc%v73?q2_9KYr6><|ntIu;&!2|B#P1(>K2<coD z=OeF2FG?*=EddYeL)QHxCRWNJ#&L0SLcImvNdXHlsFC2MO)$5Bw<o~%LP2zc#s{Gr z!6AFZOF#=pKpT(|#)EXgTN5A-$S>e<0!0?Mk_U-GqZ2w@2#QhA%o(x_q?M!yK2M<l zBnfsncvKG3ID+^Dwr3VJV_%e+4&#C>12xV-tI$BH4Ya@v93@b%!p;$a#yBjEfwV!3 zT}9BiVP-L6=P*2xf%dq7S}ZUDSQ(FOJ~${rYjPp3My$vMCqq#C71aI(FDF)jG=RYh z^)icHAZs}TiogP?DbU%YTIil7$ReX^(9)f9D+MLcp<|wTN;(P|nJKAIzJF<nl0q$V zUj)*u2UQr5b)w)C)F4p+U!)4(4;QVV6c1V{4$%bO3JvSE!23Y(5o8_kG#)tbL7Hsf z7zSm7{5055AUM~+Tiy_5u#P=w9i#%}_%<uJdT`Gl+`$56?u^7@$bcqz01PAoQ4ei@ zDnc_mBm+Vn4bFlv2~bEwdm7-}hwiex(%hufA|;3cpi`f~YiS{21U3lfSUrfvpdo13 zid(QMaF&7F2KNTMl))J$Fq^T2NlGdBLaaP&p@Ikz1zQD0(8dDS+=7xy*tRK{OThh9 zC<k=*4fs?v(DIPPoE%V$ft?L@8%z<n?F2~|@aZu<upoSN1;T}tkl-i+8-U~@H8s#S z3~;y<gI4#eKtrt<N=HMZ8ytP`y=c&E84X>SuMi8j5NZ`<ry$reNGyQ$gL+NSC|6U1 z4NMTQ0ZBW;7Cl&a!&A0iY9eUEC~^V^l@7?A3aF#?3QJQ<Q<3)mD}X1mp^=K{)*^Wh z95t{ZduVjP!kv>7Ua)`|@H_`DQXruLE!j9h_CUrx5X;y>XMWUzlp&oy1+L*BRTkC* z!vgY)GeK*(2k((#NJolc9N7gsJW?OyXfc?-z{hyuKU@qN0>!XIRIE^xnv)2c1O;`L zzz1W%rHDC44B;ry!DcDAj}SvB<l;g~L!i_HD(k@KC#M91?^jJqECS!2s>8*Zn^>V> ztKgehlA)KISfRtknV1AxfB+UqOe)sl;w;L@FUqXS&nrpHQLt6e2c7U)1G#vhrU-QE zq&`SZS!z*9W->$t=telG0>}y5U=@(NPeCR`$7sjs#>S**YsBb9$E3t+Yuc;YgVn&i z08$kfQ?3mWOf3SL1`<<M0g1#TDO1r)%Y)xpWzEF}t6&t;Q%fM%9~WyVK&&p-0qs#L z$<R^A0N?!s$tKWBI+}}<vmmjkIMppDA9VH-R0}k#C}=5YC=?Yy9HLi}S`3<^1K+$> z3{znbF<e1k!O*}!!3wm87c^{*)lAS3hbCS#Au8-)E=4kwi!;`ms}{+lU>lr^i{aTD zd?F2~bp`FBLVXBU=b2XmYK<i0P_Cn32wL(9>IkA*lAc=Pl9`*DSDcxj2ek<je4vz7 zlvoaGsO6;Qf&;@Ex}(1+v0N`NKP5G!vLF>)b6Y~Rz?S`i8(-k#xFHKCK*O&k8PJ93 zkSKymKsZntNX&p1b%IXERWQ&|0HsJP1q1NPPEd_s3v~dfK7%Zq*H8et5!6@$Sqcph z5EHaNrX&Mu4cIMETOd|KB_JHA44VC*q8o7$tcE7cIY{E5D`7P>F`Neqp8`nZ4BAw~ z9X<x2w8RN<hm`_^hvpElaf#`vkuVp)1R{`aM)Et@yHFqImzJbLiUf!+VK#w%0hWZ^ zy9<$p*$j~d=L66RY|#ED&;f)<*|VC96LKgkti(a;nt=)?c+HiZk&0F}foCQVt3V;D zVQB|jVFs>LK?g-87Ace)>L`>OfdefivkX*gX+ZWe!S`Y+f$zz)RZqz*E&z@5B<18M zXIsOZZk3n>zM(YL8WKvT1_c$?&_DsRK|6QSa`MZqGBQ(AQuD0U?O>Zc!CR&jpr%8$ z7#e`|LySr+Ey=f5x3kd)?W}^3O3+C&(4}2PE@1bjWR~fH&uJ)1&C`ILcE<%izfcKu zJ0oZu5OVFHh62ck;C4W{A$VhDUMk2C&=6j6Y6-ZU2L%n-L{Pq0g1KEuM?nb^JK+8_ z=ok|toCd&VUqE))+A5SAK@%%yIY>`RW*Io|L+?L_TMBO2foz8K_CZYy#N4)q0=8%b z9gYAx0UBfjWGsp^J+%Z<Z+YgW<s+pa*ybKc+5i<rFt0^`OvwbTMAFMFhLi!I#y05u zx6C|H-zYyBJov6)4;oU1w9TQCphOKiJ{Vj^!oy0p0v1UyD<Y|GMJ3D%P$Rf3wFs2H zKpuhF7y≪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�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�LAPsV=A~;G zLB}f~Z9%LWLDeOAunAP`>ZO3%rW$35IeIDJ3)mFw71RyXLC180ZwCcSfRizZl?$qq zz>0HmDb58e23f3tayMFWY5^z*!`GWc$HLNt9%4ick`2@Hixf0K2_n<h0A7he2Kqqd zInr<f=+JPqx&)N+L3Tll5NPuY<Q_fnX+~f<@XkV5FCE-@gh-Yp=0rpC3uySN1XKq> zha1rIE&M7Lkaxiu7<3C^2z2JpN<rPG1SDXmt_=!q&^RmttAlTA!y=&o)~1l0p98wi z#8$~%33kgB$o-IxtuA=#Maj-aza#^P>G~x_P#I9MjAR>#%L#HB%vjLcXeB%7oFtNo zND5(YF~#N<NHvS%7$mKryK`-oK*w+@*{MNhH__|>UEPD^RuC5wYM_=4Xbu)7KtUJd z*nz^%rX&S9kU(LP0wRh)1XvY#lq@YjzXZhqkO0Aufq57a_~4;73{Qd_i{y4txFT~w z{0wAQ!onQ9`hbvWAj2W91+PBkginf;KvNj#$OIeE1#93-uxynO2}B9Shgg+>&Zj6w zRtIt{=sXCR8%sbO-Q@hdl+?W9)D#q@2)BTu3KqWL)C`V$kXhh3u+ax!WrXA$PJ~{N z=P>nxybZD%NsqdXeoAH;iU4*$K}uj0r>fh4Jwg><!D9e9St9uwE>C@*fkqW*7hQ0N z)8Avz`O)DRXOLm1%+#SAZ?LQf8W%)g`T<Kdpiy?{jE^-J7Z<0#mV%38h--kSv$t!I zf}g*Fv%jC4kEe487pE4e4Qh)96twiYFxIT;<>fo)=cVOjCWHHrph?)w{5(kC7|kJ| zWw1Hm@eF9A8Z@X1SqX>km@wC%U{8NPE=~oUE<s;Brw6@Z4^-M3>Y3@8sDr`+)sHTY zA&$C^0iM`B2=$*vN`7)FXdSX9Xm1;2olbITF=(kUbZH)lnW&pskf{K^;{e1(mjPF5 z>Y%1#qHaM^epzNpDoVj03swLdRnUNLlL9rQ!0SN4V;-R3fwZzf4JEKR$SSn;%8*tQ zBt$_C99+Aw_4O5!^K%RG^HTFlAnsNuN-ZqSEJ`g_C@lt^wUSy<kdv95S&~x;TI*h} z06AO<QCmS)Bto|Yf*hx#pblE41=+Gt%f$(DtcnKQQ{cW24(%Ga!$vnVFDElERVfyH zcOEBrt!XW2mWE4TOOZ=KOCb|-fn%AWo`If`jzUIBNr9EVetKq!US__2Vo^?2sv}4l zTI$8d1t|*v?UhI?%~8k-EKMz{1Yh$Qm0D1e58X!q>e4ABgLVxh<yWK@gXN17Q!?|R z$KDq!B$pPK<mYBqfmhpcDQJOA)kxM<FfuSSR&Yto%`8#~F3l-P%*!u>yEd&TKd&S; zHAOEuKNqCl*E2-HCo>sbg>!)uA|f1BKr>BT3ZUa+oD-8XQd1Pl5{rttAoHj3(9p0| zP=~P8b+|yySE#s0Y7Xd5S6c-rAGB0eHv=pPQwZ}LDC5A`Fgb`vZ57nP445cb6?hy* z9m<5sl;%MNK!%m(ftJX|Lq(v@g02Sy^<>mxY;~PPh?`SVOHzw+GxI=OwQLpCk+?7m zKm&3pYBC{~ASs1f1lg|yb_aO>Da-^=R~sY>qG4j-Yzz_vGhm`6pf!siQ7|JZ6|^5V zQvu9L%}deCgsDpe_si5_x2VB{Ase7T`XMZ5P#YU23EEc+-auljpbp)<2$RZ5OiBf< z!%_z`V4|Q+koll($LbIkOguL~DKiH&fvTTbkeE`FS&)&Rms*oqke^bMn3qzNpP5pV zl#`g8os?QsR9RD=nU|7ZUaSC7m0yrrl&FxKnU`5poSBoYp9z^b&VwABlV79<nl*Av zhipfNBtS?Rpa9yM$)%tGD&V7`DGM}?1kd`Ab<xG3QS72rXz~Ro;PAwp?9?J~Y=a8B zjKsVYu<O;qi&vsSkz%WaNH$6N6`&NW6srSS-GZzDoFpN#(7;dtU3Hxd+PtU&8i4?1 z0|kY0u#KSMNLbwj*}egC6-0%C0z?FI=_K3_$O<5NtvEF&4Y_0ndjnzysDuVdgU(%s zcnW+xIYbgd7MCP~-3F#XS5InyG@vYrfF4bPxK<sc6RaLIJ`d6l*9SSz9%dEt01e_K z7f{g&GC@HBw2d9aLf!yXo(d}FOLI~b!0DhQRiQkyBtxM%KQ~n&H?<@qKLzYRkk9nv zG{CvI2AaQXAZxH|P;z4pQXZ^<X6+it`raByW~@m`EiNg_uhdk5B{gU|0f!aXHgF>G z0}UYLWLCl4p<b+zmzbLhRRGlkYE3}4tDp~wL)C#!fXvKG!CQ7il|s@8cu^8)S1u@| z6civ;DkMqaNgAMJ42nps2?G>(aQA{sG;jcb*A75z0g)w{DV5;FprfFkndSlsq*U-d z${=YF#*#9iu?E!$nkh!?0YapQS}v#`!6ECG2|8#M9J%Vn;GNN+LI|z`<Xn_{iPJKR zQo)e}asvc|gh1;@AUwoLJ)pz}HVBl)P-{d51qG=4K^B1WIDA7@v4X9w0(?UiXu%gW zxInoNY#i9#kQzTT4YWKBw4Vob%z{FBYEh~}L1J-nDkP=CGHD6u97&V`EaVIYPROY# z&Y;rRN&&TYg7^uVcHv53d`QItQG=55VP>HSBC7_M<R1BDsYQ^b>`;#>DAXdNOa~EB z#i^i;C*aZ^G{&8omtL#~$>|6~GeD++Ed~`0sSrQwA&J)1D5!(E@WN3+0etQZh9)FY zkR~t}NfYF1Tnt^v!XRxBK9W9!rxk1!6cyn<L5L%KgAl{82VDwe7tCMqaMagV2u>|2 zEr2v^LBkRXiAAZ9Rs|@+KpX{I1r2pj)dF`(W?nM*=vK#~)I`vI#Na)<8tST``Fqf2 zGX>Bx3y^kj8VrWT3V5v~)M`+IMnsn_G(CZ;t(qDI6bW#31xnQr0~Hh?F$!uQpx1qH zecB4@O0nv&%nZ-Upd1FeQ4H=+$Z5MsP6GSaMnTsU<<u>(s4Ykon~|WZSpj+&185-! z%oR{$X;wypR<@=oB<2*QCZ<#>z#7x=JguMrFCGzPGbF3$fi~Pi&aFfwB?W~{P~#FL zr<a+6l&ipz=#yBPS_Iki3u-~b;vzpS4Ro%qt%5E%jI<R%i2&+xkeXspWdvSPqM)sy z0al}>U<8_GKvS3lHXn4L2uK?Y7vvXbf;MzoDX1qV73b%amZTzO6p*Tt`~oWlh%1o2 zqM!iUkb+$%1+u6ZwCg1&KRFxC!1BzLk_;;aki$_8%t!?tTZ~O6H?b%kwB^D8RYO5y zN=jy4I(R=1$f+<4syWiZXLndBs4J(XrJ=bX2|PWBp)J24F&VtI)Bq`bLB|up%mv4j zb4GrCajHT_emSUT3OfD=(f~x#0~WMZh=;a-?G=zqc?AW+VGh2`5bg3&B=c((tiXkc zg1rJHRzaI)5RN3q2IBnco?4;+y8Jk`2r~MK<OcAFv0q{?sDTek(b4gs+7q;$6RD)J z2QPB~*An2$Eh)bOQi_6#%1ls+2dU*ir4ndOGqkP%7f9#|!Gh?S#tqbrN-QqUOwUVA zQ2-an$e9N$0B-)oLzvnM>Y%9^NJBm|1=>ajUpWqLt>}R_Ar_ZtK-6n$qFV^5?j3_X z9if#yQjjDTWr8-<B2_3L5p)xRQ%e-U`oU#7XpJ4T*8zz@kQPrD(9|!a(+qN=E-0kH z=i(P7=B4E4Y9LM98Joc-?lg>a%rM*=kXQs7RZ&xb^sJFw3%Py@RLCRG0Dx>lL@lV4 zR{#lVfSd)I)GNx*Nri+Sa->7mfwrz`B4<&ErPhe{1Ee;D_+JSeB{``nNtH@)cY$gx zkX^{tkpd)Q@w9Y7K?n7ZwylCX$N*i0>9$Is0XL8u7zWt_8Ya@qOhL5>qyS+MR0*s~ z0!hN#i>O&z0ldLi4_v;3Z1;3Q)uaGgV+4u_ZCeFw^6&~2Vh6$r>L9m61VJRIDGQ=O z7)g)5zCw6WVgXt~1T_V;ekvzTue>O+0JJt5><R^SeLHo{=y+IXKUPCMGtC*ag#*;M z2Tfb1g0Ch^EGPhN>qlyr6sHz}jsSy4n7+OOq~-#Z#h{u5E(3{taPCvL$;>N;6d{nr z1MQhZ$ACb|2jm{T<l<rtaEYb~+Txv>mlBc>buw}V3+X;3g1cd`N*OxB1qv4h1yJ)Q z4Kg4JwMa*yIv-KM=qMC}I5}y0pi@*d)WHXBsB6|ju6_oU-bj64r0krTmyueOSpq4U z)YPDH8XcdQk`k){$`6q1<-w&QsDuLzKSEuE+{}a;<LLrgVv?BxA|X))bxtN|nI_cX z@a&%nI(8do7*shZxYS{_i8|<nCI$84lEjkCWbg?PSXJpLs28Q?B!X@ZLUtauE?YdL zZ;Tf7KHx#1)UwpP5=2o8%24182b(ZQsq!E)`FR@g;884)pY$>na`Q`zQ$c+NIJ>k& zFB4qc#Dj;jkWL8!TZf)iLH%1$rK4c00G5YVLC6IVD8MpHQb7w2AV<X^dj=#4I<F;P zAuqoq1GL~cGYyi3Kx>d;eJgl+1}O*mQxO!?(eW_(Sdg<&6hWE^pk^?dFi1DV!Jy_i zNC8MM$XsL$Ql+8+_7Ut-V9?l&dLrcNL1d*6He@&ey}&{Ae<7+sBx)=}julq`_0Q3R z1?&ZIw-7YSPy!p^0GR>8NPT8-+=5kt{DS6TurZK$E-k46M`~&wtV;|s2!cUA)-Nro z$xDH55CH`eTIU|35>}2z$3sRgV>Q4XE^v-S%Cj)V3JRdeM<_-(7MBjF&(KSEkb#iw z1kLS4Sqm-~h_Dka)Q}2xki80^h4dQG#v~|^A%X}Jl2ovqZ;ns`V&U`}B>g}RV?a+u zh#@<$5lAk@T@`ue6_l1hvLvE}01ZTeX01?)0C0z1FH<2Yr?f~f6Le-%X#s==9iR?j z6%?fw7lVeh;pbRD@&;;15LFg{j*)_v6`-@&L8tyBwN1c@6?|hPk}p9?6O<Z3gFz6d zquL7}j00yTbkn?3D?uJXG7lOF$i}KeZ!rLu*<dHyDi~uu?O73A$v}%au#3QrVo(JF zDU-mB?9`N4EO`fHBbp+VG8z=U3ZQ--xE-tmZN#S{*E$d-P#<9Cko-J?T9E<*R6L<@ zQBxt3l)k=#cWPy60g@2Z4In?kA_o+Tr3K(Hgm@Dq0qKr_0|`Caprtr0#6V$)%>zi5 zf|?zmGavLpsTD~a$uat+#Wkfx_zE#-Ap&w7C<4_%W`S<ChL&dvRtk{T1UP447E*}p z2+DqNN9gM-K$}wFvH+3mAZ;+zd<Us`LFp30DlLG}psE<kDlH+p8pfIN;En?&8-0C< z$sk*6z!d^Yd@3kFhV4OnEz9$2N(+#K5VWHt8Pr|@2Zw@{0;23i&u=b7SLL9j15E<B zD{|Oq7K&FuI$_a=y+lxeO<O?o1Gs3=!CKGi>nlKRaRg7^f;|SQa1l`m3O;BOt44IB zK%(FRE4TzSC7D^Qke`R*Oh~PvU!GT!T2zynha8}wtbnE#Y!o<N5HSQw50E+=Ji&;e z1Dcc}=@k-xSep?D7pA4583Okg#5)KQW;U#rhZqlPID!)<WJDL79x!TsjM@|2Ljg@( zf`b>$1)$gj*U-?0E2ta*^TACT5D#j#tu0cz!yAJ6_?kLkv!gK^I|}v+=tTfnDcBjf zJc<Y}jM5b3FPu#Va3O*1xO5Z)6+j0?Vbl?*#Wacrq@YDDry#08B^HQ<7U@s}L49pV z;{&7@GAjsaoP(zQAkA~|EFgGD8k9X?)1mO(29^QuPfkrP(Sgnsf}#p!E2x|TRScl> zV?pf`(9Q~|gF#&;&@h&MDy-;+OfrJbiik&<IZ?1u&`-*N<|QOWup$Ihd_!v#ST6*U zR6)1ef#<eBg+8=jrGPvx2-Rh!0CHnAWK=9QB^G9if&$D6m<kvlNePNmtsp%aNS6}T z7m$u3sM)U$I<f#9Y*2Mb6QvMU;Ic~{8c?8dN3i?AAr=cQeL<xpXb}o1<cq-r|M^7< zC~g632c<~xY;8?SW=&?ECR!+}sVOKz!U`5+3JUpo8eqriK*~f|>7uW%5DHn%p`!qq z#RY9EMRGdWK4>z7T3eb|lbTnPl8VJz3|rIEa9RsquYqnnBq1QhEXW67Mc`u91G16; z9A=<&3rdaf#p$5)A;DWt!8II6BS;#AK@NvFEgGZ<+|2}uLogy}K$7sv1tN)ckSZVH zE$mvLE{2w$NWllXBQ!O+1e8_~UR8&bi{SZUs7^#HB)<q!&?%HBf`)xS=hDM^eIRc^ z4Mg!RI8UODM}d0Cpz$b3xqwv0>FX<mfG@m&OrfWyKoSVl9Uv<pA%|i^ngUAm8ML)8 z9!t{@DV)GjhE&0TN+wVUL&FBq1V+RLsuqX_5D5-dP;H+Ao%T;nf#;VLQ1V5|FmUf6 z$~e@l0J&cg<~=-R8>AwI6?*W2Jy^K{Ep|W?wcvJyEofi@l$ldgU`kLOW(#o|II*M1 zz?8$vB@`oJf-ps}VMnmLkTNc)7DVP+!Q<CnAs)KIBQ*uItpt+qL5Eg=A_UY6OE1ky z1g%1X%+kYhFx)0>h2+G7%o6aZA#yqZ4e>*aC@x4%&P>ZphA-cMnE{Sd1>6Q8%E5pl zaMh|%nwOUf+NlXTFBOy$^Yb7XACxkY3Q+LgUQjs<ib!bUMI>$bv<5hl!q)Ubm4QrB z1l_R-YN9|Kh!l4qL9jhYlQIxf)YQN=j2>v!3dmN7*CCUZpgk+#7%3<%flq{hkAhQ2 z8Px}u$)HsX(4|ozvmnE|AUnZEgIa3f`C+JY6(F?{NE65wSYyi`w1hDivS0{es-}XK zf(j(yL8p46X~#PS016UND*_y<AeVqb0Xpi3G8l}}I|gNWs6s?l0}B~Yu>)hnnlK<S zsMA1m#CgbR791H+NsyCJatSENp>p85!7(KTwW@?<FSrtrH=@BNf)=rXk_t4jfn0>x z#SF{FV3lyqAltzPz?%~w>p?mp802kms3Us&ItrlpP6prj4N-*ZRq*szD!9Oc<!KZb z!%IfEBT&mcP)UbXBc!_mPSL221bYDNFGL7nxC|VY&>h_<;f>-rh#j!7g64#1)V2|N zHH)Y;QPt@{hRd*34zNxdC?^+Xrl*4@PZJ@Bazjc11^Du&Vn|BYffaMm)CVoyA=MtZ z<^X#TlvrT1v86@D`H;nmh**XNY%D0@D=MNEgz=EYnb4L3B8(vw1SAWp>w)I_pfeAU z0R_mE2wbx|^hj6O)B&pFz|jPm<^jh)#BAt@DZF^Csew+N!aNVw20pVy9b_(8EAm7k zXp$x~sT4X24f3xd=$Nh4yb?&ORUI@bsSZA1P7x*cF?<O!Nkbhp0SBH^)qsT<xZZ)@ z$BNX3*VF+mfh~pS283^+X{{&~QtN<yfW_mm?kh|khSy=$6T<h<{DzUYNoy@2k}cS2 z&;$kT%#Ah|6krizi<T5&@qwqdhqYng=^5P&aERkE09t~B&vPKXxd85vff6=2n}Ev& zXj2$$FH{tiNl>x^sPPUiT|o?Ry8*Pi5qxkkxCsv{Qc;Uruw{^92%0WI>c}eCU?B@l ziV#B)847pVhCWJ1!@{i~AAA@#s1O4A6X7~&b_a(ro@@?J5*Ya$tP_#R!Lc-Gia2mA zV|p4CC9r$~c0U%MgJ-y4iZFZ)i*tm>p{WQ_x+Ui1D3lZ>CZ~d`MtE-rysi$~G(i{w z>2E=jHmHdTI{#e*T3dnJbl_kGX9;M8rIw`@RYJy&QY(^E3rZl(P^dbv1@JDBUPei7 z4x~zgRx6NY0nqjRs4YmnVo*L(2k!%dng$vMfmZWS5s*vKT@OlEV0)3*UcePWas@Py zKuW<w9Z8@?PT-OP6i6UpunBsg_M5t1rn;tHX&!iW2fQ_+0$slZYK9}NcLMjZ4Prsd zR6t8EV$~rFpCG28uY5un4{;T8FBY^e3^XhUEj_su;B#|O5lA?~n={Z90xGt^&QDW- zC_oKVm^7$22fE7&5?QEf^ztFiVbEensHvc3N#LUfz{8~Knz5Mfb%uBSAe#svhfX3p z8>w>$k%T!0Iy?yx1l?g+<XEC%09t?*T2O#=OAb^4<dhvla7=*94}E<F*NW8SQpg@+ z$jVyq7AbgQhs8c-V-O|-Ei<9jHz-+wi*lF~QQEZ#L1>=~Iiaa%ra>wTq!s*NSAt^& zoIKEmU@{W((m_KoXr_SLiAX^Pb0}yp9LOk0TB+64fb8nggKl7}sZoFmfVZ)M#`B;X z=X^jbKS8SiK?7q>`S~TqC7|_8NtFr?iNzT?sg)_^Tnbv?4Rytk9d#L{NuV8S`Y>tz z9H<e{ZEnylYgR<*(ND_BPtwm#1f7wo@8jw0>KE(^-s`3fk0lMrUN?2nk#L~6PA&m0 zDg!m8;z3KbOH#q9544gSp#^krJe&u)H!YwDv<9OjGqqTwB(W$xwFGqWQ+`1)SSkF( z3I$sQ1IU3kp!Pn}Q5D+SAcY`XQ&NkQi!uvJz-#frsz4{%C?JIOQu9i4Q;Wa@vbH$H zYic0f7;9wt<ovv}%=A*2PH?9ayaYiVd|t0QXt)w#jV7|z@}f*gI=2PSc3CU<gYTmO zT?CPtmkRZJCEVu-Q$W-4I!GpgZrD<&g>7_!hoJ`25%b`HE6E2LS_~;@GLyj^PzZtY zNI_9PR2t+)(4}=C>C_@{;3FA?IOGx8NKI?7pFtHL++2((L^1`{3Dz*DBdM@fs0G~{ z2HK&*1@}=rc(J8(VonaYYpnshd_+e9Nhi!lig0P<BX^M%f>a{T7Y?Z`NQK@e;+&WV zx-trsQ56y)6*=UfW|&LVAwkZ?1xj4->}ab1-|VRX%>m%E{QVq#T|rAnQ?s-4VTwU# z27xqt1%|o?MaKL2$HR7QgVq4*rR7C~bb)3Kz(%;FrX`l<fVO6X&guc5M*><u3Ocg` zboc>iLyEdOhzHup3%=f<7_vo0M?qg7y24xmv>O1l4qZWC0etnGLL%tsTJSNGdHE%v z+dL}^Qmw!@8H2Qe+q)1=(9%L7Gp{6HAu~5IJyk(pp)$X;q%<j20d&Z`9w`1H*FWVK zfmVn?RMkM$)RblBrsjh(P6=pi9K0hrF{eDSvKVw@iE~bVaVqRG2?c$9hzw{~TRGTz zaAgY}($fJil>ylXzxgpQUjZB-T%4Ra`H7%4?!KwT#fj;upd(?B4z2(Nzb>rc(*-F_ zEmE=rt>=Xj;8QOkd<YYXR0o9!xOlYE*DuLW%1kUy%*X-VteT&zUtExxmz`On4{||j zS_wG(L6(D#l(AD&HZ(A>G_khP2Xn!(1P*>|%1lv|fr`$&bl9C1;9#&)PzMJW*ci^V z#LOHk1$DQ?%$(E|&<cByuOLBh1yKQ-d<W^t2W=1pC2G*<TXG5LRJ{C>R0T+}ssK`@ zr{D&<83i2TAihE==%yUdkx+@cAU^1DWALdvDf!7(3b4)f;9vo-1XM`OQ^-s!0xfb+ zPRvt)H18`FO7aWzV2ZgoIrH;CF^)KIO93LFp{W2ltP{e`!%&ciq{1UJ1(aN%`#=@) z^FRWq@+qLZF<`kBq9P>~*$h9(=2%p7V1h_yIp^n<q~?|Q<R_-2BAp1Ske`Pl1J(gP zHwJQj2P~UoRB>FKoXAz6227z2G}}dk@;7I8D(Jv!Xr@=!;Q}3Kq_3p~ZYqNb1qDbA z3aZN>g|rn|98AQkKrc6f<Yfh2&@Gaw3O0#$@LP|PON&5D-E%6TS7}0v2<UE|c$M7z zl*Ak>g^-L?g(P?b11zYJo|>0hlvn~)s-U0%Rqc|Qn3JCl(W3`es+$590=o&J4jOJK z3PI<fq~?{NsdUOusYFo*I^zaSjYn!?3aIo0xfE(E=!_i1E&-_P-175F(9}T+POy3L zDzI_^<hsPnywoE9yi_YtwNe7+fv%1M6`yIDMc}h{(=$py4KQdp<1!<pJRgf0#i^iE zeiUFf!r}zY5Qyj9!1h6{0ktJSjsS%g*i}$1;J^l#CdH880xd=Xtqf0rmGCG!I2Gbm z(i3xXQj01*OHy--trYx0Whp3qfG!k(-JA%TZ2&LSSAZ&p*aqc*mTg-pfJj)-K$8@> zz|c^KDpS`47vq_E=_tBA^HNePAZ~?e0}a4bz|2B*AT*7Fsy6Vl9ZrRKNVCgIp}H1a zUO`50i=j>iS4oLE5F5dP<C$WmP@0!nSegpjRR(G{gToP$3E(jS(E!~irJ%1658L|W z92^YY*#l}0q1vJV4_j-HQ;JhTn~gwcA%n}~<iwohQqaXjAUTCZc-R&fBqoEeF93^! zjDRM8PVk`-oSdBLsU=8-V0vl^sE7fT1F&O7p``=(tdLsJ4Mw12)3`V};iVp|XwiTb z2Rb0Pre&ssdOe_%b`y&f;=yx3kiB=Hb5=m56KF>*qKySoprZgY3)BnYgkJj%jRbIe z1?fgZsJq~nfgK1kMGu-4At@Df9As$@<h)9VEHuf0(+0Rr5ArRF6gaurf=fyyQ(+N? zApwa#OpCy+1y69(BM)?-0O&?3B=aEU0&e;8#JrN!lyK0-JTzxQWIVt-^U$QA$q>C6 zs0->Ff;TIr<>coVX@HrqeM<^jptG+HK&OF%j%0xaJ1jau0gosdiecCALA#Ik3UGCx zNkSM0B?2>x;k`#=kZGVRLBS41zMV=BdWcW70eFF^F(jFQ+O8QUAn({@m_VAywn|{V zy5QhdvIF@HycJ&$no#t>5}=_VCAGYy;sR?W@Wx9U{R|U3P;;0Q+|o@d0mX^BO;Tw| zNq!!<Wn!xY;lPi>1Gj{fz$J}tN@j6xW^pmpawYJFA;@+n$Sf-)0YS<OJ!pdpGG7ZC z?@_X|0kz5?x-v3TQd0A5l|Y?1B|Ei}%-qysSbNMyAL0g(OF`)p?0<0G0}cbEW+o&M zAe9jK2n-y7fZ{MnlNZ!90=Mqqqco5$uC_|h`q?TkKQC1Yd`hG`asZ=5q`d+t47C+9 zOhC&&O%$|2d}vUE&vgT*b&v-jDIL29AaYnd0FfZoh0q9qYObkKKuZIt4g*#6*qsHE zfi&7-i4L_{4=PH*bt67SpnVPsX^APRpc)lat$@x31i1jz_{VN8Tnk(&a_0aZqL3C3 zcBez+loUV{aJEXYHZiI@A&Cd%iPXFjNFIWuBv35or&KCvD?o!#TR|OiOdo`VWFW}A zJUqjt<R|Na0t~i6OhX;)!ORrotO2&t6SBJ#tKUH#yu=)Ecqu8AB!UK5Q!8whbPdsY zP>+Edeb9`Enx#NR0wfebc@OGvloAQj@C21b8tTd*<&azgbtCAih0J1P@1c~7U{#Q2 zDC`_>Xq5w-u?4GuHcQn(hc_1$muO&`0cr$-cK$)?MOeLsY6vur@R$N>!QpiWC~ENN zhcs>RngB@~c+7w_d-0k9Nl(aTfXX*WxMMbp(ToE55f&~uG9t3c@TLRYV2}a+d7uTQ zxNL+PZ>NxwS!M-pf9ob^Wagw0HaDa^AK_eBa~l-5-~s~0+?>SX5=>(e0ReAHKwJrL z);WPU#}}idAw+uwO>qEd*JoZjNHM}>XsZX>w1Mb=Ro0Nvd_-FsT+Dz*>mbUIv_hM7 zoDd0=<~=ww!AcuwaR9kBSqpNm9n=`)G65<Cb`*5-18g_ce5f?6rG~{)J#cd#TJyoY z1IcKdDyS#(f%c++*3s*M(hsbisSeBP&_k>;^YapOoIr*a>46F$u*skSbWlKouDk{v z-UVvYr(_mEF8fW)fpvaL^1+R4aNY+iM}#1>RsvN4&{nCM8o1A+huQ;yEy1!=FocCP zG$`N+8Ii7_+khcuEqKJzRte-c#Mo0_Vwo<qkEUd2lc<nUl$vI%qzozVA)yI%8ECi; z>@rA!nTTICVps{T99&C*rYpe*#X`)66tZArL2JyQg19nBN@f{2YOp#VEfd0<sF;T3 z=V_>eH?)FIWl2QI$cU}03W(imVE1x@C-U?_XC|lSl|XwIp!@@og-$ntJ286Dl#=R` zng%P=LAOId(k<@TLUR{VK|oz+1%bv;;Z6swjRW}s)NzAeXakJ~a54q$K?0x2sFzd> z8P$Mi2x!89jFTbf1-PC(WKHniAiVns39Wd@ie%8Z7U&FfP?Hy$J)!cD$v2pTQ9>Hl zo`<+04|0+uSR2HMTJVXR>Y%OR$WDQH5bl1^pdE($A?*cZU6>vKWnZvudhyVL2vknN z^Ce30l9r}{y?lYVl#^2hI_sthnZYee1)a14PVexd2&xnuRh&?ZAz4TdvSf)sAbEhh z71%-v9M|BY4A!QBHinQ~m8YSO%~8mS6XtcO+aSs{pgc&Q6x>_Yfpquv;vr&?ek#Ow zkn{+?LJ7z4B=W!{wATq4VFu50Aq`bPCE@7}nsgws5335mxe^qjwK|Xsn;|2f-~hpH zELaMMp<p>2M#74PkbLasBIGqd)k_5^FyXZXSOj!U5vbP+;ef_cL2Xc!Iu=$x=z{78 zBo9OS%Fx0Gnpk1ACfGO>1+c&Y*VxeTf@uN`)Pe3JfTk9hFlZbNR1Jd45{M3ze2W>v zFz<p&N&Eo<QUMNccxXT@!0K_(Ej5Ok(0M$lr$G4>q6OKtpc9D|3^bv&EUFAt5UUNk z3WnC;Jy!bq$(co<K{fD&KCl`G*&tnAs0$#r!%H04@IE9ff+Tem)Il{Yyl_P}1(Gpf zqirD7@G2%GA6qmKNPyr90Dq8!mC!28!9Kv=tN|xmh&*x#fQPV%40CO562ctZPN8X_ zgGY$42R2v=9LS(dgOpj}{XB4Sq5-bIpe-kG!3b(*LbeDi6clBafp(HYcK8&7Mqg3N zv3O`ULu$5ScMKMVs7)Yn0|<6z2dET+t_cB)gHs&%hCMJBv@QU&O&^@aj4ff=5t6H* zE=q-_F}zyMv1^5t2w<J?00GSmDnRBGGxPHZ2Mk0hXvJAcDrm+XN3ftP(<m-V)&UO& z!pmo{&9-1MP`H5C<w4URsN_)u%fp-VnZ=%<X={)<nwk(zpre*SVvwN|a4@22N>43` zgiLaKrl9GBPHf}V8wQ&6#?T3#3dgI@Gq1QLF})};7eg<2!2?JJw44T%d=WmasZoel z2T#p|8rU%B=_sf}?9)+DM`#9%rljVBRF)RysK-LOYyN2(pg_|ERd|Rn0x5uoD=f2A z7NkN`0VgMF1s)F#XB^QAmDPZZ!-Ap`<O!&;5JAw2RR{}uWv9MI9BA#L71(bv`g&SA znl&0RdKy^;8mTquHL2;EHR+jYH3fO;HA%SzHRY*E1vSNG>6#iEG4?gentEEA_9~kC znULZfvqA(lW+8KYA^D-jp!58|QzJR0$Wy~;ir}ROXb=_L&N6}yG(ZCia*ZZ*Y72S} zJLt$9&=ff+$$>URfJPrn6!J?;z`NNYElF@y3o=xt1mqZ~p?ZkvNziafNO?Xu^ufdB zDo{(XEA`Jyg}MloP#`5dyvGVPOD`j_7(AJ*p`MusIW-3qDV+G605%t*3a|Zer$WjL zPMB+<4QIHu;7LMgSqr+YGX#`#N=uNI)4<XSB%4CQ95Y-n{DM<qYHmSEC9L6&$58*g zRN@Q;DMT@}R!70qzyR8yhlVET*k|mXhUNiCpo60qOHzfj?QrBRh$J{^;z~xKF-!2+ z7dWZId=E($kmIXDGD~t&9rIEk<Axv=aI>Hh4Jo=2$qm}vhpqw!<y2izS}sWioxEBD zse9lH5}>L;;~lWr2BmhW(V+SOZZJj-096FBA2vJ$YcfL(23rp*!yuM}>jYQ~fN}s8 zN=T?PKyHN=l+dVy1Y>GZQGOA$bqH;ELQ1n@J&?O#j)C0bq@aOf8hGgk>^eelaR<MW z5Mp>iQ7UMG52Pl8YK4UdB;`O#IruOuvIeJ0aL)tkHsp4mj)E~<Us6$OVm3Ja!5jjs zN?;c_LYx8`GK1EQVVNnZ`7od0a1N%ikZK9jP;jLQF%n`^dTI$+%rgbm4ow{eG(Tfn zf~fK^ErQpwXqLgn$*~Z0K}bGYtbu~cqa-)S6k-wnctiFBbo&_0>H7K#rA0a5{0Qsy zfKme_#6iQ4pi>BmHXT|bBPCvNtYay4kXu1G${u7TXq7uC+bKe_0K8QR&X-{8z;zh- zlFwAoP$Wbhtm2Q;)6xK^KE0&W82y^E82y^k82y;?82y^m+@#c$82y^^#FFHU82d8Y zni#b*TTPAVIOQ0%82eZ)O+77rXrhLC5oU{;8szfV)Z%C(*tM?U7PFzDf<2Oy0(3<p z*qzve1)45#2MSaHT97~;1o13Vdj~us;Gd=eZL(=9*eMt&*egKQ5q1tz%Ej#@Bt@h; z3z3`fIt`RU_4PrA?SdLN1iMNo1Ccn~jiN>al%Zhl0T3IsdmePcFnobF$OYg!9V81= z2_1!jjNCzH3BgBbszc}2L5*S1^g66!LQ#*m!NRGcp$-|P)lEuF&Q2-HF92;8ft&^k zDa4>v0Vuy_=A}c|r$W;wd>b&hK?PBd*Of`&bE2WTQJo39yad#iLupiDcOzsT2t3@0 z7~TgtGPOt@bdoyg)@M*70OT@I7T`o44#AZ%&?m=m#3{NmaLWZ`5j1;1YeVpf+K@mg z$uCLFaV{=)s&p(VDFSbD)li4b%;}co7wCe|$_DMe2bsbN9%QhBHbC%c1uI0;oRnWu zlAlYAZiq@W?Vv#=Vl;!)!L))CZ7sn-g-#+83RI{vG6NMlg$W8(62cRv3ml+ueUJdc z8yYZ;5T$UPpwJ;oA4s7(<N__60f;39;0Qx3Dm6fRp}`3bR+>N)DfqHu(EZtv6pE2; z5&FOvYb$7jj=?QXMb`nXy}{)Xky=2#H*D&0B_M3=dmI6PO({Gff!gbkg<SB}5wI=* zsP(O(4wi(pzm=50t^rr_$%)`wUf}I}c*`B43$_XYG?W9<2F?wTKm{9!Z8;vehzHAp zbU_qD3tF`GRIpfs7M5T=2oph*Ul4~v<ss1sS$_czW8^vlJmr~}0x$BxhN){pc0__X zAlJZ`H$e=Bmhlib;x!&t1tA3hBy14wMQT2QT367JMe`%NCLErGbo8)!61>9`W;RY= z;Lwla3us;ec^+&Is3t)hHUd@D$lVDXDHC0p2BfR0qo4xs+PdWzx#pyT@BM?!EP+!W z_^fe|1N7oi+Nu!!(5e)av<tzP$Js*nN5IF$)Ya5sZ61gg=>5-72cW0}oyr2e6C7+e zxLU%M?!l6f++u2G01h6oCdl;;xO72eA=<zuDCjF_n3@?V=qnf-nnJyU6zqEOppXOi zKRm%(G&I!p^~=l4^}x;Rq*U<cKyaH{AGGKSa@N0nQesMas;z-qVrfZ!K~7?&t)Uty zQJC5qf)s&6N=E@~y^aFJMK~e?>@6Iz4sIfYU4|#l5sEZ2Q*c;<6x(1oDcFL>U%*z= zB}Acth6pTm$^!@9SSJ)fs0s-N5@>u9Hpr|1YVUzo$Yd6Q)`x?3yFmAOfm4clu|hFu z0Zk_8o~b;Aq*MjadBva|r=SH55S5^XH_%D|Tx@|d5-biNnGUVA2TMYdubH6{mN)_{ zP|#MefMyAB{>@B*<vLwMP4K}*>iVGLU?Cx|58Bq8nPLsPUokbWxU>ko);}Y$7_?<R zGY2&MTAY(uoB?(rw(<f}f~(s=H!*>o09h0TW`dT~C_&RXL>Q9hA>zeF$q+$^V<34+ zNdX*$kS40Fl7W&!Vopwed0J^sPH}QkYHFUHjXuOSJ6Nv+5?s(Je6YQ+yamnG5Cza` z4s90_Vqz1j7*st#G(hSc$eJHb1$}+c;tWuv!xl-EXQbwVI}D(30*_*V!wIEAgy_bo zD_~_ksMQUz47IxkuCAaCLMoHMv5vD)NJ-6ylvH?21-L4W(xM#VvKzFR(ANj~7PKiY zDHXC?1GFmy>~YZPusM}_;B6j|!XBP4K>L|N*#%|HML`49gaPl7vn?&kfwV)RX~Pzp zU_ea*aBPB;Cv;#3v|+Efur#qK6&%+1(j?OQa&XepElMpe$j>XzEK5~D7tl2{ORBU~ zvZF8|mlowfk~V=f3|})08j?YBmo8|@G-$OnG=(FU`yvtwt<yOqIU=WhT&b7%ECDf- z;v|k35yX?i5sDxQ99t5BwfktDqDd*#soj*p=5JVWO;*+bXLLy01yXE-GbbdyL$WSJ z7{Z2#!;5%$&VUZD+bV%7eI*4D32G;Si;JTC9MEZ=iJ+}17&#P{HNeiW8_gM<&>gSw z7=<g2%z>efaQ*<LU+{DwXsZ(_6GLZ4LE@0u$I+n$OF|keWTtDdHgFjavJ85TnrlT# zYEfPy<R}AN4Sj5CAx;6;s^B^lT1R6qk-)a<>nngZ=z(klO(7J6w<v;w5LDTN_w<7% zrorVrOnpv%GH3;LR$_$$Xg7CKD!7@L3Oaxhx}F-|<5I{h0o_*t)(L8GC}MLoXqa0O z6zY2MnZ+=#gCY%l77?gM;KZ8AL9PTT(@{_X9X(M|iEU08HYy2;UOmKgBlJpU4Rw$) zsVRtcrJB}|orj<m!qBD(w2KZMcEsu!Q13?r-ay1G55OTvN^1`qbwsx2pi?%WFouLA za>a(TQHR=u0ml;5T4e3G>P7I@bEtYewKWm#Iz+VN$kPY~pa_RmYoHthp1M)61*Kj1 z+>l0eoK=jzy>hI!m8QLhy;Y2UjJ`&699T$8Q`24}Iu0bMX|EAuA04M0tEFkLp$u9K z0-F{B2V-SHYJM7I(kI#ww7=0-K?yS7q6A8@V2h&-;nPH*2^rY@5lFZs-v@N<ymMl4 zss^M-0?Id_i@iXJwIn||KL<YP1sQ+=hd+kZM!2j-%uu0NZ4|3llnTBQPa`k2Tp=hm z-L;}XL)}UP)G^n9CSj$Fl9B=|B`XCB1JKDJoSd9skz$aLiHR}TCAFH-7%q+lRd<^9 zD(ad#3Q9_7-pa@?F2Uv{XaYc#N?2O<;JI-ekq?&B$V~+w+yRUG<ovwi{G3!hR7vDQ z4_*jCS2REx1u$cfRYDW5v4Me(f-!hq2B^@1IvbRoz>2ZB8d}MNC*7fQ=s5g<MWse@ zNn%k6c;X#&!b5ISYLR~$Xmtzd3?oS10wo4$$%wM>6&A`!)l^<;1?UJE73ds3igNJc zV1#X&pe05*#i`K34P*&u{Xu@30>lto1@+QA$Pqm$>R7BQE&?6x3{s1{v;tC=Kq??4 zIpp;mAe)e+;9Vo|jcf2FccA_dD9}N*0XSq~%j+^gYpan15+s4}3pmk&ttdqbOVC6q z%n#5BA7mq-v4#{Epe@yC@u2`(1WQaBAR_W1Zbqp>z@CJqYfza6uB$*Bs6oL1jblt5 zprzpOH13vP1U3c~c+iXn4iAuVnYrnpjqa)C3ScF$Njp$bVVVka2Pax(3O0=sw9Yj% z4P4)Y+6N_x*{Q_}b_zxY2D!zcPII|JB3LpNx&RwIx(2FXGxO3xNgFil3%W+J1j<3P z1eEPKIZ<nSu$!T`7(zBKn80>K=s`_JoihcmJ2V1kW2mDubJO+m^FWG0Tl!&V!@#F4 zI61+y1t58ZGc^^Gb5awFVD3bd1SbZNYf;5P!3;aN03-_uebA9ewhAhs)<JH%0_c85 zxOVVL9%wEqE=pF{Q2@EMxF{K#H$hGVEeb?l9G07|o0e0W2|jra>OoMnfTowr6N^$5 zlJj#55=%0Zz}Mb_M=B7<w3I=LcDS+Niw_}<SRDm*Ljwa<&|nkHRLs-?DMP`oMsi`A z0z6`n+YOqKJtZcv#nU*(h(HHs>Fa|>)yq;r*K>gTNhSFTNJAmX#l^5wHYy=SBPS<h zzm17rJhb=*g&f!`kU)fV&k(MJWGX$h%}wCEf=~o4^I>Z7HNGHf;94P*i{O9-B{p!i zge$c{w36l&uz~PkhB^$=94XcVo%IAd$WdJZe5(&A{a`q(Ruh)-VQt0SbUjE>UR;z6 zNs&<RXXd7Z`B-W^NLb@2=OB_A&`5wrfI>AS!XR7)%uz3JY6F#Yu+2x{4M_^NkS;jb zA<#x9^4=u4LD2FMG;Ey)(V_s_hm(qaqKb|}adKi#ssd;~DR^`<wW1(3xg<3Oswpuq z1v(%Hb`U7*f;|G+#_O1u0-ZL8cgLVJ(|Vv8W(93n-2&Ois|TLvhKoYl{irITVqk?3 zPlBw>O{{=<AAH_NZe|`NJQcJd?nHMEY_%gaMZmW8>m}!8rskD^&4MNcP<apb5iX+? z>=a<u!)pO}tZBfc6m+pWL{mW@A^|#H5`4@F#8;dUJ8j`+LxiDSDwrgM#^Fb36obMC zva21kJq@%61=4y29hC{0)I`WYHR<bvj^_i-LO@a{=tk0l)FRO337})qGN1<nfrLTx zV4&bk1sy97+C@~7s*nqw$pGaqaH@c$vf_Nu5sQ#h_n<vqSXl+yA_&^^0jW|TsT$%k z=p3!40)z{9C`1jU+=R}U=9iYF7C{tffVu|YV}DIep*{k|BSaH;Mj37{TF^k0K+J_s zS7SBT%p7ViD0m@>5?4wu$uEE>X;|uqtjmB4Lk!TvE?Sab0JTeBAHKvVMFDh+jsoaJ z6;MopV+q{0$Vi1Aata=0NKOO|u$N?{=7NUClflQSDx{RAf_U(gYKj%WHKPLLntMn* zfV>6eE7(GoSh(fnCzik(%HSP6$ZNhJiXrP;Ku4p1*KrV~1>$SSS;nyHKR2-g5|awH z3h*2a$yGWEh`pQ;5e-cRT?I%G!s0*|<{1TD1(X=pMM+3Vc^qOCBr`*-hUaET@`Wn^ z<qE{PQxIW{ViKG)!HFN-m`h7ch8&d&_YA^^`p^PYM*(zhFDL}ynIEh=IW;p!18RU4 zq_BXx8(Jkn(=6r=ad0~Y;y`sBP)P#y7^EzLYQu<0u+u?n_duhs>W~{4)M4cqYzh{( z>>8A<pnWamBXf|$uFM2_7aFLv$jvMUHGlJRDnTt1(Akx#DTrVKy9HiVKyo4U$Oibf zZK&VDjZd(8O~`R7dhw9;`k~-Uvf#Bg>>4?6xPntP=pa6F?Z9dU*!|E(04Pww!3%B$ z#Of#@@A8d@oFwI$SCU$kmY9rdYYdty4M-&g3sR6Dz)c}js3)L>14NaAEoiJfEi)a| zrKyHCuaMk^dWDSwqBRdPRt4mGPzMRpVuCGu0H<Kkh8>WxwhAhGprOya6piXy#4%=i z(4z!EOUOYzPEapZLld&WEI$qACeWr<^?dN5yx^-+A#R4HB~H-D3v81()Cr)wVZa9h zL!%wCt(p@Ox)6;}-@!Cmb8$i%ZCsox@KawEY~cs4>7mDhHL^nFbGnc;p{mKtch1jC z%gIazjUAwGr$@0A^DtUa;y`mTHWz_zAcPIVB79b>sR2nGn$}$U`pOE$`K3k4slJH? z1(|v2p+P>jD5qlRWfkk?CKhmU)gp9p>1!z}IHu%g=J|xUDkK&Z=w%giDQGF!q5+VY zZ(?Sif>$s|RZeCy_=<alw9FjHDSL1;%8c|BLNYRo!BQY?#TnqEQIkMtK_%yurhtdI zLG$zq1&QgY#d->!C7|?B0-nzSALE{r2wF7*(hECw5Y(*9%q@T{J1SO4tw_!(1y9Yw ztu4qYP0!3L)`On6?ci8il96Aepx~I3Tb!7hnxYU~Qks&P4>HstxU`@kzo<mP20VTT zS*Mc-RaXpF23oFT2UhEvo0yrSprBw=4AJC(OJP}RQ88$Prjeepo&i{EPG)jyUU8~| zuV)C{s{De~JV-3*<rk&vLzNWk`+A0e?9=Ds(%1J*%uZDRFRy?^t^#O@MN(>N9%N7; zMIk9QEx#xg6c3=-0u{N?kte8nP_|Nn4?Zb@N(u!9#5v56Gnkd&L06PoSejXsTC4!k zuB2(rRm;W2rLP4~7_dMESpz*p8|*{aiP<23tLVWE%q#|X4RS&01(LhL9cWNRS(2Jt z06MJ^bPi@g0VuXWtxg2?EKx5;tQLSrIjAWE%UH$W?R>D5QIrZYE(PQqgeeN38+^fT zfZ3;~;GLQZ$`zo~jbWECfNm)$fF{R01&B*A41ykwQVdF?kUS2)_cI@Sq9-)ffnAhY ztdOXXlv+{(IvQ0A#W4!yiJ)_O74nPH6Z0~wQWf$`K}&&BQb7Tr&xI6pwhEv^8Wi@r zSOCazy6{+0@CPsWELPA3i{nu5o1c=IRtXA>;#BB$2*sf0UU6w=3Fw6BA_aITgR?aF zpm~Ig^k4yP3qJ2(UmtW2M{!POZgFx^KIpcLe1*KkvZTZ!h1}G<QqYYM`ugDP4^LH< z`K2KHKw~^0S12H9h6EoM=#GrcJV?xd3k9?kt^l>dH#M&`7;ZK6_-!uivfw_Om4cFS zL4^|N2;~rPLpY@*19k!`)cr|`pnIzzUI3X7X%bl}C>a?TAZdlPnqYb}^YT(59tOMJ z9eiMKjzVHyW-d4kL1#0krhpSYsJsLVr>4Npp)FP@E=|q=HPb;S+$QJe<Rlgpr|PFx z6o87k#5~a5l=}L`nJKBDU@a+1O)bkzEeC~LN~%I>fj+434J~6~k&~DVx=sX?GeGOb zQbCt|B^E2>X6EE%LJq?%2Hg{+udkk#SX=^X%jM-4<tFB+>ws=RQ!mcRF9%(!3U_~S zK`Q7hW>W(Lh_+y;TM9~xGr;i-yC55KWTQfHYECMsLCd9}0ChIxUWZ_)xRrtu<RmP} z6soOyep*^`VqRHdv3jf$#0v1e)1V#yPy-a;b|DN6C@sza#StRr_4P6IAtkTOG;o4T z%dALEf$f&bELJE^Em6>bCr?m<3WlWR0B{|miLekMhis*59{3gmm_woQmY)Z?ky#-% zEe&)8J7~2NOi6BLUM4uDfO7^U(m<_W@B#4PV{AbkRM460N%<uin2rXe3k<Uoi=gYO zO7hcFL8TGG-LBxI<evw=t{J+m2@=ds`4vH_X+^2U843{Jaw$MBtwqQn`xV|P)XM^u z8u>XTnV_5RA@^N61&8Dp6o7;fT0ml8RXF3mBp)mfk9lZtx+NBuC^&=eSk+SivB5`K zfoz4`X8|f)bMuQ*!NHi92)ck>p(G!ak3b_(MVYC2$)KJtDD=RhDXC?d$>7#S8mN>5 zYfH|^&o2h|bs_Et2Q;J%0(FOAwJxZ@LX=kEYc0Uqq17&|nuAthp!O0p2;t5~1c$yp zXy-vuevSex4?zoUc(_C5q0$JQph=0M{2Zt_RF@UF5C)Z(;Tf698PFs9L30M6g?7-% zc(AuX4Gn$pNgSYZ6?*bFB>Op)<l&4QsI9ut)CP?tkcFTE6e^0G-xc5-D+MJzH0|KL z4blva<KmpmlvD-K!EB(~6toZ)d?GYh7~*p-1%+C8N>vEYOi52Ifu>YF1*j?DUI`@H z!0}R&4{A;3mn$UYSEPbcDQFEXtXNF})y?|(MbMFPP}vHJe5ZWS7-2f-5NJ^5!>|-$ z0j$R4QUI9_aSvKtB*6^w1kI+xVhH4GXK2x`keQqhK37{oK>_A2D+TqmMBUuXywYNI zklmp6g1)|gL24edYEUdfR2Jl*C<LvKEK5aJ3Ys}A1Kr4wmZ%FF1}X-X=+Mwaay%^N z!FL{jECo3fY8qx~4pIO&7*d3ngX6?j2_mc%i{yH^f3X{c<aJb|U=m8PP&acy-L0?h z0zPd}!8s$bL;)j4AV(2`<Y1w$uMbTl5GjRZkiMi!*dz!zwLzjElH4F64{EWb!tzo{ zKIjJbJW#SxfaD)gyA^B@D0L?$mlP`$B<6t%B2aARl_VyYpx1WlX#UGcEYSt&(S>9{ zh(Dp}+$9xs7YsPhf+{9(=Qt<72%L^VgLUaS`ALa6Ih6{DMfs(9DPV==sY%6|;0q{| z^FeB1-Uko)IDt>rP*OHdwn#}zhGxMcP<^hXoMvifX=(x$O9w5Gwo*`1HZVvuGfjkw zCKi?^LIjfyQq!P<m8qa*)ga+CW6NYiBdBl^)G7l5bK@j)s9;`VStUrNfq|i$u^Uvd zBo%bqfs(SZrL(iMGgL4?Cli!nm6VNLEG^9qprSdMxv60NhHh?f!Tci7%}*d<H#ZAY zLno-(w9@2^;!Lo6-3$zkoLr&e1*Js=Ibc&PT#ZZ|9ihUxiADMOU@yB^7&@83Y)r~Y zOwI<GZ3G5T#py+fV1J|-rI@9pDk0J&xFjq|%u4~y6GE1mD}YC=6-vO#4St<NX>ls3 zL#m*!?+LDiK*=#LJrxv%#h~6Wh@nshy8kmNClz$9QZc0047z|7<XuSV1{$o*NG$@@ zTlspRIv%{RJvg%}wHOxf6~$HxCZI(qp!`~#Yo%arW&ugsxhYl(mX<~kPENX&f}xRt z0mv&{pb-UqEd|V81GqDx;0fz(LmIR=x)>m}px^+lM^FIongunHlk-7GufPl_hId%h z!9xqE{WwUbE(W!RAs3otrlu$)f%_{U!y#>@Vui${{4!W?32nMtK|u+WPe8MH$t6nG zp!;t1_1!Wnz|C(@S4fAVq$n}3I1{vP2-HPU(NF>%4Xgy)f$I!9kzYe8BR?la7oif= z5e7#AXf<743alysHPb*NUf{)k`Oq#{YDH!-=ynaH&N!@{0Ie>-+bJ-5<qC-5GgvJI zibDv-?1e$%5hAMq4_BxS$hW+?CKgvJfO-YR;DQ9|OfJaH+Mq*wG0ldCTyScMLTLdw zX~KHM3h|kFncyQo!NCD<a)Sy+$XJa+Zelj5+pB<NEJQ{Rbm2JYC@;_mELc0Vgod>x zK>Zs9a0dreyn+USxIlpd3q3uMyoS0SRJl56j1N?0K}~_`fpt5$AeYbO>p=>6)V395 z90bL1sCH;03&pL_YY*{sctP9HL47f}rHEc6sN(?bV1f?Ff-HgqjRfi;bx#!0mIy&E zlvL4B0v&?~>iX${y3|UVNP09NY80ST1Xc?9P_>|L5v1!1OCpdBnqis6nMt6M5IjW> zlLM7jsCp3&26vpn6=f}CtX~N{0idL#pafdk0Lm1Iph+%)9McAk9h6QRC@bW{;tkey z!x9IejvmPQh|q`YLakSk(>FW~!aFDm(0&CxHXum=)E|NLQQ%gCwzQ{Is)H^~1ouSX zfeP!!f`SI54=f97FhPR^bekjijzXlaC#V|_X%?Yd4r?01?S>DM>A{<g2!CVsAgIT# z0PYN-84mAlfYwohM&|O<z#S)WA4&mx;sWUb%Y#<SBqnFT4~m8yTaC?g$So-}PeP<X z?JsD4gL@NhF65wEu=7EK4SGmgKzR?N?Sy{nDx|0bO-6tM8MOWf)cV(iUXxm^p$;`s z7t}xlZybgmI1ka7lwY9-X>&n}cy);VVAZ-%2NdgqTG^n21*8Wwp#V$Y;On5Y6g>Sr zLp&XQJfmC{oI*oF{QVR{{N3GsTtO)UTLlWKQo*wNpt4LuT`#F5PdB|NzqA0-FoZbC zRtY2wVJm@dKLt(UVpMLBA{(q(0q%cLL@6jhmMMZx+0RSSPy$(^gc{zks#ZZG6&5uL z3SgrkXS0L#K+<0-dSwVMw^Je69TYGy%isrKD50xJ#d3@^NGB*rxfB#Y6bR!Q+=K)h zj09Ewx(c3onI)NtIiMj^P-O$F6rf|!xCcIAra)+rS&lh5@cI&dJuGCMK79NW)bdEp z$uEbD%EAK=TKj>!-l!LDDk$h{DfmEVD-__<Cg7-7aLWYuMl(`jLr>5##LPT}<iujo zqKG_Qs1Rsn1h}QB08MfZp!^K=CB!s`QqYBac<Wb)LQse+pj2|uia0H^LIX6mr2rqB z#;mN<GAp2UAyg?i0V4`6h*1iVv0w!Sa0*B)K|aV2Jc9^v11Q&mXC@UO`#vCvRsph} zO%LoG3?aDfFd5k7zK(*D9%Q_}2%J(uRT!4M0<sxwC#v~KmSWfdN|PXM;Qp9`LRw}8 z(pk$$-qF_w-7^e19TZysf;)+zgb8&SR2UQy3Xpu8mkL@n3O>FjF%uNupv%<MHT94e zk${#*z*RujwV<njg$5`{AufoACLK_b01?sDg9w2dS|I;G900AEk(DdKDrF^1E&BSP z_8-VgxnSpl7w+Uk#!*4#CFs%)<k85a#NyNx1<*A@8IT?^sBH$)4si>pHvr<nZ%2Rz z4XAB^XoSPhM^pk2)hdB^tU$Z~D&!!;N~w7zy3k<OQGl!r1CLTEL0T#52={{5B;=*! zm%}`*3tBd+2bzx3#U8xiiWg)dbUhWUl?4gHg8br=;8e&eFjz!D+L@4mhgoB13u}f# zMG$2!$ZSx<4jP2ydn7M49qw3=p~!9nFZM(AcV22b!o?V#BQtPOlN3JZpsGZ238<3> zay}@vz`AOnbOH(=&|oQ4BWiwv#0FFeG#i7fM5J;I+R=dxL_$?TJ4kx41|E`|K`9Yb z*n-Dh@<5Z&P(8T%YY=CHw4u5Lp8FK+6p&*DT;xJDfr@1fGEy@Ri;#Q)Zjpj40bO+s z9XtaUWl+!HD$x*A&7jZ+^@$Zq64SvG&L9C$A)1;3*?)|ba}|lqx}ZRUhAq7B1D$HY z-aG~Q0Fo%72>{ypfoRgGPDw2;Dax;ejNR43OD`qR$|OWf1=M_lm;}4J9hUN-IRKBl zY*G4Tpq4cxkAo5vXr~NvmPVC<?x9fv&#r?GRZ0a_C5VY9_=FQEV3B%(kO2@yg!3U$ z2+A4IJ}#1C(4-Q$jD)r+kRk<3CV&PasBZ@eL1fqC2?TtRqp$A*i3HFvNM?xwc;Evx zrUDCbP%#I!n9SG%c^!3@8R|`t6`00D`q}VK97qwOf2;v(Kfn_UXmKFO5O8$>Sqq3% z4}$7qCD6Ptl9ixg-kkg*D+Q&Z^rS=$1068bGtz_(6hdqSO?_5@h8#gN&Pcjp%?pq! zSkyvj5D6NE1Gge!9b{;`3uyrk$SlxOj1<VK3Q%_$G6xH5peE*ImQ;eK*ug0aGF1y2 zC`4^cx<PkrK#YSlC#{g%lOTgZ{csIDbG6{YObe}12-AqSSqSOoIF;lf(jcTk1$H!e zNE0%M3UVK`@dO!L1&?%s%6UXH6jsV3DFBaNfx;L*1prNi(5Y&uu__t}hk);Mfptw` zfr-*pQc%Fwr-2#;N~W+J3JG+S;SZ2oAgu&M5(JN=Xn@W+(m-;$UU4pXZxkYAKzc#> z6H7U(4)vBUY|;dBpfpGa3?p<w=4hZ@Urdd9&<R5gb;ulcYKk5#E@9nah?&rG6VWUJ z2_vk5cL}jL4q*q(!8k2}hbt&!fNTJTut#EEN=_=QVTA}`@aS%FZemW30wgFAWf1s6 z1!T7p3Q9=-A2s;F)exvc1ot*T$26h^BSaJGv6c9On4tGzD^npphmiQf80r9`;}9cw zK_wGZ5L6(7S{X=<Y*4!zG#ihjlLgOa;B#(31C<Kk6K=ry3A9`b(kFn;^TJxZpsoV; zSc60oq)ye;gXI((TLo-c1ynI3!UoZQfJFc(Y*4!qM8+qqrGRKdAcYd#&yef_@=FGI zG8<GaL#<YTuJr)LAJ|J+N-aoffwD*g8V?{{AY4<UprHaEr-b`Y9bEUTgG*tMGBm8F z2I}a55-sSoJousWP?v!wn={olQ94(k!8ARHZ=kD15WPo8E`;`qQPf~>O@jKS;I21X zcON7U$)ez)Wr8I+v^a#tguXr`px{LSY@rP_$lyI^s5e1g2So~wbPJ9XEFlZk4Gkoy z*@*B32Q6&U2oWDJU9ilJC2GJr(UY|uw9o>F2x`Ft4nk<0AR+@PJ?g-RuOQ2{VUDE4 zXX-c;4J6`IQ*`t5bis+8YF>ne8CFk1`!*=44|}ph6a$26JIrbdi{~K84r(vViP&u> z6yR7)M~-Sl{>JKXEV_~QuVN-Vh{Iv&1eAH<ZOf3N)Kt`VB`AGsDLCinm8BMyK-!g1 z6G7_-^A!>ma!YecGILVPQo*;pYbk)H;ULp=pt7D|^D-1PT8YxU1Q~!lj|X-FT1yh7 z24%Y^$SzozfyxnZ=0GW5K%%JY7O@vFsA?dAg>sP{((Q>LTR}%ODCA@+B&s9lH>6>7 zMC%n?<$*eSnR(gp5kc^bIPAziNEQV-6|toPRP;hqIdotnBQ-f2da@?S4<H44AY(uo z1Qc2dp!Se6NEN8>1!^~gWMQjHLF)+<AsqwI09|IWLK$T452_WES~ZeEx}kRHWrC(p zKtT?gebohd8q}6lQ&YfHW(741t@_Z{hg_x&atla5)G7r96nntSyFv>zP@@1jSYc5N z2`3cID0u^92g+;>L<3~HALIz=_%v*Y9V7%x*Tp48sU^u7sl|}>XCNumF-k}o4fg^l zu))bq4`L{2ECdu25Gx_m889}AiwhEqK=%YF<z%8Y9Wf?MK$#R|1bBT2$Uz|gf#NYQ zzXUDzz-?MmqEHdVO`xd88Hb=@ZIJB{hl7(4JQP4_7AkJ508YG!skhP`%n3J8s6o;M zsAUdnhJnp1Rsb!U&&&faD}b1XVnt~VWLIHoUI}DoO1(4(;a<=LcuFcp3WDbzkfqQi zY#@JtLJ^!wAOlwlX+`<D*eov1L2bRm^&xkD5ZN5!Y=s=qN?uT`L2@lbG(IO2o@F5- z8sPYc_ew!d1TXFbIj|(L2(+vbWFNS^fL*N%5<qe|JcLl95}cb{^2_sx&QFjf3?Pfa zcjZE6Z9vP3kOBqSTWHxAQEkHAha5l(pxvN|c+1Iz&L_f;w}<wdz;i{Z*mTB&^rWQV zQAeW;PF(gz<Wlf@^2}m|%;G%t63`hPnR(ed3eXKA(7;Sjg`~HnR8S|VC>1i{oC;cZ z3Q9DfEQ}JJpqvR_<APEMBYLmc1|UEN!7F-jE`V3{s4HGTDF}Tp7evf4C8ZeNjzk$i z0&k^<HMYTu!Gr=aQ<9)ABx21nBq1c0q-sFNYry>$^wA?!J@7FkeSPp{7<na`piKdw z#0y`IL}=a-k!6vzKyoWM#!=c2po|IGA_`mI1@f)}L^<|_QlPP5q=^FP<N~Bg0WuC& zo<eILB=evmprS$}A9FSWvJMq8Km}cniljNIBoC?)q5^3dH)K&1C|T(1`(zfEq~^hf z1Ho+*q!r)_3P~k-<PLm+EC6A6eFgJRX0ZaO$^sSlPzOUsz7(Mf^bkEJXmo?8?vfIV zz{MT*E`=hZflNp{YWo4Yj2e_?p!UNZ1)B#3xl{uxsiTk&sbIi43FJQo1uO$z;H0Am zUJ;B}C)6&KVFS-JaOnW*WP#^a5<!c}K`ln`(g7XNL;+X<)I|zO>7Xej@Nz|{aiDrQ z2{M%onLsMa&w+<wQaWPx0OHJe(Cm5=XsQsZA0A~$ZU7G^KqnHQ`yW7I28|(D5dd-= zO7Vp)TEIquT91f=3*ivA{36g=h!j|`!NVCNl;N%fxdAlQ3~ixh7AxeWf>ttSBtn`H z(121ehRzV`fQAE;Q$c&$p(0R!L((B=i~wpRY#<6{4jD9N06uI(19amU)NuHO9%|}B z@fWDL1vU1dTHro|mCi64+Mh&9nIPvN&2)mD3rdy9T}`N|I*_ej2xsW)2V>tz0r4%k zg@8~EnwS7@B}3{yLT!hqAdt<7su@eXfTkzFNfe|L6f;Sc3Xnruz@i}i(AF08C=YNt z0~O(^iLkm4R5n7F5<q>X06o|elIcK0bg+R4M56;_A#!2|S%u_OaKOQX7t-{^l8V8~ zz?qkr00!04I71PoM?%1L=wrHwyhDm9V8=uK2+G-5ynu*qP)Pw!qiEF}$WMr|5=4m# z>D}mp_RgfB=3r<fK@P4g$cHSS25lZpOe)ULDFt0X2&?oEX$+EMH9!N((A65qvug<T zh)EIfStY4BhU;JjHptr;<p**n3?t1VyB<+0DJZDJeFEB81KJu0-@yV(hUyRxs9Pzh zgJzW>8&W_LpaLC4qh)E3!(as*-gv?89=xsrow5O4A_j5~X!$LYTh&3MoN1t~n=rS+ zmiK}@3CWzg(8E-$6x2-(3Myc}f%yd~O}XV4K?^gyz5vB5D9s~H6rhx(pjm_BVhz;Q zI54k6f>r}`ojNEaK@Dqo!xg?A3zXQA+N=;RTo%+jPK50QD#=%X9KZqFRRwBtL-x-q zXhAl7fkZ$_yBN|c2bBzvv1rT@EPwDh6cGC$)1%0<qu7?~Lezr1qM)DvS~msi^HzfP zc0(Jy3eX-eXs#LAFqkx=eTv>HhFb@35X0846kB0239*_O+8RX&z}7E=cK|DZcZ`v0 z1bAZ`BypjR;b3(NsuHL+=t6Piv=yI}UqM{4rHHCjK>@^9uvLJqDgz(+5AI)r`U;>( zfJAvgY7xrLFId(ERYcHcGHB)oHp&ZWCM!TE)L`?8DjFc$P}kLh%U5{&y;u)sf)2b( zMZ`2RG~Ga#L&A*EfUdKJHzh!M6_n7xqkl-QhEyQryBVUN0vAIJ!0KL**Pvw!%wNbc z4;>aI9QmMrKXl6*X!$o}WCa=+pn47@XbT$vg%3<AffBzGXjwGMT5uG@QYyhCFQD=O zvLq1IRM6=*pzWy&wxE_eWJpTMP61@FE~sUrqX6YVG=sRHv(OY2>`;_|#ZXit8tS0> zSP`^79bOeH!NMv9R2!pCUxN1$g9htC^NXd$kWu=A9Poh)pwL!;heC2jW=={`YMzFY zRa$0IafuSR*9}nvB~gaGAZZ!2Llu#Zv1oxe$dJ{8+G6m83d&U;p#8m|K!w&3&`<^M zKZS)Uq_Y)T06Eb|53RUB%0Y<q0dhAesNjx34=O~v0+d}q%CYp}5Mc-kI7kqJH{ilu z2~C)Kl!PHTOyDL$oT8wBXnP}vA1uOA!Y~+g(<V`22p$E5m`6$|LNYF7xQ(cQ1p5Y> zpCOv@=4O<PRskIz1e*aFRUs+Yf}$PV6b~(coHd8)Q)tLRn-aC)Q)?iL{*g)01^`_J z=hEVm{9Nd6a-658fYgFE3nW8SLzd@3HVQybb5=+~Y!cwo*8*v9@{dpma&-%G4fcTU z5dn!JI|0H5iGt6703Q~EVg+c#2DFb6G*AxiQ-MyP&Cdh%wVeDTz^5dE?=~t19cKVi zoR|VW^(IlF2zsCcbk{Y!16Bdnl#D#dmy}-tx^AijR8NAo&4W)A0=1EfK|-K?4<Hvp zhWa2r2lJtO4>XjNlkzJ-*J-AwmMCe0iaO|F5*o0<GX+qDXz6nyHRn}8`IrmKE=};7 z&?Llx6t+ltAKF5KY6TT73PGuPDXB#;i@@m#R0kBNmXu`XrGqXvMw~<jmIdj8x(_;< z20yC+Di5vdK_?eL15r1rBoDr<50sEWYmf3lr)q(M9C1m5Myg)Al|o`xVugNjQL<h^ zMggqMgq-eVrJ#gljB{d64(McISeqh0&nG`IB^Y#aIdV=yX%NBIu7WBcSn*a1I>{yo zye2;}tt7PwoKB$84nHIcJmd!-v4L3SlAnjNNrSLW3i|rtpc|_|1rfwc;E^k&W2hi& zxNCJ_F#;Qegp6W>Iwv`amEeE|MH7?{9>G+%LAp`~DxqYDESQ$4kd~+mjS~>FxF9o6 z33`tU;x-qs>Cn^DN<hcV;n+b1N(q^13W?AI(m<UE_-13U8PI_fXj0OHdKi3;7WDWm zNI?#&v?23^pg~~t1;Gl?qc&l3dO7*&8cG2<si5sX5DP02jsVxr;FBt0N3v*WBAN$? zwkj+kz!L$~#rpc7xJk;dfbv113@KWnO-PsqsKU~c68I?;AhktK-~nY&0SmsR7?zP> zEB25YP*5B6_5Jf;&13kML{PwhjG}x{8MNjXbnXhMJc6bQsKp8j;B)siK*<(mN-Y3# z1}!)vg3g--FIE7#2$XA}%{EXm1#Yw{X@ZYB*MNHz63xg>U{HAj)($38^7B%mc7pi| zC<6|lk`5{Yb|!oUDZ;JbEn^_9kSRE*r@$>wm`5{n)4{sIO(fU>?NEiV90fXK1yacA zL9#Qr<bd2o2MH389kq}Q33mqE^+>LO&XPjS$Kw!iihwGE?UL8P=^jw=g4H>o?mhA$ zh0yBKH6p;r)7djb0aR}~I)`|MIfi)p`+@2jNIi)`f~2TcaY8$zATz-u@d}xF#i>Q0 zL#(0wbr*kM1w;W0ITcZ%Jh2#DU8bgxT2I2drcU`4pfFUxUO%F4Ed*^G)l18R&!IWx zSD>tnfu&TWW&iLo1Gpw|iwT@gF(QIXUkluF@y$;u%}E6>(@f0F17*Er=-GnsGahsD z(=(GnepYZONGwXsRZysgoD^8ApaM#GAnch}Tnavj4|<3o(rJ2dO<uwNezl;}w;=U3 zLQ4X)NG;CGEJ)2P(Sv2s1gI$xyP@TLwWp_>Yc0r52=>g)O-%t!66RDYWagFSXQ!s< zDFmgKlosWIj{3?;1L@Z1;sO<UIhlE>&;b(gxC%7qDJbNmrl;nmz>d>^7_0!FgRxRj zf{deq4grBkLR-Ti4){QH_)#1n5fH9)tN@+Q5sf_b2ohIND9KFD#!wECQcy_C&ns~T zo#}$U+rSikw*j(_;F3zv9)G2z{G1ecvje68LMNrBXXZJUM5PwxL$=RA24*0V2r@UZ zA_U|<pUm9M5-SB$?5d#0R$D0;fzA>^=mxQnLI%VI;q;=+6rapIP<UVl2S`CmQDQmR zTBNheK;o!4C9@cGsR2|CJnmqMKz#rhTS1{V7S-t$IOBt$>#9<V@<Gmr#S8d^5Xe{r zB0<1x#^Qav5snm;s1Al1NQD$ZFsR@PYPrDY!hrHhK_*I80Xaus-zh&oCp9roL02I> z1AOM3LU}6e^fA!E@1WLANl|`wDrjvqs4=EcoSF{0DjIA9lnv_O27^^0r$l}I;F2Ox z`J<~4k^w4^a=-(rX^?}>p;{F{`@gawJ58ZN5R+hWqnwtO2F(Hb`hMUmY!n~{f>)G- z_M;*@3#WPDg}GJ=hLAWxGpZo9C^<E+1au<_bUrINBeAFia{NzuszP#Ui2~@37N}%y zW=cv9#LWnuo}eQnol8sdOF`Mp0MxLD9Gjb2tY83|%~S};Oa&bnR8#`#H6XdcF*m<7 zuLR^5cxPClxFodzq7W_?3=*<ZFoc}q2x<evL)Z~~BqiwB*3`seP@qE&Ed<9BT)!(= z%1S{A)PD6ZEpf^(%}Y*&hc4E%0MQIS;z*$=zXWo45HuWI@=Mb*@=8I+<S0PT%1jLc zsYyjm2Y3wzm9`)UgWA3@0}*5UplAV~5eT;+7<63)w8(%(Cc=VpXeutr2cKXA?oUDD z66yNal6+{pUI9E+m6-==u_08TI$r^Y@tJugpaXG14hOdoLB2=?^$JQ9ia_B6I*Jpt ziUPci0%5ogXt5{gWU!Ka1;`;T3gwxggI7VP1eX>lq~?`m7J>2$*m&?EJPHb+2?vmE zj$reHK*qzv0369kxy=z;`zgTA$^|Qc)QBO_<9e+Wlx#|KATzwSF-kV7wt0!Usd^~4 zv#HwYLNvuF+1aRqlduM;Ajz~fuvW;lfo50GF;{u%B^lNVncCW#)v9(jIhl4!3ff>x zm25JhcBn&ofXSIf$vLUI`RWSApeoK*9em!Im4c0`EzG>=%vim&%$yu>37~4HZfB#9 zY@ljpng+7coW!Km9I(BpMu5dt?QB$QRqYhg^7C!<b21@38~xH8J9w%`WFgprGpOMP zJ%t82;8bnP5_3vZ6;$m&?uJ^Vpad>y_4P5Ey88OM3a)-G3IU$33eFymK_LpdT-elc zaUq6TG*oopEh|{l5ES^%`MCw)K_t-l2<T{GP&tke)B~TG50eAOfxbSdF_@NFl&g@E znv)8;y#sVYK3EPzBdDhfQtARxi5S5_IyV6_=%<njTH>jqp<V(yJQXy74>l3x9FRLx z%Tn`7!0vzxgQV2KgBj|GK@yGBvb++Q2SF-e7-R_erX}PX+`vs=m<k9DRtGwb9&}`T zW>Ky$$a9cU31xI)kSig&5F|)H=r%Tx7Vsc<MG5FEogxi&kSH!4(EIW*HG!-IA4HRy zSAt73_<|A~TETK4jVQqea;}Pox^iwM*n2*pG!HuOD7B(Q1FQo}z^H(nf*dH2?z1{1 ziGVxMFe9M8!Dfhtx-ulyxaAk+s%t`n2Gjw{&r{b?0EH1YZ5Vcg(<R!TUXZUq7}U^! z6uB6lMvVT06hbhx-vBN<VM8Ji8AOW_)IEZTK~ifGWULWKdIqUfNzFkS@le-;_**xz zxHuJb#4;pBM?+I^ERwI0ErU7^wOI_Y-AVyM!#!CGaXm;oSPa~Q1Gz;@!LgtK-dzJ% zE(!(tnb1RD6+jz3prrt4Iuvx48>r?lE=jB`hP6{b!x50VL>-0Hiqzy%&{25``Jj6_ zG7<|wht`89%oRX=SCEw|@Bv<woDRCNfj}Xl0UAyKjpTy6!q5Q}*o_3B8|FbLSm>d5 z1wm^DxIh4T&qh&dVhZ|owa}0OQ(6k(byA?FSVn420eB@kL;|$$1biBUI%GB~zqACr z0RnnJC+PSUr2QbUAr%d9oNB@&3v}Kq==My|FdrnIQ^EJifdUAG!OC$QiUg7e6}3gF zps{$+%4)<(kYG206o3jF@Z?8+X$fd+HmDE)?V$m!{(?Cfl=(qwK^R><xD|_C6Ksbi z%5WNVuQcQURPbVPxKogwfpVml5@^B;G;Rr33c4p9<U&MvgWLuhIz=%AG4Ba60i{$& zQ3=ZMu+#!F3WQM<KwF(y$_wynW-A3H&{^(q2ZHn?mlPOlhd>HQvp^SFIXKu+ZPQUu z(lrJx!2yL7$apYD)})t~n3C#W3O;5LED6dQ5JNz2g|I-gO(01vg-pmsAn;mp(5NqL zwgxP#4;cys?FP-vD=00A2A#rTs{~W56srf?rJ9?VqoaT<UzC`VnU9cE*VKd9f*h_e zGr-e_RtoBwFoAfek-DHmVUd<8DS%CdD+lvX)k3@m_9TRf@FisNiV;Lu3+63QGSBo6 zR<Kpj&kV@O&r7Yz3`k6=$qdL((bp?UEiTc>ODxMwPb|qV(km@aEpkjx1vMH#n}!vk zLruQH!6ikhiMfy>RUtD?Low4o7&?ao&)^FB`U+vCpvE=mApK0x(XozY`I#x;Eks3` zDc~l&LRo1lbYjT}G?G}7n3oLc?SbM#UmtXuDL9Zos!Q?}ic?cTO?ps20CY<|cv>Yf z2V9mZfTvd=D}9XALF0@dBOnD8L=?K{#K<ZyzeGa`#?#HnOi4-2(}f)P2|DmmNmE@D z{cfL3o&2OMlw78u03REMS_HNWqzq;>dcH%dGhtO4R0y=lHYKqnwIDM&JGDq%6Le7% Nlmjw^i;D{s#Q<wlEhPW| delta 549366 zcmaF2?jh6UH8G5e(;dEgi`N%vR%fPZ<V6?7Y8IuIlosVFfY^Ge6$SZ4CB@cdiA4&T zwjd$f>P)L5og6DgLmjB3RdsExHB?hcbWyBca$-)7MkY+JPNoimovNvmsh4A`Xn+u_ z1)1%cXIousovN2>TcVSymu#D-ld6|#n^u~aT#}ier%|F=4YQzDCsi*6Nk%76r%1Cp zRWDzoL?=(Pre?b1eI~K`5}iDq>g4>qw9NF<qQs<}RIq#VN^?`8JOiEd)Do+rT1}97 zc}V7IR)gG=XIrACR-zXlpIYpjpHiBWY7ch{!YO(wscDI&IVH7L=#qMQ3MKF`N!3fy z$kS0uRMN@Q)X4+cmycwhPO4`0<X#S)`VyT~uwx2rm6UW+HB$A8ZA~pTYc-<bhJ#d8 zm%zdmVFtv>CAQJA@MzF0$qz0m%FIhgR+W}tqyh3ANTp7yt$}r_O-V*(v0hGUUV2G= zhIOj8HpHkrTab8kYOHl$v{9^miC#fzafXJHLvCtHW}<?UHb_)ksT#yEjMY}ERnoMA zs>zEsjMc1##g$%GerBGAl9FbvP6={!rt0KrRx1^Q9jIh$TT)q&nqQx$kgBGpk!l+q zomZNZqm!zmq!b&gX$^C9k!^LYPNuDabtaOdGpsXVZqA3eIWsoeAl6zbuQWF)wFqW* znnJ#snnqD{eypvcfo3hpNQg<P5Wj<rsfYSK(Ka<Y6N?Fn(FU<<YDLi?I<}@pBTr3D zF%c9xAi_4!Do;&K1I$#?P|^l5w3Rd!67y0NG?cXSw3RfKG<Be1l&Gm$TdPx2TdRW{ zv-O(TqP9dQ6_UU~@s_ERZ(CwpQd3i1tCI)`wKRniSSqwu%1_ElO)gPVw6#rCQ&WN& z4(8X?Xk^-!fb_$ZYl8E1u`NtpeI8P1+2`x!7l3kJu~oixW|{^lW{UNSQu9($i)>S& z44q=V;*!LY%;X@jxLaPaZ7RBmrVc1viuK})lk*EwJyUG+G(p)F<eMB@f3SP?l8aIk zOHvgziuIE7a|=pKQd4SbKuJK;8mb^WwX#^FNOQWtXK&Hz?{t0G>WiXFVy$zcOJb3e zH#F6y*4Aq3Ak4DOfhNalSXQ>mgqK|TIxue**P_J-D2c*?P@xD^0)dhZ$l<BB_28@n zOFPKfCOS1%r^q%rI!`Y%B^DHNMVi$`dPS*e#oF5Nqzp-WMS2B^MJ3SO2TFn3noyzW z%vg;)h-`EwGz(Z~+CYW$a#HK_(o0ZuKr(1PvMx<)sA*7V+99-qbc6B(#0sdqEvmd` zZE8+&YBkKyiMG+P(A<}&R}hBo@I<T*fChtYb!LhcC_r>T;b3K`1NOI7Vr^}0Ej)xX zH8iWI=U(@g^C>Q=%t=+!L@LTE3sP;BN>VFI^plH=m2}ed5(^4a^HQ8MGILTiN;Gv! z5XR(#A_^QyploA1{op|hiOH;%;>t?u+9i6KDcb5vvFe)8h{;UT$bi*$W!6QL8_Fc= zi!^I9(=^f{<zT*Ting|Ok!?XujYffOriP}bPO5F9UQ%XWiUuf!>J;hZ>nIv(>f~XH z8bCr&p$Mc;C)KtXSsO?P%<CGU6jG2_l$uxKmp{3)j349%nD0|T{)4N8RMJpVFS)qb z*4DNJM60P4>46JpumG3^5-QFwElN)HO)LNl!+B6YTc>K2*cL&ZnWv#y3k}Aw{5*w3 z4b+myHqTy3$*Krs7bx&b^uVzcoROMZqKV7_DF{ieD6!4eNY%;Iv<4?4P<-UuPA`;k zmZ;Cv1QlI+$)LFN%TGxywoZ&rjRn=UMX9;@WvP%z1&L|uBtny>eTiOXUU6zsiBoD? zeo?AMz7AO4sstq=<ikCXpQlg^az7*z^K4T=uF?S&T)8Qr8cZh>R8Yaf2IQY2kOPWS zOB_o|iZYW*OHwtIz=5cwQ>3Yrsivlpr){eglc%qxtN;nc&>$aMCGAW-2(LKWAXZyR zK}%mr2c&R%!%9;VCME63_nZw<Gc`3eH6fCq8h}u^<w1fBl<%xd^wKhmic7#jVy#)C zha5u4a+=oD3s#t_ap!?57Eoa4*iL7>?JdHYlAm0fo0?Z*J-zUSx44pvt5c}Eni`Z+ z%+V~#D9SHa$V)9(a4jmzFVaw&d_mW4vZP+5rV^xjD7DSgFg4NCNd{HEX|_3PY8o&z z^)gZuQ)+4^D}EN6zF-a$hprMxKuI&&AXZbSz!sc6Qfv)$GHewMb;^*-=~|t1i2KCy z63a5v6HD@o)YSBIi!)OdqRn(IV<*QMYS&w1Y3G2Gq-J%7Z63Jp%Cs#7$1*Ih6lr8? zBC6C>O?csz2P(YsZ4IpRZ8D)r$~qs`Zb-DvjLwhMDYi|HP6QX)pn5K?zF1dRCl6Ap z6>HX}+H1gU(*aqdX_X0TZGmD56y6ZC^DxXVw#|#q2Ui0IwzjrlgNqT)%CR-D&ao** zDTS?bw6!&h^$MavC2Vv~tcIp_N@`AONvc9}bTP<zph6Su`&{H81vvuLs)Gduyu<*v zw4fDZNpxzgZJtia<T`sXb)}d*CC%De4NcTm2&mQr8CIl|X|1oN$Tj(LuCgJQf|f!? zNl8JmmA-yfVQFenC8(y>=TguD$#~`^=ai<T7Apj2R#oMs>SYykO`f<^f(0Z!*)z{@ z+HoHxMy|>8^JJ$x9QWa^H!?6Z*EKNKH8Kb>w6HR@jN($z(&th{b+S@vajF8SftXyP z1aH_tTZ(B4C2DH0#tuRZ)-JY3q?}YeSZcM;(@51(G|;q46GiG%WTt5-mVnhvfB(x{ zZ1S!`4N*kR1L}6vTIFe^YSvD>?JX)>o|%`DUv3YftV%L6ixH_UZ~BId-cml`VpFp^ z)i$-JCb0w@PvGJQ+`@6qNd;v_4W;7bqRfI4B~9x*Jy5L%?(%>#4@z;CH@Ut{vOZ4} zS|~%xG)Re-YOAOS3IcGuJwquo4-_CJ(A1}sXIojK2WnDll)x%cSQ{@7)D{FaTq{fT zGK<5({?RDWR8!MXN-Qc$tW>hKwau%k0VUSdni{3NQfJgwbgG(Ks-1zFTB@$00?1Y* z$K`;tBD|NTmzSTC>X(?Cs-`x*F~MJ=-qzMORj(x9C%-(k$T_h%RRc*cI2(gf9yFnX zUFQair&LY*$`ZZwqSOM75=4NPfSQpI^@@tAkS=G5PLWQDrlPHFUah88D%c4jl?ACF z?e!S?5#2bD)1aDQeG)}j>l&;Xx8Af8h|Q@wC7O1+hEP)+OY}-oi%T>hE>FwMDM_s_ z(n!?-bx^G|QbF+p76glF>R|I7+;v!NP*XDm*XN)h2Kld66Dcf{A@KkznXENRY(aTm zQ%%jVUJ=w%fa$P?B@6|mrc)Zc=>+PELxNVJvP3U6F*!q{L@zh7BsoLFuSBz^COQ^5 z9`ZD+Q={`hJ*!$xom50}EdZGZHKwE<Ar5M?RYPhXB-=AU?gq8lAW1yax}>PGx<pM4 zH7#V?mgp4}<>zJ=r)t_~Lc+d8Q!gbyFI6K|Q!gzsGe;v&(+X2xqHT#@Nk(cOLKmoG z1xh7}1qC^k8fE#JDGCNU(Iv5Z#W|VDsTxI^nzhMbFPCUm=Yeu2iYnx`Mwy0Ybz;f% zje)u%5*kV_{=Uxnc_pcNB|iCyDXA$+I%S$Vd0^Rk4W*p?M2JWws5(zfsYK2P=^C2V zpkf77k|pM)<bx7QYDEEvshzG@nwg@ljR?kEMDQw=6qTle@@`2@jZ#`-PH`$IpO=8L zHK-Z}%h>0Y=G5m{mDt+aYL{p$DcNh6SQSFkX^E!2SFpbys3Ix`H8`zGkP=iSBw`@Z zQUq!&LBa}DRG_Cs&CE27B3q@D#F9i^C2deYu^=ZgIaR}{L`O+iMXg>*6SWA?f#o+? zDXx)cTcVea+zu<!)YPm7rG-4(T#Y=WIH`3j(JM|Zfw~UdTT#ffg}4n?4dx+&D@mh7 zryi{@ZK#uIYh<8PY+Hn7bf-u!xwJ?_6LV}Q50ojAi@_~S9q`yjj%~4qrcSACo|;-- zv@vLKpc33F_X7_?M5o4r+RjP^74=G>mXrpXWKE4yK?NwnO4Zb~b2Qb|LO~T+YBE$E z$b*{T9!s*CT5_~;tfH-Lsb+PlZD~ynh^vzaDzc+vb&_qhb82b~tyA)=^KJ8MYLxU$ zm2{HzZSz3|47k}@4>C(9S-VuTwmc&<CsiX~(biTYALM#{kj0?#D_>1bS2qzpgahim zC);W#*VKRvH_!o%0UE~ICu?hfMtZajHMR1hjbg39BSJbw;7(;}US^4HsZJ4SD4?js zHd&`gFEua4Hd9lxUMCX~A@QK}3u<bl>VP6WzdSFs$OYP7)hV(q0T<t(8bl}4HUc!P z2#eIrni`E%+dRFb{FF*izJ&J#^PnRMuzI#gQ&T4sl!ri(m8zqZ!j)NEkds)cq^Xk% z?(3y$>L}&q=Yg{hsF9y(tCW<JpPa3vsROprHd7}PDJN8bf)CMr%hM^+0kr~k@@);k zeHuu0Y@KhD2yR^#*_MDBmY{H`%mEFc<k>>mdMRLs)K}`H+H1gF019eQQ`FWMoCP$B zbd(_KDwQ-L10p&g>6#i1RAVY_m6S9!b(BEa98E?|Exbgd2vom=blS#)N;OR@h>eQ2 z^`Hc+0hWOX>G(pj6q3z4d77G#F*ryY7veQgsiFvOH>;^>fP4w*4nqA^36{ZD#gs!r z5EScq)<uHQab{?yRkXF8K5-6{7^6Li5?2AWK(v%Jtsq$%Tz`Svp24X(smUezMUFW+ z_R|IDG6~niR7S_@Koo;&^qQJfH8n`91k?b?O)W}K)rc;M)ydPeLMj)sAx;9-mtbev z8h{fYG%oXOimdarwKbsuQxcsQtD}^jlb@8B<64%OqokvlT2oUGjWAFxh$4$zFFS+m z0o89hnTRBmual@#tdpZts*|jf2I{7Q+ljDT;8v8F4sI}l`cu)dI*{HJtet0_Vv}K= zqOGl&S)Zn%k#AcPof4}FX}jfv%3(wU8I%RU?ZJFa&B_uzNJtdu<b!h<r~zRgogZtJ z59zEcWTt6&L+gcnO^8zyZ4+y1P)A)-k@DK~*B`vO>NRzWZ8hAXMOQwkm7t^q8p73# zHjG6p^>b{!N}`KnYihho^x~mo=sJmdnR$7sMIIr(KDIg0hOyd}C3+bpxj6wvsnEt! zzNU6gv=OMF%K?q?ChO{2YbM$z>g6OBmpIph1{AE3yqAbH#sC^~NJHvO>m-63-q3p5 zR!Ip`eH1|YdoaIZzQ&KhZp;;geO&2Ietn+OPqEocB>tn4!p<V=OvE(^|n$sHj zIz^ynp=PF<S|-G7q);ve#Y=L2UP)qRUa>~L9%>1g4{~$425PA1YwEx|4?3l4YS|iz znmT!!pu}6B4C>$7CPpV~YsXq^M!}*G+!Ls&QBu-WQ-k(r^Wj-D4N)AcfQF&K8B);z zAsT`ZHAIL8gW4%Ym9WNsVu@a2a(zi=St_*TMKqjXLrVF13XX^jppy@2O(g0RgW3~_ zlnP3v`DqHNh{*wXLmX5(7TFfn)a2>FYI#VxR1E5gq-xfK%r6FKu+-?{SRI5XOF#p9 zpc2d0wn$A4!pH>m=ks)mY~f~EK_x(qCQ!dKFC8%)o(EE0q*DYfs5GrKGHpRzB&TTB z>nIx9+S+DnX4-~;hj2g{Nih>T)TU4ZtGz&qK$8)Ppvnc&g-1+qRhDRI>gA__TH`v2 zp!zMRQUlZ|)JZH#2M^{HYu4&y>ZO-vrr0KeshS#%M7?^j0H`YgZYOGj#+tw_cX+>A zvl`TxFH6lU(MwE8ftZ=9lc`grlc!mWRL!}9A`0IB0F|IhC7>BJPzuV?Fa$Lckos1s zR;l2ORSy}a(orfYQUZ0@G?eU0KsB_IP6=p8sHUdG3aPd4532lOeFJb3wFM8Tf=hXn z_MZ|cO(=mz(DaqGA^lq9@!l+uL7;-WKGilcRWG$7HCY3q3ZBSQ?I8lTsnLe9R-k4# zXq*vgqz_^PvZ*eRAOM*QuH|*$1vMzWf}#)+0^oU5-;#R0jKpG>#F9ive>xvjizg;0 zr-IsvpsWn7K~i<{K`q66y;M*{6l-c$Lx*<~^)eFkQgTvt5}{I{P8cX-XM)mqDL9Yk zfh(ud=*(DXU*8&5KUJ3GL9~IR78I)>Rnd8|nxJMfipz>^-9Y&j=CT}6DU@1KlA4#I zQC+K3tf>QSSEuUafQA!c$w$EtDNJlrrytB^6tA~d%FHV$EdjMW^3>EKp=AyvxHaul z^^!AEle1G(Kx5PpmK9V3sH3c=1|HK-EJ{rTwSMzJ%{tiRR9Iq8X{s%JY75LoN}`@1 zx9H^6>wso{ZA-!9z&Vu~(Xl$Ika5dQoqVK<)j+4f7FKQQq}Ued8tP=&rbZjY>Xd<e zpIHnaYsdgMw99I03hWHk)X;k;3K?o@in%2aZ#n1W*XO0GspY3aI{O)#@VpM`GQ&bn zBNI~E<=d9%r50*rYFd|p<~gGcVr?^^Jy_6CQl?HmxW3cS)YR1R)W`?*Pj!kkYr!rm zP*c;$v~>oJAw(O*!m5gT$mp()qM;6GI7BDkHWQo|p;-}>PBW2eL1>}@8<nrAlV4L) z1g+qULBWulSfEj^k%?5p_-pFq*up2M(rgN>)3miUOKmfC(iClNQ`G9!G$55&4ygZK zs-tKC8e-GQ0oQ?$W=642xkf3%NKH+hJgA?e(_(c>b<)7z%K<0vWZU9sm~Fa-a9=__ z398x?3p9##vNUzlYz?f_Y;x+M?kNVD1*`E&!Nm!*##8i#r}a|QrWx3c@Y*+7rxesm zF4Ze8N(QwS<5SBLb3%(CK7nyGz|xvli5jJlhCn@}pRZSx3hCw+gXXL?b&@sV-6y0X zF94EeAuTFU$pY#<fQOf$%^T1dl2r+)H(?E`ixh1&il7Z?&{%a|O%15zErK`NYHBLO zO7xO*QWNvQ#ZEb>ajyfO^8?Q$rGUE}sNO7sr5tFOg1QFT8s(s_25d}HQwKH=1}{L7 zJmCZL1k?kNg3-1F(*B3lao`?lGH4`02UKk*+U9}!^Z`Zr1*t_PmEg>*kqYY5fM!dT zK$$<WrUuk2hBbyt^y*PtL!eP7jYLo?1$SgYuF%xf0p-Pl%!<?;-^8Ny%)Fq?^o$Y> zO*OSrXqHUWR8z}=vQt6vTVz|TSDu+tlA)7nTdbFxnHLV`<bybg6%Y<YydEThBn;DN zo2Ucw4#W_sVYWp&5KUk`nII0-Fxz}hO=y<{G%0VNsI8=Am569a1%W*RZAVpu7No!m zje2;)OQA$V(;nQdfz}kD#sDZht-w_{h-I6qiKC%_)c*1X)s&fO8YQ6mBs~>gSixtd zQ*BE?WlKqZXhA`0J#>&(y97EO2A<?BgRhs!12w)g(=;?nY|B9X9_>`k%sd4oV-cQo z16d48FW`aC<l<sbLMR4J;6ob#si2Y{6t_rn^|m1Q*3^`s3@H|Z!V5G|3^K0B7B*0l z3Qwv<_P&WF8G5;i6&eOQMbSpFx*DMIY)wsVjUw>K3}~oD(+X*n(g|WDs4ovKrgai+ z4Xo=yRd2p+o~^B|Mv=WzQhrfNYLSwa5~##T%_~vTv^TL*0;d8{<(F!2Xa$;GGO^Cr zwl&gJ$_1xKkPJBeYePK;TA`#}1?n$@ipoq)O`Rfp4Y-kz0X2<8U6AT}(3nMuj#5El zN=jy4x)Q23m<5n(6siTP1L{<W25lv9qE>?1r)i~;h~yZorbFzk2U!X;9$5=s<6#8= zQWE!ogfAp)K}8;<T*$YD6eZy4U}*5_CgoRv!VFXr7=zkPI!a0T6~UQRAh&=jxlDLG z!*Y1OrhUGZMiFSei$?Br$8cuR`kI=2@aQ<WpomV5)znc+EG@|g84PN7gF4De`Dtmz zsU=F<pf-RWB*DYddn!D=$7<?m<l7b`78R$u<>V)pXn;Dk2AbN?6jM{9k%%Q><Z6PG zk~TP@Au>TIBpASQ(EJXbcMSy%XP4xInxJ}_d704ROt3P9<|+-%>Pk>?4(?(kmgr?< zrlh2TMjNNwe{mLLvd;t4?iy8^R(YU7(U8pC)cn#CjVjR4Us{D;W?o5ZQCVURc&;I> zLa!t<Ia@;$sX-NvC~orfrcX4`76uhSxv9_|Ppzg-E;#q*<(DH5Scidp1&LZvX9_et zSe=myDu%5}YQY6dsx2gM6xo<q7irrX>85Jt*;avu^K>$!VaZrKFV;3Q8j%|FVr@(6 zVQC5E?@Yb?g2d#^l1kf5NcnABqKQ0~7y)tzs9XT$T5#E*lWD6FrB_m(nwpndR2-ce z3!1gi)Jx9KOHM37mQm7Diq!;Fx;lxrh{<7_#Cq@;9(X((G(rYxwB+f4Drs2JS%iq8 zNSFhlmP6`A_{a{lq{z%u01Z_^LI^Z%mkMf_f*OA*p!xL-SUsv!W?NDZujs*pcqN)T z>7Xt}I(WoeDXpS7BflIxgIHLaS_&#b!L?&NnCFq7pA8zGR!XZ-($oPpCTwjJ^-A-= zk}05dYH*G%X!tu(FEzKIq!QG21ouBcoO&=1(LvR$Mwn1jQ>>v`3tFE6GgDhzr$8?; zr#!K;SOZptX=qks6GIrIs|!k=U`J_`=ztvyZKBrHB-SIj31nF<bPT2lRDGp_hFUUh zQ=^Mwb&{YJe5R&mb!M6dw2}l%L59Ig^3&6EAY;5bnV|B#%w8!YGbL5YN(mB(V0{p_ zqOEOaO^srDO-((x$_34Yri0eRg3A5OywX(bGFwH1+LY*`Sle_pHINjz<pM5jG(e4T z&|rf`j;$hi-pUmel8{Ag8mXF^H8q&RDWE1e`aFu7nnrz|UVd3>QCd!Zxova?oUMak zMj){xV|7Zw4uTEALSwyD4b(*Ug$yW{APp#kCL%!PETou)k2532!|RhlTJ4i<ORY32 zz~iQh2B4lRw5bQPr>3S<CmB>>L2Dm`NnlN&zKn)aW?oJvWRyL*rUuH>g^aY@+S(>V z24xg&K}~STK(wu`Z9T$uX`s><H2R>C16qd#ne9VLWf?HX*p}A9k~_%b$+mDAol;x4 z$;qJEm}E^&9k{G5s++)_lzLd`tEp)q!rT^=a#B+Bl&~guBz1_`19dYI5)rmYGKR6p zQHU&K6kA`b3F>_*8iI>aaH>zy1o=N5oO(fS05!PO)HKR$)1eiDrWLr1fDJo<vJ^Ol z>r_Ld#R?Qapjr^7!&b3OQ>RQ#4IEkE&RYRAc<W))@0!(RH8o&)P0;)RWDOD|zk&_d zM0Q{$G<krsf(|H`XhOUZp;2ZJ$}Cm}Iz>7KnmS<rq}SAFfCO!GAX7ykhiK%0CyR3Q z>WfPfi%N8$Qnm&tV-fD4;uc=-=zx0riC|~sfl7xGQ0Y(vPLzqcsX5@)26>>VAZVcg z9>oU_(CTFtgK3R?Q12kqHb2@h7PLk-Ixn`~HXpo_DNhkRY^VXMvTXBppv4Qw2u&SG zk0iOc7+m0jiU~C}CCG#=sB}-%tj@Phgihva<ZB`{7sVo6o39CRbWM#0$W+^W&>TZ* zv=^vOgs#m4x!V?L>MRQ6eNc4=uWi6HP*HjXu(5JjH(CeOv!7nLj9IuIDZ@ZLk)xNI zlbTx#N@hrsnQ0oZQA=pz1KE;lo10ow6RrVTxQNumE``J#sJ)?Gs+Uq)ln7chtedI{ z8d}vyh}6{78|dWQ8tN8-TGu)`wxy7|8RkywM4KGzM9|;@R6IH{R<EcuPXjTGTdbFt zUy_+t8J<}JS}PD;s*|si2dcVl4As<f?DMQZr30oSLmkk1v|_#bqSWI2oU&B7_E=5O z%FSAxQrlus8w|9hK%*KIAXX(h1x5J<#a5u<Qux4FswQZuFtVVcflhUCL27blVvcKK zab{k+RduaSDue~n3TDCQH&|;ytN*7fu3;9gPu0mU%1qD9OU&_yF0#(k0Vj7*I9kC1 z8Wx&XdGLVM0XJxhtw6KA;HjbzPy+|C`vAP!3lv@8)DM=_DA6eet>rETk0*hd^~HK9 z?gqDxz%s>p5ceb6+0f{KOkNae>J-)L6qn=|AXy2`hTx&eRC}~|wK4z=n8MPN0;ub1 zomQV;q>*W>XaFC*glUS-gG9O^-2PO14ct+R9-}&`v6`AzpjCFDW$^Hb1_|qcYzD0h zPqr=9s|QCfI0w3GBtwG-HApn!v$)_EAac%%&WCPrDb*>_f$4^i{ei1}_;4a<IyS!m zRJK%>=)v1&_1VQ5rQo~=vm4w7($oWmEU4HjD9W#>1kdv37wCXyv5R1hVdx-OvQC6f zDY!9@G<FG%L2yC>4T6AU9g;sGt=AHeo>IMn`l9^wBGAAzR7U}n4_!wC6$P!Sfw>Q~ zE+4cA5xT+#ssgmyMibWRgNi}gfMBPA`x&{ZMWA&I&;jNg9Z(Ld&$TMiNzBX4wJOyC z``iku8O#Ay7^R4owHIjg05VX3z6ePZy1hg}38^RJjZm)uZuY<j`aw&4!BY$M@HM{4 zIf=!^pxJdLC4`NEkkS=2whYQjnV=L5t|j2LMJjk66+F9=ssk@NLF=8X^J;4Rp$*a! zP5UB^5}iy<t3ZtsZKY@>Z4JmwS3PLJ9Mt2>PgBT*HGVSfQ>~PgG_{ptm2@&e(^#O9 zU(o7l&^%IJO$|hA323kkw!AM@QxjxCDs<u&)b{~T7NlyzEX)KO2ing9F%jZc@BBQ4 zk`knFf(Yk>mPjJ)%Yje5fqGzhwy8R)wn|#ib-|#HJg7iVo&KPXMYJBeDhw1-s2Lzn z6FjnOU1Xadoe7?pRMH0Z#EYU0V(m4GKno(ktE~(*Yig9Vlyo4~EU2!9^w&!BiZe3P zN;L8`HLcL)z<ZMNKnt;8Z50J@=LovU2j(e-OpRhl8I=ReMfuUiv7jwz;8Gg2xD7lR zjk>B0s;AVpSOa1pR5NT&03JG}H8u5#H8uIsrLp#j_KF%gwxzH&3sxGbdZ4vXpgHzp zJ(yogHFYvIN+Gq6rcMrc`&&M!|CeYBTAk&Q3bjcg6InZ`F;Y{bm>&)5u&SwLYJlPb znrQ3u^Az&HLkAF#g6FJ21xaF7VnuLjNl9j2da+(wPGSkPz5(qZ0+)Z_rbntKq_3lB zYYQ66Q&ZE>$c)a5wJ)(M0xdSNt*+J71TF9bNy1BJ$V4|JU)O6W8bD?skcNtjzzzbn zQa}k4l#_}e4K<x&(0mYN=)71b2Q<r*Sds`1BWoosQ0f3r?`!7hLE;`Zf@%wCh=G;{ z<!0ulf;80Bq=Lpj>w{8@3-a@dQ$11>Q&NjGl%Ny)x*#=5ki}C);DiXyAH|^dVR3Y3 zteP5#giPOnrb2Syag?cPom7;Xm<{U9fn1ZBr;w+aZwq3ACwHqsegYeor&$eJfT0MI zs;MafjWCp@7L|Yo9Wu3*6qK|<60x9`U?$YaM9|2QZKh@|xO<uivLYWgqySow1=66V zhHy*1rVeNoIW(^G^Ar%HM3CsttVawtfYMPia*#rYv%u3V$)L@7AeSeCo5@IS)hvxp zL|vp23yCC{UlJiL)_mJ!Sgcs*gBLu2=2Pn-q3@QNnv+r-ogWL@FA)urKogI(P1V#< z%u!PVZ?^#D3^&l)SkSUD@MK?NNg_l5G|vUkIpBU!z7CSrp!kENlzdR6Sl7eKNhK{% z`Iw`omZNBEn-A{SD{3U#mPY4*qar`HrlvGnNlQUVJ3kguGJ)f;6l7qrZKhsvK~83g zhLVDkrcQCRVXUpKEvU1EFrYZvAQoW;n5U^(tym8lCP=ggsmqMDQZxXq&;utg(Aqjs z|1TMyut3IYA|)=c;zW@BiJ<xkyezg@Gu1Xx16Hhq);>b`h-DR!`mh?b`!3Z=sh}P- zMp={!+QOlv1E#DJ?Mtkb{PGo&^YhA5i;6Sz^AysG@^eAyQCmr&Bp(z6wY9LFaZrPb zOTiP?N;;sZu}ZCl6iuLg1v-f(wt3)%@}LDtI>jZhy?g1YB>_d#=L#Bg*6ZYy*ycm0 z3v^1sY{+n%PBNGSDzA0Yz|73Nl++6UG@XJHP<l-%u`MWpZ&=mI0CO`Ei~Y;<KvM;v zIU}92659+UHR&a`WzeP9kl__go%&p`VU;C_F)Q$XSx8uc2U{yk^wRR+!>pRMI!PtA z`f<@Q#WAIBu5NBI6^;h6+BIl=75#Lbc#t~X++tmQor)4$eO-;{MBS=bP5pG8a=3N% zd7yR!eBA_Su{&rY1v;)=3tF0#240$9P?QfD@U^XmY^JbMGS)NFGgQ(^&d)0@DJlgm zZnLT^(SfW%vog>r$p^PT5RGoQEjiFYD9OmI2dxW1o<c&Z;2}eRCH6?li#4rEYz*u{ z?c(SXZ4d<=dy56{Y=|z2t<?d=Sa3;VayG)|5=fB)9t?)e@Pf61A{yp&4NV>R#sh^^ zP@l965=Y<-x;m+#PEv9PijmMbg4f5OA<+`eTAkcPq@G5JX7zNz=Zs=5&_*!GV&v9W z9z0Z_fdZ<xQ$Yg|wL0K6-3Tk8CZ*=URt|v8LM*TWZHfWyyh7Fibt6cnUTUF+fo81^ zXyF+iCAx;7{oIAq9YlP@#i60AlLuOUtpN)9R4W5bYp{>%^XzO5)YS59QthKb=11qn z##%+kf^_Gl;Ig2gC>0v6H8mhjpwb)>1(3+IN-ohU&Mzvl0_Ds6q7ofY0hgQ#<`#e& zUbUbR*wlJ(FBjBcNXyfMROyIJ1c`9))+^Ao1gNU9g@;tMK`f{(p;K&YsFQ;bhIzKs z7CMBWl$4(jnyE&tsY(P5FM?-N6N~Dh3!A{rFwi0tZEZ~*Sc4a~G+Y5PM~u|rNz??_ zq}8D9zP7gD&1s2{G*+yut7%<qlVe>BS|6FF0ZRXhwi+b}7e*IDD}Ypm%)EMq63skY z(4Ioj+E37=bRu-rrxaXQfqF2R#Q`~qnR$?utWgBAI@1=ME#ch)&{B1K4e-)3MMIr@ z(CS)L1$mnGd7yZ;0?UD0%3wq5p{9c6L3_JF8?`{00UR$HpplLuO<1E6>N1dPZHqMF z?Xg5iR6=xALk6Mpt(39?LEE)JT@OeZqYWOsDFSUN$kou)ge+aCPfpd)k8#mY*HKc^ z)X6LkN=;0uv{E#H)+Ml(G^juUS5V->6tZIwluPsSkp~1cLEH3;VO?NE>V>axQ-YZX zYU+XeGW7+ZwF0#|uq{bgG$}x$5OgR5cy<r62@9mf4|JwOW-^K%P-_!hM1gu)h;2|B zh+_dj8?<0edE0thThQ_V#mr*AL_duZU8Fg`5>3!*JLI^>v`8lp+G1DKPz3G3h=%OL zSAfK7ET~D60xgnCG(m#_iW;f5#h?xtsMnKLnpY1#<N}^IH1a@o9rzH9R2|UtFf3bx z#=ujN^SP#)8mt=3)3mj<O$S9sW--#V1Ey=i?S4?IS15tDIu+{;VIDB3)d2+=iY{ou z2Z{h&+Y)=w<`FB5%n9;0QoMo;$xl-#u`eizM)*Az(T%l&si@USy4r$(_Cw34n? zCmA+`iy{Yg6R3>|S$Y#+qN9{stg8e~(aEVA6(u_5px^*?(~<Ooj@tkw5Ab{?sKZ*U zQBn_S3xc*GK<ZrUA{)>yInaU|*w!-8R8x@-sAsBaU8Jpz)aM3|WrN3@!PB!?G-!hR z63{SKD5=#cDay=6a#KCL=7I&Xl9Cl@%mB$dNhP4n391saQ^BPQl76_KK&cvW2nfh9 zMbJ4W8pRrrw5U;{30j*8T>_p5+kP`$@}W0(y?t~^tW}AoRWdZK=INAxW<qLpG9jy( zQ7i=Y>!6VUvc}dn)n3=oDh;X?vem6t2i!tH(T7<6lxM3ATTP-<WNV;P58B&>2!3!N zmw*Qi!1H|Y(1X@3wwXF5wK|}kc_`+C+y(04fTFkvwCy+37Bo%)U;US8tC(k<X_F5= zH$*X2qa->rRwom*XRtmIv|}FB<N*u93)Uh~m?JksKm)0eN)g<l1rNPPgE#pWgTfbN zJE)He^-8`?5qKsU6iSM=8kx2rJM&{fgV&(40D5pjrY5u#1Ja!j?wx58)Bz2D<mHcv znzcHhg}|Ug7C?iDC}9I}G<a|Tl<?ujA7rm1^!$}PThNw4omATrof6Pt9pG9DR+@wS z2eq}x7S@=AHwJW!K$9%6QUI}{0M^J#g)~%jia<peXc`{Hg!<IHl44D8aSLA64B7|= zTH{;-=7DEfK|a&g*2%2Z$;&Uda!D)!t->wWDK0Gl9a3bKTT-j3gIv2n%b4KG+@yTa z)^%|EKN`Z-%PdJP0&P8ywaqU9iHRrW=O6^ZBbcC~Lt}F7B3EA}<gOvyhv5E2K}oa{ zti)H+P6ds)#bRuAg{(@=F0s|uQskPPy;Oyf3$#aiy5l3?=;@5DJ}ROh-&iRa85o-B z8d&HWSb#T0gN|mBs0SrD_-G`k{RLjynygcxlVS_nk*kNgRxZOf)gBZuDc~UzD@#yZ zgIDB5$HFqa5`6Tkq^1T`XMsw(3^g@NMO)hpH8t=WZ}`a=^?4u@6hXao4Uowww$;?6 zTDgI;PnMdRzeXzPe2mnZnk*eZ$ZR~sBsDdS98iA^vN~H+6V%<!1aI;HchN0vZEZ8a zEKp}1JfZ{LNZ?fInW9k-Iza)N>cCC`ZPN!YwTB5pW+xIshbzHG0>G;rY*Rp^L&#=j zg7RFDMyd{IX&@nUsx#9xa-xky;3r~5=|MJ&=INwP{_tB=6qFrwz)sQtdB-?bQ%x;? za^NX(W;L}`5G@R?VHJ>d2A&cR)&MR3$^#Ak#OoCnC#tC_Rz;V9#wb8zCyJgmHHw~) zVW|?(_Q%XL4R8c$rr3g4jDUxrK;y!&Y8W(f2U(E~DPJ`}C-H#Cy5U3JnJG$|n)b!u zLkJ*MW>Sexd<kd=Y;h{`xfhu!N;<{1zMusH&Y;6bK;tg3vJAB7FBx=-l9IBLb}`7k z+G!df0Zr=y+ho10{QAs14J92VO`R0m^b(j4)YM8fQbC(bq3cpLYid$KUN6uDjcq_9 z5fMTudg$A{Gz!2K5qvvtZ5n9qET^&>bpDC2np!IKWDLg=#Lzy-zwiMLg%AxyQz5@Z zM@hvHv<VP-P#iRbs-am8%i9Vi8hM~R2X$R4B#GsLysT+gp_iPPoRR7SIyNgqO$|Do zS`wYAR}USsjMXWL1}l!WEdr0Cq=Jr%fEtE8ND69G!-S)K!K2bh(wQJ>P*s*{n}xLD zDmAY}Ln#eB+Lj7BMgS3v28xQHZRhACMT&;-AVZD_P$~tTc>~V2pz5X;F~|ryP7UP< zjS^T9Sfd1<-G$b})<vL1QK6SuQc~mr-oX$JIwdaF7HN$o^i%|pNAf@=Rtac!7_sK1 z9#T?41P~<`XgmyZyozUDN@|5}D)g`wFb`BD6~S^BcvmuH8<cgPZJu6UYDGzKW>QXO zUOIS;610jFw%}D4*49-hu{X5RHLOi5t%n>k2Rbtb-VlSO1C3OekWyNHQ7&j&A5;dy zj_Uy}vWB+$QZkD{yJS-Am2wi3Qga|Gk=RHXz#cgg^it}fIzb&9t5ncp7O+83Zf3Cy zl00a{8zG`-YYRFEq8t?GP~|XZfVoK4gK`P798y%*=YWzKG!+&h)^EYRu8?Z0ovMQ* z1I`+trV1!Z!Kade_FllwKha4AZFtFtC6Gi=0?CU8t*%In1(k1k(V4NfiW)^A3dGjX z1noaUn!_taa!-kx8hmyFv@cYwUQG=tha_ugRwEKEXwwvUXddLQR9ge^&SFU6rBh_9 zq-33HlLtQKu1MP!)XdQ<1MM@hhIt)f5a_50q{(zpq=2TpQuXpcgC(Gi7Bw}Xr3`s$ zYD$Q-0P4`@>lE8MfewuV@1;|KY>p~H>@NomN<nvkTBkx<wxH?|v{wU>^lNGoVQISr zJpBY;`KoAGkF+BlWLOTQSqI)is#9PaU8qwGZj9zYssdz7G%#&ZQ-fHL1DnBCG=S`d z1jR10Ubt2-aI*sB!pt;{G~3i@U(kkk5Cxhj(n+>Wi%!)m&C4t-P4#pENult;YCzi| zL0fd8RTd-|YHCu!^%|(w)hM+E*D7jirJ!vxwzh>J7I;9u7#1)E(MGYhrO`%U&w^Cj z7U+P*Fg*l`UqwTtG!H(60xVvirvU36*cqb6QxPNxL5T^ebCL;4&)}0|K<Bi9qM!&K zc(B4n(V*6<B-$Vrk)l9rR#3AIxMPy1R}V>_@J>l8Xq7mqS5k!31%VYu3T2={W>CF_ zwv8Cn)hV_$08ghu3<RA=P@0pYXqyTj3DW>Ael7;JQoyGd=4s^X6zSAwg2u9-{SeUR zG*C$a?goKc<FLGew4ys5>ICqrD_H3Wn#fknjP?cP?@ZftaQh}-O-(T$B9w2N4m!09 zwBj96z7&CXKi8utV9-YA=vbX}(9T|P4Xcw2+V`2E0a`n&rKAH|5CW+&?4yfgt%`M` zV>NXuZ9&agP$M<fKG&*DBUh(Drv%ha*3?O|&9l!3O=Q}aSf$t0WNO++$66&?Rf4LJ zJT<lYJdH}7B#6>X@FZcWZJ9=rP6~LMRwp_ZA_ZDF0tr}a@Wx|}G~3eXWN=s}MW;k3 z$AXHqN+>H0Hs=UR%=w^Q3}6N%IhBIqD%my(T0Yjp%}auqR|;usR7NMq+NNn*=YvNt zb&^23N_BD|r&l7hqwCfvwavHp)+o|R)3ho88EB_#2s)M_x)kKVL=cq*T1y9RC@0yL zY1Aj#+S(@CCxNT?<W!Ax9hl2Bt&%i#^6jAxNYqKv$<efewbK%Hl0c<4JYj;5BLNi} zpxgq^6gr4Jqmyr2p;wfelL*=*91Y4C;7wYwI*GRV^))p}a!LwHptHF0K^rP`a%>9_ zsRcfMr~sNJPp#ES1g}>t#jeI1G=&J-dks^UY>Rx3DmW*CT$*WHuLzps18po;w6zTe z<pt2`5}NSk*Y=<tupsqTpks<a40ygwg`9GhSsQCzY?BEeY)18KaV*5In#s1&1sW+D z$(lNOnz8VrF0bCULJzV7EE=>a9-<i5(EuHU3Kj*QzLQ!EnhN%fg`}e*TW#%P>mr*> zH8n+~5CjcTK@0&8p};b5x<)Z*OC#8RFe^<1GFMlhs$rm0tZN8g9A6Et6s?pLK-F1E zbg`}x#0U0DT1r+*O0}?2<K$EgcvCu0r`V=QO)VE{W~xRpWZe?Tak-#lh@jKZ;KfWJ zK~PPtS(~g^P+DJ{0Xo+OTo&gkfZT^DG(l(2<U#7UOj}s<!VY;r#}0J#1}qV3KuVMx zol=ONWSul{CmD1Iosxl)PC94<cyz2zE+{Wm+6L<+*%sB**W|0IfubNUMK8qB9ki|j zv`#ACwon@!y|%WM_J&p{!{#+LdWJgX@Ei;tQ3WkH4z^9SwYANvsY$G<Db=*jP_(rz zhpq3?NVZLi&WP2t&Hx=emzk!Kucnp^ipcsRjWp00QcX=VYDXSol!iYj#T45r`hogb zCDCc%RWzAt8U-53I*FjJHfR%Z4y4RThRrO4TvKQpuUQK^)<h%OR<QtNo0?jRt}f`5 zmUNhM&DzZRG>sH(+YHbthad;1fZPOjl68S?9@M%5jdYz{P-zWbMgTc~GR4jSTv}RZ zfa=5a=#1E!np`lc0itXpA&bs(G&QYrZOb%rHEUr-M~+UeCg}76P-&eDtN%d9ilu17 z<Jb^X3qe{D!TCic8aePSl~Awg1lv|>>ZHRDS<bXC(n!>_N(A?|l62yADs;+qvUQww zRCGdgf^{5qTy^|)vUFT@{B%5Z0(5+If^>Xsm5MW~>Z@{6m9!1D@>0tcK!Y$kZlL88 zu!Cp{Z4GpsYz=fgZ1XfUbwa^p6_^Z1Op$@dfuIQ(TsWzzX}E$;8rCtW)d{n$uGK@E z&5i&iz)0H&y@LFLdL4HVqqI0fCkn>!vW<Xb7#(jkTVN$DWGgtV;R0Vt3EJNWTB-w@ z(11D!HaVedSgR9gs|4MWT~iD`MI|+*X7ce>ne|FKB_*~>(J?U<Mg}o4B{4BYF)?{D zF=??%I;kbLN*eZ7F)=YQdNt88G3C0kHPLY~2D&jZ6^RD1n%YV_c_p?=F)`6f+9f60 zN?IC9+NmYlN}3w>RxpuhtvHn$#kyE~TTPgdy_LEK+}Qf)IFR}3v6@<%>NPP+2pNb( zj1ovDMyUp7wq^~?pqQ9gC7q%YTO}))9N1J14GkpoA*SFqz8-46W(~T{8k*5DF|n~V zO4@lKKWS;!=xJ%j#DMJA$t<x2C7Phrbk~Xk4Upfpm2{NSl{9toQDl_jAfDC+n;r)W zy_lGoSWp0ge66RcRS)%zwhGh$&~l5^as{Z-Faxx7AO>lH)~8^#LQ5msPP-1|T#$31 zrh=5`penb88l(XVnOODu7^PS(dzf-?kb?bDilVEiL=&`>1If=Ihk@c+MM)F1vZLD5 z#R^4M85So>nmW!tj={mG(lIf55Cs|F<FP{=-BINsl1eqvTCt$xvmHZ1f>0HJVntIY zAlNn3#UEV;<XUGBPahN~O@6T1tX>1=dC(aQHTfwiH5wYx+Pbkdni?@NDO#F&@WiEI zZv~ZsX^DwR(blZdL<AK$B`9SoY3hKcxKSMe&H;hiN}8Z(1u4l(O-(750<TW1C_z;V zwqWwytp*lw=V{nm>BhvQXxf8a1y-P>1x|Y!_O{V+y0JAXno2q#yK6x!X{O&aXOW&> zcf^;iUQ<OsQzr$qXeA>i1;ow(v7_UvW3^+dV~Vw6qVvE_F@>0NebCYx{WuMKD`kyn zQ0CUwtkH-m*Ve3w(Sr$Ss_5&am)Pn@YuCl<>*S&&3Z<Bsm>7-dn3$AA-L%+hLmjhP zrFw8dU=PZz;AB{%2X-eYXP_<50ZrF{nqft@N(L25+Nru`rl!Vbur^B(Xs)}aCeJ?A zs>sH`9&(_)9%vntb4Fs3Gw5iZB5kk^O)F%{dbq5eouNUEsi~2rnU0}>k+E7)jj5Tj z5oqlOXz7neG^iM>FieZ7Fi(rEiPN=@Nztr{(^UawQ3Kr=sElq*shgXd8z^ufYk}bH z4djA9)m|ya0NiA<uUC4%f3K1iq<sZyUg;WYYAeOWfDSN8hPutML<3fOgW6uO<N7rW z%``!Sj8+ikwV?GzaO*Uy{XyromX}~{^C}vE#(Y4-NA=+GBhX1UurVvp^elW>3N$NP zoswB(g*<ej0~$25Qp!n9Pt8kFs?`LazX+?bBW%4OwYeM8aT1z3sJw`17{4BLt~0cI z6AN!hBL*d-Y^%Wo=~fX?MTl-UI7Ho{&EFCosI{q@$mj5Z)gUTDSTKTS5v@VPuG+@2 zpn(-|L&+K@Yn!KQSX)~g4?6i7GG7E*dX{aQs+U<D;p<~N-BH9xxE^$z8EPvG)Omw1 ze1lFUK+~t9Vyc>&66nAx&=fyp^agZbU9FBk$d=R+*g;;l@EC+Gp91yZL38P7cGcIE zSh+z>R{*8{EHyRI><Hr22hbcP>`YszYwR_$Y>RYUY_rgvspDs>n5~hespF<-YnugH zlnGJ;xw0ZGGqoIiB2-C!0d$*po?c>oN{TD!TpFLu;u6rtS^GTDc`_(M8cL;kkV7mh zN<bTEtnxrZzlq5iU{#<qrV>j^U|bEQ{5*tmO--G6kYdOQ+r_q-7@fQ6ns>bURBe?q zm2?zQ7w>B*f!FGTf>#N&^)wzd0b_;5h$7H%4)Xc%uz_>u{9Mr5MbK>&nmUT0p+s?h z&>CuJ60FtK0Z-j<f!1DtPjAfv&EV97+?<|T0-A}!Zkr1zvBJ+FEYZ}<OtJOVQOrV` zdMb9R1UbB>2AimcuO^ZcK)OJ7*=vBhBsnE)sYQC8F1FJH6?{bMVdsqGmgrO>me?UD zE@+z%J?ub}A)o=b+FBiuv3V&VGZFeg>jyH^pl6_h=8{0JfTk{xW7O3AKpiTJA_dT4 z#_6dgNOFkPH41t5(RrYCYqhnSR#4}Y=6X;~06UNi<0L51No=4g0pw{dkeG%N$ak<z z1KJc18P!GiZ#_~jB+|o03gF3doqSu2Ny!p$PbeQeYpIcEn-2;x_)Zgqv%pyl+@A(5 zGJ-9*0i6jBD!)L-&?7<<no2-(Zbjg;+%lt!z-1Wdm<^(=u(d_90lKy~Iu^9;sX{M} zGZWImwFPG#1+*d;nsDGl?cfPcCVMdDp;4k~1)it0PsN;@D}gOcLmHO`m(bwY)InN= z0X8fOlwdN`K;3Lmbp`2dTIa#{hk(YJ^Wb#`sJH`<MdrZ=U5cO{Q^<!WW^mKe7My)$ z)zt8$Yfz5n0i|ZBcfpgi^%|fGF#yyh^8^tZV6P&I0SqsL=8!c|3opz<0DhLCl1-vQ zW{R!4lD4n5lDeIZexjWXr1J$8mhshA(gk(6)D?1z6LWI%%aaoeN=l1TZPnH7rq{4A zsxc|)fDgKy{*aYXR8I+3UZ|;gLi+Jap#D`XyiIR!r4H&u#ef^tV2xHv(GV+BQ)1!T zYieNHk@{}-R^ZfHqofULw<>8uELK&D&P=JZ1$#jkn+bKcFs15BR?sdc7K;#45OZCW z5|zP*YHMLpt*5M~4Qg_N3w+e@23-gNJ1lbgW-dmR>Cd?s^|F<~C$3|eEQK6XrfHoD zIvoR^Pc<Ni%jqaV&eH(j(1Tocq-vrm&r8frRnk#%fqB+KDH<eXixjGeNCC+}8||R@ zf%JcsG<A$X2c3e>Ee%n!O3ec|)!?2-=!Q$_C|SYg?UXciFcKO}4z!;MZn6oo9%$`C z&}eW<aaPjOu>zeM0ZSV?dRkVX2+-8gh=-g3o>~k$ffb%dd~97{ay2zB)BOY(#p-Kn zT=a7Dt9(IcXd|?MMDwwT<rbp}f-)IuoX3Njw#oT<d8x@IsVQLPwmy(%X^9S~Cf7mm zqKoSlZPnFd!Cnb~<`P9)&`1HO_26mi2@e&d4yz}0Ltzc*Jlz1>0BmXkkkzEZL%>B3 zv_~?rC>7S`n|@xLk)vKyCkV7A543e5wYWqBqzZE0rzTqY3oa~eL2W(A!N;JTOZJef z2|%qDXoYJ9nmGqA`9VxN!fHOyz*A98jiQEP5&WnywS34#2}n2(wCW0c)~G##sZj*F zxoi3XaYk`AH8n#swUX)YB^V{^K}(s@%X82*P>>P7R9oZ;Z15C&D!4F*6sw8`P&X+W z*6M`YB3+#Zt`|UKRG`WkHjxJ!Dbq0k=iEG7MbHka-06qK8AVuh6;t)VPP2xZrvN%5 zFwa(_1g+UzQvzE2s*#E=oT_OL@sCWZrj?<Np;}%|jbglBaeh&WODd?5nwp}fmJ0DP z*oZuPP$*`B_Hm)Ca<a9xbyHId(s0u$(FCn?1o<`#G!>6SRjQ`Fp_QY(w}zumiKZ@y zO4YP7urg801L-!z=*(oM)oXxkhAmQ1Kn@d7zXm*)f{1f)iv)>VYzsQrIL8)rV;g8@ z5_E<Md`}t3;4F~6U{~84T4jPb`KT_echmtn5i}<TIwJ+H8M1T(Ji?u4TLNBPfw0$F z6S1o?4{{Dfo^2|IBE(iUs3PlP(D^C0wmH#7vDTVJpxN?z$aHy;eWC_PQU@fZX$4|} z!XD&ckO-J<Xk}2Vlci~u1-eNOIxm9UwnOX#0Z*lZrcgj@TR^9r>ZHPoDR>bEZ7qOz z?|}C5fsQmoPe<T8CBO^ZN<ily<Uv-=C#P!Ul;|kgs;d~P$0~vP2~fwt%vMwL1261? zECf<h(@+eksZk7oEQ`tm6>u8xrC#;L;7zXJ6;YtFpa@a4<$;@;MKv{83P4awg>?s^ z>-G?Z2D}vo%V|Z3E;y_am8y}alckeaTA!1n6I~JuYg*VDfC3kE=nd#_V&u?;FABky z3nBeX(BZB+kfZHDrhrxkp_zcGw;nl+p=ANeq9V|KDx}LpK)0;rsi}oQ%70{)I%q02 z?ZF$fbQJwy4OLia0&naV*%#GYA$Lt{Y83tK(K=D7nxKQmPzAva{Zvp)7D3JrNXtx3 zu`hyjK)@#og90G6I61K(6)6Z{ljcZEybVCtBtTZ=fwh44@}cNJ-*_?INRv^cUP&9& zc7?6C0L_%3Xac1q(DC}wpx^?X&ILY>!PQnVUN0rJBsICjr4+OcD6u59SjQ103Mv|d z!KeL#x?12}QyK=Kql7^c8sVBcuFwWM=&-;{?RwBr)1YDnw2T@w%M7|i4s=yyCiJu> z$m%f2(y`=J@b#iPhVZEzNALt2XdQPsq=yAMaT}`#l$7A5Ap8!K%rwx_P|(D>A!s#d zO%15_%&e&~1arYXGqfenpvw|L7w&)uVDn&oC4~~mX`YZB$>5@{#1{E_E$b3%kN{|a z47#dJGf&<%$y@9<o*@Gfl%7;sg^A1<P)bnjC!GB}5&l&u0w^IY_?_YzX4)!n|6Y z3h=lQ<aqmH+iIj$hE}EqI*@x31Bz2iQ}V5fbaE3*>XS39(n@qdISjJ)4s--bT4r7f zh=$F#TU9IBDOq6-_<`>hvr;su)lpKwB44YcqzxA?N-fLGFD-_8Ur7h5w;rUq4wtIh zTAhNTRLG8At7`D*J+!n1-K+#V1+N6O(H2C&OI675hE7SeajdNdh^(n8i8hG^k*1(6 zBuem29`zbfwMuoi;Gx%OBhUgAkRDsm-fIv8G@1%d!8xF7T?}+gG;4Jr^8$DsQ-XX| zk&aScNe09M!&u17oQ8ppv1YwJ)P1RX;BB`Wprs9(Iw05DYHNTf`;utWSP;`Jwx-5V z)5=IoLkTqP05J@7SBO%6N(zhzI<-66G#0GaJXX6T+5+TX6a`iwKY=DkK^E2*!ECIB z&4M6%3YPs9OQOwU)znHri=`k<G=;PhJ#ZjEDkHG7K{v$YfKFL3j<p9VwFS8!5$K=` zPD?>q1zb~sPB6B0uGh!|Ey4ipX#(BIk(meH)~lhUsiXs&$<<BO)P=D@>OfXO4jP4) zE}+$dVC(YW0h<a62RP3dv|L38vP8nF8Z=1+_v7>^1t0Es)L}8yZS2sp9<o~;X&D}@ z2nH?Gf*Xgl!~|S-f(Gr7@2{$@h0bCj>i`F`tp{}ZHq<`QIe(yKBuI038gVs{-XLi1 zNE>uXENE^7G=&4IKS0N1BAW`0Cg@QjO2wds&B#a6gHHZUEG~w)5Q$S$1FzLkt13`= zjy!Y*9Z-cFegay_ql1<~K||EAP*O;%haCr&2^tA3QUDE!fr=fCOr*`epk|h>ZN9yd zA~-kZSt)`V?D^WD3yqZ^LiV7;Ig6}dD(pcA9u!$A#X)6@)YL$;82Ngzq*SD7rKDx6 zWLs}*n`d97riLtIr)y}Xq=L|y4^1+<MbM5Ls8>*A1uYx$>_Hp*we#V{OlAqF-~-RL zXd>AMHnj#~s+yVx*u6D1^)SN?bYP}y8-mT(R?<}hr%-TyLfLQw3PR92Jx~(Kw*{9W z;9*Tz$~OkBlT`xkA_h$$z^03IO+Z&^DCMW=g7&X~iiT9{B53;<RJB3FC=;m%35zF1 z#S)}t#z-AF(1I+~b#^)_IvF};wxIA&v{yo^+mx)7KwFDZiu-h1VdNg4POfb+sN)1W z1KtX>^e#tDO|e)f3AEc6a(OCfeG9auP-YEb6xgO(7uXg=mq9MdD7G(vEdR8%wav8x z`Kth&=Rh4_Xa%ZhXq{nOW~-E+mjk|;u0%~uF+)ua#j((KtfB#ELqUdZbfSGa=-|p? z$PwsP>5$7oKzD=0>LjYERl?kou9Ie409v|QU!wt{!Rt~%YgY@<)~+J)!D>J&Q%k_7 ziRz@-qOMNWNwQ4=ty49M)hPh6(vc?1qElk63v9KuQ`FQ7)YL$sP*bCkWSe4JZ=hLI zlL1-?qM-@yNuvgZnwqwDlA0Rm0@qZ{>SWN3$I*p4DLP59(9=X9EsM-FjY>5&jRM<L zn7@eiR;)`bG5!J_S7U2yn*<pE(7@^yB%gpvdJT9KD}tj~(bg6zifd{VwY8IKYQXM> z#s#r%hB_G*8cCoFM?upTnws#7?KF~fZ8O37v!<p#Nwvrpw81_}zsSzk0Cdqabjbjs z#Dz^ngBG(_=oNt5SfDeiL5mZMQ%fL?nBr*A5fsS15YQL^s3I-`O^ZSIp{1rMK=fNF zfSTvlMOu))Eodn$XfdUx6>Mp|ogwIAk?0Z~(B4j+yjY!z>3tE5()DPzfX<OZaw*cT z4A7c%&_<0sP(cDey%xOSzR1=abof+sVl1dVQUqH32{}d(BvPx1R8GMP4+W4(20EFV zqP3b<`Jl!dBowTw^YTlqil#r*^%1U*j@8Kn4U%Wts$kht10SRZtpv75+AvT8+rtKG z0)vY~&~dw<mCm5<c@cOCFX&hx=nC6n(2_EZeA`6OHhs{XY&7V=CXLkS`r=s7nd&I+ z*C_(sCj+Z6LF>g!bTUD!=0Qg1gHGK89rFz7YAEJGavEq(BqOod3fYP9aDaz3+DL+? zUQRuDL9(3zNI$H1jNK4Wj{&t|f^=2|%qk5~{a#T5?T>&GQzmHM0MretsVN5?84ItN z!1qhm)`L!KOw3EiZf9}{v^fX9{QzVfmb94z(hg3UI+$)mZ9Jj47!+%H^`P73GSf8j zZ2jz0^}t4fr^b+m)GKmxtUwZ=mIb;TL>yYYYk;=upfs~V`L(15eElfsm=;K5vIJbg zLNBbV*GNSfdjwr=2^vd8R2|R;7-+G-rcOy>5z2`usgTACc%yfIaw6!gN>IBf2g(L5 z)60Mwpa7mpgw)jFiau2@Go`j(rzk(a1Y70-jk3Aa>ZIi-mlora&(cdw2CaaGj^=_! zgt9<(x`8y+)F9XzpeCWBBJ?I3&>&AnQEFOEO`TDRUP)pScn1{tbP(|DfmN}FqM@b^ zY$gE2HPF<7&caxMr;evLC-{q}LGlRn3KmeXsi}cl3{aJz&H3QtD8Wq*h!kwrs8$EY z!s<7qMu(c(^n>r2rRsH{%TZwZYIVS8OrvNA6$YR*2<}ZnZn?(nYJ-N0;n8bj22DJQ zNINY+_sOT`p~gx*#IK6*vK(@pG<d2Hbk%NZ5sFJ7sufaT83=44sBsNC{Q-2v4K~%F zLyJJ8`jCD;RCQ8mNlAVlQm98m%ti@yC5S3eKtnFesi{E{O0CrajZ&ak3Cex2gW(WH zL9W(?UZjIC4YbswG$+T_Rs(db7HX>>+@=H_MGd}u2c!pmysQ@5yU#%^&w!OzpdBrm zkYjHUvfx`K;VM#f4P!y~z!q8|R6sV2z?J0L7})1&r&{HK6_%yup(%y5(Lg@VvjrUz znrfW~x>cbBGL3_n2?lNV&QD3H$D`fQI?o25_M8$l&7gJwC|QDRFS3QZ)LK^;)N}w{ z!VaE}M(oWgsjb)4Nhj7AZS5kPRIH|Gg4bq18V<#Jc_kUPNJ+O4JSvr>keOFql$es4 z4?3F#oNJTvE3D!a4M4r)RFGgnVsUYKeo+dDotc}M4ic=@gqswd6pJ#v21%L<@Cpw; zxQj?)kei;8KqC&Iqyw7fsjbyWf{gZqT~u6}l$%)svau+&I2FVo%|=jA=h;H+ft~sf zIx`%0u@p+)$kW7h3Dg(KpksWYCu@OLx#WNj;X{O?P6cQ(7ut{mFWgPmaRzVH&rZ$D ztb&Zs)`O}9P_qP5QGgG40Ihq6oaApC3hU)(rfDQYOCp6ldjqRvXxGyK5-!EIB|15v zW>P80e%Kh8b+NT(b&;ByqDH1|BJ`rfVo+Ap0IkvoZOtyO&jAfmWrFTufi#6QYif!$ zb)d`p^KGMJL0hP76%BPXGHr_yW`M_DGhs*b>EuJQ3Unt&5#&r4u&J;n325gA=-gCL zSF;%E_##;Q20C~PJ|z$qlA0h_r<H)tWd?8K2RpnpIx!aF9}o+)=?k>a3UrVj_|#5K z><&o;4P7Q@q!wFcf{$*(W<O{as|a##3bc!-kY^7&E!wKs9zNivX$87kBS#bJ2LsJo z9Tm_`n)$f}nK_V1g~lnY@`o)+i3T0@4cm4Pn)p)8*Q^Kc9tB;ekZKFs{SKP$ft^xf z4Ziax-!@kx6?Czh4!AvE1PSSUO)JC&kNLJ$8YMcF8kyidF!_3rDlosuwgl#t{92t5 z_)srWjzqtq7@G8wZLyqc0Xhmvr@$7piNaZ<1avMVctwAH5opCC$UCqzA0Qn{XmSD# zmxFGsG>Ek=0HrcW1IGXqQy>-fB^h=`YHCWJE})u0BN1{4I(Rz~WF;bGl_RK=4xZgY z+IIvxI~}Yr7CiJ0I^zhu2n@W~Od}CC@dmOKmI$GPx1g(_qGLg~1Zvj9GnF;y{sFYc z9=O2@adAE@twZKoU;{q2pt3vDHmyVtywn=pu&#hr>YDZj@UEA2rmn7<8rXxGu{!Ym zQ}t!3(Z#ljP=A2?;~F{O4O)3A(7s5KZ4O@Fz|K7Y9Ul)i2Xq!Q#`y=(V;%BgyY4b| z3^jEWHR?-jVZ%#mYH6U0M_~a1TZ)^fQ>3Yr2kZPpiaw3xni>_25}g7~O^qU*R2@Y> zojmZ(v@o}nV0VK~UabyfIvg_RW9tjq1y}-FBnh4-*9eClvaAGZocrovP8``PD!S_U zYk=lIL6bzViFNFYB@Lkq45DDGGNDaj<l_uL3p7wyen5PwfV}7jw5kf!Cbm^qhODVl z(os?drP-3{2?rS^>y<!~pmi%XHTfFgWj-|^ks8R|D>aatn-KjQaQ_sNZu4Lvjyis- zk*WhW24n|Xi^<;5$_V6Wq#4BMV$c!2@Ol+_U>V%Q11%c1Rk8suOVYPf(m|eX0##E; z{VDKzEYMB5&?}xH9yC{ih-=nrf_(_#VfT=l8lpOfv=|Xygx<ajnWO^kc*Wvo$gnP2 zaDeWn2KPQ-fgFfoIjCX>AI+c$3sXp+Ai6#^)*dYk$(maQ-3_LZrwKk<Gczy6HXF1q z7Ifc2k!?2UCTr+K8u*OEih`nOB`c*^&?$%YsTBo9ut6S>EMlV>NE*Te83AE|rd2_z zK#g*cXnJZ1sD};`0<Rr+$xj9egV`WK*uVft5XJ_HL*{{lQ*-LU_g90YAwuB!ZfE#O zqLBIOJVY}Xx`q-yvY%%S+ENL++X`}I52OPEDwM$`7O22S2!T^|Cg>hO4bbA`VvRh_ zdPv1;4XwON;1jY%wK^)O&OkT<H0*<ACKS~&HMJ7ZKpbcpIJljRSf!j-s}oWJ3f<I- zg8CvzZGcip>jZ=LsMtV`R*jB}(T_2(vjXo&D~TzJ$%{#g)zXYc<;UpT+iBQa*~I9_ z7~0i<H@!H54AF~@vr>+Uj?vSJ)l$)iBo9z)5LVOr!$TOHM8Q{qB6a&UN^F&^^72bS z8*#M3izq>!gf#;o$CMye<l9%4OjkU|C{|wtS{xKz1X=+Nx;g?h4GZyRD(EgI(9OI> zsRbHH2gV~x1(5lO7^?*xf(1US3VIl)Mm5MV%>E!~egS;oC8+vSOb1_U2s#QBRQtoG zz7Z!qX+q8#tppuB2;Fgv+`|LaoT;`3)~Pl{;3G0XL&~7VSdjH<8kwMDF+qmI&pI%G zUCEROaRVsAgF&aoYJfK6BO3+sOJ-gQcs$Y~6?6kTEVPU43_;gzBJ!CA_;z+sf2IVj ziw<_Zaw+)IL!A=P@$jJS2b!R>z)-vXV1)*#3PIP$=wxCWm{C-OsGKhN&>OV>BLvY} z0Ed(n+$vBYr<Y{Z)<O>RaxKyE2PHPpcEe&V4V&ng@|f^gZ9C2AIJ;P_8u)H1O%;7> z&;g>*lZRnx5H$(vfNvR4lt8RW$jAiWjSX(Zxt2g&2hPfh8b!8BHlS(<G?l8Rrep_U z!#29;8iJ;Jp^mk)HMWlimESrg;2WW0t^A>#h7wT6L$N3tq#CyD40M@&svhJ}VtdeW z3wfG)pp*w%{|!E27_@{Cb{M5bDqIqj-asaS-Ir<$I$W~2Brz{JH9t+Evcw)V{A!g7 zDgnXg0YYN15<F8?oC>N5H9(qm!0Q@et2^v57xP)wCzgO`n{|SraRkz)2`bt2P)}z~ zg`DRIKA15TbmcwLp|PMO47#ZYa`JIetOjUQToZieF?eqZr~w6%how-EdT6t~UIE;1 zL#)^b?Tyd?-7={O+C2^S7ijo76MWkUGzM%9HNjk{848GOZV%T`0#*Un0Oo0e$`E9C zYuZO4DgeDA&=IZnpp|HeDV5;((Woo|>&Z=o9uTPkF;=ry6RBei%8Ge9uAq`wBe4XM zlCw%|r*D49s95h(Vq2XInky?x%>(u4L6sNiR6Y<JG(!lYL34wkMI+!+6?R&%Mm1<K z9l7ZMDp*r(K{*KG8y(Qj5l|1K1U|qD3R#qLs6I144|D`qevt-9dx@=qb%{-$bqVAQ zU(kJE@cUsw2SlfW)~i8VGKvPZnzcH~Ir+t@#mJ=rXrl+nEbwWcphc7!nXpcz4yZS+ zlW2=5DC<E39H3K6K}ia_O+gV+9zdqPifl5$=PH1TOGv>7TEqw%ECyA4XloxqC;K2a zGuRk{PU1+kPlOEWYvh5>rvOiVLey}8YH*O<;QB-yeEz0pHMB3E2iw{YF5c>qrjRO2 zpi`Ehc8W&6rd2+8&@v^p0;R@)HKOfd9)=&RTw)J9w-Xd!kmL%wZUTOsCn%<LN?-*8 zsMt{e9TW-@jy3?5HW`_qv+$8df$gW;y<n8(0G+R;lbDh+J&@T)bh`L+Mgh>ZZb+p) z=qT^hqV!a7Rsijx(EuI12pTWc1Rn*Nn3Cdze*QSjBcP}RU1Sd`-oOXbf&@Ux6LQum zBugXskfbJA1Uj@2G<{Q90=cHU8nT`hGGbc~;rQjJzy@0tQlaZA5j|h~ROr$^h+=HD zih?uf_6y|wm72BCVd~=0ypqfuq^JQ+jlsr7>oGNg*R6tcA9DVJ20}9EA~ujDY-JY6 znxfP)B;#R5D}dF4!UK6~A5?#)R+KpAKwJbJ|AOm*cms<CFb$Bg6*ToYEWzh-sK4ux ztpfWTWEK$`LCTQ*1=d>(IRg%B1gVs0Xn?CA=%Iw5W6U-6>Jd{BI-r%6@X`=V*sFkc z@FLWM${)xQLag?IPLWZ{Oe+HIAknmkG^|qd;9EqkG{6e#OHy+SauQ2YK}S7<8u_3a zw<I;M1T?6Fs6nG+bwIb!XXd1UQfe`H`3b^>ph6E^&VyD9z=c5r2i2gmFcZ`Y2VM3K z%D>>m2d(RrLi6fNGILPYqL_ka@{2$R!4|2hVU!%8GeN<|K~`sJ6zPD@wFH?9t;|42 z&S<!lM1xjLpq5janmSp~Y8*5=k*QadT9#T=U!1A|TKomh%B95_koIJzCalrr2ik=m zhtdns)=vl3Mb3#iIZ27h*~Lf=EY0c?c=3*0+JWjzQ1*u&mR<{5!UPJLRGoU*hQDag z*+ihTpKNtOC)>kA5z-&Z1l<x^qL-hSoT^h~n+m$iED`Es>tb77LvU4*XPXEcq_Wo5 zF1CRc+18ri69Yk)5P`Oi=2U9rf$j*&16|GnI@}I?4VZtPTVhUes+yWcu`NuaPM)oz zp{8|-UT$h`eo<vjjRsgiClxdv3>retx6K2cZKb573A)y<Ixz*?<pH46jzEW7qnfR2 zr~^6z400HcCcG=JkgAcVSq%!S#N-T(Jh(XIa7@&*fr~)N8dA2asg;7}HNnT^L+h_1 zO{*f%ZazpG0FjmyZ9&NqRP$;SX{yz$rD_y`R-<XaPZib#-60R!X`KU08MQi)ODGYA z9K8I2xfHG&;bQRK6Hu)Uis?LS4e(tYnUJHcHBuqxG27Ma8d__@2j%iWgK~K`pv6wb zy1KQHnz2>~y{!W+i%UQ~8JK}3I{Dz*9Ts=s1@)lYV6iwF6eFO<h^9_SeMV++Eo>$i zi_%QnM9{PX=wfmuC2-3Mt{O{RE9Teg<m4k?-vJLOs6lx(HK4(6h<R}PL3&cLnWvZu zo*V>UqKI%^324#`8VH%-RGA0vp5@s_m*_xOb=pH|4Na@OSa4DUAN!<}T2q4*uW9v} zMX3mb;jS$Ot?2^W3T`Oqz@rxyC25&O*d1I{3qK*K6y=5lm(;Y>A{0%az4`TtMGC35 z(a}nfyC#)%lwg<RDS=8~cp;;q1j&O+pyrAmHesV!ooFTK4TVZNN-6nyspv+4iVp=; zbLydm7--{saw<a7KnG@4iW0<N&=rSDI!d5B_=qqUhp~nrV?idRrYOaN_6XD~6{O~Y zFPzuOw1wU;gjDuHBe|$n2XfCJmZ-{y+#idGAw7^2k+U<XdH|j4UjkaZ4qH|V9SadF z%2UYHE6GUBgPeK?s)GwM3#QNh<}Cx88&s$)(SyYvVgLiFm_iz2Nd=wZ3(D}|S_-*4 z6<ri<5(_%MuLQ!f&W{FlCu0#NLZ$#qY(b}0f(q*ToJ#c6XI%nnuInM23+iiu?h*wR zh6P3WAf^Vm0|vQr5!BKL-C_#8YZ26e17AxDy;%{&2gQe`RbDjcjy!Fp@XV47rC5-~ z^~E}w;4}IWVOt9tb}j)gZG!ajAlB9DfI<)vIVGTrTaeB+1}*eTg@{386e*5Dp;ZhX z(Luh^MW@u(4oy*>PARD4uc%RClL$HOTO-f52ozE|l^Vr5Ihvpu1JM0HkU*Foc-LEe zI-eYqM7@%xbt&j}6zF}3NY^2PE;@u+1HTVL0W|5G2Tm2BOo$ZPrJDAc_N9<LKzTa( z8i_ioIt4nJnowp6s5xS#k*KY$gRBU2pgNi=sD=U^P%9r4KcHaO1YJ4^I)$SETn$5d z-=KNjyjV>gjZDz`Drg1=tA_ZwwpJ(EHq*Wo5&D|dp!1naH8i2Sukz|OK{YBY3G1a+ zB&UMc-GFWp2B#<NQW|+W$)M{zle0sL5|dLkbxO1i?QB8!=z!b^I`F*M7S)ZQbFo3G z3FJJO>#R%c*^@Oitu!i2rr*<L5))EW(?B-X79uWDuL&x;Q%gWs(&m?zXe5IgnV__h zXbaoki8CXD27IE8V?k$!Xyj`c=;WbATc)Ocrd5FsEH8kZr>Uuv8f_Sh&{dDAtwhtl z#0qp2cxto}l1fa4MVj_SRw<xUg<-i7bZibZHzFbiTILkx!7i5pRp6<RMqx=k=;F@I z+FBjZ)r`;vGRVW=I{}bN7;xnW375QRBhcBEdC{h^)|t_u_FSxOA}A1aiq+J>4CKP4 z$hNpvCpFqww<I>&C>FH088n@u0}eZ*SiO2sC9J6f(Uu1a7f>CisgoZKYAqry<A7I^ z5E<kW19UukzC9#OfV;z(6(_1D+eCOp3tDNI2@k$}O&!pDGbE?w>*Q<d<k#wyXQbw# zgeE8$QW1A7L0iP2p&y+h$X!Vq;Cr}H?tK6aFlp-KgIa;Gbg!YQlZbp=2i%LWq5;$> zEdup!Ky`^uCWr+u6rr}-8NzQngG*^z<>~0^rq<MeHUWT(T~N{k_gZReL1kI0jV)-1 z26R?$J**-F-94%Y&F4BGji4N*qnN6x1FtJV_XL7+W=X1sCitQXq#_D*lct&)hy)j4 zny}$>g?uny1F~QQvbG>Y1EfwT5fn=5FstBeYV+Z-0q+iZme@`&b6~PeL#h%{%M+yD z5U5)S-uYdepOXrjp#fbtm!FfWSDsjur>0h-rsfIjkm-TWE&!ihf~-bk`UOWO84J)U zR=KIg#fj;uI-u*`6O*%bQZ>PiEAXhKE37<2vRkt{PjC7}18w1Y4b5uER>qQA&06rp zR{&@*5>cZ=rt?4*VPZ-piV@JdDxd@sawVF2kQ)KusiFj2u%bEwwBireN~|o=tB2<A zYWOWzhB{yk;fa|gR!}xdqSk;+TH5RCR)X#jNKB~&D+Tv`z!znKj*La{K<6-kFLf+Y zQ$y8aXHZiUkOeXWk@ONvbfPOuVnJmqxFrd83fOzLP;Y`RfXXcZUA_z&=1&A^PfV!{ zE=eo_9fu4$i77KL9n@t<ky2ArOq?F;$s{EOYIq|`ahMl0tuzv+Hy$t%u2*vL_XRJL z$Sd*5PfSToQPL>`75#~5M?q;Qf$RcFLI#a}Q0ECjQ&EuXT_MdTtY=Z%+JZ03fZbYQ zYinBxTI*g}0P1CGR)g;Z2ldd3K^NfUY5IW1&{B1Zb@HN%V|5e_Kv$n=!uLBsiZ##) zacXKBAgySX4ETz+MDQt`pd&*Q?KNOGGl5o6K#uO!w5r!A1>bCpNJHQe5!mKLXtMz_ zE}Ewax|<q0xd1;@8+4yfajZ_BPNIF0RS~3w1RdF{Q>+7%(nMU-mT6yNRca4&iKbOf zjy*_~0ccXpD!*1I2sv2c<sRz%AY`X2Vj=;wl>))5wNBRq-J4^mlMX5{pbO%_dr7C; zi};ATfUg(?&60yIfs2JzZJ=&oD(FbGAkh3EXw5x%4J>F#+P(x;i*2gabjSNlV)c*- z2AEMg(B)>SpnELSGSf?oKouHju0Ru1yMvYxqYll3x{aVJ1GI|)RFFe%)qoDXV~jPW zYGy`*<^W*#foY^#X~x>-fe%tv0Hqq}bPt-UB2DmNaBzQS*6O6EmVgJO>lGkr2(%I! zJRJmgfEAjLL3<~`E`;8z7mMZ+&DdI<MDX3INJR%qLPFS7Qv*6RuDGNqvmSXvUn=aL z16$BeH?U>tkn5~LH(!Is!-^qX(1r$xX`pl4?DMQZWiR@G2zamq6t<v=4>Zq!Dmt(M z^`MJtA&2>b`5<npW;OVBG5Dp1shaknRal_$Lgdibw9)`g@94p=XM^7T1IoEY_R*=a zR?wpsG@y5bqpYL@MVED6J!qE)^zxLVXwag%*jnfzWS}U4)}*eWQ4`3JzD5yfUAzV& ztz)E2h(D~LhN5{Kw8S<evDhWCBoQ1<(_KY;`0G*AHY__p3<6E*sHrJ}OLt^<q-xee z>Mmc%S(xcMZZJk6Y)-fuG9j!LQ(F@g4P(cGj?#1j4PrX#M#X|gF6%+_u_dW_Dd0IY zxZBXi)!j-!<7psSjS|h88ee2?E#$gh93_}ri5?_nf+khKqvDXX0x}B}3Xr=8L6Vx) zZlKyFH@^&YZU!h-#e?qw#$m88hQaZuCW9|Egc$6LYH%&Mu7lh)S`YR*hDDHC1U4EA z$_}70(nQdG%=zGX+RUWVl2q^%IV7q;3zNa~&mgtXHXyiSa04$~(#Y4;0hOZp@KQ}p zP0_bRFTFmsL?d5E37RfI>#mBGK#TK0Nfb1K3mLD3w9gWw^FZ6ni)=v*a2rX-0CX!k zWIoS7O+yLf4_)xseG#ZZi^v^C(DkXNnwmP58lZa@GC{M<nws_2zM!Q_n2yj<G=Q(m z$%M`xBWh02fGKFI5>jq~J0<XV0!Jjcv;a+$mT1;$T7jxk5C^UXwiwnr8njgtsq9Gw z2O=a)6>V)b@@!!N2)YgsI^C)OuE&uTf&5g0Xx!$3tLf>E`2xa08ffkTH5NhBPNg|H zI;n^r2{g{^48aQ(z`lo$^TLuUG(l-rPY<vXkOZ|PkrFJ(cOb9AruHD+xaz{v)Ka7o zMd&&|P{{~hnFe2Pk!lNC@1T@cp`@v;1l9yPaRQV;Af+yN6dHWA60CTv2QxJCH0_IQ zQS$<5QWHK2pQov51zl&A2U@!g8X2wCNl69U0m^_-Ux8ZZsi3o>KyCoHi@^ibU}fM; z1iCW`8b&&x!|-8OO+mU&@nD6Z5d_d;Bk%=0@VExIilH`wjjFW<EeI^i2M<Ysnw6l* z1CW`}+pBbnbaf$18bFQ#mBpa$LTMgE8mhOxD7Cm4bkkQVsBx;051zKr$%Hn5bP{#) zH8piWtCRCVySBlbf54qfP*)tuwP-;AikUpyRA?N4{i6gcli{(E2Py*Vk;<PuoocWJ zpfwXngRv+Bte}oKa{n8-Op1nCsHBq@3z~ia^{_zgNk|z5E~3BzjO5ySP>eyGYXo&6 ztj&U0a|J#o0d$ihC?Iw6K*0*{jY1>SCJ!|105)9%RCa;NIry21ps)vLad7t?GGPsk z*Lu)e35flbC7?43OChu9I-t5AG$V!-$Y6tYN<g<GR)FHW1hOO)mI6Qx3GhUIWr-d< zoxn2`mc$Bbm`)F}5)cPvLhPE7b5awF0?~3GNMA`Q=!jNOg9hs7ni_E6fbYA;9HW7U zvQCk$p$>Q$7ipNFJ|8kt3Ay(f8lpN#bAX!Fy1GR*HK6H5M6WAfCpte?vlhIm22Y$p z$~R5Ws&j}Nt-(8MHS$3D9n?6>kFHOQ)hR(qte_T39%Qo_Xj6u^whojBPJhLSo<OmN zrVe6&1=ON|bgVo;tpjb{SbNaIvJ|Zty&BD!6m1QAtLRkMSkN)$_Ax2iHJbY1+tBKh zQ*}ZiO%M24@vuY7HEnA&HI%eHK<CzjS5>OUYQaw;uPU*PRtm{4P|{Hf%1qBFQPNRz z$}cI&&sEY<@<~lAQHs?GNA8M%q5<0fE&-KNB|1uZ`FW}J;MAm7TvC|>x+AN&ASbaB zwD}ZN8>5PX2R1<qia-ZSp`ZVx1DXN`8wfHF)Xpph6=R?^#vl_x^O<3&t^xHoHLJ@& z^EKdmh-|AN(FwjgHB~babV(s-aH29NH98+OTMl+2NEF1k1{HSTBd9e>bc#SlGGrJA zsvDuv7Gw}KcPnJp>O_=)ECNrigV$!(gW7Gy8TsXif&re!D<HWJRE_IoWTqh1LTE}f zYjsNU)6;X1RKSNOF)vOpu`dCa2znrE>ouTD*FYA)*yyc+@Di{~KsWzF7+|d$pw(hf zK16pdsMG^jJ(18xENqWi4S3fXc!8~ZiLE|jk#4<yjDa2MbiAg1rcM+{ze-JvzJ|S3 zR$^IVO=@y(qGoY&QD#Ajex{CBiEVX0c*xr-+E7Ocb{uMMX--LIK~AczI*g@mr=+7~ zqYv3YW2Y1gn%787foKAsQdJL80A_>alk;<|qK$NvY#<^w$@w|yMfs%#5M^+ljXp#k zWMUDDhLWWGluC$d2oqUpidD2R!fcRyeWjgENfA_ik)4e`NU#z_gZjQ87sW$Y*jq&# z=qQ1f@yFI$dzI+r7nFb<W(#3w=I7~nmFR(WgM>=b^7BhT449L_>_l*wftV$rJ*+xj zB{6y>8DM@2INrQLkyE3lY#&puZLM#u2(2n$HAM+%+Zp5(DcCWUZbgadpaUi~KsUF7 zFY1LKWt}+v{s(U{&^!P_8+^M4c;|wWrga|LZUs=gR7pn(oL-bb<4CBNi-HprXp9MV z4+$1Eps`0K9i<W_O`TM|#QFlzj3jt-Flbmb7qsprH96ZkCqEC=FHHu~phYkmiUyi` zs65cYDqxLzP-}Hk^^kX8fY$RT7NsWIRoLjm*-AROp#CM;eCLeR<nZj&6kA2bRGel* z;}^1nLIYBU2ZBQyb}%0_&~!>tZS~`_Q!Dj#Qd4cG>#t=ptj_}pX++2A#cF}C1JTpa z16?lxUb7B5CaT1?Iz0z;J38n<FO>Bh;Fc_84iD4_$cJtfgI)s&Io(Ak9ad98j;l_G ztV_|$0N>MDq^72#k#C!)lV_U`6Vl1FMeJ7tHvwU*+XG8L^J;m}%a}DF3{W2jaw)T> zjz*4cx*pig#h?*U1P^??h(@AqI@A)7EP{s^;e~HLg$~PrSB8MAjnuN#`n(dolA_G? z^wgr%6i~MuytN9{aspcknm#E2oiq!bek?)sD`2Pofi@*W8u?0^kahXcp$R3WSe;T^ z*z$hsQqZVGv29+e9(bQ)YIJF=W=&0fH0WBoGTY*4!&sdRTaDsqBhb-YN}AveTqPPx zpktXq`=2y4bwE>bX`rBiIIXxKH90deCpsk-w8l&)#a1KJK1~laM3J6Y0=`VqDormb zGcN@+)}~oglcIw~a{^R%GT2;b=LVG7tWtFHi!#$edacSJBLPJ^&<M85gIop<i7e<A z{`?}VOdaIiaaQ2XA=9h(Gs)FwYU+TpUvWWVa;jAZ^r%}sQ2m>)siRR~3-Sdh{va&S zQj`L?Pn`2h^Ga+DbkaaYLTQ1Tnj+}ZVki&REhy5-&`Hz;ooIkQzzjNwVS4ic6T$iv zokUGdoitE`Nli@yOvAJ%Yw9FJlTi^YDWVG4LOiRfsgr460FIpGR1GvoYHRBl=p<`e z6+kv`CWD6~Ad!`xlV6_%jx5l~G3H7m;<FueL_q`8w1M?pz$ba8gRjGe=M~6`GHCx3 zlr-x>=@?Ji%uLh3NS>smPKbqA(ik*})u-5M6cI?FkoX5RoOFt9L3u$<4e1<ZC5^b6 zm>4}xC2d#|0^RguZ>6UNx<g76)Wy~Su~a~}`Xt)s+ZI4u?$-Iby4LlY$+iWcMw?=$ znp&Bnt!=U%EQQz9fEHSVBOWXcDtl^bib1DOK~6qN29L^sldon?4QRm`SRJGRkq=s~ zsHCL@nk@mHl$;FTnF~(Ru*6cI4_fwxkW^DcOFp`~I%&`wr`6P8EJO;`v<BVh4f7H> z1(&2I7Nz8ugO=Sv@&rr(rYl1SQ99PwfM;ny<8a_RH8e_eQV`NQpn{_$RRNq6!J{nT z!S58%z-ta@uLC3<Lx$o&TD3tX7^t}n8d3rE3p0z6hca_C)zpx?!b%zS;Mzd}Y)-Kf zXwWnzvlv{sA{x1%wNjv^Qebnz4RD=eaLEL^Jwz`pvjTLBK@NDAJ!F^!z1OR$Q);UL z%NC%nCiqmul42#zn);gRTFvNUZ~+fFXbV#4fsKY0rf_L!yFUlC@uFBK)z;8D)dt-% z@P4M8=+s!m+%)v0<YIW~6#_mg2GpChF4j>5oh6X!0`+!H4Y(vj5rak?$mO8>_duhC ziJ+wu2QD&+%7D7@I>n${1VOu?K)d~;Q?<20i;WbErw1yth?`r3YvN+P<kF&|)Vva? z<(Yb^IjOlipi?h2@@+F=1zmA;9#r@A{EtlX^`L{oiuH=%1vNPNBe;;9kdKlRG>V~y z`6p%B=Ia#efd(pV^TCu3q@N2K>?^X>0BuzQM?K^~+r*sce0cT)S74g;P@_Q8=+KHr z6I$&;J&*(H1cMj3Y7~Q}&P#JjY>Pk(iHr3>>$E}3o>S8jOLIyzG<Ax><3<5R`2~sT z-~)LykY>x0^$PNfOJMP!rUvHM!v#<xK?i14Eog;iUP?}C5%NN8PzM&&P=XFAgPKdA z>MO@K6`lmZ6_`$`E$ECL(78dNiIN=9QdZceB+yX@O39!z8nQwCRLIdSpn3~(oQs{U zA!Or`bt&kWzl_Xc>r&fNq+Jm;HK3FM+7tpBiY`SOiUys=n3<dnDw!ar*3^I}kxM}h zo5ZA?)D%rfv7K)lT@PBCTwM!JCV4hF)_L06nnkvt=@Xqy+ah?G20Hf?8nvJcUZXQX zL)VF*JGYBa_FdXnmVgd%%*ZT;o`R@R3SPMi>g0kp?Ll@kK?Y?(Z6Vl&jhZ?j!$4zu zppAbTMVi*IwXSMv#gK}%8kC%^N@2~BVypaG_>gufD619g<k-L(UbuCoLdVW?K&#z~ zYsEo3N<aw)sW<|~E@V!!vP2JDY9i)7bxL%qQ}ar5Q(^Ow=<}1H2|>`vVP>%#Y&l{o z()s-00dY{of%8FTUSbZ|0@zSEWYi5Nrv;TnI(re9{^_e9FiDA&#G*}%rfOD0d;+qP zu-nUvGQoXW(B3TYCUC1%a6cZjP#60KAkf?;Y#!4datj?S&_IhNbf86Sy;U`6#vgS0 zn^S30QV#ei8R+>|)zGFmA_m}|1YM%5p{b?@a=jk-G%Q#^Aw)DlrwM`v!E;jKO<*Ok z+RQwqTAiev(ju#B(21v@<~|lXY;A3W;dX#jqgVkFz->c*X^9eOr&wlkwiOO<K>DWj zN%@emQqWK(sHF|{Q*usba<-aU4tVH92Q(O7TA~DB)dTh<SP9e#@cw@qEN#KZb`)|z z2Yi9+9UY}aa7~+(nwDRb3cfO{KE<jUx%5MX1E})N&rDGO&DVk^){0AWz>Bj$tt5Ez z1kd23i0DDa@4y{ZTbMr0TF`Nbs0|KCmy8Fr8xP#v)vPX=zA;c&gjr1u!l(zGt_NB1 z1I`K%4N&#ql%NO>9fiz1q<x@}d<hRJP<s)P?sQT$L5pc2g&$;RBrHooa+ED}u>mM1 zctAyTWkD)<0sM5vbppcmpgUV3bxHteBS~IKY6|QqT<};Vw3iN-1ock95=en!uVNJf zHc}6AZXC!KaO|k5fsXfvRSWQ9+a4}bP@f2@#zEr{Rxm+`NvIWk32KE8Q35`vJ2eH` z1^`72Xaf+G4;|hE`P#NbCl%5ihIIcxNez5>az<uxy<SOXZfbBzVs3#gI4!`r;92y% z{BjM*A}Hj{Zwos68x{qK^3t{%wCJm(s5H4GzX((=g5y{xv)BbKfUQDwGK)b4abo&( z%lAyYOd&ec3qLZ+Du5+|GjmJ99<fq11f2s8YQ8~DnEsF1M{IiNM<#w2kSD+~Xk)7a zT4JaO641*mhU*4Zujq}2TAkvO`~ry0;5Gxgfq}{_qLMfboGy4+TbQX<XZnFtp%MtK z({nyDDdEv&cq&w?9vY08jh0&Q0yyx{Yjt8yiFaxxs6<Wzmz>2QW-@3)bPlL42lFx# z^U_mOLh?(KK?flz8t5dK6y-p5rKFZ5X6AsDfm>n$8HvT9(pM)pwZ0?~s-_?@Jv9QP z1jL90F~GBPP}#D~)N+s*=(b514Z1HA#Lk8|EjzUmCIV@`faD-7h<kG~Q}ar|RwRR& zAWQ0X^3&3aQz60-CP-MPAU`v&B(=yBeDD~Q10Ir4G|(wdE=o<!0~-Wkf^|T$7?S@> z@}c8oAa|4?!lgVT6R}ZXdW3=xZ#~47uwi-V{!cxyLN&D#(3zUWC7`0UvLICxe5$#k zEoj&fa%CuJ?;Z3GPOB0<cqo*>^ut@jp#A7*W*Mrb+8bKc8>yw*8(W#ErP>==8CXGe zLK6TenS(|yK&cZlt^nFORh^q(TAZ2+3L`5eFgw32wMa<^%*;tmEK7w6mzF5OLKCVS z8k`UfAWnTrY7tZqh+C3c1gX>zH4LaZR9ONUjf1!2OJZ%SL7hi<m7A&q8+Ecug|^X9 zE15*_1$dB#S|+&40B7iWNKvJeZwp$60%~ddCuPB612UCtYg+^^c;FL0;GKarHPBeG zMf53<M<4Z|Q!=1l6}%4zI=dfS{H1E@<kf<v_d$DzktSyIkryF@7F~h%d_anI1xIi_ z1ey{B^;9)$b@KC&XIb#723=GEO72Ku0#dJ8U0;@1q)-GovH@J!qLxpf5)0BV@=wZw zwM>eT!%7FVo)F&cfP|)|UVd7dMiHXdW?uxZ071D(TS-qz8zEJnYK4%~LA3aFil9BS zB1l;e>c3#F7=iR7GC|`7C7R&U7G!azPO45xbY?7kwJ}Hry6Obn`vompgC?;0JSF%H zH)z>l9(V;MB;SBqcAyn(pd%=4Lm=)znYISaMZl9LY?J~N;UzkGkd-0O^EHZ6K@&~( zil7ntnxvwd<oukP)ZC=hl$z<8jLhnoGf!HOlQ%SD^zHQ1Gj%dS`XN(JH8$YczZ#pI z%)D&<Or88xTYc!1Kuoa~XlgaiHnzq#rdSI$Q=kW$#YzMX&X*LGrpD-N=xJ%{>lA|o zVv4nF6gBMYtzx2`T^vIkW1?$xbv0{1v$e4?u^_fxOtF><Xl)nL(yo%+oPeTK$TnG| z1O=Z71XcS5IiO2mic)oyY*Y;GZ1h!(>_8*0;7JW6J*bHgv?x{wbaXOU8K?yUnhDX# z0gcAMb06A;S)l!{pab?aP^UVwL2V{OP}ddS#DVU82hE7UZW048hKum6_i@Qj2JNK> zk7Oj;mTMG)R`G*wMS)(`0_zT1!;Vbw)5wo5iq%O3Eqnr{%~ViNI1j8p-!>m~;Bg7) z9P307t5_44DJ~FG>LJFY<`kzYxM-B<6vI<4*eyCrkf>JzZJ~gy;j%MOQ_I#!)KSb) zQ!5AUn}?~;)F}q_2vQUCTwqHBVaxA8<2s<+o(d{HAgd3+RkB`jJ!Dj0C*Rh<8j|!u z11Nd6C7`7R*7=Y#D}un6I#q*iPP5I6_64Pf0`RI^a3eWY4{TO3I0PW8S79Qc#bJoa z4QMvW(<uVY*+PaM>r=taGSEg`om6PP*R)2l1iBljHZR%@VKXRWBJ-h&K>Yx4b%j*0 zf|?<Ssu%grmH-X#PE{T7c`R54$>GU509yWnrnplpkeC0$m0&DQL-daz;R<S|gTewd zMF%zx+$OFshAgts(8MTSz)2X?YeS6N7-A8#1f_IjWuWQ_#0OafT@r5#UQz}b{6Lyh z(#uJ$&r2`K(5%&g+!u++o^XG8g58RkheFzk432%!5D=)4h37Ts%|&Qppi7NVgfy#N zK_=H1>y&_p-Qe@JC7|hh@Rd8D8B<!js6Mk8?sCXt%~V^k!$9t`22HdUrxuksf%~(d zMQ5P3U(j0_Ant^8bxCz5I4D5pZgAw4fC@V`wdt!hm}LVYy+hE_EuF+Pl%u1Fix9ZE zD8|B8xFelP0k#6N*bG`7f@(BaIZ>hm8u10SNEK~C$2WiuMoEp;1P?%iBOD%PYHFa7 zR?sRbaH*pKDv=ZoL1!Nz-9{x|VymPCFW5kC1Qk^IdD8=!eZ+DVAUi)5!96}5$c_eE z+f@4!D@e~+5430-$&t`D5omc0Xx1E*ii$x^Be0h;N^&7bfWV4AsA^dDobD*%BUT@6 z03HJdjXmlVfg6UfnH%{1(V*<ArUvpXXfGwC)_}EwK*<7nZ7Zk(fUUhkoXw!7rkDw9 zb8D)pDSDMeYq*07uT)T7Q&V3P4Ov5>8EqJgdRBcb=&*;%5<QSV;5991F9B%tB`A8V z^K6R1W2LEJcSq+ze1hsw%vebUpE3qrIZ$5&I<CsLMAJIe)&RPlvqZDHwl-A_GT;SH z7#gsAsR7!)3`z_-sAUJV=zt!B3fhB)oDD$rO^IzZe8&P(K~fJ|s!@z6NnopZ!9GG7 zXa-O7K#w*6r5c?QO&bGDzk#GQ!7E!q+pWOO5Ab>k4M_R{9YY5$R6r{s!9CmhYDjSx zl5eF1VJU&S_Mq|xBveq83SuhhWac3<zm*asr^7@Y!P!#@oJ*B-pkV+yPDTmJ28D-G zEy9za^^BkmvuSzJ^(9CfA4?!DSx|6+b~!}Hg6n6E5>PWF6PheR$6DALSSQ-p=36If zYis7&CW1EWffrCgmQ;e9P2eUIXdE1LIYxA9ENG=kGI%viPNhbXP9EfBB28=X*-P$4 zpaKlM-X;gsAk0lHO3%#G*C|Z}&vzl#;lbA4*((-QXhtXMR;k8nt0?IxWh!avB&UM! zbQhgI`I5IpBCPWS>T>Gk7o_H;7S+^%?vDa3fk{s-an8>zC@o1%2?njR1EngIr9H4L zu27-@u33sTt3k6Wpe1?9#l@hbDs89BTQG}Hcd=krm|kSTtXyA`UtndZYF(b0Qj%e1 zYM`p5Q;fVcMoA|S?0b0Kk_cJXQUaP?M|Vy!C^sk>szN6(@(XnGZIz4)AcLoRkkIi- zO#@wBt7HNZPA<^{TMeH50l5>R3cM20RtfB$Ok0@Z5~vwqS&+jZ%^^riO#~fa4a#D* zwV;Fm-qj9j65E1TFNrf3Ll|N_*3cjUZRMUm(Uw_M)>aABK2FUm(FKk4>J+1_@R>fr zmRU>#ba54E#Sv&ND|kf^I08^L+S=L{gAEkaNrWzWgonD69kapoFgs?gdL__KUZkZ= z#o)$PDr6)tw?wD9AhRMhCm_E#6IA{p7YERC7&KRwTC0<kUlE*Hm6?|wl$w(X9!!G8 zz6QLa11T-4)d8F63r?It;h;61I84n1HQ*qIK~#ex3y0eLTF~K?&{a-pskYNsc{0n$ z6@apVuCBgLN~$er%o^ecrNpG-{G8H~>GC(c#lt{z$T^9XR!T{rjm=86IvJ_9)j6pp zC8<Th1&PU-dFfV421+_<`FSPbsbJSCnHU%-)#{X`+D0pdrzT}*f)=Uz=2t1{DCHI_ z#p<M|LgTg`66~Nt4;rA=$;HLswc}RR`5?nfDy^zfE&>6UDWGOKr0J4p>jUZ#K-I!) zTqV#fU!J{^p^_D7<e^q4xwzP`G&d==$f`OqFEbZB_UKtspIQWFf#(lFqgToKIi<OI zaBf;=PL4m+8KATJb5bkZi}Jzab7?uL6~P%rnR(eDeMp{HG|<V(%uDrv1cjo34%BTR zW%)%ZsYMV*K}KR;aXpA#o|%$g4j#Cx0$&dT606G3&jszj1GyVC9#w2rotBfISYoA= zTwLr1Vkv=!QY%qbo`SlUpb-?%y&Gz3#-K(rQlrHJjSpHXTVI(2t%#6T0wA`&q-yHq z*cL!*^;FQrKS)z$PAaGgkOMB~+%$?cL0vyk(*zoG(W$YJ5hNJDI2JLR2|G_%AyG|D z3ABYrDKihmhIAM}9kEQ?L~x;9qN8XCI)>do)2b9S=bvv28cWJgQ^?anv_3$)iZn89 zL!k`~@YTGT;FB>m@@$hptydk;nG&{2dEm$gtywJ1$x#FyVUcHRYg?bErltXt1641e zK9)B4+>mI{4Ugc49xUZV7suKwf$mtV09`VUS-5~!PlMLu*VKTfcR&rMl++5))*{g1 zR-h%Lc`2Zqbu>V}u~o{<%SbJ%&jhWN1O-KLY6(h6*n&6kB!U)Xfi5)w1w>7aMvi?c zNCcE3Qj1C|!IL@Q(6P+}ZA1p87DV<3&j5ka1E_e#9>4YQ7Ahi^Nr_gF%hTa52Q8O? zMV)~TXwM8JRzWwbf;V)5vMT6Y7fsL-^rGCvoO)0;%~VqZoja<K0Xo+z(>5a&bUd;S zBnQ{j<k@TF+ZH4i6{muey+)=c<bImGnwrdFx6HiEl2na+P5b<s8Uw3LO{+}MFe7M` z3N&^btpqtVTuDa>TxluAqP0!@QIoALdQp=H3ck!V4OpsGOoL_yh(1us11%kuK!>uH zOiz5vA_19fD`u9Q-jK)4T5k`!AQI$jt1!^6=oF+ADB$HjObO^HOwdIf@R|WMv{nQu z=|K0J6{)Eur-Ir^iMB;*YEIzvU8JLw1TI&=l_6+nc8OjxWD!27%Bcs}IZB|+1UmZx z9^s(VN6<2kQb7f%C7_WBPWvDpXypeq%Y)Y7fEJv>eGa<nvk;s%6X8P;u)-T!?}MtN zVA~+jU{w*c(nHi!Xi)(!(jhgb22yl`l8h3hjR7(Z8q6DunPoL}!QokrkObW>4i7na z*p^HOsjjcp)YJxf39^F`+$M%<wNg^jDM(BKot*??LITrDDIC<o!q%FFc`~|0J2lp} z8Zse|$aW~Fe}isrt_Gb%QjaLJV8s|{e}6$vW{HN9f|90HbY84=k&OxXgwo9D678yz z=%QGV1)!0)nwtFRB3;nBRnXl8ur?>?jFTK_f&}d?g_c&}>J#iZP+4JH2wHnlDNv$^ zG(MDETnybu4eKPr!wp<&KvEp|4i(VG@<dzk?bD7$MTwP2+lwKs_##_KlFURb#7(rx z1h?7qqf?_3W5EZvLsBG&3rdNwOL*$@6!M`%)rh6T;9XVVVPA0i&I6B}LG^=1qp)s0 z1U2kIot=>K)YLrNP@Pa*v!bCopfUp*UG@3U!<<3Ou|apyf%;Y8rChK{>w=>E0^2+t zh<IXgW?nkz06}m81LEkx770L9K(<B{+d_I_po2w<N+3PFy!>(qBe}E)HWQheSD#{A z1kqWVmstWDNrlECq^%O2hp2ICb&^YwZoY!VP>C(rp9Rn;&&UKV)5<S^cR;~&9O<bg zkQ>p#!v>mGNLpOr?uV4ypru5$Iz^?(^D+>dKzETNX@qRO1_e&6^>oIb0FnBXQb<z@ z+(82^{;~z{GEW7E8ALgR9jgHu@d0h5$jr|x)`RKPD$y~}F@yvMG$7$};DN(psIgG} zpdbZ%NiQ`oMOPObMa3nFMJ1YAsoDr0s)5BNsRe3k)8*@!#Y4erKntB9O7il{!3=1( zx;V82ltV$ANI}7Z9BhbCgYDIYOqbNw>V!`JTgNO}4~ZAZ2@a672#F)xYFL6nZ`MMC z8J4%fqn_ZD2yepG)PQ<Rpb1fso1;rWDZC(7O${V!Yg+<Q49+*v^-xKBh$u`gZ0A3y zb^t5afvD3_0`1sPQ&UPTEy)K}0jc(>RtB1A%bOr)w4_z&fx-}GBxraSO$c<mx)o0M zqq!7Poq!rNpes7T2?}&C5kwf8tRWsn^NTHLW}_Um$N}tS4Tw*n9;(*?%W8wqR|XA) z)FMZMUU70!eojtEegPz!AW;Jq1=TXP)u@%QW;MigcvOHU3PF*8G;jl6wF43Zg-m@> zenBk6g`icq@Z!R@8q_sNM9RmAA@h=2o#Jv(X9`gi!|E_SQ(fQ0k_^4%{9=s~Eif~{ zQ&ZolRtKJ%l)!qGz)Km@Dp1m&9;m<rm5tDN0_}qXH3@T5bt+SJl0ZE`4SOrdKDHXr z*0dVXrZUiR2l1)4`rxge;D~_S$KVL-J%OgFpq;iTo$3-$xeHpiS*@g{WK|!H@C0Z^ z8)O~i$Zb8yCMIw(4JzK@?U5vnJZO^CfwksA)5f5g<JejqsPWKZJ0DzXgEvPbt^6y| zv<Kaqr&D4ZU9Y626su_kx}h)^wkF>iG?WN-2y}i5cI-ZUmJ2imR1~Wdr3baGI65!Z z7KI01Hjg5r2isc>I(4A{HcwbzY!w|D3mRa<m^TCkN2+}kXgMuJt{84aiKZ2bICym? zDD{Fz9EuB4Q&UjZYr#)p0SzOgOc&RK&hH1GY6^{^YS2l!R@KS*kOPUV@@i@n^VHN* z!5uY}FjP}3(Seo7RwX)+G8=S*d@A_(6Ud1gNUJT?)KcN+bb=P1R)A*1>+Or+MYpYi z6|9E^pL<5gf_B=%m4arrA!dL*Ta0W9vUoH?f2<XP4N8%qG+vNepPEt(FQhfWlR%2L zMS9@0tfmHDp9|&H)M!9iwxGStnmR>#`8g@JMS8HH(m^m0fsdZ_z?w8chveqxr069l z*5^PL8G?+1T8h5c8fvR%txgdn(;`mfPfJWm4arAI>!3+YSZSaDuD2kGM<X0`mR51G zh7xp?K}p9zQ?Ix_1GH=mR4;-?w81$xRRcbt0=lIVY+$VpWGn>R!U|AM0q@yH-E;sR zqpd6fElo*H0rfvYM=~WMhYUz#eX4B~xM~I!JIF~;CtuSVbp9gB{(-d2yv*VZCD79I zRPgdF(4a0nQGpJ&1IgPa>STh}^MktSkeGxtHNZ{zL}&v69M~H9Y7hlFiJ&?RG-8Te z93ip|_=44X(26u`(DIs+R0U9HC%-@kbgC810kDQUJn@!*1_{6mCqTyol!4cCYJwK{ zfmd6Anp~iE7{nzdknQK-Tav-i26ipnHK0nr9&~Q4BB-MPs>mTzLMZ#vA;(03mIW3S z>m<VW1%etS)|qJ<nVOK*+#pg9<QFxyA`K8n6LG*2c+E&6ro#ACy^{LW;u4KaP~wH^ z0+o}X&4iG-chGff)|&aznX%yF88nELky#9Hi>RrArNF)g$<@?ofCWGa3+x)ufIRq^ zYxvpBpbOJ9twHBP=Yfi!dTa+5K#~Mf7JwywSQvw*=pbPWX?kHyC4-V7sL_g)(m)Fn z@<8`Mf?cZwnsvyFE~!TeY|zbul_lUcnc&bavWMO3W@P}bLGnQNs$>>tfKH1;KfM8T zdk*-_Sx7Wwf&)M=IT2bKfVT1Iq{0scw@wA^SIn=EPK5+5X!<Q9vltYjsj-j*3=&dP z)5r%YL4>Fx_|m`P0`QHKsXB(xOCLe=m#H?1;2F!J=+sy>H4q7PE(!<XBu(p-ddMjt zFn@uUpo6n5WCR7$E>O}@0<{d3bd*4C1B`JLP+)@(JxR+04b_3lY7hfaEI`k(h4k;i zhj!Z9g7QXEetvyUYGNMZ#8^<H8|z{+$fOS_6cS5PHNrGf!NCbJ7<tgAx;Q5@CDkRr zJkKgj1LA5;9k5tv0Z0Vw0jNkwetLR+PAW(k>Q7A_Q0eQLhZuf_7*Pur_b)9$k^q|o zkpLN#lZqq<HLe!>Y#8!nSUq%%2O2iuQUd17RM6!=I^bC=P?SK*0MO<aPzYD(m1HJo zBf=O|m=r01=dpFbkpWQ-PPMt<&KP(xv306V9(0ZkoK)&HN^C)qr3pF#6U2aI<2=}= zx>Q|V9YfG|aY%Up%CdT(TDBy=Ktod}Hx;@J1yYHD+?1PIgm4t3(*SV^WNS$YxHSVd zA+e}LL$e;H6TA+!EHTH{&=}-dm<ohhn$?w{MQfFyQ~PzQG(eM_kZ=HHH&kVigOy>% zfLcz)w$;Ts`Q=t-1_nB5iNz&WMg|7p=5u{wX-<iiiGcyc9eJSDeTm4&SAtq>u*iWl zF<_k@u({wH5=yK<;SM_2F|7h}x;rETBVQT@8Uuu0;{e`!4?Uk3v?RYo)4B*;SRnf% zPY<-lpa`l=1ALVNQgVVuH|`z&I;mLXAp0pn<KVWbphcUYF$m~<TnV&o4qeO(YEpn^ zw3IYK7Z-pAt!$OROYgvQZlK}sjMU_8|2$hIP>-=h54?p1v;{xEpd=W4p=oN0Ey$yw zyZlm9bif<yA+3M74WP3KazR7jQ0=x#C7>G>A(lZ-A^@2PW`!l@l%|3dfC@#3ZMD$p ztcp~fa&Q6%-wv2qQc~mr-U$hsS3(-~0!e^}y&M%_!(Npo;3LUEYbg-xeW1C+&Jff% zO9k!b1RXAhQW?R|v4Zcv04aeqdB6*gpu>!iS;A_N%}Dw|6E%?NgAB2OI;)W77N80p zG;x!!rUsg?$yZY|Qna<rhpobZG&aBike*sn53&<{ni?oUg8I&&9+gg>rj-V0ZA3nJ z%K`XqL&$=^ni>soiw@)(aE~q;?JCFEni|mf6F3yX{U*Jn{QMlquEbPL`-)U6hyye= z!4o?5;C(E4;C0%dm7|dJiqS$uCsh-)O<f5(!2#MB3~n)jrh1A%_YH#vSilQNK}SDp zfKOC|`wP^-)CLVs<UtI9&NXC020iLwW`Iug0nH17O#mO?2D<wU9J8Phfph?DZHpid zG_WcH6&>(Uu&M^7H!HM0KPcCOR$Atk=pmAyni}+c4AALLYW1M4M2LMv;Jlq@3r)(f zfgCgsL2e=iZT<jFJweriE@?>xZ|8wbkc0e>l3XB(1+-QI)J_DiHONgYsZY)TZ8is` znM}yK9YjI`uS~Sgv(1by($<az-CK?@8k}S_^1wr;6{+Zh9gxHcDex3Q=_nPHx)8cS zL;jjpAaBW)fE)@n4Rp9=9&{x=sO3;uGX2^^X1RL(m~w6Xbi}<R;0S>RRXJ#?2U4MA z=B0q+%Ni_(C<Z~p(TE8UokZ}p-#+=}sYT9-pc`jk!3<h;k#AcL9$*HOwwa)_)=D+O zvwa{-b&53Y6T#O%=|B|ZYwCbzi@?i4vQurR-!x~Do?dsvmrV<NT#hqzU?i~yw2m1h zgjSq@G8|@c0um)uoPdVAkm48VSUgxa1ho1LbkAN<et}zN1*D3JMKsNz#R|wSBy%7! z2WpFvSge3zIbW?_t+GT9wYUHmsvuiHjsQ*Trh-@MfCuEDB}go!EPxgTnV{=oAQOTF za(W4PLJ3?nKy!6HG+SfK)gaZN1(NxYu{x{jlEfs)WI5WD9VDlK-HluZD3v6Fc1)yJ zz*h(;q}qe0nLP7KG*Wd84K%Ilvte^7;Bh{`#9Ywz*3OuMpwU0jmBjW2pj*;vA?|X^ ztgr%IL2ji4TF2&=U!<gyoRe5wY^4OIK&B~ynyI-Zpn-2#1qmr|K_TpsFO;8M4BZ2q znqmv~7r29}0$MZ)S=<Oq?cfpsA*`mBI(^PNW=U@FNC#xt7OWL%e9{^;yP66&9~^i( zsYnW7hSY=01@Mq%a)w4UDCEG3L1zP{CZ_o3<y3;!aU@pwq=Ht%Dd{LBr{?59SAsx! z0g&l5ke2-N;DW?Fka#{w5r|b<oa&nhI=>8jr<N0V@)E2d4|HEvy=w|&Uo3Jj13cgY z3MNoO1UHdO@{vk`Sn%8mq|QaI@KaKp!EpfZaDz5rqMv@ClLMLF0;hhrQm#DcxsIBe z&{{qfWIMQS*97ek0voAOg6Kr)r0RG>q(K)KfQn<-m;v(g$P#dooN5bN6jcH#xk1B; z){t@0=p1k{4eHO^dV~7RMYf<^nWvXmpATsosHrI_C~13XWNK=ICJaGoO#?JBmv5UI zoe0)kggDJqK}kCwtPH$(ut?h$!m}>6_0lNP)X7w|1zn8<YMmjK;gFQ7q*Dyv>J18M z7tkUjP$LNJZ=~V|n$<ufNs#lyb&An~5-lW6HIPFRQlo$k#T%H@Hwrlk*F)+f$j}$4 z<_2xMPb@A59m@qinuVGnjwQhB6_g;eov0xW8Y;2I7VLJQ+o+0ci}au?BSCY#kQmVc zMIOoV0J&WX(y0Uo8B#oeS}LGIKhGA_jsYDl3oRy;K&>~F&NXN&5a|4B@bT5QdG@K0 zA+$tjJ^|gX28wdXK7~}UMIf=tl6sVzax@{@P{*>s*Z4rPfgX}WQQ|famQg?rpj6QD zwqWZ}4T7aBa3u!KP4z{fv+_ZWOmHqLvIVt+Kzp%3qhR3eY~c1Ps5u1ARH?T4(1s7_ zERJG`Pf|7QL8nQ=)3OGrX^P0vsn7v4NE;W_3szHu1z|m?kCO*p8UxMhpaDPV`M)4P z=qSa<!wdTOcqNbrLE@k(cz7!by3`o$U^P$)r3AW83*6c&0j)7Y8nl8KT%TB645~un z<3US^l$1aP4d}28h|iD`11#{sZAEa`Kh+jgZj^vZ16WxDX%c3pfx8KyyIf!;3^<v3 zX@CkKNGSs=QR+2PK}SnK`yq<3dt?+1Vb}Yqq}uAo6hXF5A(g;oiKt7{LFp8>BL@^b z(FU>BpiMULJ%iA`7t|sJaAQ8R*sUJ11s^;|i#FVs2k~~MHK@!4nG3GLK^ySE>yC;* zJ4fN8aG*PFpy{+M5p;!_7379xTiZ<gOk2<jFX&=1c<G&KU!SQBl0jVo0U9)g^r%3~ z^)rzcw7^CyVIy6jI4#juQUcvV06BfVEHMYtfC9S~lyM=8=1|2!+h9P^t~dP*7YlDa z=o}hYM+$!GJord8*gUjOrj8Q0BMwR?U{6AN%C?!H6a&gknb4p`b4DiY(4I<gp9JEz zOmHxQ9RR9sr=QPd<b*f^+GIm^ga+uIU{FsC;RH?lJS&Yn+f0ZXke2O%{0myi2fhXw zyn0<jB^5La4Q`)<j?q_AvI2EbAXPeS1_2Z}_4)bP#h`&U(AWfyNp$ci4Xj52TBHRH z5@@*yjuk~)&?L7PsJ{!^H3ZrZR|{%6fkrEE7z?iH>OtFSq01A%1rKCIB{c=yNCMwV z3?BT@1zj5l?x}-3t5a;72<|6aMT3s4OSI3|Hnf5*bq8nDBHMf$1N%~|MEiUz1M4E2 zQpif6G*I|~_TFiLD(jro<a+S=2t}Y-5YRS@Joqs)YHAvac}VR!xI|5jVvYu~jE)lQ z3`_8N>7bQYp!=TlG(qtMy1@sUL=;l3p~u0b!dnEz^`JmP-VO$;en9mgC~Jd{=&=R2 za6wBuATt+;YpubDTf=<~K9aY{HZwXgR!0N27dABo6nU__7?BbqsMVaApQl$3N@7Kt zkV_gt>(lZ;$GyR07PJ!#wUG<D)Ke!P)Vl@`Jc8?*XlOTH2Qi|Bv@}o?v}Xa7)<8)O zymTcN(Mje2r8`i6a(afWk8C|?cY10v=%h(d^AWmn15`1=0ux+r*4BcCvB0Be{-9a} z$zKrjLCbHDI=yJ+hb{OZe0VjY0n6g{O5*u>N><<;TM9Zn2C~*aB-M8MUU3#B&~9sJ z)&Vu=LHpZvFb_@v_po&`Ath)&=yWBW93ALkl(x}DH8qJPpaT>$U=3a!$PfnTmON0( zwkpxdutk!DpKYb2S#Mv0*c1&OPKKPeXcZj`Dv1(pi*1WQyUi0zbU<TXMc~o~QfPw) zzmWNgA<%AEiZ;wEh(jeosUQVbQ-RNOw9^G$234P7n}TGmPKs>?>{?fy487uf(C9O0 zQ8SWWD<$xD8>Rd_C2i1<WeM`B8|X*wr0Aebx`XH3)znHr+uk#aLy9u%L5JYjX4)HB z8S5a0ge~l7Jv}9mQpE9Jpamm|xvAhY@a#c{tiU#;kZ>p;xB%4w?MW^!t<Nce4$kYq zjy3^j56A%ywnd<WV?lF{pq*#YC9$BjG)Q?>2Xsk0wgWAphYf-zW7A-f0GgOpw6%rv zK|{+q^`IR%sh}$vKm%!+YHEsUdU^SfBZ**lbA)H+rR0}`t_J~kXmV^(&({Q<sR@hv z9PJd)X@7~fiAbfKrgfq<nh5l4$VAOJP^oJTx=Kx>NH4!UFSQ7Eb}lGUYl2P(1TV1w z9VG`o)GRDBwY;XL7-~GkX*D%@nzf+v4YXZYBN24Ip|&=tB37Ippv)ps4;oqn<pbM% z(7k0y=YfKpo(w-JFHr|^Odj}@Jji)DvEU>8Kt)<2=q3x$i434EMxgW3Ad_H;poXMI zvTdoFS|aESFSv}FT2P5bqNYE1-BD30=p-TAWN@%of-X~p?&gOi1jr#nsAnB$AkH&~ zIK?&vG`~JQ@uId^eN9aoeE9_Eyd7}V!qyr=Eh*3|0M7t{21yiyO29V;mqLe};p;<+ zqEo<O1u7hiApr`yEEse*a#3_?Ea-YY4G;r7Ujr$h%Tn_|S4+W8jI~YC0T}|mT^_Q> z8kXi#Q(&pP7_^Ecx-`}nv=;&9Wl(JnJ;(;BeT+0l2C8VF#Um)Q!H(0>$<y(Hj0l(L zAf09d+KmCe;0(O;8|DVk7Blc|7_dPTq_!{gq%H6e;q)*o0q_lK=%p8^CIPo-!CN_@ zS|GC*$g9Lal`Ob|1rKz9TFpqS(!rM-f=YL|t3YLX9%z0PG~xuZ5;P*KG<~fOi{<nW zIxMc!?R8nqjg(-8qk<Cp_$+8%4Kx>sR40L!O-$#jkPx@EGl2B}^7BCB^C0hou2O`| z&q95m0X`KUJpYDR*OCD`2n8G*^^lG{_zV^BSt%MNntEU!_;eJ|g&vS~Pq`(KlgKjj zY?bo!U<Zw5<|*WXDpV*RJc10a*Q>!IR`3(aAP15`xX351K-c|3>byK8PlBs{NDLQ4 z6Ax%hCG=P+kbfYOkaIFMYe7T85E1CvYoJk0&`d&U0V2^stbuO21(!qhh=K^z{@2L_ zt?GbY_EQ8pP%E>hrU=wC1)mh)lUZB>+E@r0c?U(R4&u_1BArz5eWnJQ+MwAg*x{u3 z>;_qF4BCwfInxlsZe2s`OnX!tGBvF<iogen)g!wBGJ>N4axi!Y0C*%lIMp^!FDE}4 zyst{f5j+wLo_E%91$7ba!3Si6M_wa*eNaLkl)k|`ixfdC1E9kch*dY>MrjQ6%1>+1 z-r!VQ4N%6-({u6n4FK&BDbfTL-NmVHMfthGC7>Y#P~#ueyw|VD%~66~<65Fw4WG4! zjw_|AsVSyT{_tBgR6_~uxT4geqWmHyO=y1<lEgql8cLpdWr;bNDGCw3K2{1!+9jGg zsgNtB{6QX!j)_&#*U17gi|k|a^wV`*Qf;TtGiT9Y_Jd3^sDj#M1&Kw8xk%oJXK<Y& z(ENTTHYreng|t==bibE|rd6tSQ8a9gN~~>aUUGg)YG{xrXya*qUTPlbPB?8PTP1CT zOnrWC0YnN?`{#kWr+J#-do&$U*7$>V6_n^@6_%zJRl;iQfSkn4Jm{@nC7R%KYeA(; zi4J^_RkJ!1()9$j1;K?IsAEwI8t(xwNva2*dz%MZ?N_21sF9~r5}g;Tld6*mUkq9V zJ-=EFbczbNECS!z0KT#zwJ0+&C$kD^%^JM544N?kg)7ANVwg&>pEN*oeh{Jh%&Jtd z7;-j&CInD+MBjZ6N|@lAE<pp(V6%0UKr4Mg_n#u>6Tr(Y5$&fE$cnUDO+DyJJw)(K z=VbBWt_OFxVf_}cwV>bvhceg>O})%w4JE6T%wo`H(G<|tRDRG#Fhq5JN-C&p4(bKE zz$8FTVX!Q?uaTNkQ==FOyBZWU0)X&ZJ^au=koQ3AMWD8V$3$T6f+Y|TZ3PZ9`2LSP z(5)0;^YRc;4`0q)4f2dtD!Bcx1MYrXfhuN5Uq35VN2xxhC?*eda-yac7PatQ?HVAp zaHXJbk_M=%1s64*skZv6Mh5!nIsvJ+`pSA*D*8G;skZtW(e`Swn(?;LacZ$z`Z_`2 zi99_mdrhlog_x39Esf~7m?GYoJkX^o`sukkzNxm;)m&L@>fOL9?XBEhLux!+9bG_c zpbJ4_G5Rt3`Z`YFTNXXQWN50bl9s-bUUGh3a$<>wl9rODP8GHV7l}%m)>Wx`p!p)( zU<eJaMxax8iOD6IWvNyMIys5O^(DUfDVb@RsVP>~wK}OKiRmCZF)OhmIJKlCGcUc^ zs=Bl&#|mZ)sM%?y<n9`xq?1|flb@WJW917?2*KdnyG!zu^K&$Hp!X0c8t4=h<tL{W z7lRMWQ8ds=EUwH;25mQmY^P=`0d>BtrXT2HQJP+v#=>u@1il-wprqIeysSGkRR>g< zS}B1@{Q^)ypriwu?t+Sdm`XYoxj9zT52Uk5u`B6h73b$!O@EWlqErt$yE7j=!&7Wk z4N{{YlT?wL6O*J5F+x8k38Y^iqDMa_38XhBNgp)*P+X9oSDfmWnVORV)vQ#M3K5L( z^-+Sl3MK^FHxIQMuFR`G*xwK0gtFA466i{G1&~LStRQuT4%k}?AV(;H0tLbaxkAax zE7;!;Qnx@=f$9@bhY4I+MELsD>ZIi)miU9O`G7_f=wv{Uhbu}zZAb1}9cWCJ7C_rT zsrGp#8lVCilpvsz;AqwaEt<$H0gX)|3+sRmr2q-QPsy+<Dba8OjjCiNR)iEK<`oy@ z7nOhnJ)nY!5)QOJq8e5PDHLgxfbLQ+(kX^CPD*tObW(KUbt-hqZBwn2Yicx-K?@vn zK(~jXtU}7s)X9W3yAy4TL3>_xvh~21--2(pwJotTus5+X03F6`XKQ3&pr%%0V{Bkh zQ)6sk0vZm}0UhNYZ(CGSuaTjX4cgbL6K|VYqLHB!uagZrc)QeIBSSAU4VD$u)HEt= zvq2d@2pZ!asfj76MH)&ziNz(lFl9=bIu(#(GC+5Sz(hf}232V4U^St>NJ9yf$H423 zK|u}TKs0FT7(pCcQ=<eb2SB@2Gr;AweYvetUOptdlqgw2{R9y$$%W=#B`b|`+j!9K zuaZ=q0^4}VS=}kN@p|A!g-)rhVv43_y_H6aZMlwOiJDq@O^rsmtrA#PNv8xnXIElt z0J?lN8*EHzv2BSCj2V(zQ3AdWqg+#4NlB;FJ{NRScYaP;D(L(TjWV6+0-bW5>{v}J zkOb(?YnXVpPPtA>tR}>y`jXOO&@qx4Nt!xIuqaJaQ%i^UB1-L*K&dUb6nsCbk`<We z3Tgx?=|pGiWayOI7g&MJs{|bp1h+j~r#x0uCrwRF17Q?cE2v2Vx^WJoyFOM^2Yk&k zqzHtxuuyt2U`@d#`30b1%35q=EztcQkQp1$a7HTVq7HE70NwD67|Q}(tO9C5fxVPk zQd(c20V-uRb;@i(J8SYlML|tXhE6(ytEQ$=1|O8FsVRfDgg_OaMj3cpBDn3ZlM6Bz z>29-15FgiVb~;I*VW^TsSonintP>B~W?2Cu%59Y(=Z%8y+R3)9Mr1831JH5TsJQ?s ze?u}dxB;CEK1@Uray(fvXunUYZ4mTUltfKy&En|PXv2E+V|Z*+qm5#%Q*A*Tu|UK9 z@HIBEuq~RPRsd+Q2t-?@g0JIs%*jD@5z@)+@OD`;bm0wn=r|~~ur#%}#Df)_jiE&$ z$V6M)WYA!SZAEkm+5tgWglcL^bmBp`$EQNpf7j}OI+sP6DXG4hxzMXw5OYSbOQ8|g zWa#BW)!CM4)`J_VpaT^Wp_u}ExR!v9y-U{2)=SJOPpmA~D2ayUNzg%2p!4iN14ZD? z>?N8>psrvvh|~eCUP0{1%*ZUR)k#bOmDJGkc)Ev(4^MqfO*yRD1ztoBRsy=5w@AYP zGztW2*Fi43&jl^O$;~WI)yUS=$<Qk;%CXhZD5<FdGiz#~?E_Hhpb4LVE=<)yY7}TI z>FX<j^n%(DwyAo#sU=n!`6)Fuso-J`WK?cy30MSD@abfLOEFLbq1aXf!KtZH(o&j! zzm7$$9&%kU=uRF;FlXo`7v&chyX5C4X69*Dmtt9s3ThmIdUB<Z_7T|qI#3RT(m^rB zwhGa%0ee9k)U?VkE>W~Ctp^1PxWxmJDb>r!FD^kG^@M7WqCstKW*XEZYHArE&9J5s zXbls%_lP(w6XIbtHK+zq{s#BppnRPSy^?y+GC|PfKw=K)(ri%0tdpUWs*|m$lML>= z7Ud~qTO%%S0a*%ZnSshm16z=pkfKmq8$65#E?eM*F|;sDECMZ;g~W+1gwiX?4=pH2 zt%t6N)5!o`I1D=lPtgt9B7~>~ov;KBWq7&>0MEOjXtIa-7A;f^K!;L5%gQ`(TM<<K zL+>8&XG+rmw;bz1Jr!uU*g{N#TjrUnqol2*sR^q3AkHWTZ(@KQI0;ITp!+RAdmglH zHC&-?&)2k9Qd6>0vRBg7hL{MuO9jG%4t8dMZvn3dEp*Da&4*j+ld7YnVhFnL6uXH^ z@wQ6Zj;Y$(+9@FWLAfa(!bE9>RF>$WH7(TCvO&}PumTNSo@pr6d#1r#CAz_xdC93t zp!OY_UdUKyNn(0*ek^u#Jkxaj^7B$bJ3o^%z(znDD4Lo&(BK6np^U_0Xk0@FYU|Nr zC>7L40WGWo<y}qec0o<h1u0PiWjRp06%xhZ)<S9tnkOBTlT!;yKuST;1=3awzJ@eI zFR>mhRU8e88kkh9eFpe8>w*#t8EsJSNzoRXR$v<Jm2?!8v_n(1m8=yCZ4LAc43(^u zlr*gn#(?*Dg6B>PKtl-`dZ3&2Qj6+~HL*lX0VsuoW2iW~AQrr2C_@i&yjgH+9_ZdL z@ahX>F~|b1GM#Ll49%LFWccy-*?N$Y8Ei<otrD20q*DnRuhYoTtB36z1ch8meqO3Z zhF&qG2?Y{KOU%sC$bhs2L2c>O5)F@3Xh8w4wozKshM=+mtr-P!FQf?-i&C^?=z;rl zBA`?O+HjFyS^_#aRU^kXPjC7}18wm5GtBWyP!*s7mJB^82ei_^sIofQR?$!=Q?D3w zd2T#t_enB%4{Zt9dC8h38AbW!3MJM>8oGv{E(zo+BQQ_NFJA%P4?zr#WP_UuURJ^W zen=H7WGEgw?owF-YT|=O!}D~Mz@08lu&!Y6)sxU>0$dfO#ix_113xSld89j93A8>z zM+tNZ1M(_Da381=R2w4?uYo76;cXT0Oa*-YA`dj6k_kHUp-88w-WGHK3dCw~{slE9 z!953PXTG#3$ErjJRHa&_f-iIfC1$HkFw-he2bv13AR9h2i&00?Kr@G+p$$-B5uaL? zm=ju*gXB!j>Z1D863`92pgjv&i4_{)u>h!bkWm0wUbKRRicWH3at8PSdT`PJo#zj! zazHF_Jc7=h0-ZX8I>=UDlvn^d*bmx10Usb+mRMh;kP2&|fEpv<91rq8(x4>h&NR^8 zJV@q&ssh!ApcMv?gBzj^Vo_(~H1$#oHDGr@g7$ubn`0nlC`(-R>X8p81dmol8^nUn z*#j-VfjbqlP7gGw1vz@dx&+iaDK3F-IstEXvDO4_4NuD~LKB82#*$jZIgp?QX3!>P zy$&c`JoEBWk*8*Gq?{70i{y|OK*9|}St6GT8m5EHrGTe2ko=Vm@)T%59qe~a9ngXs zXjimYL(>|ztIIx54`j3>XxE{p6?B(R3h3-X&04Szkn$k3(*SCFphTiIbm=SdqCS|R zsi>=|G_AlJUUW+HKnhUIh6QIvCTva>G|!WlU!tLul%G<mgn0lkXypVb#37Y;eKMp| z2}(wK$r+hBDWHR6i$Mq4fP`RKzM`N=ub?=!G$p@SFC#N0B^7l>2jU9Q#&z(<7MRMi z%;L<X9MEY>;Ei9{<jhd>A2|CdDuS*+24AHBJ|PHnAtK~D1;~kSH8qe^pz0yFtbmFL z*yx>JMF!H&IL&HM%NOD}g}l^qg*?3oUmuT>k^*R5i)gym)`GjV;i<OO2H<^bhDJul zRz?OUwK`#-^q_}si-x9kJ!pqkeo?WlqGA|m*=KoXNrrP#YD#KeNoHbBG3c<duvE|_ z8c45gSSnZ@sO$mp;bl1D+I9HK=_1hD4XEKYH6XJUK|99~Eq#cW>Z?KZ2O>FSf{xb# zCE!HxndcQ5MH=7=v>1G9CiHdzof1%IMyCW)lYw}}so?bypmRMEi;K(ii&8*qCMq(D zAcKM6)u4%>>c0dOx=_L5=)_piy)tlR(TTCvCGZ}fnp&|QdT$Y%m<B=%$Wo-<OifK@ zv{HmFG@?>dbU`C5N}%miaB<MKYPf{05^B^cK`yNZJ3LbpwCW$Nft9EOS{4O5o)ez` z;X~^Ra3RfVP+K?Ew#c?vFFy}-=M$I#9!IJNGr?^WFbh16P+XE&l9~*@zyv(wt^;kn zfClF5i(%~=E9giRSQO*z2GD7opl-5#zJ`GgRHdd>z6MMjd@^WaNqs5!{8Ericxp6E zG8VMF0_2L)VyHTZGRUYZXpt@C-Z}7iFR1pcsR0kef|fJFmUzRb1i{zFK~$zzl-O4% zW#%OoRa!xW>p>&NwN}-jVI8OtNCY%^R;yDCYHVN*U4SmI11%eX1!k%SXv;V#Y{5Zl zo2mixFL?hOc+U$+797g<aF%V6Rk5B?ejY}UBSjo&EEMF>#FR?#xG89$72Zfo1#RI6 zF9=8l*$FmYNfSKh2}&z@DH<h6eLT>16j03%*^`en$q8E62Wzd>q76BKj=l!%A_2{& zKo(ho@_j&2>h!JIAp)Kypd)XP5<F;N2G)-#2A!0XSx{oDXb38aq0N!t)RNKyjcU*& zHh8`Oazww?^ks)ww5IPk#KJTE)gcxY)L8(i8vU3gEVqq=hyIiE^AN-Jpr}-U=utux zEQovoY8`^FTy_P`VS(0RfiE3_IuJZ)UY}C}8ajp=f--LfY1e_$Jh&SP%2}W#Z^;>; z(+kk@KR7r*?L1p>!wV@G5G5zP4F-?(63yy*(Ak`*<07CkF;yoI+OR?^H9?oJRD+6m z4J8|hqwSP5L1PsK8r8`epgHdn&{jNf8`&Ac*C{SawgQ)<wVHbQc^XQfazO!{fR%LW zQLDyO=t_SLP-6l#Y6H5+DHE2;!C?XNrM-!P3Ao;YtP}!yH?aiV-2$xzf*&=U3TlpF zNoSy&U%~0DR<j;lkwv6}=C~t4Q+2kQG4>kvwrVvhnl&-@F_7f}pri;*PoSPaft3>I z3<c0JnviLo0@&CpA{9UyG9|VVsgPw!km2MC@SP3XO7V~mzBQ}~4Qf4r1`ibtbV{JD z2#}rNBmzkxAbS-+M1c}gD$zmg;RYR5tW#_YIgdgQtWr%)BN94d0S<pnd!^E%93?AQ z!38?{s<HsQOi&M$Vb#>YBPu1Zj0G+4lwcz&$O9?}gF!kq)zp+gv=XEWt*HU`m<mAi z6eVDzK}Lak<gkIKOxqHO8(|@b-r_@*1ugCbdkLhx9u)8zpe>(pA&`hpv3*H&ajY$f zfHc>VQ#B$XV=da5npS8b0}c_SF&!`;X<P^DKJZe7OmKFCWqrZoXlPynM~G6a?evd2 zKEm~oC<aYOXk=<DDU>G`E9B*uD1eemY6|G~kZ1$Y$x$fbVG9l@C7pcRyy(nW9T0(N z<7rkW+QK&?)an$$hI!!`ShE^lNaWksSAwnxfo34kj!unCO)Id0`QZC_z-0tVh}ov1 zhO!PQv6dERXk>zp&;^hAAvMDDHPzJeH4;I2N(Xe)GQ{dyO<0##N2yj5)P93(sRx~I z4_euio0?aG>?2U=QevApJ@*ESij0zyrXHx_4J~UFN{~(tpB{IWMY>)|#|WJ35shu= z0+?FJ0zB|^C&(^@9pJTQ;GqFnI)_)#CD7y-9cvBSNP{@&16065?jKS#gsfXG($UP+ z$%i=(bkqZ=nOT&YSdt2|66QV7DPIr|)q}Q%7ulwwA6$@>Se&W^I(rE`>z-HwUylSH zW(HlllA4%;Qgjt*YFdG2??EFn!O+8m!ABi|PRRnDPj4TMZc8R;3Pm&4N+Z+OStGgx zw15S4z$)lkRme#hpa|8-2aUjkb{s*%FE_O)Jyio_AaZ{O(p5+Ut(!{3al{v7haGtJ zAGrOTnU|7UQ4cy@SOGE4QVd!5Tx9D7+D8u_Sp~0%v@OwtjI$c(fcU6G9I2Z2psgD^ zuq9ENR-o=eeiCTn5H+?kZIuH2gF`@B3z918Ge84O(E1f+JR-BE23#|Ohdw}s5oBAe z5||IV=Tr|oG6v6CC7RXwh`gth2)+zLqX=}vt&&YjW*Ml~gIrqx8gGE5!g?Rjwhhn; zHz^uLkbWpE&*rJAAq)pCu1ZAPGNf6Z2TB1smEg{_PJT^IG-!cJF}ytqx>hR|)Chz2 z{y}{saF0A%2~<}Emn0U|gU&UFaPmR>SwT$1BqvxIbh;GGhE1gEKzONnDOd)l^uR~x zAZ0K3_yVZX0#)d#;6XRg093smO0N}qY7BA;f@=n~jfzqWK%oa3>?=aOiUQJQQz!u) zYXCmxsTQ{I4cs?|^l!m?ApF5SUueAxT}BC7844<Az#H}u8wfyE4CL5W&_EpcWO>j! zQ}95LrcME9T2cwr7065m)mz}XKge<LpkqG4%59avH*98>fpT-PZ5rrkInYig&@2Y% zgvff(L6$m7;2B~a$h}z*k(|^t&@@S@tp@BU`&6(UpcA7qD^gRy9MI5SzIG0xwuKyj z3EJnTQ);hKWSa(e2xwD`ZINC{egXKRW{~lkRvL-*$OlvBYu40&b|r!nC*-W^9FPzw zqL6n_rh@EE1r=I}pb;7!&~`NV>b6=?28Engp$I<epg>JcqX1+vgr{2!VrwTtl+=UN zfE)u>1Y&^C;7u#hE!G3^v@<nzluC<1TPHK~6jJR|^}rnH*qly*rd1mFsOSRdA(cpr zmmyIOjc3q#i{KI-UOU3_KeT{XfK*PPssp?<7~A+2c<2ingP>^>NJ@g_KG48yEu<2F z?hXWPtpXi_U;y4K0zUvHAJlPk2489!l$ty}?=1^AD=4b+r*AA~mZ%4xt_5CU3#%-^ zgJdcB$)%u*5jq5@13Ic0daW#I$-hoD=!iIQ^lE47fp6u6I8GOI1P|yg&5-;89Z-N; zffib(l|WTRpsDhyPfaVS)wBW|X8_S)P+O~0faPuoP(J|TKWNJpG#U;r-lGj-b&70J z&4AX4N@=jf3rhXP#Tt3wF>Y{PQPQ+eWwOnKgo71m2o^Nz28qT1@Ex}rpal|;LIj+N zH8gc{G)h3$fsZTzb+I)-mmNa%XlR1^zF=oSLI!FjL<8iI?2!Bd@EDj9cvUhYfa*&? zyL7;LA8b5CHRxnjgz{QVNU(#BpefJ=TcHcJB2Nc;;&%wBR0W-O1~wXW-FRAwE+h&t z)PhV0yQ8+Y7IxPu#NUWS3@;7Ap@4VP7@ANaCV=iYMk=bH&MZL=e8`A0B<KPlcM3xz zO`)WwCa?r?b_Zy&Y&GNrT9BKqlt2j%nv|44SFS>iriF+{LXsH9G321)HqREU6{ZAK zc7v9qqhGdD1ot)U&?BUZ5!}B78I}(k)dM#Spu03mH0|?kORT_`n8DY;faYZp_cep^ z4(#*~&>8=*!XUriK0i7&)(UijxplsMK4`oE>?w^r`+RWzf_m2~Qzy?p(+VO6^@k={ zn{8&T4(Mn%v;rpsHbDZdh(RU4juI$!pwy)Gpb8%nOOTDMsj-k#=)o7Oz^-aR?$_mk zi#OOY{|b;>ML;)RK>Ksx#jc>iYgk^^(2P!v1s^DHl~)Vu5W{v^RC}am)~9EbSi$ce z0H=8?=nVu&2Y7)BJ<v`=uwSa-C(vht<`<N-OF(zsgQjh*Koj&<O8KQFsYOcKB}fM3 zfo>-NPuxToA>FQ&sZ*a1DO8ZUGmrv1LrqO1ucijx7>BpiGr^bf)YNDw8h~Q5rUp#s z+e0&=k`?rh0YqC9BQb#rZs;yTJ9r}=IYp&v+Jg*7IxYd?Cr$g*XeF4hW35v4rXMU9 zkf@JVf?Qs#q+JpVPKJm}$v{^^r0SuU>b{^Ol5-O)G*ZEx9B`*GKPLyIUnd`h2U7sa zt}q3tyn2M~nwrpauRuWqIt&R^vVpu?3|<2UIe!|&&jcNv0Xm-EJ`<_~bOI?Xc_7uU zptEQY#S*j!1#5(X%k4Z7&`t}`-kMaMJk462(maqJ=rky}_yXPi3fZ_0x_lM9AOdth zFq*NTB!X%%Xg>>RCo|Yk(0M~xbis=Z(0+RKJXjB|;z0!@Xm^E{mJ(#8J6Ir92efxX zOG^plXvnx?Mt)98P-<cd@{xL))!^0g-~rO`#LN<HZO~d;Fc&oc2X1s`7K7KD+k#2h zs&h~yydK=b0<Flk1rg9?xs{N!uRtr}ZF3--C?Jgz&~ZXY+bQ5)t1PL7b^t(wI-20_ zdTIq|0d28uCZsLm4%*9-6$sk>pc4gRtANV%dgvr<UcPgFURq9OGE#>dF&LSrrvko< z1C-<RRBWR_>(oGlyb$9MQc%8oDyW@U3+jhx<mo{LL1t8f&r1YN(ZY&t&>oyrNCwZd zMjFq9`wWykKu6<&=9ltp^J;3~)7eT$NkIvG;3H^hSy^I^riKzo7xESvjP;h~;H{c! zYN;A|wh*>vEvTyu39>w-f(e?S^E3?2HFd&DK`T&TJ5H1e5{rvLI&>lVt5``VPs7+$ z6GPqfKLI?_5@1;qEV6EaJo4UPSu;%8%v_KSpj*20G>nZw8$Wb(bdZaCP@bw*DlJY` z0Bti$E>W_c?s%U`tUeWV+D2-zZ+=Q?PO6elHDu$0qCqWamKoY&w5<kh11YwOR!YoC zEdnotQqoZ>$t=l9Rf^RCE&eDi0j=N%%YqLc0i{VqwuD6!M7yq%HYnirz^WrbJ!Q~d zaq!Z+VykM<38UaGV946R>Qz#6K{tnh6o58Spq(=c>XBi3FN`$rfrpHXm12o98(+}n zX&72SGE|Xmo`#7TXscgJVvcpH9y~}vgPF*Fgrw8zw9K5;V$hKZ&|7vq!4d15pOTmZ zTEPHWF6Wk+lWJ8D9=!&KBJ?~zut08VadBdLDr8qQbjH_8(Xdu07i>l~B&C3Y-AXC3 z7<5LVPH90(Vo55<c!XrJRdjV`3S0?jBEm|^5v0CYsa6LhRj&k^`6w>VFRE06ZbtyE zkpc;1rot2{CFkcAm*#@@^S~52BSatuDS=WDcy|^;2{iM-jRB49<Q1pF6!>H&r`G2c zgRF_w0rjXMb828u*Xlrg0Un1a1`C09fut9u78hGpCzlo#rRJ4@Q>m3wK~X+fTsJAP zNVhz(C=b+e1YJ7<QWKC`l$@GZ0>0`E$qpqY9dNLMPSFLO1_KJ&(mYTGfE8C7n$_SG zo0eLVoB@g}&{_phlM}i;Lq$VL85GZ@1)zxvCGdW!R0v0-8k8;|u>%@ORnh^C8X?jN zI2(hnut=Y-lqW1Cf$9b5dK)F3lIev-JR<eBO3)D)MbIImAUlg~K^u)gd#6FWv{H*f zBk`c^JfI~bIjO~<OM+8U(Co_tPkf{n728&0P61n?PxR_2Md&&Q2f68n_)B`b`YBoY zBo-x>rRL}*7Z;_4<Y%Ym)#~I;zgWy8k*Wb2k}57u0%dGaixT27P(<m0gE$9t?k)JR zIdCkYISUk`MUe3b(2;f;kio>%6rDW1lKhgy9MBPWn${)LYpaDNSU|VVfWt)9wn$q^ zRRKO|1v<?*6Y0nvNC;1t%@Y<EM-AMR#JqG+2@45ZP|q`_NLWUq7F1I~mJWmNtb@n- z^nc7gV)fSGl%SGPQc?iw$ZII+Cl+Mtml^6q5^1rLrd~-#Y93<M0j!?0O$86*gQ{Op z?F)?`TjWY76*OfDE&#wwm~EBdE`$`WdS#hX;1wUBjV&cmF=+W<t2Eu=o3P0Ax(Xhl zdL@t-Kn<gkR8Vq7gfqCo4hm<;k!{GHfhfoDkG_(2iC$(3y04I13E*T1-iV!?ssTF8 zyB@hB1tke=e#(QoACWM0U_vl2m4I8pdQfgL$Wx#rydi}rJad93dO;0NL{Z9YTcR_4 zZJDq*kFBBsc<`bmII(Q{UuGY1M(gQ}Vn(7$wn_nzjbxd5>3Vv4&;ySl(F$5~r=c`G zp<GzP4OX{-_qc(=QZF+_r&<XT*}9N|RtYjz1TK&DAVNAY6`;9CC9CNPH9VsAwdjEe zj&F!IM0o_y;(B^|3PGtUnMJ9|pe<E;N;;4x3+hyWEu<#^4<x-JsFwKBq8y}nNY$)| zI~!Up+QRfgEVnPwgLn&4(845Pp>L&up5oAK2CaDkH79VTT^`74CD2(nIwjLLmI({n z*(w@>Mir2n9Iyf$(&L23F}%eAz61}nXW7s|Yx??n9+@O<B~_)`TCfq|I;YsG8XTln zMLH0FTIFdN8)@o*(;$d#sHp=v@W=?nGY9SaCZb^#MO@1RRN5o58_e0&C7@yw)C{Nv z?FCFssYF&YZ7+|wDArmBB;!=8122p~cN`}crGm;juwRi)0hdeZsU_eNxmW|T^c2DY zmt0=RnH_XohmwANVrfZ+KE!R<$}P|)mh9BLVrbC?%6~<vW%=3D?L~Yfv%wZZatyre zKsFI~$&m^wIU!Ed08LNSQrbQPPstbAD#6kVV$vtLGB+td2ecgm%s`jW%PaxipPFA} z57VlFDA_=H7jzb3EhLyB+l^sSs!*b)hQ~hejCgTLQE75XKIo(?m^(@oZEYcJ&=Ls9 z?OOIq#Sq6?!EMCWu&jq1>Iri|HMI8uYFk1kP~Gy2a;>VNi9R}32fTk-33Sahq!6)E zQmWNSP01`FMj>WGWzwt$rAOQ;wVuS33K;}1*3i@eHK4$mRu|$EXwOOsvibv5=I7}p z73+bOAT4IltOjX>YneV<NQAQ<)cnd%E(PTPWP?HeCdpVN4Z5I^L^c<^tQ+clNa6r( zMF)3ir}MJ-u)E{RYtT5up4p(1NV#o#!UG=BdU(==_!k@s7y$(qg<Tc_+6R_jgmS(B zIJXw078Pd}mq1*u0h-eSP5(j50jTxRst^*Ypp+7=qofQr9o<eyVnX;IRuO|j4x~{p zGsPCvb^x!1)`N?J0uy>pl+N@8;v!<8b&jxF3n?jpG$3LO>;i=UAk{3wZfFY~-Gil= z{sR?DpymR|c!(?OQ&3$9_b*5Z+y%8dD25}f1`id$PagwMfLP~2c1IM0772kv9$ZdF zm&AgOn?Y{|)PtsuK}8}YUO*Wl4}9tX=mv05>mHJQAv{R-2AQj(kqPaFYCx_u(X7?f zgY0vFr<fAWYQ!LjZIK3KX^o~m+<ozSX*ttVpYaHYK&3RT;BwK>CS?wburRL@=<IHt zl+@yqqWsF~4kA7hxd@MeE}Td$N!5T=DbS<@3To_aM{o@Q_b#XnFj@tGDk>%XRX`S6 z6#(h5gKJVqzZg=NgQ|q$<op82z(X3iS^(ub(A}^IaY#zCijD<Uzu<vOM4F~{Q4e+^ zC}D%sOnPcbFxYw6ihi&c2$lSLkfIP$Na=#LU@xR07K0l=f*6JJbOTOdSp)2aG1yGx zmJi&~V8gKV10ii6Ncdtm6C!5|=?H>aQ=pp78N50O>`qW|gd7K;+6`Rp!Af4Rqm)3o zUN9vw2T>Xpm*f|LyEirvKO&_I$RcTQu!9l;)^Z87NT5VR2^<{t(DEOo7`>nZ_g6p? z@X`r%wpCHC9@Jyeu{uxzNZJCGQm{58<mMcR*Y&{u0IiS%1ps7_2^;_#sd}EE7BqOD zU2!p33`?n&idL#YOa-m@13M0C`SiqRJR*`%IndfaWJ%<*tsYXgK~8)ICrm^n!0I%x z4?T+=i;FYU^HM=uQ6N(YU^Bsz#kTQ!MX8`AN8kkkdPp*e?nNrB^`?+&YYUoa2Sv<u z6*gfZ1<=VDV1p30pg3c?AiJ<qeTk->twF60TDYMo#FJ{ki3T#@3aRpt6G{nE-3t+i zWGrxc1M4i#;La}xZMQ@80)#;x&;!?Q@Jaxbj^w;>jvIi>esI)++i0L;O%VYEu1qzt z3~c-2>3`*E7#m<6-i97>s{}hyI94Y&A3U@N&BH2?s8UJI(S)A3Y6KaugY@X3+M$b( zA)5|Rnx7?l&_Qg_EkK}qe?Scj@Q6F8TccAB+H`0I9fC)$lOgto>47bVtn{wcf!c-^ zmyqzq;y_UO0j-Wxkp}oQtEYQ)@k-SzLFI4^twV<r;%)OZj4U-_BMU0fSrPc`jfSzN zPM(G#LPc0<s%@TzsVPX<#1t~+0UiqjUwsAIQJY@`I&pWp)Kp$>=rm6WY`77$W<~=s zng|+9)WH}`)YM4@cM37m1Zda_ygtiX5gwL_Xh|j0HaZXDW+MyD*m|8J+eE}Z2aSAe zJw(v;c#wlCLC1Gl6`@X}<!ja=hVnqIDdZU!m@^boLDvF++?Qvolv0$K4%(WdWNT|~ z3*T%AQ>p=4%K#n-1TV8sOD(c3(#tQ(OwY_q%mL4nsHqiAUl$!JQx7sP)3yjjv2~`J znl9vGV%P!0N}y4xVkI5O@z=$mv$VhpKuIwkewLw5i5}Q=jZ~d#P;VVHW10dMu_~$s zU0bP91iH@^ba;tND)=N(2hfUo(And9DMk4Ou4!qh$tAW*$@vA9prhMsOZ19M3qW&J z;9+Oayn@maTSf3;cCaH~r$1~Dk)JNu5n?qxaXGKl^!APr1tulU>51K@3M`tSO=bd} zA+o_rh~vS)H3HOB@W!W{)KKt{x~-yyA~eMYKu7q&Zm+3<34;OwG)0?Qq^VOfU2qkz zoVTqaTr$5X*CnweQ3v7Zq@4VuV9+E4EX6zJ<R_`AX@Dq1&m6Mmw5DeIzU~kyrka}R zce+C)KsPg&XQqIMP?B;=Q!{f5z+nIx@K@5QhGpbxP{2jy=cQVeXuxLrHFXLSi%U|$ zqL9g59nkP8IQ(D}?$8StKwg4~gO0rd9SR4Yg)5T=Up}P+S`(K89^Qq75ojB%&UD3D zAtIc`Fq1%B2@YhQqNJ&zkxnt_02A;oI=Eg#o#}#_p<?wg#cBCP$*G>;>rKEZ6%^H= z86{Xp4W<sp4?s8&;y%zQs&6V}?h5MD+|rzq%!0%s&}mXSxrr6d8KrsI!JvcipbAP0 z>OnIosVPpCC8=;<6s0C7<|LQqB$lMYVjpz46>O-`Gp{7I2y{xnp@D%;Qf5g}Vo54o z%+$a@2XrMk#GfE-@bS!QNQA*GQvxfQ{%A>v6ljZ2rlAGW74qOo1jvk@LMph62On^a zPK^bhIg$@Kf(w#sN+3&hk&l%FO=yDFOhRK<L#bLxyF^>57QD^?bO56csKo$ErdC*& z&gwx<{(~L-2O8i@#F*Iu?U$O)xK2PU0^(RjLu-vZJwyON4>?8_Qd27d*McasR-oh6 zGxI?=-5~UWPnm*D^wgtG^nj;yU}ukjQVDcVFL>Td(Ga$W+fWCza5ulS#LA#nCmwp- zDD1$oXeD??P|{I?WgR6Q&~!T_!+`GWfux}NB2d2`TM|`@)rp7aZ7VGK9cfWDtStui zJ}j$)>)Z0wr0mQRaQOf^VpK0TzY5F+@2UnJ3k_1I17BC7S*sK81W9_J%MOt?S3?IT zKprnHNz5&<bxAA%EdwgIhcPrXt-$3bh_4A61^}6$0a>!G2gwe$29V|&G<Dn7L;2~c zB~V+Dk_>1WCU_`Hp~$vG7vxUx;Rs;cp|ejKieO==aiEK|Yif$@z$XPDOW10pLi9si zp{b=|m};zFq^VVJ0dWsR+%^@$L--N2aSc@eKrN`P)rrq6j_?QqXECJ43cNY2m<nny zV-z@`3jtE~;Kc@Ln;^K>5iWx6m4#IhpxOjf=!3Q_$ET-)M>xS*3108Qrs1F=fIM_- z3)vH<0d@npqR_NQu%W`B4g_>P4^#wXKC(h9rTnCNQ2QUWG#iVN8hMcZ5O}d1!hDo= z4rsCre4sbvK*<v5xs%|7@j<sDM#t9bfczH%nh!;^6k(pTHG*Ahq5v&{QqhgqwoTP5 z&a6tUsWGet-Au1DePcAAa55INsv)s!WuOC|eYJuYu2u%M)~R~&u=3X)w1TDtbkYWr zAjq*uT+lS<^bLnYL=c0Su-(|8RhuPx@vxH*!P}uB=T9LCA}IiE8}%>G18rAIEh?$h z04+ubwP?UsU&D<7-Qk-GI?f77r)_m@t*lObK1eUN`RB~E>4`@}MCz+SEw3V-Oro<Y z$P0OT@u2h%S|0@q7+58wrk1G-mA1(PH7>xGBV<#dxm*!6Ay<;0Rg#zkU59E7)n=Qi zQ)CNX9GI4qpI@W_)1ePqdR&s2qot9jmkg^+YijZkkpr1I*VNS3$kRiq?`mocG<Bv6 zo(K^Y*S0MJxew-SsB3hlUwpwU#%MeJ)eBxZrc9mb2Tz2E1?1^L^EAx)nmWj~L6Qvk z_~gWt)D+ty6j`WNTeu;%dDGv$;FYS+)B!1kN+V1LmqqY4EPV1FwDbYo{L?@ZLT}Zk zf>JlM5XCeiF((Jf6l0jz!NS-~g17{x47Ar^y1>~GF+^&H=RlB39nglZii{%rRM3uo z@V-OPz8d616f{8B<w7C^v}{kK2pT(@dZ0y;$R2~2V9*Q$Uf&MwFw}#C!MX&xG!`^3 zSXu&Fn_~-FVh+074k4ri+Cv736j%&{#%4+qbHLj|K<g{=^pG+K=pY-=8V;}@5Y-E; z(o`s_)vV<MmFu2)#U+V($*KNn;I*BTCvyl*w|8^osE2IQNY%8pwN;9S?8X8eHm$7` zs|2bL@-j;zJc2-_C}!cK1379Oyv+gBEC6i;)yW5)@&;)D6qVG}C?aZil+FU^0-MC5 zqQv@2l!6$1*cqq=4JxzYoM;2ka$PvrIu+JewS|{zpd%JxqM%U*Xxk<Tw0cBMO#`kY zS_yUr6<A8iBNntn267A)SVU7NA9O~y9;kf+y+<oPvltP48sM&+l1?V*jtC@Ur(e7r zBFqfhG`jE$ub8Zox;FeEY>iCtP@JZ=x{|u4PQE>)>r)SQ7E%Kov^@@#F!exn2WXTL z6zZUJ`BK4-vCo5y&Os`jL|CN*ma7F-e6T7Dw3ZD~p@3K3qi9tEg?pt^J!lsVco~2O z_<F{~TyVInsUh*Ai(+ePU{+;<78rw0XxBpz5NOX$Ne5A3YTAQNje$3oHS%mhM~}dK zrBkApS`XTwfYrZ<%mi9r58gfpsklJH<2tGEL%u=r42mXuxROL2NLcAWL);2h!GimK zNPE#Tb@J;qt2K%+ypjo8kD0FtIu;+zm!M9kl1@IT8xFS*8kEF@WF|Ny^L6r}Wr$yW zVs2_pO+F-PfG+HU41(H%u2lxDWCb5#3~HO(LIw?LYLq}DAeoR8@AdPOOHxa8i%W`9 z6LUcU4;qmLtp>@-PpYZOgar+FU>TZ^A^k*H`DTT!SkzFmNwl-kPXuj)1g$>RPy+32 z1sPvjl%ol%6$><!K*t>_X@Vxd6H5}o4phnncR>}Dv^5}}0EvRn>_bWskPaClZP%A1 zLJ~KubE>8W+Q6@9YYRKoUk_vxC_TcG5po7dg|DH3cWP^Dlwf8l!LtWU1T+#CpP83g z0?JjOKu`xCbd5-B&^`ci8(5=6(_UkGBQu|fRtae95%^XcP(VZb8({OG#iItSISs0F zMC(BtMnQ+k<QJDf``4fvL=U7H6galvX<cY97Zh%gi9L`MINUU$Yu&*%phg_%fF*GA z67FxzlG(Pt1l0b`%t-~0O@MY-A?0dl>skSHT^+2oTm&l4ifp5cVnI0^)CSIj^p4>H zggEai)fU<r1#fzTq!Uoq1nuks_YaGs>tmI4GHpQxOHqD-21F1f9c>s3+wp0gX{}iV ziP1bwolIR@P*WFHBi7Vt6xl|D+hGM7N@#}1D#d~}jX{$&s7wLHCrWgNgU0$Gr4cLv zL91WT-HM=YOs*|T5JA&6D5WWZju8VZ!PGL{j+;+bTnVZStPox;*-lT?4;8LY1?9cc zq8zYAphF&^W<kOUwEitW4-^!LR9=*t2GRpsR{{z$5M5IP+vJX1wt%dKIux?n2;AF8 zF+aB+yrvsuff8tb3w&fJ?8HvUwrWTVwz2@U{W>5t1aue<<TO?_HKhQ@5N8i$5e<kG zd`C9KGSF;LK?(FA5U@u<P6Lb9!-Q=iO2M~nYk*fR7nJBi&k_L*PJ+|0qnBd@M&yCw z4%E5_-Ej`RIH$T6(tCxD+JUYvfsCC%E_eZF6G%d+hn!#!y4n^}xgh6xP#OWr<Uu-U zu%nd0C*vS;5z^u!@Tu6KgUCRu?^3~y#LVKL)MC&n*eM#C_Mmg$!EDg&Xds!a`qbo- zRHziFpP8DXWTjM)nwJ7v<Xo#0pPH8eYKH|B<%15^#bIeF_#|x54!HchR8VCJI(@>n zL=SYRqYh}*Qf>k0fNNXOVn5Ic!8#=n4@Gzc)nk|p+A##X+T6B859VnN(C+3;P;vq} z1k}_8pF5@i-pK(DI%r^n7Au2RqSw^q>wvdwrGl?F1&0CXJSvSmog&aN9H5PXYHBK= zt4~25hfC??Lk@hhg<GaGUEY{a)GHq}AOpG+7IXqfUS?`ua;h&l^&*|^3?9=1B?fp~ z6J8*}$0Za>rY|hy6P|wIO9*Q{=$06Sr)sUiWe8~03(-1G)yao7kU=*9feygXfb@?* z>H<qsOQEBOpx!e=2r>eNB34tAsR6lIPZK%~i>Os$RwzK1YJ`A}v&^$cjsWOXBsips zbfWWO!Bs3II;=7^kOr=xrh{A#>n=g>SO7a0;SSK)N}e8MbvMGtFt@-HBIwpx(AW<& zS%WtZWfewv1VL(P2orp=N|7F-V+Ju6sZRzIK=j5SogFJs#}1T+G}Y9KK>ZcaS)!l~ zVW2bjpdJ9*0d8ldr-J$z&~ytLGR=b~7<g2}+z-j^V4aYeT`&`(8Z<&zl2M;o44FNL z1ULNDRAg^}a*-1F3UhFw0y@A0)GUec2!gpm(GawmCl8YQF@q7=8AagcIxJHKPtX4y zA|MKxnM6q{_C?bZe}_m+pC`-57YZGhuhoI4&dj`YOnV>$fM7qux+2K2uBHZ$Pg`4C zB=hs327`w%FpY&cALKf)0+3?Zzz$BuFa@Ad!t~S<$QU7PR33Z>Jm|vAAhfF!z&$D@ z(4kMDGr+*B&r39vbU|mP*n%2+&<fVhP)!ZI*$%X$ATQc57PN@~-bztZE7CTs)rkj> zousBftVR@^;1VKLue2UK2?ceMZ7Q^x4dvI=7(kYvg3dPqr*WM`Pz43*D}lC-7uzO+ z2i$aW&~@sRf;zNF(;zi9#X8AgBlHl1*g9#pO2|1|rvP-S1Eh?H7p;oZ9aQ*4JwRh& zpi?MvYHCVtiZwMs6BD3zA!trhQ4w@)XO5k1vAsqjBq7_T>Vc*?G?X9%5l{~)Y3fYh z$Q&wCuV|<P?JZQ4=tP4zBS8<3(}5Zg3pxiIWoII&JVmWsQ$Yu1K*~UHnt%>ISm%Me zm$u1}QG!IB9Gx8PQk_I_w-Gd`lpGHm&;pGY<>V(pLNO0gXXKTD6M(H!5@@DKK}kDD zTS-?*TO&ssX(UY7P*Yn;UrD=ICtnX-kHZ?&d73);deGK%9;gYc0WOg8kqRVmk^r6m z2+hu*!SNFCDU}*|nxM`VM!wd8I<2BaQxolMm?E7-ol?!}9NT<wmWHG=aB$bB7HgDh z*3_W5Tc-fU7np$uI-v(;s0KQ@i##3%Il%`p{sWr(f(*}D<><l(1M4AEZO|cJBngN( zWDpH4#oNMlLloKO=zvx!g7zSR2mC-aI;h=KT5OxBlcxtRWNb@8aR8f+Rsx4EXeU%X zJa{qXAy*V26y(?x+h=NkPW&i>G?T!!8$8r?qQSuoI`9VEn$dul@t{Q|MWCT|h*L^H z8;VjZN<eO`FD<rB)j_F8ZHq9Sf>f@9(+;BI0{aBrrD@33FOmbn4gon3+UAT;ovvog z$6v3hQvj)HuoRL-5E)SAm8qerQ=kc|KjIPRej|!2@a7%^P^%tP|Hgy*17)Bisz9|R zQpzqaft<h(5l+f1DdJ2lNd-+h71>UY7Y-F;gp3O_+D=c94i#axHGm8Sv)F=0jCIZV zB$-n+b*48=;**5*NZ`diG;4!SaLEUcG@>OO(CIQrlLC;jY4E8qpixMOd%!ywN)mIR zoy=m*ni^0sgs=nT;KUNpOlnf51bDI+HaiCOv9>K}F8f4?C^u-X1Cr!*z+R~b34kXv zYC+QgE}*G-cp?F}Wf9AGGttM;brNke5i=6j$np?7Z1UCAAbvp1FlfM*U4V0DJ!mJK zl1??AteFqZiTSmfI+>a}iJ*INN^?qVK}}z921^AMk<i3jS_~S%L2&YP5}~;*6G|6> zn<22s4=d780%baAmdXS*lJoQ25|Ovdfs$w*Xv;mQBnK@&iHFtC)<t?)X5!V<G{Cb6 zqPn(4NI?b(5@@iaN`WIlQwQ!us8dToD_9VIDbhnKMpAV$AvG4X=~aZn%R}*Gk%kgd zZY|QR)k%oY&vOJ{cY=~vz$XYmHg+PiGfGYdX^zj&1GO*_I>C(sSUVUpS~LBjMW|GL z9(02+s2u=0LJC}w>*UxLgUfv6?kK3ASc)a97wg4?YMjixbWj@3(Tj(sbx7U>jdB+2 zp-eODfG?lc&;VUzTn{?vpcod_MH)&VqmUcapu@T_7XN@+(>b7lM~EvUkQ=HxIgq-x zq69o7U95-NPSOCK4F#<db2K&U(ds;KLei`*2DQ;aISn+Qpp&PQ16t1siXhbDIS;B5 zlo*j!LgE8MZDyJV*kDMsf;A|D%+^5!p{}hVhzBVJL7bfF0-B-X%xY>7hP53+EqKxq zl;A<f5XTqi<d+n~uGzLOvIZZlg4`Z12DP_^>x(ost3i1J++Eesv`#8YP0X&vG@{nP z))tfsAWi`t(~L-O#U-G-p=vd2VQo@K34$ozHBxnQpxqi+ry06>XS%mH9~Wp*QlMt2 zGLxFxbPz3I15S4Egk(QGKr>XO-p&wo;0Q`H5@Hd=uiz=?d`-|HjgZ}|rJ#l#R0Vjg zP%^CF3b8yn6{-$&-B}{s%ED4mPa9Nhfe-wJC-G1XcsDE4HX6Fv2YPTb>;UIj9q>v# z(4|74{#L%48tDELcy}K;E$Wnlufha(^>Y(7HLXfPwIe8(V=RaPM=E-bR0QAchIC>X z*r(9o)ydP;Nw&>{4eQ$`LwgcB1-7MnpaoSTY{fb$P__iCP6m{zz^+qfYoL=39jhzV z)XB9q0L=_5ra@<O6%9e$6g4$S0NC2vCWCGW0L{j$scFEjg4Wd0DAmJQ+*MOkP*anl z39Dg{R#Rw{YJ%=`Leo>9pO{iyQv<p^vj8Nmh$at`R#Qs>C;WWSm@N3t)<jza>qMJ0 z>qKo^L(MX6+vMoPSa7pjJ3~h!Q5#gkq}9}vX(vY~Y8%32>{4oK3e?mRwGDN1?Q9D` zeT{s*dT^3ThODa5$kj>IHq->2Oqq@%qLT>?+?pDVOxtu&cNwfN6BKxf+J>MI)dXL- zs!(K`4q<@qr^4#u0?m9qux^m8^_j`38i_iI+65@qLPT&|3$Y^KHaZz}f?0Gr{K~65 z_##cvvb<v3WYEwVXqqX%rY0FNC6=j^2w8e#S&A}&m<PWXwiJ@EZ1e3Ct)dfSbxJ{p zzd$C)Y>Pk#x=uGR=M!Tt)zq1;C>kopQmUy_45?pAH6fJ=yb+z4l7dvegL#P267bA0 zc(9}tG>e;4s}m1hc?R+Tc<dgjPJ=iaJg=4s9og3@vIU(T2fF<QbbeVTXn*{{SU#Eh zRIm@gCOGHh=cR&n;%g|`fQD)9Z1lmD5_p*uXlAWQ6O_b@QXyv^=IJG-fljY3($q^y zEdd3ercNek90z>qHE7L~9_XsZJkUf6Xu$&b#2^hN$SuvF!Sj-g%;`?te8P;j)9tzW z#HZIL^6@}d8AAtcQ*CW+^P&x6?Tf%uyPytCv_UMaQ4GEF7IN(eIM+i(Y{7MXMk46? zdQbp`6s4xR=9Ls7ZPW!<{Lu0QT;hQa_|tPq4M|HaDguqm>Lh|PQZc;L18pTOQBzYa z(MtuH1fHb<vusmA{ZD8o26XVMW~~nDMJbun&pU-mxRvPSX+tic1@&XmdzIjAV=z-d zH&{TrJ)komP+Aw$6Vmy_K+{Imu!REl8i}@vpvoP5QiLYBJhjTvNYtza9sdNYionCQ zN}wsa%wkZO*r)2ngC^tcHJ}VV*x8l=i6t4fc{-p18&VlU6@ZSU1*aB`w0fkg>_DfK z<|Kk{jm6Li-UR`=@*}g@1-$b;zo-&)IwI`oTF4q-4XBe57DmT{g0uiOEK;izj~18H zA2@}w)gvW&(0WX8Y=Yww=I0W<@{CmQBrNDyRh<&>?ZC*3sNfY@ksi7gphyNCd8Jtk z8?uFWE}*)mAFbe%kBW{(UN{J9gr}#LxD@3V6r`qr!WnstTC+OU7I7maD1&B}q~;dG zoQpKl1sZ6belU+uM7X8~lmS312_1{UX;{;Kx?Db=Og+Rm$cs`T`5wMXy+jYP^3grD z1gaHuQZc3|=p05h(9#ERdax~l*adPs=*-1b(2{|4xDlY${2&pR>5B{bgcL!J$c9{A z4e#S24NlkUOy3_8DiMJcQ=l*?(MW|fufbOx*@ExTE6`AaI2Yte&=ED@@h-?@7$~2C zg+Ns<_%1?7r%Q9XZ!w>8eJ1$SanL{&;<{^?nV=+I3@U73x6x?A>uYehf~E}B)WA%T zQqa-{(85IU8VTgE1+6fEWM1fSAV{SSc=eqLsQU`i3|jnL3#s9%Gt)E_H9#weAU*(Z zBT>?X-`NG8i4d87CLokgGtV{}vQ`7s{DfRctskeS6%(Vcqokx+3%~6Wq9-E{C44~x zSD>f@m*5}<YI=i}qY9bObv>Xh@M>zHJq4iSEA!GzGVF2WlIeLBd~!n22?eCIKm9-j zpNarlvbO@MmJQQL1!aKzJZJEg9w@O6%AJsNN<gQHf`SX|WGm3@YDr>IdTNO#c+E7D z0C;Xyv(|dL;T%2*#-iztReaL?8kwMWI!J%9ZKh7%^ao*~lJ%g4dKfjLMv<ltcq9<C z?ye{^Jsot@0&L$8yekhAz*gCUwvT|9Q8}ihXn;;-11}E9&kF#p`bYAeBqZm7GBn!m zkLmX#LS;eC`TG%}D)mLS@DrqJtx<D3bO8!_l7oaAc$1YQxY!2GQiF3ND6T=5EP*Rr z(C{>*xs(TLAAo%gt`HG@lLF9v-k>9z;G>HmPbgvSLxTJb(Vm|N^ExDAK?NI<$2F^= z>o`DnJ%hHtq{3TP;3f;mwTKXzzB4*h5WEuxo)A#A>tuosVJ?Du3C@5vEWxEzK@s>O zO6bNGP%{HOK!#T8Y7}Y0j^2i+-6GBEOuc$Y(ka4B8lY9`NKG&Z7hAH()C8wDSlDEO zstCv!R8eBOe_3jgRjLMJ=a43NbgC#Z-4(R8!O9aVmkQ!3!6kiC6U$Oz`f@-VkQ``E z8XS-w;I>Q=Qs&mIo^I33C(jHTvMFfhlTWXP?Nx$KD&^<7K%Jul@(Pk@et`~1E!YJ} z!cZ52<-jgLkpnxhR#RtsK{KD&bp2L7F5PPI?iaW!aIOF?P(m!_1BEp>o2#io^!ae} zaoXsBt_sOZPlfA*6c^yk1>NX|+tc-Jd<u+8(-*e!DKdj5H|pE?#KF$tgzPPVi-D|C z&{2ZsZ&31unvF=mn$^=CJNRV0LHid{p_ip2WD!k7TeMwT&?WL{n;tZ+i`3M>28!uG za!+w-L242BkO1&4<I@jx@JTW1Ot;Sql?($p2o$}+1*yrIi8=nzo7&-t6;h-?JL=Hh ztTnvuLTa{yR=2~N`L@%Sq=u^ULFPQ6jbW?l6Pv;$rgNu-@-tbbPA}}@6H_dKti^z9 z0~NyXxB{(Knf|ehPgEYF43v66Tb#fPVPG7vqP%WCF&&5^a8iJ)g7d(`+v%X|I@4V% z3alU#fW-wlptAx&7yg2Z%!2#^_|%s|Dr~4m2Q)$k-F=p-mzAHHr=bMa0S>rghzumu z(4q`d=Yg*}0WDzx9Tx++Jr~q(&?~8AFG$q@O#n^*mk}xz1v<<WJe>sUrZ|?A6lErr zg0?GRjR+k`!KDX{59q>HJ!nXSS8Zu%T0_h7>5YAS(vEO*O5nrM;K655!vpnNX>0vB z(Da_JzFtXcafwDEsPCO<n>alpJ5)vlVGOkOnWs=PeNA?#gnKP$eMS+e_n8V>rHC9b z8i_jKMGN`1so-Hth@3{grlw9_bYiS+K6qnmJb2^%bVX(#;pwiqp(2br;Djm<OT?f7 zG*Dj%nx<hRNZ@HjMNn@NCIMc%0&aloK}YXFvkeWC_~f98UZhqBGHiy3G0p1fjQOF$ z-r!9~;3-99IY?Au%tNDYm4f6HNX%HLs;Nz%C>$sz39c*PX&Ss#7sM;JhqNYA!L5m0 zP_GV>mq0h#!|QtR^k}MPt)>;MRcni_r3(!qNJRkE14{9r!CHhjQo%!xFo)Gcc;Jo{ zv}gqFmjTt_P><+<b}N9w6xt<4>XGInR;<7}4T+E$B}6|Jo<52|2g~Jw7QMoU;q;19 z<w1jR8eqqwjoE2}4hPmj4jynf6V#Fg)tqS>im)ChbO;P`%08&u1~wD4)Ds-Uwk0}w zpy?IJU^~RFRM0Fi>REcwF=dc`NIw%IfOO263`C?Fqy%gQgbzAlL=&<$$S+Y7bZs^~ z3iXhC0AR;}R?LAJ&^83j?Vtb#jb?-917J?9ot{t=Djf`(DhIV(z-z-RN<e3PgX$(k z76f$$z-#*wOB5jYmnvB+rKA=VD`XXxrWREySt~(L?p07xvews9<eJ_oC!ov7HQjN8 zfC?km^oNQ9z8qW%TKZg>X&TcT6@5e$AxG>&uSWxwec*%JG?bk3^Gk|LiV_Q^*D46e z)+=dRYa<+jwqY97T1*8k{{qd^f*b-{Nui(w9=U-Qyn0ID4io5lEE^*=wbW?CSR2cl z8be!KkdT_1C5T}d3z9L4wJ}6?6F+Ey8JeR^jg&NNHK6WCjGp1yU#(d^J@>k|Tw)T; zZ%Ux60II{m8}+~&RKZsWSV4P)2ocx36eS(s{3?Wql~M_)?Fm*7o)hs$mYXi2A|R`) zq=Qg{uD%w0VKXS;@<6vXrfN=4{OBzrmlq37C)KHWDORb`d9koDeMQ6ClIaDi0uuR% zESCz+xuAQBA?weqp(|hYKqGESNyP|9fxQ5aLCxws(5Z%y-Z0AAi@che5>O)+Hb7W1 z-O*b>*hnumF9k8bP@Gx<noi0uEz!u-0iEcaky%`;Q-YXb(X58(W3vU_9SC8wfX1$- zi>V99@z{dyC`<vZCboje34_dspWTflVF{Li48x!oZJ^czv<s(~S*!udS@4c-s^0Xz z-%Jv&AVK7T63`w2(h^OoX7%&{D*;K+c2#hE!B-b&+U7y3UZtdB$T^gt1P<Cc1*%Uq z5TZJn;N1m9P$%jj*3N>~(&ncrq^hZ9MyJL?R<VG(Qne79)T2Qr>84~B=VtmA7u!P4 zN>++h*Fm~K6?CAAMk?f#v*eu2<ZLCKJV*_ZoReRi3W_zoFxQ}9Pk%pKC1X8fJrgCJ zqUjqq35e9&8k!pDfcEU?Lk^MC1M5IZV6Y^k0J<qL5kBIo2TLDHU@a-2lhwe7BPt;- zdIEbQ6CPaowwchywqQ?z?hOK6PpxU4UsI!jkjyAbO;ZB3EufP((2)r}Ee(5H<><JW z;#e&eP4Ex}B=siRmT2T_f+}Fp*b7=8EfHG!*3@W#X5PVWEiTbef<%`NXn-aW?iElG z2JQf8Ks<%yCrzDH(2i(P36Me1yUv_*5{rv9lrr;_K&J(Oa*4j0TB084B6^5ST4GA7 zlBRtkj?9>+Ieq^m0Wn5sTxeS5fhMHD%fLX_)TKcWG6mh+3}u4$$m+qw^*~1^!_EdQ z0-c!yRi%gRKz4ZTTmm=1HWQpmK>0Q$KRFY8GYnEHg8Lqv#&r`5GC}DIBe9TJ1f%Ds zB6#uuEfWAG3~;_lDlI7iEkoDIw?!O1hR7_b)|sG{ndr))`795d&p=yYKzAagr{{n! zJpwHXh8)hL0lL|%UJZ1yJ9zaD=-iE3O>kn(LrVIf<qM$F19ZMhD(Kc6P(K895*2lJ zM$g67%`wy`Bv=P@d<1B4AhXyfKM}OB8gxXdbslmqtOsYqJh&cP@J89pymZjTtXAN= zDxrtUf|frP6u~lRaVo^kNDhTn0*Es(VEqFXXa@m&SyLuBtrnD)C~4X&mDMNaD8cR` z%ZHv1qM>P>s%@(Tasgy<hpjEB1q3SWQ!7e9gCdXs2T#O6RDmX&K%=!FHJQ1opb7ze zTysSwa$Nvc1#0@)+JY`b0d*7WLH8Y(Waj4;gKkIxiE8S=d<{0*);8519FKZPp$ICh zKnt?L`72KoQk>-J<iWP1z?Fik8uS>@0gZEluAl>DT#sUnJXlEu>V0YCff~@D_}0`h z&_oS$NU}kMI3&PJK+W7#+vy9;1ynMXAPKfuDOMfQ#(|bQ5T%el0z4t<rDf)&fC>(9 zWLPT|C8lKNE7{tD7uyzSD1p+s5~vpj6G+ZTP0j}0<*24M-5^^)TwDp#ol(-X2i-nv z1!{(ZOq|9UAup~8y1Nuzr;Z|6qas|RCcM-`j8uTOI!|w$q%9(#lvtFRs9OM9X_T6x z1l7!k&<wf=X!=1*0Vy50802bh(7w{NJUvKgKuRtM8&q^n|7a~BR&SdJDXSpjL=;vK zg`f#SXe$GL3<~HLI3;kE2P&)}>X1q+XzdA!zBpS*9M$K6s!v$0rjZAUAy6@trw46J zSQjA`;z=do-7p%UBX$tg2Urx;#0TB7sZj(kXF$CT^npU?$xq<fNxh`$PizG=>y>n{ zIu6xskcu7VDoEW7uDrmu>p}blO3cL?N?_BKboArE42{e@O?wq+haR#+MibQMhP9S8 zh-xkqSym?}7Uh=~r{;hwZR8EFh|*1`2plaMnmSlZbI_U*%r=pIs#QK{qCce`y|{<l zh^4^KE6q(xEkYd83n}+CQZ=m-?Ll{mYiL^K>w(XiDoe~!Qv=;|R$82@p{bW#nVgdf znr6bN3F<+!e4wHMo`aF90+r0X6wsbW&=vD2YM{AX59U~1ghEh*0aQ9chjTzV0>mvy zEG<q=0dI)}*UVtgXXd5bAPK=-jwGZ4DGZQBz|(sWf$0~f3y9W3mwdn~1aQX5POVJI zF9)BA3v(lA7`mV+zXEa@q#jfS*fE-#I!YPPBdNgtggRai>}oYNMGd9=ypsIV<P6Bt z(9ApqSU%NDnf_)C6JI@S;R%W>azSYaJR}Ut!#ErQwgc)6u-n19z=Oqjbb(_Os;kyI zPYAjGg;c-OL9O6aTQdU#9YkWat%e1%m1(N64%luhsNZ$UixLY!i=eYpE0gjQi&CsW zXTyU_TWAX!8fJ*vq69qfqBz~(ML@j11e%-mN)ppSGkKbt)y3tRCCM2YpxLm@<P6Q~ z<iz4s1!Hr_AT_8gfh`KNhR9e#Wb#rgO5ifk`$McC<5snxDj2mPTnnku>S4_YaL^#! zh}fzGx@{I5y<l&rfbKR2haggx0WGd5f}O7bt)fAb3ZUzAAZlSr0~U^;<qO~h9tlq2 z@X8sg%eFYR1YsU%s0o$;L7oH~iQ4XhJ4O>C4!Sxb&`m&G0pTO0J#rwMRUkQH`oV%g z5j`b65D%6KAyRtai)1xQAZs!8pm_?^5SaeWO+c<5$z;$d45WJo4yg3h63>#<Tu;zN zw4nLr%rp(q$qT7vpfU(@wKeFfF_2dvB6+ruu}Y}LkSS$dL(rLPU;|;H2TE$t(Ex?$ zRB*qb$W{rIB0%QY>l#`ag7&cHX%}g#f;FNT2pgwEmPswt04>)=POc^Sw$mL&e8iY_ z@@%K;c!GQi(E)8b!b&kvi0MHJ8YN9|6Gu^_#15hqBnP@^6Ev%<YgkiLVq*aBhl5oV z=VXFf!Ju|uF}w_g^ol@IC|S53Q8j^P`AYIZ`-wHJK!FC)4^Ehf@*0vGK*pqMl-T9j zD}e(Vbcsu98T1rVXt<;nf;K%vG6F0gfDJ>$ZK`IqJ0uS&U}OXXNLoX<AJU4`1KFpe z06zCl3AT4wO${=v0iGq>peZQE2;tX*Ml+!1fU_XzmM<tDmRW2G<}Xw)fb2*308-c> zhdL|?fyC;;RZ6M`B#=O<8<g9iB^M}V5o-|49FQK+S)RyA3LF;*gFy4w;KOh-ZA-Ml zc@baI(#f|ig5<$z?gAq98ldA8b)aiQVIibbYzy%KsE+`-_0USGC^J2yL`f$HoVP&h zHS&=faqxr-ja*PzfV}|P)~09(&ReCn`JkOv$+qw*`r;hp%#>7=)TvVqUagdx5&~X2 zU{$IEIaWI}KhLVT7Mw4pgW{VtSyM+bc{=D2wGhyn3{(pZbP}NzGC2Lg=8}<`67cQ= zSR=9oB-Kshj8I@NODs}Ivn`qa+h0IGHD5DU(>hH}Elm&JK|-|6K`IN7J(dX`utC(e z1iS?cHt<*=XjuWM7gDbTj%g)LdyRaArJz-5pw)ViTLi&3aOh+rq>Di-tl%yz2Cd*H zI8+Jhgu?o5#TwD6I>oV|i8;SK4J8F7O-+R1a1ZN%b~+$wfk{AhLN)5-Af*AF=@SjK zh2=Cft8)-p95%>Rpjiv*6+#DW^1#goN6_kKRC{37p!g9X2#!lom_bsV4mhRMgVvV9 zk^`hnfD{O|C_O4zR6+VwFdnE^1sczR@lnQvp#3bk9QI+MdRW{dn*-}?finiu@Gz{m zq=P)FSE7MFt_L3010Rt9lYtECX@bTOpbJPf^dTd9_23~rZTOI0W|{_a&V{*NNfXjh zOGFuS$%l0-GNBC6^_?&~L4y^#px{o`Ey-8Xv@TXt(@2Cj9l$M{RJ~+h(CyRtI*FP( z#h}IFAWh&AD1^m&CHWe~SUYyL)<|b^g4?CjtD^*@B$RZNAOp8x+d)T7K*rU;vh}F4 zx+VEw1v(`fki$tKN<mv+P)`Zgfc6-RGE-7*mEg{cRoBEg2m_Se^I!vO)~V28WgW<9 zbv<a55xFynsBrO2oxr9Vz^76rmXs7}D1m}X7t&=09p|6{np20!z+*d44=uK%<6=~c zV_~rkZ=+}wY1XDe*LEu8fzDSTX2?A`KPM-#pcr&1dOk|BD1r~GLH&%g<7us!35s<{ zS6WR?A9N&k4d`rZaNikpN(pEjCLh|@2B(=!lmULY8=zfL$QVCl?6DX&{SO+@L5%Xl z`<TdM_*lD`^^lSPHtmnok5FYQ(BjIr1eR7H{sJAi3k|8*Xi(hPDk-aLr|M;<Xsav5 z>Ohhz7NsdjF^r-`9cm$BdJ9ydfd=@%jdhrNL5tE;^GYDiHkAVK<=f!u8MM+9a-+0{ zrq%S^909rMv*HE#+`t7S%ok8QV69<@`=He(grk9HYQx#q7(BHB8<PcHBn}!02KU#H z2eDH!b5rw*GxL##eqm$f(**+sBm$rp7Hir=8CI|hjcZY6PCzLK(da>HhM@$Kni^yv zt{yyX04dT^L8U3UVFU>xs2`yLrk9+NnUhkKnx~<pSCE(o8fHNj%FNSI(1RvI&<P&k zCWxX2(qdILHH}nTX!!`5k^(EX2WJ~i&}=h``=F&PC_6!CLO}ikH-X@p4b->-S6!_6 znmUU4;6_eZHL8tykTNGz2YRW9PHIgJx*I@F0H1Q837^OTg#tW6G&HTJZw%Izn*P@! zg3}GO8z3bGI@$&HLjh=ii;`w^VyuP%bSM}yZkbw9keHVO9=L=z+M!uv`Ui^$aVL;j z;35n>%!x%gN|@L}+J{I>@-?gB4&$%_hdNRl1nM@>>5~x0DZzT0sHPe~>VIh^PzXat zVc<br3kqXJaGya0RzVj-f)tcTAmNo`TcVeon46m8oLHQy0l(N;ClTB_$^)Ncpb5Fk z0cpe~6;!*SO$&p@3qXTD#o+9#si~Km3qB|rtZe$3NdlbENva@lXoH*pZzDw;#75`D zg6=;<%@3eLl$iVg9+%cZ&JKunD##4%X-|S#M-e<DCk8oa6FS0<oOV!MnHLKgsepw< zbY856CU|iIq@n7O3hF<A{SWsVW~4&m8nTlFniQx1vxwlRR{+fdLZ%}y(x4%<B!d-f zn8t#J_6cZ4O*@bjiD;Nfz%Ca>Rc4@rNT>D?x5Jy>O0aYaI)w?gN;xAlB_$P4TJ(c9 z7Bi94B1S+PfSNG)(ivppQ4`vnhRlB|gOU(Ri3%y?k<-w0?Q8*=FmPJ2hZHPU;M}7W z3);GeT&kz1mOv^PWbIJLLzYOORZ^PM1;qqKq7k7I3#k?%MY64uI^=p{SZxFm234Q1 z<`*mv!J0APQ-@&vUX3D6Yj8cMl&X=bsRJ5>0fibUr{$%fxqW(Jj({YN@g}4$EhxcR zmtapdd73()GhIRT9W<4~A{#WB1DiKPPpEmCkRAtU^0__@bl?D_(E#moKno|(U^Td_ z0Og}}IiS<fFx!Zj+<_@Yos2H62Tizwk`ZVsJ~KHRxfIX?H%q|t(a<I_G^HR#o;spY zi#S>eTmooXqx26D?N?Cpfe)J2m*#**S3wQwd|PmwCE7we8}K?5RDXf`8;SNx5C<q( zL8~}TYiRwKuTxA;OFLDqUd<SET$NsVMrLvb=vY6{HC>Q$2Q*rsk&nI651PgTCoE8F z6toW^-xjTB50b65&O}N``30$Y;MvAZJ!mDVk!q^|9|VDw!Jq}Wpy>ke5tGo>5cQxw z9`+=tl$MwSZkeO?kRi6gZ35+DXo-Vj0eERUEGt2J1faM;bTPnbpdJ=`)}T{q5R#xa zF8EZRJT*0a<!DFUs6^eWSa6fR1iS<nTfd|jZCyzb=ma2;a#$|~ygvXkT5Dfq1v;-# z6m%i922$6h2v64qv=b8KYEb<Pz6}E$nwr){DE$dUC=`L$3?)JmttQqrLq(WthB9rH zz=qd@OxI0HOwI<GsHBr`i<VbF!XP!E+0aBpDG8Z#M9X<_wUGJ|lG-(EtrIb3R1#t1 ziS-4r5(r^7W=>4gP|O4^-BQwn-QS_3U<G5sy8QXJd7wfQlmQWIYar<e)Jy^`FjE9w z;es;##FUvg{oxuW&=wuVe59$<yu>olt=@TwWypiI8tOJFnPm#epmhbH%UALXKtY2D zK7BiNO})&#;?$xNNATWLNFAby6i!N@Gygzov=}AJS)`VLN2tLqx_o%L2hEeCHLwwZ zTnsur65OnYw*9OTSra<Zi=(}(R8mw5?hZpctkBXQ5?FA{!F49MmPfX;7E(QeE-%-C zMWc0PK`Lw(5D|}%g~j?B#uhau1~o?JHO5Ao(9D$zDX~Cv8K4O-O-SnuUMzv*3p`Yw znpc9@Nt3DvI>7*R7<*!RB4|;FhNg~U5y6C!X`2Ts<3J0$uq6z|L^ZW~BXdPtsH19X z64lg<%t7a)gNs$zz&Mf+Xg(M`z?zS=J_0<W4muJH5rE(|2TG7;c(JXLLQbYtUVe!N zJQZtNK`*4PS4aenNoPW)QPiW0@^eycm2y+_N|j>OwTrdYbrhgtIhn;JN%<9EVQ?od z2R;T2N>!z{InXJpR6R(kr)h0$0r!iVTB)6Znp&x@u8xTTl4xA14a^)}Lp8NhZEc;p z(wZ8LQqVCxIeMvu8l{*%1zn~E9{DSVtm%cN5=cV;#siHJPG8e3Ai-jrs8cdsphZC3 z5|Kt=eP{*ndNa5lNDl+L<P2%W*>v7k0Vz&U9)b*`fw=NYI*_sqlou61Tf&hB#7Z=) zrwbm|7G{U8t^gY#qok7$PrIO`3oWT2W=6LO$jG9rfKJy!GV*kg5^W_Nw0J@>5>rDA zLIWZavFagl;VEbZ8p=2r@~A7csR3$@fN%Fx0xhDzvHAk47T4+v&;m@T5`=L&`QZ8o zyq2!MSSJxQ|Bo@CWe-}orBS45m8b{m#e#;?Ks0DL56gnOJm?X|&_*<<B?;>At0d*8 zRN5j&Qo;AN!}?6%xuW>I666&ZDVd2m`RS06Bv^kAlEIW9xBKcsRKWV(DzIu0vLXW1 z1k%ea4$jCg&x43e7wi%ck%6$mvc<_o`8hdBiACV~3(#&7#<>C#wxD&^V0owyzzac3 zQegu&V7KO#pgIM-m_M&XNpt$GE&(ZFjBbKvHFzvVAH4W26+A5ijZet&UYeSqGeXhV z??R>^*ldkKD;K8A&liw|tmQ>s#Q^g)+HwW(wSVAYFyu))NKQfIU$psiXmCM>@<2^O z&{4CX$OA_=Xuo|ZvS}bugjvwBW5^11&|nvAD=0`AsAUiFF#6nDYOSU<IBbM6p{W7t zikg~CQ0*uRYJP&F11b($kO$_2*UJUN;t<qe20ImWVJI|SVPfF4htwelyF?dKUqTu? zsl~~O1)w$t*yN&A&_OFu-Svo(g8V#KM+LlAySNz1ThN9VRKivXYzL^>1xpKHlR<$B zwh_9fK~Dveh{0tSc)1Ix7zEWYxtUPo74uUPbCAkJ&<16AegMy^P5;*?AmNFm1k${N z)gYi6wg~PC&`5WYUS@h;eo?9uwBhIsT2F4PXaMTPXzEOxB_PJ70U5Q-v;_}O3D<+> zbl|ok>S4&@XKRG<(9vKG*c>@%0WVx%Vgcv~;*fleB0X@FfDUniOM;S#hNd1QQ-<Uh zXc&N`6H~HEi%VSU!G(ba^av1`9`qSVBxfK-KtNq+<lYNp^g~HU(GX;QY99D%C^yJ8 z;NbcYZCDiCgsO)`C$_|!X<vjCi`WK4U_Bhr$wu&aKr}O;Ef2T=Xx|*l*j#2w=JfNE z1lSlM<w3os6_Q6`y*YT35hegK25s&il=@IIEciTB(Cj{HLk)9m4&r@C2A#e|Q&2<@ zoQh!uteP5RoK7@YO%2?Yfl0v2Qd}7faoe3<ep(uIg<~c-%wcwdN4Ffn<3U*C5i}45 z(h6>_p=2F!&e4Pz49+CR@X7*~?LZo_=R1gI9Z33z&4zm_K~g-Vh=ip>$RZbveK;67 z-xp*iIN)HTV(=J+mkwYxpvgPPsl3ot8_3BN5rdl5i24-jO>kmD2|sYrf*}mL6#%>h z5R^DQ!L4!F{k1S(LC?a079)`58i?eZkyxw&Tjz$z?BJ5z4we?-bsMT*z-29pFF*x1 zw0KujgREu52w@E+Xrl}>icvfR^9!iK4_$5tt-3+UA2bXH3Twn#a&QX)-FNx*poD?b zLbQAZsV{K($R2gh7or%c=0Hs*;H~(f1uiLxC8^M)VufS?$XVznpt%O*O>io*o&KNM zM^p@LasVW)0V(A{o1ID^MKQRMQ<e(tN`kYVF06tC9W0qz;s`E@K_hnH%ef(fDAg|_ zalpzTq=6r>kxHN%29X%1U!El(D1#Ah@RppK+VlzY1w`GTHL)IC0^Ep0T_6Q(2O&&D zZ;*iJAe3Pl7(!bqDS>*cpcDZsveeY3FPtkN$_c3e^AQzbCR`=L9VMt^3Sdvd2NV?4 zwKKKVl@!3^3h=rQY!|fpgRo&ON_@==F<2@A<yTk|&rF*(S3rsz(xnIQmz_3OKvD-Z zfo%=To8WEf$)!c0K`h8}CN(t;CD4iMnaN7FwqU<9+E2eQS3p7%JcgkMNg$fA%nQ1S zXu9@10ofpMazsP|QiBRq$Lc7iLi^g*`OwS@ixV8>V=8oNAP>~EmD90G)zGX3?M_et zZ3+el4ZKVM^Wed*Sq(}T(#GIA0bFMzjctM2N02d8Sn~#Q1QEz|Yt+(QACd?(iF0lu zigSgn5@F5-)uNzsC2#uNg#zMAh!hCz2|?R1&?XFM8SC4H0^*F2>?sA$HK5iEr1b-t zrm~x!7~(Il4&k6>;^g9Djp~BL6wrc8pVYJxE5+%7O9jL<)YPC8@eqSxeH$w!B^{{h zAkYk$6<BpWXvHqX?-<HKTauC6`rzF_NJRjKCt<aQ9){D<?N(BP8tx9??}XZvM>ZQY zDpFz#Su>-TnU|Le>8ydWq9XK`v()K@SG^^tUs)m`A!A))o2mz1B&Z9%11~YD7<2<( zYFdeAE!fY7w(#}ppbn{Ca!zJyUJ1AZXj1}7;HY6?JALC)0r42r!UnWI3)b<#bS?Z4 zd1$K5PpJfliV`#mbioc((gdAxY-pfq4eppS+D><<FqfWQzf6FY6?FTK4%of$HT@9R zg0>=}nxazznX^K5HCmMbjy-r;jqGClPSh!xF4QF;%mOlQdfsvYX&z*~pl#M_iQwT> z&?<LmpGOz&65ZU?#NyH-(6K<E3LaeM=|RdtjS|SP8fY^nWNH>11-d235ds~OpI*B{ zK)SvJbnh)VuY*Qa)AAr=0Fc2daIp(pB?so9%vV8|$U!8quaAQkq2OUGusYDV7xG4= z`qaD<$nX)QnVD1!aRBaVDzGu24j{b5hOMiEt=R%^*h5}R1v-*JqX^o_1<fKL7GBlY zfR|oiF0?|dvjPnbA<bSv?AJt0TOo#xK*eK8s+FR?GIT%}bmmZItqxQ-s9yxKT|*Oe z^B`zPVWN@+_*5c{u0lSfXb1J(kXkfwAA`p45-)0t)q_sK2lrJWy)SHPLFG2cF4&+d zXtt^d-YJ4NDK%?B)1KfBS@}AN;2aBTRKWH;A!Y=Tm$?Zgmnd1oTm`v;9c9Q3K6DL^ z60qMvV`L@y`Jh{<!CRiNZfOE9EYpXc{DW9g20DQbbWACz^NV2^XwojVTmd%Z20AVU zb5|5(r#Pq^fHA@bKDr&8Z9xmpz%3zgD8Qz=kwjASKo>kB?==G5JDOiw0#g&5S*!=% z?gKjCJ{2aKiCDgmBm_E6NJ9x0Bsw5x;2yKW9H&am%ghCj`hy0lz`MOcO-U;y(4odU z#i==|$tC$kp!=XpQgaJH_jg;VBhS{r>{Wn_t;4u>Sk&ky78TX!mn+%X=%-|sVO0UH zNZ<;<%G7nBjaKL;AO&!jNlB+9vm_@KRDY(V<|I~H8R%q`<mQ0f2^#WC%*;y#JGv}0 zwH$oyc{Ri<_4!3sN}wVeUhi5NKzHZBHYI?<6H%IikCX?mCj&<<EanuUw>N{M8qyzt zw-;<d)0U`F57wKWTH<dAIq(TIaRL@ofjJN|o(db;go&!Dl}r!aDj=^3?FXUDLpuI& zo1+b4r?1{B06HE_ar%WF0-{35r+7dP@tC$vz>HT3Qa6EIudOuQeVc$h=!g-}vAku8 zMGBdyj)8_h(y1akpz{JCbFtR>y1LeoCV8T5W^{fms09Go6{=)wo2Uu#C1y(+$pzq` znto-6fKWZGF%8xQ859M}YC_Ie1T{dFauf4P6LXXlZK22X7TZF1huPXD+AD#_48R-O zl&m0SQ)V7$4hTaHc>5YmO@3*Kl66UjJW>t=b<c~nmGqDu3JOy(YZOO<t%AA{Ou-`q zWIzr!1Ef(50J{UMQ&Y3H7G#5H6r}AJ4~=b<g{R<<flBC9L!-tD7AS}e3u??kx(#WW z6(OL!q5*C!y!$91mW4>(@QEVC&^2m{3Y2IeX%?XgX}=n#+dwDsrKTm8=9GZCqthFM zb%ld8L8p|Y>Vb2rnwk>ECQ+CS=zd60ZnmukRa{n39Xg<n4~zq<Wk4<UfZd=$cUaW{ z9TiQrt*(U~)`j8@Xp04Uq!cvx;3s~9!xR?UNEH=m1}HDOBv#S32(*kdx+E5K#4xD6 z1L-O&zz2a!Qju2^L$X7jZR+#|djw?I>{CIfTTZ{YM?f?JRC^(%DEN`m;A0_GN-_&T zXAFX9(BQBVqRO=godKtjhg>OuJ6Tp5khK@nAM6(ponHGwKwx^`3jrw>of3^yu#NR- zHiCBR>wxz-!H$s0179tlUs?iMWRFzofXvs)gVkQJC_)nePdvdK2dl)8jw48$KG#5- zJwrpY8e|-3lRd%)kXJ$R3{IG+_JEDm)U?V2GeFfXB*dWs4$d<u=@C?HVGD36H1C7w zb_oPoFq$3`f(%rS=qRFvQB93v-t>fn0wPk-)@&ZMD{l=CdRy@J7iCZ|fsDWmCr}mu zhZESKG}Jr_3PeO`KvEy50gtxC0VUmKra{JoK~n~h`;9eV8-$^C9As)tf&<pJpKf_b zz)}pHS73e0XoFaAfP&Y8ipJH{C>Ftn8bA>OsYgJKXHYkzB(p#R)D#Ar0J<d1(*@!L zP%Q*qDO;Rc0=<A4bpIf<!JV0+1lk}n{o_P!VRy)~xs=r6<f6=^)Rd%3upHP-Xtvga zw`f2UqKNqh$N(|eH^sKo+YEgaxZuql`{^P_1QhGRThPE}A^Q+gjKWNZ>(R-v)sHE* zPb@9Tw~r~d*U!`etr7qq;#aI`U8<(0QEXcb-+_?>I@PzP2HdOyZBT-poeu7RR+r=# zSQ+Rz<bXyD40KX5iwi()8l|M1{N!w<TBJQz#hT!b4R{q3QhY+{51r}zj|zw}+2>Ec zb5uaF9=y{YY0(TQ5@7y<^zxt=m8GYa1mqWk57W}n)JX&H!~+e^7pFox;5r4!LeO!K z%ruQsNK#9&E!N3EZ8Ct`VAC%g6<}qyFVO(Isvde}EzAM%`6!(-h*o4rWN2C!+bSjH zmz3n^D%si=tEnaHL3r8)c4bf|r~_4?1Zk*3)s*BH=oZ+N>6PRc*u%6#_a@fE%mMfD zwbSg%^vW|+N;2$WI~YM>4^snT>!#V1>46yb(9Mljpex8gJv7*8Yzj)efX^*}PK&3f zmN+NoB!gFRr}(F(6{nWeYZU7w>!j%vKvO#CvgXQwoW$f*P;*-&U8filCAsJs8FX(D zqRh0;M6@rUmA?jJL6MR+<T7Z`zCMH=a9=?}M+s80lz>**fD2I2Ze-}dn>lnO9$fQ) ziUiP7EYKx9DWD^ipq)vKd6ZoEz#C{If4!zvu7)OBV;a?)2)`knvI@>`kisF;7Ifmj z9@4-AXhSM!{0$-mNqRbow(yahB5?ju%1tavug}cW1$A09LDvK76k}DBnWqbiQYEk& z>&#-mL_gSxn+BRX5PmUeCbk%~LI<>lt^j<uRe?6>?r@M+(8XA(X(iglIweqd>J_J! zfa175wL}Bte9)~D6(yjH6RJx=dn6F&rh#Vl!R`g;cknn^QGRJ&3TVD2zd%z5WWE)O zFh~T{i>?JVprG@vuw59Sv0ZR!mIDbj4@ek+$7^&-Az~0ANU&Lh%N|?My2?^T+k8-q z29!~t{>#@bg(Sda+v$841?1}UbW(M4bV@a?L6@hbmDqz04o@r52H&NUR$>JX8xXG~ zzX0rtG+X_W{DK-tHiZsf<bm!DOtUxAf|#M3shwj5;(+pLzILfjifx*`62y&QXDeAj zc^;|tpy5y@>mq0%gYE(cClu&Fi(^qyez``04k*B*Q(|?}K#g12>c@gqSg{LMhDddg zgCrsMMJ0kw&;-Xv9=sF)B_JJB11$|}L){YnR84IqRVBC@kfar)ya1KvXq7O$>Vk|P z*Xu#jH1sTA(4A<IRyb&A415BS9<;Np3+eT0g0G5&w}U|4S$icA2`b}KD@v4N!GVA} zAq1+_KqnZM<QFJFf?ffXW)zAtgFzdz(Lx2(ia>-$s%AB;{j5*~YI<bmDJj}!BDFC= z6)3Et(#h0QnJ)OvSGXRt3PxJQh8Rae6h_c-c+@5Vr0xe5IN(MBY*7lxiJ(y^q{<E4 z!~jP=xbm33OH+`CHBnPXF%h&5MN9_Ts>(+V8Bq3sP7>>b{6Tc7R)kWjnQ2-T!KS&; zid1l=i<$^veJw~5Fol=Z)*7(A0^nf_&=50hY)R1;)cye-&<}0yOn1B?Aj}KCyBnqn zETjcG9tJWhi7*7dmkJ^TO_tNo-w+T*+Qb0w<$*&HkrYuKk5mJrBogrL6=0p<@K4Pv z0cZF;@VTKnMYc*#{w|T=1GJ#Ws(?n)^wOtqE@l?1w+8J?w6)EI)V6AB8le3Rh-<qu zb*jPDuvI2>b^vsnP+EyjMk*-(TV+D)dfiM=QB@1ws+MnCWDhPv4Io9PL9JCPtegNP zrfSGYw^fmS%JifVe~IY=H$vH1L-Gr1YNpS-Eg+t4m5Q{S1$1Ew$UulY5L3EfzJ?~u zDF_LO+cY$5tw4T*cP)|bqRIr_9j61jz&dYw-5t=W9<YoCzUC|s)Ukx5T39Q^*0u!V zB}loNst2(I;y-B7n+gd-eIwmGeWO}f!v|TPZV`43^-vw4q5*t*2{`mnt<pErEz&na z)~}maYekeoZK%u8>i+c9k}$~d+w?p41o)8BBe)y}1p=f<09yi&OV9uk<Z5I1;25-1 zp^ynqc=?b9BdkG=G*$*`;i3!cL8oPESZfS)5^bkHzb~Lr53)la+!Cw-g$cB}DuM35 zEQZvHy7{_^&~yU6__rj#KpP>XU1VKslL$(d_Ta>63ufyUTjkh+S=x!vI0U76kTQq@ zurRoC)6Id*s)BbZfvyn-xkNW#CmGhn$k)!ZF0}!jp_x`<56Ks{5T0(SRkB?oBsqYM z2Wf@MX+y<zlQp4h$`vxv^ErD7cti+NN@>7LDII8C1r0((%7&CW;8Lg_RCZ}7!O}A* zHB}a*g0@%dfr}vfR0s{-q6X?Ag4zn8st>I)f^-29B~6KDbxMA9iMDNBorYnmnHHoW zl$e*2p9>lQD9^~uN!3W1tn^u^-l@_v1$3GW+=ZwfEXgcD7>io=f$AGb@&U0xhwXw3 zHmHyFU}M~9P6f9W5JuLcnF)~w8>9keLq}`D4FK4BR9IyXR)BtJ3#7}9umL(j4G~TO zofV8c{!tHFX#<);z^%a$EkyFu({oZ?q0<hq$b)TLgj)ml0+ff%0H}S^`QSqWK$#b^ z^AmLZtA+;X%mc`vlNj0v3g{MVjXYbNgH+*Y>OmtepwTEu03vE`P@QfMy3!}H40M>k zRUYV8uGAt8&}sh2lj6{cA4vMHw?-N60{am<QUx782emnn56moq=Lk@(q5&QQhTLfl zZDN2f4S;pQAriIF-FwhEP-tX>ntFNluy!77A`~i#Z7LKdMR+n4suDIGif3)R7--!% zdGl-q`32xJ=RoHHQ#{WGGYr%^pw2uSXr@L(32rWA<_o+=1++yH8bX*eAOR3xDHNp^ z+LmS(r4}ndmFi^`D}go-Vl4NDA83I(+&!J=gMeavHGD(}I@AC<cpQB1kQH<uL<ck+ zlA2cnnyrGBFsQR=FhAg%MS~O^u*tIwW9WXVXjlN~g3Djf<XMI>%H$f<a9yY?Kq|oV zZ;<IV(CvDNjuWN_C8n?XD8R*}lQ;d~M*%Sw+dQ4T>7YpjGiYIu4?39|(wI@eHHm;2 z)`MnATzw;?!F%{PASe?-`b#j6Ks-upe+j&!NJ$T-859aEsd*(z)9pVC$kc<216c77 z>TTJ>8s@gJhIt;m8wOb;f#{FrY3hLP!9yH%1YWnKfY}*K&nN-!Q3sv9isBbzXsl`K zf$Y`*&GW%3448wVzJ-n%gXTU!t$PbB!4LKeqID0gg+PN*un}I6?uM@dqR=%?h$Zv{ zs(#R9IXwMn*3@8c0DyuPbmB-V=vu;()I87u2{}0$CD29yR2r#ntq1KA0;g+SzJb)I z&>9=866z~R)c}oKu!It75eyAJQ0mEpMLw(qhRW&HBOl@oU5x^hBU}VSRT5DIV<~~b zeE>-61FyfqwF3vzm2u4h4-<kGsDKVm&Mby6&xUN*v4<?gvH~SYq((4GZcc@lV(=5P z>mifk`9-#n-Z(5DK(@Gn7CUKbD=FyZC6+1VWGdK!cGH2=7-Yz%7=AqrL_LBJIq(g# zsu4W;2<|FF+tQHHDDZ{v(--~~5RFrU_z~3Whp>tZDnWf+q@z#^it>|Fiy_<BU^_I5 zQqzi3i!)%IbEp#J{lIyk^M#37PlB)(YfT55oI^YE9H9eRouz_95c|nPd1_H=ncyQY zYBg(9F?Q`DBF45F60%l?2DLh%^YmeB64GItXP|+H)PkG7;-7#P=nCm;{{&P(D-$Kb z-QDSZi$dAzHBpU$1{rc@12y6x&3>IcTj=PUl1`DW0c2q##65_ZMUQDnI6z$mP8-Nh zWlzs20maW$EkQ-0ni`EfTcv`0$V3Ckj_DH2g7UCamcY3HQucw(fhA2%@b#TY9)`LY z9NwVoh*R}IrIUsd#A%@JNh)+C1-cPE-&Q|PSr6LB1Ffhk(a3~Pyyn+~28SSP89*%b zl}^#o`QVrX_29INbTVUOYidB<{#s4F;{2i#M6(gp`lyE1gP;;m7j&yiE#^T1u#t*l z$jyBvUKyFipaK$fW(4?DLzo0e+%Oh2`iqhjpy?bv4oh@WZNcH`23gtx%gT@lM5<RI zs|_JBrlAQts~%OkcAoC^UCe?q^`Pxy;PM1Khfxfl%7Zu*b}}S#b_eyWA@K)ZhY7Jq z5j5xw7KNrj(8^ysTi9fwLZYIrMu}~HbUt*`t*&7#crvm+vlw#fX<|t#Xk}t%nnt3U zTB=PZD8OK04RRl{3y=yNaKm3i6MWeVXdVR;&DJHLB`b-Fw)xQ|pzChzY%{?O4bU9B zf`P3qh_7uJTT`P5vZ_QI>KbInfV6@#*Yt^Og2G568=xIt7!HE24}!S{lz<`qCOudp z*M{y=gQQ{5c_*o$(@k`s=bj)b1Ep!WJm?~l5{<liP3UY|v4&DkCTK_yepC}AV3a`X z1tEu~XdpKA>Vh{y!}f@%si7XSo|CBu+c%8WM9^YH=nRyH2IQ2*#1imvoscpCREUE@ z2+_6#-wTbjP6D(`2An8h-qW0ZokLKGQ3-UAK5AtSHxg2v!?~bMtkY$<1tsfYRXbdY zh|^EtYGGA4mQw&xY9(+<1G$R>sXzjq_f`)ogLI1vDs7>)8R#kktS1Aef-3Qh%wkYS z1H4)?RR>yvfzOC1{X!3LKA0YA1v;-4G9im=)nsB4<c1vRaqyr{cS&NB60`;bFMI?Y zet^*chTe|@KRFNSur^qF2QToFfo>Egy!;U9MvaX8a`dtcQXlDo&CCPcDwc{kLZUPW zy4Sx5dP)Q+5o?0Z2e5?(BfKI26-7m$Gg55f6+%7acAFy5f*#O)6yUBK>?}<1QJC=C zZFCetXN-V$XFxL*Vi*FJsUV>Zx`znX4owDKh;5aVSX`oz2wt69f;z8}RjdaNakOJ$ zAXNpZIE5((E$ILyJ#4B$r61(5Tg1T>`JlzO(CnxIpBoWnQB#8+5eGR6qSzL6yA-5q z2m1n4up)&nsPxc*H6q~(igk*i1q^6;0Q8_p4bZi!FdM5ua~M`gyNbZ>E=mQh7lj<w z>s(?5^<^r2?J!gq$gkjyg&3MjtRQ{`UHt~?x_}B>8$@bJ1>Kp4G>Mh3p;?^>9ioA5 zm;(DDRY?=luuz(AB`PR2ot-m6f(>*Qv<BqdDKjOI&9Uk@j`aX-NKHlBR0A^;d}dWW z0lfyAI>q)HAg_bQlHe;Ukj(>)YJsjxM_yY1?nr{}M}q}Cu43C5bci7QW(-1wHj<}3 z2|FCLvRwnR&N<Px2pWWT3Xm!pbkIq$ZKfLZtnFm*@ve{x7TY~cH8qNgNJfC>E#XJN zXj+4Ywe!+TGSt+HabDPzk1{V;uW6MJT26!--Jqa^9HRvrh)Ya@R2e0SNw6xSBryr= z*jr)}5p@R0oFbi)jQY%Ch((BF;570yt3jiX@MEmNr&#Gg4}gW9S)&79tpVz*qHGa` zZ(vUXmk>x54XkAV9>KMRMw(7$I@+cOkf*?P5Vn)K3NmwYKsz2XNv~aq={_Z<rDaxt zi#zOtgs8VgK~$quI@r5Sh-xPlk_eIO9nkC%xbXmOxuSG+5#vzsuC5BSX$6S}_$)g_ z6cU!xdE^Bpn3Z%&rYookN`VjcM?PW*R2+ldjubgyrIORT<pue`eR){l6gE+cbZ!P% zE6V*MrFjLJ&?7LwJ}CgL1As0ULT<!@t{+0I&%#={>IJ#h2fK#YDuHcL0F$7_Fi;j` zWq=aOEgO)Ift7&{BnYe^BM7LY{-C~GNn%MVqR2&?xdXc!614Rt(EdH>hyYMG8X^a+ z#G!>BD91tvb0F42=g2g`bNrxw6}YPaU8w>#0qmF56!;XNO`e(>SRPcpBTb*ygPYx; zl!#CaHPBvBBNNgq0tdN`E$Bqy0!=kFn070Wf<znJ5?#<8=rB?6WMeTnCZKmlK;5E~ zV_R&WX$3Y#r_{FCKG7=G8hTii0@O}5wM-k^Jm?xVh**)DT8?(99mp1h)ffRDfSd}D zTA8o~o5-mI7AT;An*LHnke3m1W@~VsUXW|BYY5T;HAu>U9-35w8V8VeFeKifZ7)~? zhR2)r^m{6T65P<4(GpN?d{b3WRRWPTG^>%;{em-w6eLgR7$Ob%fkynmy9!|`8rcAt zAK|v6_QoOYEp!(`X3DX4W$TMmOTasaO7aUpE6Jd%2|x`kv;j0kI)oKr@O2rWwcq)+ znYKlmI#{MXGePsOwnd=f0q}?feCh~vVoyCR{t(lopmkTE8{Z&V5?u>4$${b%bV@UL z_m4)RPO46(PCht`fMuY`P|>znvl^1Lz{23f4O_?u&UYT5Az0AXM9|75(Ap5N`8m*H zLP=Yr*j`CjNxRqzbVzO~{B#M>t_9GYnxM=C>M^8gfR7JgDb>^|1uwbr1ot`epzTPI zvQ*F_P=qUx7jHr~Gk_MCAf;>#P4MCg$O)<Sn8`H<v7{&mwwOx;nuc{CH0an?Z6$cA ztfW~B%edgxpkT+q6B4Af(*UnDNYqW$%?C9p!J$!PTT&02E&>NCq^$sE!deSp4z~6J zM1t@zF<2d*9;T8GJehzdWMPMg7lZneV7)lIlAsA!kT*f2IFQrjK{u*Hv#c#_>0C_> zXj4RKPL3j6$O*i%7S!VhE3Qv1f#wV}6`J4!q7nK+@(bXaQcFN-9<Ct-w15%X)XCE+ z0u5Us8XL99n<~IdKS9gWp_e7w=GAK$Xo5zBAR}VYC3=}UO5jFjex7blW?nYrEZ8z# zBO_CDbBko7*y`lcqT>7_tAc#+r6jd_xw=WZdHH#%m?}XlLo@SqA=%B!pjJsoNhwwn z)j{AJ#!y^@#X;CKf{u+Rq^~3e<|tER1H(ikW3yPDk_;5FdXQjsT7F)MF6ewCD?{Ug z3akz##y&FK$qEkf=^p!qW$OtBZAz*^ib1MLYHT$zK}(E_k)ygE7BH!n$rc92h8Be5 z8ljR34yp$S1+FkGODs|-0+q$qim;MhBT=(D(>6L!!&oy`r^q%@2QrALXltvHZ;PeA zD6%gCZMDv+1mCS=1!`|-fHnYwHYpa{=7($6A`K}c)|u#)g4WHIW`Z+wiC$@@URi1p z_}qLYLp?(yJwx!`eYm5*%``}L332aqTMM7f3D{h%lc!;1P8GLn)=qz@>m$r!pp$1i ztxiM?)*=G!9ZyZn11*|BRQ8BHWN=5rwqb(<7_=8L-_`)Ud{EI=Bhxl7IzLv^I$v8` zv!tl98q~du2laO}GIf-|9j;=~7!c?*EJ!z6O|7IJbZRejgu(-Sd`ppr5=2%>vo<*q zeD9lPbuDNqNo}nLk~2Zmy5*TE>8T}14%Pt`Yv9FNnV@qHb&5fo&2ns0Vf!NWz_+bi zr@}?*l|Vv<vEXW^)HX*ORM)1$)+|9rrt&}|^LpW6yFj*P7CROdC01&H(*?+rkfoB) zBm=7Kb)u_lV?h(F$%&w`98ix#FSVkeC|b!%DK@%PuO#0mzdW_bIkC7tRYNlt$pf&| zq^MW|?!suK>Xd>`6N%1=wJnLxi3O*vOfWM#H5N41ADt5$or+`xc#Z?Szyj3Rj!!O1 zO)N=;Iv&y_PypRwpATB)sA*lFSd<PvWD<5e8MJMJq7SUJ7O`eNUnf(i8k)APieRZ+ zCmuXvXa&kCkfrstpq^bk_;v=QN!((q=-67&5>Svc>hp9GVI4i&63}Y7^i*U6;F6$# zPfbkD&?rLGQ{a2Ez+TnMEOvv9c@@ELRs&^o4bbhmwnduOU>cr|VIxxY`FRQ@ptHqN zOG=CK6hK1*(D^*j!NK625#aV8@&)NILliPKK)VG9=`4Y-@q=lE?S$0Hvjw-l_2P?5 z3sQ?fu?dbdFwe1|Ag2<R5J4>ns483NNgEJ7U{$u6I;pm>A`7Gx$+eJKU5H}PNIaSa z^|tvsskODBVPl<q#54d#R3w7e0H>#xfcL8f6s4wRR#;`)gV!;liq_PmTBX+N6zfzc z=jRneZ{N1c*U3xFO)V}+Ois1R(ShV!(76|iR;f^)TWL-XNW`kNR#PX_9#r6hqC0c? zLoXlUSma2Dl|hi(fFaurtzl_Lqeu^K6L@295j0VO%+|@*$<u=*Q_xWeDXBTBC8-J! zE0{H{^1yaYKQKXrtv(-=;2`eQODY28eT`I|d`+EvP(FZ)L-IXJ?gbTz@EXV#dd4|C zkLehK(!GIBu`O&C%{tMh*g8>LTN9+Q2((KeKRPj1Gqc_nL`N6J>VRm_S>*oZd7$He zQ;SL<B@ZZZD;Ox+f`<1rO7t>|19B2G^Zb*tQj<Y*r}nAQMX|Q%;vhjydstW@t%e3k z=wxbI!K7S~<T5p_K+?8|3E5PnK!5}eQXqgveLz8wX<IaX{}d6)`kI<laGM>an97IL ze2KOgGa30h#aIIldT$-H3`>M`Ss;U%H8o0^dBr7(dC93ting}UBb30!MOtZnUNZR1 zCy0f4pxIPN(F)Efa8Dsjumzc*kz-o~I_A)-$Q~4kh|&dA#i^+&#e*%<OU_6vaxBp> z(6racvn`6wkJW>e8AUpv`>+&kZHv_E)!<Q;XRnb1nr6+@%PK5QEvmH70XL_EOA?c_ zHS$2cNe$43TClwkO`sS_g&Ycym#<J<nw+7Kn_7~QpQ50yq@Ay=qz*duS3yZTRa;2` zk}4J8ApzCPoL{6dJs{9Wl36=ddphF`5$Wj*1AV0H!P-HGidp5@LM*e=K-2;nppzUS zCPI?})Mt?TEgxRJ6>Ea3H&C$x4R4g-2DQAwO#oP6r`l_zf(!h}{5*|(P;~~H6^REe z69kQtgBhSefL4DHZ91T;qDUhjT$q8T;52n|YC&lbQm-KrpJsKfPRVrLxgt{a;Ds;H zS{tcg18rqUPb~qJ23ATC|0zLBAmpM=Nl6EKV=Q!8kChVWv<y2X9q3r5RW<nRp44Ki z>RQldP|#A}6!6g&;0o7D6BJIhIw<uhVwV}XnF5*uEUKxQUN}!gSR1lr3Uu8H*psk{ zHSk;zM5MGdGsQMlTU%%P!owoM;kMu<ub^;;_yXi3=m1)2W(q`066iwZymZiv5^NbQ zXssy7t+wDrA0X}EvpV2H({tyGNY;azO+|{35j8b64QON(K}?0%2P?0^Vo=lL^Yb)d zr*41;H}XnAr+$Lg-XZ)BIw}!*E}|_cf2e`tSP!}!SVOb6R#OL3E5Z(&0)>HIaY<!P zs(q1OetBMMkxPCuxY1%&qz6+}Q&R+W1Z0pDI)e+B2W?P<#wcjR10=XnWFd3!;hA|U z`G)1NG!2byjQS9i&Om_&mDiarxJX1&2sSGRjdcx8o#~F#_(VYmU^XrikpOYTpf|3@ zLmRysN{|+s61W==4oto2j?q5CmKrcOK=VYcPJDW5i8DBP`9qF-Km;nR-B?{)s{_(5 z5>cX;m!Dq%OMq4|E-0hHIM6UhHU(60Lk90414r>tHJ}wjkg0NT0x?6>$0a&>pj&9; zA&qv(lwO`r38;PrM=UfQfCe!%z$w>66FMIR>TG};SI`<7mZISC2x{DGK+fg_>okDr zbVOWDg}4d<5_Yg8kFXE4zzXIKn9m_e7}?{{Y6aQJwa~ndPzD|r0R<7b!={sHn+h7> zHn6p|g;(*=)iLl<U%m2rP~!o)O$)XInsC4ah8R^~swQX^4LB3Rdn%xg3b>h9oROIZ z%DhD|tExe5hfLc<Q2h$4zoBKeMs+PTGePZ(PK^bP`x{v2+raee8iIRlnbDx?E7lfD zgGy$dOc)R3O;8iFARlx-fFT|aLuwN6`kd5Qdr%>mW|bM88fy(AZ1ccp6jo=ZX%J-w za!5r(jYHY#4>B0+@4VXSikn3w5)&bbr&cE(wBr{&m%t9a11~lLT|cH!0y+E!p;{wV zrvwy8$SrSV)20V9`-pi#%YG%$0g<pC6Wl^@9!M<)?*v6EBS1%!r0OWa6D&mUbWp+I zl#1zWs3}N^58i;$$pm{K57b;t)r6ejFnwX3j~G{8tWIilUaX?6?R3KwAJO`}ST!}! z3^6pRfCdI_L6?!Hr<Nd!7v!9q30hfDgqTPN$3Q&PyBgKd%xqPplbu>wY?Y@2m9a|I zNlXFX^scF?i3qOgk-vPo5hJIdk{=Wx@sLx4z&=DS06>KdNFI_qVa0*Ak}f>VAcdr& zVu_|s38-EIsYWSz!0rX_0R`1)VCC^TN~M{)phG)Tb-^;QbBr-H!mC2CMkIY;2_=x% zAUkgmv7%WGPI$`IFgIE$8iI~!gmN(yh9fC704an8E<z>pp5Hu;JRMk5S*I8r?ZvhR z*2OlU9X6oZc<W+qZOug6OmO^1<V6>Q7C(ZDheXi4CMY89OY}<fG7C#nH4-5$OxVCg zDy)$K5!M9VQ2@H511_!!mC%8hUJo|iHW73MS!r>G28gQ(I^h(wI3=;TIJGz$Boqr8 z;3)tpKof^d5Ep?OW{@-s%VVHMBBU>cNMYcJgeEs=Dq||P0;OsZRZ!Uk-fa(71Zs4^ zoeXboC{2&wAtDy11UidI50qHd)bcb^!7RO8@UW78Ot7|ox@JvHbgYh|0jL$4T2WGz z2vG-SVk!hJsLRUFgxro?s{^t_Tpr%7haQ>>SvP210;w<arWei^5!FRhm_<67n$^07 zpw^XMW*%fH33g+N4ruACMjkjaZ9)AvjZ8gAlt89pVKD+4y4OKYzlhWW9afxvV5f+r zDwqT6PSone!%kVjuCyMi)Bu!yk@6>+YEb8{2sCq)pOc!HhnO-evM;jA0}rBQV)p1t zAj@$<1)fg6Z8bP-tupOXt@0qnNTz*>l~$?_G`6iWAzeEdw**|Y6xG5~Oa63)LLX5` z6A_kqH1ah;V@;s+P^%N4pNDWY^lUg#rJV^KV6j$8%7-`~K7W`BE*U`seW^OBpd)~F zia;GY&}|~HHXW>C0hyLfs)shMK{-q#PgB!MqX@L^1|kb}I&5Vwq&x!`xR5k~G=^2A zlL#A&%Fk0M2Cdji(@3qUQ3Q4E^T9o({Jdh=X2KNEsk7iBvtAQ4C;%x!5#<}S)Jai- zje%)kv@H_tK_d!QiJH*<Tt3oZQ7ue0JYW(*N95?GgSsAx$W)DDO);2XQ&R$_wY4Ef zQ{>ndL9@;D31vPanVO&zccKkrwe$7BL%^VJ3V0YuC)qY9+9=jK**+6=3R|g8vQ9DR zFsb}JjZ(;+a60k%X=x}isac(8tC0uZ^8g#sRZ!9d-E^J@X<M>sgYG-m2DcXLb->HG zL3=Skr{iPBBRCxOVDSpcXRr(gX-tBPeNaUL>rKD~u&D-DE(q22(BmONBB;u1b>hLt ztRegc9<+s(BMOM!TA0ySVqX+p5^GhW35~uY<mdyXa>yMb)<voH;1Nxv`Tji66|>;{ z4R<NR1+Yb;a4ASihI7H`9NJ9L0~fhE)rfQaFwKcitcNXdF40KULpeknGG&QWy@G84 z?Y9M+2tN1*i;2kX6e7&52X%FoK>f*Dop^Y}VVVn<g7_HD#pYwMWF~U)0^J1+FI_d@ zF00Qgf$Xlq@GjUCkaxk1{L&IkM<JK(2qOua2yRe7dzSS`rlQS@Kzxem5`dcbMYctt zdKEm^0Uim_$OCWhtt?2j)kp=E-Jr%6q$mT+Lk59C2j^jx&`wO%M4IRT-4Bxo>-K}n zX;|YU+5j|-k*Akml$oBHmzV=K8$2AE32NWwYl128ad6R@v9|fqnX#~qA=4ET!o=M2 zKqbE-cnB0eN|y+_UJcyEfMyeP8>92!16W0%ozHpTH4};8K_&1w7UXn8@DfkYJSE8S zhG3q5X^9fj)HJwDSb{Om6s;7mq>Vf+1MV?uR!@(6;4NNXotl=Gnp|R)SqmvN6LpGh zGwl@(K;5RA8jQ0SGwt)NGW8&OYHISVQmr#>A+wB_O2JEAs#8jfAm_zqf@fM3K|`3X zxdkPa;PK&l&;YScre1P>ZUJZn+%{h)6LxlB5rm-u70}d41Ruc&c5g8f6Y8Ak;#hmo z9g7;7npVY%wzjEiYDEyS;#iOwP<QBL>ZK-v4qDR5*R(3C*DEYdElovCqJply0++^` z(W$YZQ{_Ore83CuL1zbP>g0juCqM&3u<k7=ox_St(Cidw3<6<X38<9<Dho5M5rRmy zY&~T13%(NwbUGAx`L9lDv|+5KPDw4yY=uOS>9D~Sg%Ws~fKX8kQUS8RxI7ayTM28J zYgQ*G7N;s0SiwdXAg3*)YFa1PgCq>mC3NyYJ7%oGx{R<&>g0i(2T@^+TZK+uv{5X4 z(y0WR13(EC>gxLZJcS&Hvq2#R8a@DrmaVQK=uWfJoE*?mCk9p}&~Br(wsxjXKKumP zlIYA>>r{;*okX2H&^mU+1XmH%g8V#%QjqzY;GqeS*?Azdi=gZD>PzfV49~MEQd3g| zwTM$SN}}^(bwJ}s*05ZzfD|3c=%#`O7|<M>r>jfAw0h`Np+XwEak_>&Fh^p#(Hb-= zqln~0=pc`xA+%|#Xn^p40Uo1K{I8Q~YoL>F8y#z{t(|96gcQnopioW(2ZoxOMt*dr zwsx#-B0OUA5tgMuEQ6#pMMVwFP|;LVa|S8WG0?Qrtv5ty%>aw$A!4cs6jPbdm_iGL zBAZNbAmo8ZNs3}&txQD&SO_4QTm~{3VJ=b%s7H-4olILuFQ`Zp76zc5n6^kE4K-dN z6XEc5tj2?m;Q@7vK}~N&>IH{uNpz-mUaW0ubY6Wd%six|l?yTtsh$J{Lq4`(0A-gV zH8s#8!93fNXl-p!g#^tZdA6w<c{-pBqLZmp0#Ctt2xnJnl<3qWcS`VB0a~{RvO-rE zWJM-uM;u`bl0g2z8tm{;uTKR95j?EZG>}3XmZq`AXgtz<cL}Tku7q^CZv~11NH@DM z72L%}gh06lq^}7X&MJaMMV>|pqK{mnlLzW0XM&vuW<%Yj0P1CdMp$%^%9?DDmmyIH ziX2dR16qj#nHvO^XxbV@_J&rvhMLwz_W8QH^;X*2`Ou^c@_K%(PQFeFEHNwOL!G3H zl$arzCl6i|fEq-p_FfQ+HLXA{2+_$y3JMj76l(dJ2QFYs>JcduT&`xOX%uOI6HO}I z5t&#V5rQ1Npz#Alpaz4igM=t#xjH<uA#n{U8Wi&EUBKy2Q$Not04ec1BAE=U`#={p z!?b~`gjD;?606kclGs{=y{^P)ECFc*jjBR5)@SDDDfok242m>RL__V#L`?&r1+~?A zwng?DMc}*8G_An73$*qKG`)b7tFl0b!MqQzwm^xY1hNG<Rns~Tlz%|gi)}rK)GJHO zDTS}}K?(~{2!V#+@{2S;DG4-TtZRr`o`B0i@G_%(a4A&;TJ;2)iU$o!=Go?f+HocJ z`Br(_`S9Wz$+h)<5a)v22etxK))YYt!4gOzSYoYN6b&k_H1goZ2vU;wgqQ#gw=#`X zMBag~+KPq@WyjVcCCdO%e8CodVTozb?F-OY0!5M!5!NVxV;0GdAQVj{pm7R~R3v%d zdWZrv@57@FTn~ckE0Fv1V!>6GA)+~e6p(J{2Eok$Hv*i&)fA=)^+-k(;xYofzaEih zz)f3iZFq5o6c<jQFonc~QcR4Jwj<~~azqyKfY<<00N#24uKzMitiS;Wiv)#GgfR+9 zd3xYOic64!tqMs#9*cZ9NFElZsXBR}CWWE~XlykvwE{HUua}aamujt<r&kXhodxFr zc<Mq5lrWG{pp=;kN||}El&J?=`3hHGqL-Fm<O*7&1M`9gxZ#}_tqtn=L>K9lfYx~- z85;o&iF(MADY!O7v09=5TIi>Vlma6mdSL#7wjyBhjJNTW2<eZ2sN|BG8gSFnHn~J6 z-x1Q3%7f=kq^6WRQC^=e@Y!3`2I|ui(D6Ko_>LmpgnFn6(IpsR1*=-%E$AX!Q0;-J z*Q~X*!Nm}0KL%*2kF7223NZy(B1Nviyg}gz>ZZU#vdA`1yWY^c2vjQKF+%|<p$CF| z22IDH)M}qvqEVu06`rSooK8zXg0Q|7SXmxO#0u1UK!g%lYdzd|skXU!dZ0bIo_Q&$ z6}AS}x$qQjt*NaIFQ-!xCV)+a*;4`?bj-~|Yi$&P>_%5r2~{NoO5>R&I{78GMg|5t zi6yp5)33#d+RH2H6qnd4xmFaUCYPk9C?qPt(yEe94oK1LSW(G(C7sd|TT=rAo#YZ* zrTF-q{FKDvjCk;N<&6BCl+>d5cqN^*5?e!^f)ZOJos<$=6P*kYw+zHh2eEQNtV)nX zQi-jFPJD^2p_xuaiLJ4bPI-x~nTbwziLIfLg^qKHt&ypjj!KEGsiBchNQtenflhsJ ziLH{Jo}QA9V~MSWfq{-IShqjO+$@l}E+w{x`UX0FCAO9Z2IhvAmPV!~<|YP~mWDc> zCANlo=9cDWmd1w0CKhH!#)hWmsm2BtIsqlNeu;iMJ|(s$MwTX)X68ngraD0-wmv1g zhC03=+Ro0-P{*yrwmv#qDY2+hNhiA`Rwr5sG>)pIlMZKlr&cQI<bt`N!M{o+og@SY ze36=xPCQs7Ehn=;Nk;|DE=VjY$pl^5TY=1lDlZ3%6{RK?r7P(;*O$b`>J*mPDn;if zffl_fIKq~)#wzJJp@<hHR>msncp!@vSLP+dhKpjAbV8BjoFKCUu}V5sNTM!@C8@DW zI^l4k>BrJU`RkQ*!r&q$3a+4~TCqwx5lCW4wnQQcyQk)*7A2PC7a_^JBgy+F7Q`y) zL?MazmF6a;7R4&*cp(Jq75qwba$=Qqyb)pw;6a{}SS6i6B*6gCjis?lIwh%y5DQ98 zcdY<flZqr5oC?yKhb&T3l$n<vtE5weELfSFl%G={tE7{OBpRBRlA4y8mzol*q?3;% z9-f+*4e?PTnkdA&VkA*;XV9rMEe-7193&agiV@K2omeHEQiyO0IOg4Q@)JvpjlddX zm2{FJatJ9i6PQ#Ql9Xp&i3Lo&09D-33?`A1YO6FoFiTWeUP&hdNl|DflI}8)qE%U< zQuRtY>1c`&M&+W(ARJtoYO5cU6dzxp5Tk9YpssGMpRSVx7Sn(VYAUF!E5vB)r|ZP0 z+Uje>$EU_<=xN!<Xx4!AmBeUjD#U2V<Z(juR;1ca&&d&$sV`5p)sI%Qu~Sly)lb*S zPPK)^xJE^)UU7bDQF5xLjx$`a93iNZYO8Ofs;dzlQydc<t8K5TYNwyB69N`R6AT6m z+M<a%f?TgxUlS9pVQ&>37abEDt5u^Bt)w2SsbO!WVXqits2Lp>6BAn#6Qif8Wglax z8566o<C<!#9~V=urJ}Fn4`%A=>tuoa5T^$+LK|Y9hOT`~infNmRg7LtingY`Cd_20 z(MB+%>%nGg#u#bF#MWro+k&;!#6-t{T@j-PX4a@^YU-!!xPYvQiHTFu)6%xr(2S0W zt*)&Bg_<8cfLss(<Oz0Nv35;Nv9^kSx=sL;udm|+@;OLQCn&YvRzId1WNBWEevFnv zOmuk>=y<vmh4Rdj3<W*ym{^4vtr&ex`<Og?eH~wr&gvMfYBlt<HNmR&b=*>I^>yqO z)D-k}3PEm;i>WX$(2c1uN{gv5PSlO5FfoX!Fip~psW9_5h^a6KvCPwAL21VcWJ8Qb zOpK<ze!7kah^G=$tpSRN+E^`+Lu2%y98E3Fm|FdGoluY>aD-H)+D;cJ5f!P|2?u%B zASv3wFjiYdKT{_R#E*d$!+P5GNUQy0Vpa5YB0vfZ@}muO%^^A>K>`}~Rt7cEhPsxq zF)3P_D*8I^An(LfB!hgDVir@8Vxb#Tk!BWCkp^a@#grNt8W_~;f@t$JP~1eN+Ujel z#A)j5c!Bh)$K=Hn#grNu7+HWx%a|CDD(_TVrI?sf17lD)foQX|n3&SER3igj2o2&I z8Ki)@Mh0nVN;-jHEftB$F)<ZMhA}Y}DdsUT6=@)1`rATL_4*`;9*BuX24-mrF)<}E zF%<?$F)?W|F%^jhV58I0Vq)@QVv1tG?y-PSmN7A<hGrHZ6^0fDsbE0^5YNcKz!1VS zf>6c~$^=50LMXGCn9_P90|Rpi7h<RZ$WS8#gG8{P5yW+-Aj;Ulz(7f-B+phUT1h)F zRa+@mNhcM;^M>&9K)giVDv&qRbV2?!0}&QrW*Vs62Pue)i78F7fOt5iJ}oT`Vp>d0 ziZ;kjbBK(Qc~Tlqqa1akVj%GwQ;`C)0~EtC6)B*KH9rp=Nhub_$<ZL2($bPZv6GUP z2691So~;r%eU?HL)W?*jq@<dGRivb)#cEa?)hg)}gWL(y40C2uT3RgFv}B0upr+-3 z)ZueXDa1M@?Yul~r5YveqC9OSO(mUVh;VdFOg#yy2~@^GogGt}g6uC%dnKJTh?$@u zG%!ffu(wjuj#dI?LPTK0f<UJ@FBUS{tyEv5q^Yf>3G!Q7DmV$Hr5dEg+AC=%gPf|R zq*DO$BRCDBOQ+@Oq(CeMTLrQiDe_{KbQ1HBY=T&%q+O7wlY!7xkHv-Bsd?H;_MpTC zF+oQO<UDwi0s8{xeyFKBWqGhFNhw<WQNzqwB^{-7B~6`lxOi$FL?jn3lAouoRIg!g ztE3HLY1SxdXXJsL2i8~#R~DTEb`CfSL6rr>d<}c6l$xBJn%tVA)SBX&lA5wqO-*~S zY0)KlIyredN-9d|t^_5$Xq5C~jFNh5FhT=V0-%>2(_a;eY7Mc1gF3le6A}LP8unH$ zH9kHyzBNIvHNiC@HDRu(5uja)H4dP$S(>M<gfI<zY%1x16r-quTgi*CQ%Of@`kn?+ zMedXk56zgEBu$V&X@jU@VoFH{OaK%BN;)a<j8~(i2}zGh@Pr0V=0*kvDaa)cxO@ba zuV`6NNmD02&vv?JyQpiuPDP$=v=X?bsidO>Y4IxQD8X8}5N4{9juN<Ap`@dP+|Gq@ zp>10b7dow_q@x6H+CtdSHYkJxZFVZ@)GPTW7AWZ`fevw3(our+8kBUD0*dl;GmAm? zLRyPTI!eK*B_I;q4*)U1ZGR;lrI5;kRG8xsEn+1dB{0W1Co#7mH3jBDkQl-xp_%o0 zur|ArjuNzkproS|ucV^{K86o^`JIxEQf9FmXx%!<Nw8amlysC3OIws;b;`jbL)m$@ z)wR~ydC{e*v9{TH(a8`h4MG(_s1yj5Q4gWZAXGYp%1w>6RW#7a&WkQA0UO~2p^72W zp%7jUgjWUOg+ZtY2;~l;q9Bwvgerk(NQF>&V5&YkA7q&!c-fpY*yYX;Yn}6=LDo9w zMT4w$&Wi@w=bRS}vfVi^8f2|A#E;GpKRV|{gZ${67Y*{Gb6zyakIs3~Ah$T@MT6Yp zoEHspi*sHy$Sux!(WxN+JLg4%9OIl9U6dMY>zo&z0ii&F;+z)^3KZwOXlS4~=S73O z>YNu1@~U$lvinu?Y^#+HHz-*tIV$NW9d3j%nqZ7(7^4NosBeX_7ARRMC4#gqgfSMu z7>i+yB{0TP7^7XuO34|dYq^q@QZk4!LCH$V1;p5(WTlh>Vst23DY=3eoiIihjL}^W zW35oKQUax|!z*EoRWQbC7^6qYO34#sP%n(p2V?ZZ7;BWQlrlkT*1{O;V2t%J#zZA6 zB|ngwjY{=aN_imGBqb{)e-L9bj4=hqm<nS|gE3~n7@I&BF@bb#hB3Cl7+YbCZ7{|T z7-OcAl~O23*DNKgdI)PaOlS^_u~W%PsT8DW7mTqR#@GX6%vG{diUg_It7N5A31aMr zG1@@U3J%X@pr`_~<|$bzg=Bz~?E@Xn4QAEPSF%znE>_Y}Is!{KM_|e22rQKx0i`5R z+BgDAKwt(a*?<`!i$DqB2q>1p3{d2P8KCF_GeC(1ls1ll5&)Rd4NWaa>OoNn76L^j zDBT=^C7>gqI0Yr3BcS*KGeEHfN=ZjRkppIc;sne9#R-@(3!0*ifMOEl?<1fH1T&^X z6Vee-41h&ugVG<E1qyg~P%wZ(3CsXx2rvVb55Npic&CHZfC3H70Ob`h1C&L;3{V#F z0I30mJD35=E1<AG0?Hy_1}LqA((#d1p!5f3fs!ql0ZOf41}OW08K4XSO3_C^`2fs- zCG8`y6n$hPG-)3Jr9Ur_^`P{Z1!92GpEroHUCBx*8^i!5L@;9~DE;|>gg|Kv%mAe% zFawm5K#ZfHxCb$gfD&R3NHHk=ff=A=1Y#ToB^@vWlytxhP(lG^v7?}b0%m{`0hj?w zA7BP3dDVk*-%(H^0y98~2+RN_5HJIjh(H<hC@6h^8KCq5W`L4TzLJj8QBXnwGe8Li z%mAg2AdnO&eSjID^Z{moQbQ3)3X~d(>Om|}asUf~(oQf)1e6-U3{YwSGeD^U%m8Io zP<}ZIN)2EJC^di?pws|nfKp5d$Q)2=05d?T0n7j;6i_{W6qGDVl<IYqj)Kw!SO}CZ zKn255P|*iwfRY860ZJBN1}Is88KANU%mAeiP)TtVls>==Q2GEfK<NX_0HqHw15{9f z8K8s`4r+fK1*Md7kYhn91yr0I1*H^FadH%tQotgh(kKd~29!|13{XM=GeF6r3M2(e z7GMS_S%4TvKu+`or$&&qnV{r&6qJSiK{@UyD1YYHgPEXmK^+|3pk!C9RI3vLs>;-q ztd!Iea|^7Mbd+pB?3@x1(+<Q;2Qk%^)UA}%3QO}r93^#-xU#XOwNkB4FjzlWua%OT zl8%xZNUxQW4TuTSYo%ldV%9@6Td6Cl>nN##HCrjEE7j^af((d>QL+L}C+dLBR#(zd zipf)g)EF^EN>)msL<1RA02RrgArFue(AbA1RKQZHR>w6Da>pXL<*4Hi<$30n=w#*9 z+rrM#vV~ovP@<*=LVA$4pslSfgrTNZqT>QOdK^5^j#%|yoSKuSriLIf^?~Gc{PJwG z@@i^a@@i^egWVcRum#GXm6=MQqlG-NSOB_}PEAcQRWC0;B^A`zR8vdU3COec1RXF3 z8TLoGrbtZ<w2rI@NpX>mPo8Z+o|;-f9_Rp${GyU#TU%StJe{CCTc7$oHMK18i4Wj& z>wS@qF4U|p0UclhnWqfOQ&S7dgDn(CW@{*wmSpCj98^-Pp{e7RXX~4%rskWc2R$kT z(zMqpL=tyNEU8b`aY7RDO)SvyK;lCh-#Vd4LcyseI#oz~P>4X9*E->OwvHM~kR>ll znmS>5wyqi~d73&AAVx@@rcNY?5uB%~;|}vDXc-`Az8`VJAZQ{Fv^g(7N23I^f;P7R zLTi9-#wZ5wug_0Yh}YBvDMAs;gssmh0j(uYPlhaZEYVSlkB5$V#>c}qB`D-2f@Tb1 z%Md`DyE8!out_%XO^1kyKG3QV*z$BF<KPEj#Dfld&Ce^2j|Xin0;MOt`1s_E#LT?- zcw0q9=*iyk@tL5h#rSyetp=IJdhzw~;0bV$zD%U`AE0?k$n}#%Tb7bp6d!ME2-!3c zAD@<)Q<7SgngX&OE|^&Yn(j$W1z8sjI$kQXzF03lz9ca_)j7X3uOvR+)(3X9M?C1h zG>Ae(Ft|dG4Jok&1z0?Iy{sOR6Okt7<B@_SC=;d<9!#L4E#l)->cOsth8NfiIwg82 zu7}DY`~y~i>=T6PNTLw)k$na=2uVn%M6W&`?oWg<P@khL!u5jeih&w}a1CU^4{~^D zT7!H5_6um`0*Hf94!WW%HK#aL0eZAzeR58I9%x-UNEuj<maQ&qEhqA-(^Sw2F`%hp zs79nfhpZw39gGH9Qy(7>Hb^JW7Myo<ifmJD3_$0o+QXJCSb<i12Ip%S=+tMz5)9na ziMIKA#U+VFCEz1MQu9(k$5`qng070SFSbh5HPnG#2OS@e6y7>%;2U2-i~4j5Yz=f$ zY{QZ@a$trd1v+@Qv0@(R4sbQK%z9hf95uBRTiYC1=B)%}HE1v+QVY0$ngLo)Qep*K zJz$*!T47sYlVYt|U8-%H3f`3n3Z61hn5Wy8M3;gVvzFPUK^L>;+9pSr#p+br=IX&* zt&?P%TMxdLODEp8QX?JgvLsvEtP;(1+jwhmG=Wa`i3b-oNw&8BC7PhSX)^OlQx!_A zlZsLkvlU8eYcrw?K&xWYVb|zoAo2@jeE`T^&{Ztxt77X*GQds;dl)?8paEKYm1>g* zb$5|1XoU`BBYZLJ=HMdG8f>HmDut<_69GY6AmYJ?UB$=S=B3%^rGXdWYJyIO0Gkh5 zI%A8pKG-`|qaL;$8Ip7|5{tp5E%a0xur8R9(Ito_t01dDrs>+I+8bIK=pZeL2n5~0 z0A7~{*~6~~(+?_?^U@&s1#~AU*f_`rA<$yA9PkRgJXj#YitkjN5>0#1f<G(d^05S5 zOF+UE#gWhziwb#ZU`^ola8}4>A>t+#wA!;i73LtU#()Ju9@Rz;AA18ULmkipE8Dy@ zH8s#O%*+z|oDwTYDUYxr56P9fhC0|5Mb=Xx_KQG!wZJZg1vR`50y!Ny#`BR}1lCax z)1s4S8wFlc4J*PGHS%l>Kv!Jn*@7>c1m$d9L;F<F9Z4FRR{qfH6|{`lP*X=&7i=8J zKF~&1L>MHZ+lXpmJt%(Rk!E86TBQlvJsxcsi!h@YYzB1EPZZ?-0eG^~Dbch;USyO5 zidO8gs#65=BY0sy)Ucv@8v}a{ZOEA=V8`cyPs7oOF40Mi1)YNvT@)K_7z;Y&Gb6JY z;iOWqlOPEYN7ND(vyd&MI5T!KJZeFXgSQ%BnY=n9u{gsDR2Aoy=;S6AfS4NI$u%{3 zd73()%cSzsK|%_7B}j!u8j{nqLEBI=GK+OeG(mfAQX$u;Km!LJqgZlz0oV|z!t8u- z^$s!ww5cC?Ayx_wb&!IlHmx2yUaXLT5^V?*L3<&<YyRMgL=O~Npv{Vq$^{fK+O~OM zHMX`z;JgWPIU=rd!EV4FS8lLn(4a~Mqz#^~z%888JZo)jaA6FVOH4`802RkbD<Uhw zhEG>$6%&<%I4lQrFaSzoNrJ19tVa%<c(6FcVPNxNc>`=Wxb%P){FznY;{r3QkP2EA zc-lbIh6oqrtRDil%o~esI(eWgF~H}LfiBO1Mk?4rpuh#4{*hUgs)MwMG8k+Y*wbR@ zG42SLL-lMHN(6&Vhq)VEGr-S`%1=|sLpoj!S&<?rZNttCvB@vdHH5VqijcD{ECA}O zQf;-hAxQ%)W)0aEj~>SwMetRad00{xG;x7VK%^=c6#u|lT8epUYU!XJi%zDkBB*nx zSfr+w1Qy7*1xbSVikWI^&S0@b+q{~ZqMDk_ni|lNV~O^D8n8B+PHD2HRdg(<@r9g5 zLGf1#+LTzLshFy!rU<LsN_0v!YidASrC}W~Tig25ni|ml4cK*Ewzj1;HA;{(hLmh= zK^j0iNR*Pm>zqI$H8n~}l_jY@;060g0{-B8oj?MbH8lbG8l^fppdE|QE2v6gb%p{` z3F(=K+_->w0h+i{?MtEqi!=;$QgsbAV^OO10BE>EReI-ZfEwnSI(bDJsX7Kau;9@| z%7a1RB!{L!6RB|V1)B+4d8z?wYGjtw)Pxs<b28`#Sv56{Ja9vyrUrT*OHEBl5p=C8 zBEmsSOm#pz*uae&XuAv%{HdC1YT?BiMLK!lN)u#YeF=UOK~<R!@-ly0nC~DP1v1k# zz|PEz1#M78?90f5mW9aGo)^@Mpv@l8kSMDM?Ja|KXf;Z}dlsreo90S%Kp_UYcw7^C z4~sY04EX+%5;Zm7OpR2X!W{51GDra)h+Ux*n!@@#1$a1CE5$<&J&cc60<UBDOt$v~ zZ>0kt(wLT+URng&rEaBYpp%+cnwtvefjh`nc{=4qnI%vawVGC-V%Qd`NJ<4q80wy* zdQjH~n({#XpJa_9(7{8{HaL9m5on7;KB(al1m2Jsod@6Ci@et>4{QM_4MBsq#Magp zyw?I0)gVTRZ3*Zo{}Rycim4#MdZ?(KZK{2VRVwH#EktrEf|>`qn+EB4728y`v=Y!Y z;%WsYpew%BQoy4bd1`7JiME;cpn!*L<Fx`sp{5RKWqD=^tQbrL6{U)qprI2@_}~_} z@014V41(m-!2Ov-TmO8G5=|Y&Vwh%7KGR7=x@^3_HaHEWB*nJC);6M~rl!EwHWKU{ zaES)frvmD+6@z<E1-7={5OswmH8u61qare)w&m2+q}W&2T4kZxnqyxG(jS<okqFxV zWaS3pc|&>dqnZ>!(~7Y$8$pM4RM%Q3+PdUxl;{-b6oHO9tgX$jsnN&>*PZcspiRy7 zMG6_V`QQU&O2E#`fEkcsoewSO6F~}#6v}Lq?Q`st@~tZKt#a(0a;yq-bkc3pK&he( zsZuP}NUy0u+9Os3+BlRB-tSxlI@B>bGgeb49OU>+ouZ<8jUrHi0osNKy14|j4H^;u znMI(L?4aU2)wU26VbDwsU*-+ECI*_+@{2$_`gBr}Hznjl(+{NoQe+F;^9zb$XbP`~ zdRMUs(iXKXP6qo0wA>zCh=EQ^1|9Edn;M-N3%cz9w5t|;?3b-=W{H}bq6T>5dx>UE zjbgq=B5Y%rq9L@Grij#;OoY29Gfe|>pfzZZl@k0I5704JMfv66lYf(wHHr~i6aCYW zw@AY_3ul5(b*lw=8diiU6hrL*6>^}E%LH}y^KDaf5<&Cj#qi=&CkNC6Dy@fiTtI<> zNa#7%pzM@t3)-?206I8D6Li!{zHJ7`97E6*OOP>4JKKCv4$ij?0!!$mg40$m=u&e{ zYv?!xXwzjew6C6Q3*JDN2Hj4XS8tzem8X#mPI}3pqYXgksU+JcTN!|Mw5QqH+NL22 ztODCo>jF^BfHoXP7sP^Pk%k)}$8>5WL-MCWK4`m@PLXC!4MGB%T5@2CtUga62OMIM zG?Hfv-y^F~hE_Fz6EakP9%#T4w2ww76K#uIDcCen83<}FgJPfv6a$zWLcpmjzuvY4 zbb4%}ZK?+3RtiwMRI~*(Qb0rCnI-m#pi|sHt(Y8*L`^GDz5yNO2{O3YHc=<XHXoYM z6ySc!Q%Ht70+9&dwI;|_dA8*_;A10f4C+BOyRB}XU8cQ(Ri<_x=>CHu@V>a3nj*VQ z`%J6y98i@|WMcq2dq>+g6Qm-~4%CUr2FX}MH|^$u#&_WRKaj?0)4*<l1#dKbfCLh} zu+9xMEUQzY3^g@qFB5!1AyOq)05%S`ArTY|`JnJkgePopJ_esdVe6T%sgqe#qmgMF z9Sa&V%C|{`Cc|RelIZ+c>r}gX1JFTI#hUi1c82x^MH<DR<`&d+t8|S_&|x>A<Ha+h zGoiI)tZgy8DU7twIR)%4<c2{mDE)w%21u=f40KiXYL!@&m7yvt03~E-FA!<FXDaAE z=v45vrts{a4%L}zn+<B0lt3=*1O-!`tpQS94?PUNq+U%85`nfQ(Si9IsnMW#)PzS8 z=(=7|kFf-${h1541eC@>1{Z<$R>GUN;8wnUkySdVnWs^L+y<=#7w51X1m3G!Qg07x zBV?A?XQo<tm00;DtEu@VgWB%ka@aluR1;c-fk;@6%~MDMTaO58JER_8JgOWdH<hTV zAvZ!1CRG$c_c$UsN)gmz0XK5NPCzIw2OACYHB@zp9cTa-)ZA55E3pYr)&MaP>a*eM zL3s`mQhD|nRw<xOs-SaDK_zH?Ne1Y+D`?u%Nwfv^aq^Nu2W91ew*{5jM#owwf(kuw zfdMK%6JxDGSGTIEX(Zd0X(a0eXrzJ;_ss#hCK+Z@j;2m=bYd*HLj^jhD$~x^(8xed z4W<Ch)wHh%jf~{xf$oA$)&xZ|$N~e%Is0j#j8$L@x>6TWl&9Hbs;QMiZL!IL=BISq z<mj|mom|^g`&5l|O{;WJZITY^xq-^_bo+EG106+;0{bA10-an<t0Ik3om^1ALKCvJ zEYUXKT2~jAIV){JE(e*Qs8MMjq)`dcQWBjQ3)O`v^J@##)CwRS+gweZQV1(uvldn; zmLlTA85$p;LJ=B+Dd6~rWgg__Kd9vh?hMqTH2+ngW@uK!Gnh_^Z6v6Pl?rJkA<m@$ zZ5$2E*QiJYMGqoJfzy2vsMQ4O3DtvZaF`1eLXfivbb1e*ZES4|k;>Fy+{%iPGJ_*- zWmQnqK<y6&SE#Q*?QBH0vbD8M1zj`^b};;GIMA7AP=_hzgE}+zC7><tYHFb7e5#c{ z!YEfzg^5)5AxVLEjDvDSVm+kIty2u5Q#EyRY!mIBN~|D_YS4XP5KgM5b&hQgC=l$u zORREqN^MJFoKkSxJsBkHU80i)lJG9kDFE?HL20M}I=BFCV=E>VfMNp@{fdUxiS?jX zQL?R~VQprbMuD1|VluQrsDRQ^)=8|X0S`ymXMp2cCl3@>pi^?nAp9J-2*^%FjXbrC z5=}^@mtvcYT>hX=wbtuo*rp+*Q_*H(L58K&)MP+RDzi<oFM&;ES(WId+h*9O!ujyZ z7uDsN8f7}^VAtitvxTA}=<*?ux_WqLKqnpI6PVACVlE3yIs(U#t*tvW9f5YCyTIcf z;#|;euAnjwT*PI9+J{9T|A5M5TU%&<tUgaMA6#RXKwIA6<1@fTU9oK*tgWr4Rvc{< zYhN5~2s$&hBpOsC#abz9fauIT1^Af|iiWkIvKD?24%7%xO3MM4V>+eaJ2`ZcZ9!&P zXQtJIN<NU`;N(#XZux*3^*NwA2-#fFR2SG;Y2X%ad>+UvMVcU^3v5B<S+Y)!4(M>k zG;mv1QKJBCmc46{MzT(+PDV*hS&2@OPMW4w0a72K7CO0(+)MC73T;IVNKdt<rVvyI zf`&~%wZ5i(d9qa)=-{r@;u4J#&@??#ba^5fpa9LQ&_bjHsdNYcDXWL=xrM5OMr$gP zIv<caG-X9O@Ig4x0tChEylAiuNHY>aNZKHMoy`0^#43;y`x4N#W%b}QjQmTjFxR-) zLz)tyMH-+x;B`ts6M9x2AXBY;OHtM#_<{sMYaJAwz@Y@m-U?OVt{f<aQbCm{C}n^+ z;PZIFb-QMIay@JX1ZYS~3F#^fCGhQusgMdK58k{%3KuuHt+2ra@JW8*ASZy!q*Pn5 zb0Ay%VYY)Wk0{a9fZA1Gnp~1!q@)Py`hW&25$%*BO-*<sxCm}PQcJiHoZS%RwGEQn zoS<@G|AMOVBHJ*~w55GsG9u!vqGRD#Ekau3ur?-i9IPl>8+;TGv|>c93c)b}&Jn4$ z&R{=7gWV7@8K$NNx~&(KbwfdIO9RLtU9<sczDN^%?p;0j&IiQF0-&+SlA0P9EWLS9 zLI4c~Lahk`*{P=Hk*|@eX&;)e5eVYzq(Y2^nF{iMk!?^8Xlwu;hLHY^ni`0%PqlZ0 z$XdCAMo)_%ITd*np$Z(9;1V=bvl>*}rK+jrrXjb<^FgPBW~OOm=4j+=YC^gkpoUd^ zo~BMXM0=u6o=#N}sMgQ~Pn&~7uGqG|$R3ow6G2DYBx)-ufs2q#P)p1j(*FY;>}i{? zsRJILO$42|S*zoegOuB$=0l5ZkV8P826b@qKqKRznL?dX+eGjXPY$?jDuq>XW%-%) zDGFed^K?of?U!WReEWQjVx1hFJeYG5LCyg!UI3S9pmGm7MO^@@v~x6dQfxu>Nm7AE zj;2lqn5~!s9=^}fv`)6o(J82@0aaq43|*{gpKM!f6;Z4KW(Cz}Y7}c)rPynvfsT$z zwpGd0$N|lcYFcH$#a!TG$+pq4Rw+3eIhr*!=^*RuHIi+Mb<ztUrm5tB3<DRL#hNuW zMQUoPAQ4chnQWVtuaTpvsc8kWs5T8WRtOs2s@KTTN!HZK)BqLVMWD;5G<6bT^L#m) z&~VSwNk$6sFmQ}Q>bN{azcVvUBM%m`soJ0gCH8q%208(tVTe3Ud(dbssDTY{>qUT! zsR#8Lz-a+AOaL3-N(GI(K-<{%saDbcrLj5z8s+&Kpmu(i1~_-a%+Y`z!UV|{)yYMm zwHuj<R-lm^xElCjGYX)k2cVmKK#Q!bw6*JtbRdJrC7^Tr;Oaqhhp-~w6ExZgawhTt zHIX34BTRJ%bCC|WLFy*CfrgCpKu00Nj8}jv&(o}~hnI_>QYsTZ8U;FlxE6MH1~_~Y zZ9%u&=oH(6ySRy()_EGmI-mn2^D{N_b+R+TW22z_0SO2Nq{Bj@z$G<Q9Oei}M;fxY zA{~_VOOP|Y7sNw(pw0p)KV{k$*{fJN>p%w^;OCbW+m=9^FW?b-ja1v9Oi&9`2Q++E zYzsPE4KjRYt*s3net`Km$JRin)Hby~IzLt?**4EUPoq@Rs?=H|$2L==SO=UMH9@oX z)|#O68cWpFV5<p0S<_Hc2gWVY$<YBFm<3q_iPReN2KxXpc$Q~dVh?k+6=*0RPuI{o zuO8mB%mf{|77NPVdA6Y1C=+x;4<wQ2+h$q^<ZEPV+9Pbu)G^ewDgz~rOn9>rc`;TX z)Ou*BmuR~sYq%$CXliMs>Xv95!o~%_{f`omF`!ivMF{6Y$1TH?HGGpbKzcOwK}QN3 zYHI2jfNp03_mQphLC#N%F0#+J0v+%MT5G6n3!D2<NJMo0Qo&Y0ypw0Eqy+M(B53?Q z)yA-<Ce_Xl+8)hQ$g@t#uTE7p0u795+m>kRXr$V@C2OSW8-XfhjS`SpZFxp!PO3&K zyh=f;mh+%CK|P+8rV#;YSo@c1>Xc|JDIt|4MVa-W5pJkb&peGl&?q;Of=sAkpd^@Q z3zmhI5#IS4d9WEj*uXX{R6(ure6UtfwFPe4LfVnA@~Olc+JCJ_8X<xPIV_QY1|xJ0 zbwDW`)MQt*Eml(l4dud4n9Q*S4;X=l^Gj{P&EZT%+eAnZgWA_QvDT%wpy~~jn2W)6 z2&{drQEHo+qmis>pImPRDj%aWwGCr6?W1F@s%tfC!$CPaN2gR%r`WbQIwuy^mq$w6 ziJ*n3umZ|EA0ym~p`M4h22`|y23_<Zy%FnF@L*=Dt!}DaJ!IT7RTH%I2t3}Ir;`Vk z&I6BiX4<CO<=Gop<>{u{+1VNBfJj>daFz$fNxp4fvPLFoY!Q6OPd?~`pOWYz?NoSw zAE_A10XqufBv=})$2ZKZsF4R6TLU*5K*P+6ib(0K6l@x(oCP_g$QHbO5z<$;FG8FN z3Yuxi1D{BOXnTW}YlC|Cpv8qYw!S5hTxSjT0=TTrw=L4n1Ro%i2pK4aBmmH`v|>7F z92%54>=SKlQ>_whQZ?<1Z1c4Ztuhf~(V4I~ONO}8zZB)vJ*a4&PEkE*Bn32E01r~g zIh!C0QP0K$UE=~eDGGG$7}%S(sX95f>7XG9P(cc9o50UMO$KFJjZE!)O?@Lxoiy7# zjgsi(SWTS*+ceO;V~I`*cnYE(G=~7{gM;ZZka>^}Tq3w@mkufkGr$ctg>>6e`wY+^ zcuh@#rd2VB4eCV~)zm1aXj<h!`Jk4M21u+-(+b2^ECXq=PXmQjnoX*vb-I0~ZL+qZ zRlaR<Eo}ZVELkI8CkT1nOBy)bAQ1zKU+}g`&?T0TB#iGsEuCWUC|shZ6=bRtw2m~q z7}TVL4oKwK7F$D)DK!B3KhfU6DiJ<nhLm6nka8Ku5yqenTso+@vJWV+(niXgDPUco zbO%{pg-CbsG8Q~R3hv&)=HC=RHDyYsrZ%K#1{(}3tWwhKQ_`UQG)*fdC1~dgRF*;u zLnQ;qgt?)9iLI@!ONqUbu7Q#jQhz7|9Gr;E0zN4)MJM039yT!o8lC{%_y<`|0;(SJ zG!sE>(o9=u{AZ?V<b$TWAQ`ySHWhqrj#V~j{uiVk-mG@lDAlxv>J8G#0go5tLax+N z$gxcY6?4U~0o8iY@nEnL6*Tr*6swa4j=yA0t7MR|$*@sW+_Pdiu!0RXIhKQEax7I% z4LS{$rl|v6m6EJk51u|&0JX5wbU?>#Y2+w^@BGH17C!BPw1lM$9I)_CD7027ft;mo zYpVet9M!C;fvuPYO*BA9MQh==&M2gVO@h={&<YV&g=v7Be4xbvMM!mHE|LaVs|qpA z2D+o(KGRCq&{_k0m?-2dQB5^9q?1IgHR1i=JbQ4JQDkpmm9JA|4=&C$t)OBco`Fu0 zeWq1DlKtRS*oak>(4?pU8eTx`!2lJMwt28II!&Ei<Zfe$PHH_O==4A>Q$5JNgsFNZ z8K6xm={o5e(Iv4usd|Y;>BX9wwJ61C5;O!LDH2gSfRas-jS(#W6xoB4f3!g?Xt5Mh zISV@Fv>sG}fe-Y}1RZJ&3rA3~pBbxD3|eTftz8U~DpmwvVF^0e-L|+0bk1>XO--Us zNpx{6Xa-*s-WJNp)F=R50%)iS7Du$f;^EGPSyN<N56+43Oqh@803?F8h=X!RCUlOW z*tW<fAADb?Rc47bXd)Cmby^HhmPpOL3UC<&O-2#mk&hD4eYT(=28|6UltUGO+y6L* zr~Hv753<2-hesB;?6NPh0u4gwq-xrO?s{-Z(+CEYhe%1p8LSIY?7;j9Pb;?dpaGA} z6413QI*O@kYI%0HMfN3-ga__(!CeeqLXrw@%fU|&EYT~@$xKew&;%EWh`y*!k!?t_ zeMquKo+fy4YYFHsA=o9aNGFw+=+!6Z7l1A*MPB0+0uCEctpl0ON7Y@Thgkjwk8{vq zhf1<WswSvUtpVkgXlf#_dJhH%1|+TK*{0fqtkJ7a0xzrs-GK>V!Gk8XTmjYMJROMD zkcD<o4rCb~Qjj}>Z2<*2H1=~fQtk6JKu2Zjq?Kq|ff@PWn<_!Z*XO~41<4Fo0s#Oy zlS?NwRWG$76*R~Q4~JBw!x2jmY~*0@M{!_%QJw<Cg`g8H!7c<d65%ey=D;kl1EC%) zNV6|a)+m72kf6;Bh)m}Kwhk@SAwdlabZGdK5bBTy2vTVIL2Uq?P6=wD!R!K!lx3EH z7AHfRYbBs2IA}qbPClraRRZe8rPf0lW5wXc7^qDOTGs`pOF@cK!2?!`#cFDbrD|%5 z`D$t<cBwTr`D$v3YHB%ZY7iOlP!C9;rUtZrG^eIU5x&vQ5L6g~SCr;M3@Ncmt*I$h zQ_BNixmFL6s;Mc4h}6_5CaS4r*3>A%cH8J0!rHP(D|z5!BJh(j;e8C)0E`Z(EQ50r zZDH#NK<!sONFZ8+#$VuT5^`+)GBq+mt3g2B2(ZU<z}daX&KAA^Ee94;Ia(S@DXGQD zO18Fn(M7TLx`tMUNF8y#Owa(2ZYqREB!>WSWI<|KP$^sw%I46HAFOoJNrbPI0@nbb zD1o|Ir_?q)StDOJ5!4A!2Gt!o+NGf8wPKMqsGi8N)=Z8r2A$qs91E^#z*8}a)|wh= zH8q(w`QV|rXwbY4=$`b<SWU?04(n1-KR!9S7_^84bO5|Iy#JJpaJvth+p#+x++~Gz zh;?#6!%C%yS|u6c{$h~((`@sS>ot-=9w@K{dmz&$*;+FVbbkqGl@izkAWKqgGp)6? zb8JdMk}29bAphmS{Rg@lT2rF{?!UC?6z#m|#8|KowY3o|CDRaI0k0zjwH@jcixkk> z_F!v4Gq0(j@Ga5=^)A6{G(bbSwxBbyVQB!Vf$NJDHXtWw+A8K*Lsr35*CG~ypbcMH zYu7_YrNF(uV%t>EXjG0ZsM8L*A`Viy7lW@h0M)rU;7*pBnnsQ-sM-hJ|6Kwas4v#Z z0Us}$rvqZavI|mQ6}(^(F<J<AtV$Ya-DExTiPPX!j%dn4z{-$SIf1<juZm$6qz2Mh zU2cI!o~C_{l~*1p7uu(4fXYNzsAYmC19ZysHHvhMH0wbtd=c^Dfn2cWWg^zxf$Cy# zAVKpvJb~rgX4)Cr=S64g8iE#S>m=G{+8NpBMH_*5;HU)M&<x4%cE)OIXl;%9)ciDs ze0z;dU0u*@a%Kr=*_%(k2I!Iz@I4~nAx@2a+e{l{(3*jKolIL$!wNK8nhHu8h)z3b zva=}G8g%=MMygJ+P7%m!&^jU&dF(b6DF8wB4{8X4hOxl~HheG}Jhr14Rt#DO2sN(+ z9NJ*-K~fu1c%*`x-8zXNC+2BdYovnC@`pFS!S{z0X(WPDTE0$Vy{0w1^2|fpfm4MX z5pV}$A0sRVH9T|@ZHqu_u#0UIp=FhIF{n@hM_P_;VswdpF?fs+Tpxh$9Lm$kkIt!& z)yV-ZJO%Gmgr(e6B!`590}IrifVl#^?HLjd;5|K%i$xV}ZT<2fOyq4EppnTE*d<_~ z3xYuHdZfF+>T4n4m#UUtqLXhM3Gy~9p&}jW90n4Hjd#Hu0vf?iwG9T1fI!=Sp`f|2 z63}LGD@e_24@yT?sfhc}L2JD2ok3Z^5PTt9eV&Gr5@<Omq#=nINd{eCrlF~wi4+tO zxEuiq424_`l~RrTQcx?fC>4CZvPM~+j*=2+Q8$P}G79WZkbmk+i}Dc5c_B@QRKzvC z*3jE}U}KW#xAlNpnkA5%cHkHFfW^S~1ZhHK;J5T3WFR*PStlpf7pE$~@9063*GUCk z&;v2U1a^-PHZ?k_(Z;b*%S;I>)JcstfvGmDCr-IeYP2a#k2wiibW)?uVj&lL=GkVX zX_O$YSO=}+EYWj?^f&W#QsLP!6SS-o)FDBNFL&&@0Mvp2rQhiXUwRAICxYs$d`-}r zRGm`WihPYCP0$`>Yt6*yoLEGhM(045mnGZg+Zd~<B}N;>D%#qXf>`;w-~}F~pdpe- zjYQC#BqVKV<m<xsPHWoa*(XAV)V(u7mz?G#CZ}fP=hUa97U_TrP@QBD1zH=eo3CkA zOiU)tw1VvE2d(V~c_<TSPK?5y33T#w>Wd)BHxpFwK^v}NpzDPp!uhu4pb>jxO>6LC zcJPQZJSUgHtFwHKOi+iv1hlXiTs9<vE{Fv;*kI*CqMfdxeP%SMFPs=_l?bY6Kv7kn zmkjROdLg?oHy^1EgE$1Vl?_rKf!gLe`L>yeM4?xbQB(>p)=SjXQuT^b%TkMqLH$ec z`Saki6fzG7Dn$`h8F&FZxGGE3EXhDy!44WXgS6C@AZJVzDcRb_gV)M~g1Q(yK9;Eg zx!x7Ley7N`7?l3N(|@2%-cTz+s&gPZbxLiK49l^1PSZ%N2Td_p7lTrgTfRnVv_Y(< znp!DnXR576c1cZANlisbjWhVbjM8Y6SZFPwre<hsTN-T%T3r+m)fNjKg(=o41!Zh2 zLtA*IqNe5sa=ATdUP43Dsu&z#8i}AW2v+d&kLh#2c}szI)qobQfI_JlYy+%qt)`Y+ zpiu-{0i;l@SCEsKSE5m*2^%5;2R_KB&~b2k(7pqxd%$%^iKZ2(t(^(l{+<usl>i+Y z1?^GIhvZ^Vt)5?tT<3d3Gcaf_0W`}EYN_dzB3-tYtbrJ8&P8NaXejAag7S8*Cg?l> z>m*RUS{a>$oTrn(Glv=ALGyUq`igvwWKEq4+d_>>op^9prbtaqqtZ4YQ=<~>gbYpa zmBbpAwmu-Ce4RuckWj9!ZG}#Tnp&<+DI~F$+eSi+fRqCYh>V{M3OaDc2j%-bol2c@ zh^KUOH6gWXwrzoZ9{3(|9cSAV`)tr4O$jU$<=R%l{8nsVY3rV^Q3+b>U8bg%YiFpY zR*6XaI%#TZIX1Z<_d|8q=0NTNhgA1iYJPB5NLEwRaJEgasfo<gaMsk+afZfXwoWCa zL{76!Rm%n~RRmZ5DYmI<xg|OowyA0wNhLM$C7L>AwyA0=pk;n3pr#+V&V)H1saq5X zj#_vD0xDCWt7<@#*U)ft2DQ^mbW%ZU`9X7Rh$e3dxF|)@4k|{#4Lop$&jh7n$S@UT z%?x5MRVr8t+=T~k@BwWf0P#RaCV-a1fcp#ZVMuG(wYBhbj6iq9qE8ZlZ}d&c1no~K zvQ5bZWfm)qJlg`ONC8+x2YltP4q{U(ayun8A9+?4tptRIM=EHA1!7GFa#J6^u@;ow zVBuYYGHweGEzqrkpzVycpydsSF_C(OJZPw<+CtAhP*PB`N&zhmfHu`&EgEnLBF1X- z>{B7@_N`LE3X5#PeBWe^68%8X!U9MJFUnH@xAi~+jG)p3wCfYxo`W>!>WiQQg9bXt zlS)NkM}g}S#9>02NEsh|0!I#J?k@%PqLXc5+loQcX~`PN+Bu-<G*Bp^XN3A<<Th}o zeWF!~wYGLCq<38!Yg+_5dIZ#XfV2<NqDw&?|3uiu5a63>U?E?uQJ|9#%g1SuoRe=0 z&N7LpwKQTkM!iBNXf+t9fr-+-g!UhxX`o0=4K}L<uE0QDu_84!AMk=5og&a!MV@Vu zZDxt4PO5DMsF|$;$p)Z1r&D!OZ4ET7@<0-xWN!;vO_o_=pK6n5Z)j<yYiLygYDejm zfT9z$I16QYNj@&;O<(iCTe3b?O$}RK(MYv*hC0I;w1G!c2b3)Hkk_q1%SVufnaJfl zs76V)O;t+*Es;*PPXzT33T%@><w~MXifyueK1d`3B2u4komyj?Y+q4gRbHZ_k*a1} zr;%)5USd^IqN%A?3A&^QES6qUlUt$*8GJ6Y1)T?>lc|%UlctlQQvfN8V|CJP^PuHk zW{FN2JoUPP0zgg8HBBR3r%Y2PT@Tz}fZWGoTVJFTm9LQwS__BBQwqf(E#ML<)iyC1 z>8KS@i3cvSKx^qi%Roy&!33Ivf{rSJCh)_OH6WXwj4X|y^PokxkO6ybrBo$Nz2btL z%n}U{6Fw;fQIM(uy4@6{NLxc2bgYbao~EWIh>xsEM;l$4Zk{HnSpaSofLC21%G?~V zSD?ud?tIXA5O_GKJ~$0|Z3$?VwSAaIDk!ztrl#6Qfta2esi4@`M2`GYc>V@$UC;ro z76gY^4!CLol{AVu$RiN&RFAgrupYGW5R_uT>o=g4o|OT}fYO>8NP4I!sVOf3^&v9B z86?pbv`-DRUCk;S9MXy4bvnhikX4NK#a88@rFc4}y0)42u%S@UsW@uo(BpNIZHsi$ zY%{HkY%}X^GfTj2-vZklPzrShj{&7XQWzv@C+nm^k~g^BQJ|()m9LSaQ=q9+Vw(cq z32vJbZ5XSQXPXjj6suEYn-XmttCMM)5^VyS)k=xBjI{+5piP|iIY{@Mf}CFulF}^& zjS+$dnBf(&ni|CKkm^}e2eght(KfwAGXqr0CzaIHq}tlXm)JvlOU0U2sfxB0pq8|v ztwuVi{i#_~1M|GScP1iZq-a_p70&gL1qYxQ$gqVEK)?#bsC*5L0{f&iE7vqljSQU> zO|*QH3{M5{Y6`N)3bLbLCnXuQeH*l+5PCihr~(7s4-HSB^$KZlGe9W`ZVq^%vzl5a zs1O3(bqb#C0Ub}H16?GWS)!AcuamE-lMh=%37WM<S{zV-obppZ(`BFtMp6LUUr`U5 zI0QEn^C7LkL|f2)3eZv{XktVfk_M&9VnxsqS&E>w{5f{Tu-3IA<jCeyl>N=6pgW7x zQ$b@Su!c#gtu3UoO$JqSX|{^>208_{d1_@P_MqN=ZXRgt6I5HlHbkd_{0BP81mtyV zZS7<m*!I>GThJ;KP$Mon8Jsd9I|RyX6YYyYaix>2ld4k!8tE(2NYTmANe0E84rJ$N z8K~t{0vhqJ*C>OZqGb(QuL?Ox3%o@IB(I^Egwh-Vt%?Sn!Ufu01v+CvBLy_gQd5(u zk)i`y9SRx=gawKMbhlKhX04`XHIm`bg#c+9DT?*Bwi#+_iXiP7pw<FtfDA<`wB&+E zatSCvAk+JxF*u}wZs_(HNTvlZlZKAy<UxmWa#F286Gupsii)=NsYu+K8sup|MO%m* zWD*b>gNlaMCAKAckXbDq&@nI&CS>TQI2Afz0=j%0F?R_w2{MBS-n|WqZIxt=l6p<> z>>GGOQxiI_6Ix;gzVf*WN=KDIO;rdl*3d4|(N2Xb41-IQ=;bBmrh-<(gJ{sD+_|a6 z#fj-)At)2##FA8q;dv0Jg1T=dwzjFD#V}w?-Ak-Mg+Z}x7({()Dwv;RTcnl&UQ1J4 zQ=?IA>kc~64|E<4$ZsH8O$|Pc1<wqSmEe%g{_rI$;4Dy7V_R0Dlc-l*54!aYG$I7D zG}$&IUjsCQt^*p&faFS@M0iCGUo2gssgn$GT@g4+3(}ymqkx#2w6%q?Q(;vjXv+?C z+kpaX2U0!67PP!y2`V~}&w9yB11(mm1Z@C-77J=>iiuEL6%FA%=~CMq$OIF(G6XG6 zECuIHMU6yz@LtnYq~p($H8nM1n{o`nl~5W=`H_ZMex$+5j{?x{aqNWzsQ3VdW{Pbh zxFwuptyv9q2}n2tQf`#lrh>|ideBX?;I4E!xZo%QmlW`VBSWVQrQlH1NC$Vc>@#d_ zZOcH}9;5=4<?=PH(ls@!3v3k)p+!haO^rs1tx|G6d|Fw_);3uaT(qdEDW-tKyj~&K z7Bo2ySEEyDn~J=Iz&cmawo*+E#Td{&EKDKL`8&{~4p6rL<f^IVBKHw;)sSXJKo@UT z7J!=Lm1=60$jT}~jdGB8V97@TR~b|Qugw&4K?w)e7l5tD%`DMLNyJ!?3r=Iz(D+vX z?{hB9(NRf5YKA5un+8_ll%o@ZtRfz)0v6-on>`bAL77=6&o)0TIu+C&f$j6jPXjF< zfz6&+8GtW(tOv(}0{rNSOz_emP(=q>7MWjDlMmlPm#2^kE@u#v7qAAULIv0%kiuF6 zW@Da?5>i`RNfXqy(nM~4BOM9^+HnBRG$poq@G~K6YO+dUZIKdNP}3r-)IO-lssu5u z0nLu~B^ro6ok1)@9=w$csnQ3XWd^FmKv^Nrwxk|@`V`C_Ur;8u&x^+B6{Xt4gshZ6 zC%q}fTIK2GCL+Z?cyAJXnjSp%3ho-fJK*5UW5K>G0xyBr$%GurU=5ycjRqYh;{jUy z4qu0iH0`PaZYM#aE6)~kg)Gd?enp^3NKoSekrcuE*}-<D+QK5FM8_`~wEVav+AlfQ z8g!s>J(y{mSpppbP&BAbPAo~z0Id}V7fG46Nzk?%;)D>;02}DcD8J-b+dL~sWvl=; zNK*&VGgb%&yBIv5l@GZ&8Er-rvM2$z=qew)x&X8k9DI5lY(6F*d?qNQ3Rg-g$}do| zD$%x0gcLI1S^z8xxe(GSRTotXbkwPmRVrw|da6!|cA_S-zLLc3`c$aK63}dYiB76+ zB7A8>HTc|Bs}h~myc8?si8@DcVh5!lP>zFKYVM1e)kw8ZjW&#h_VV0PK}+Ef(c%gZ z6z~E@$cc-v3=9n)SbEXP2bHGC3)2!I3*kYxOM_Zrp!0P~b8^7v2!PHaO4QWU1Wzx5 z8Y$6<@MM%<Q=_e2q-dLIpKqn8sF4Zntd`gt)Wer=YpSUg<!EGTs;LF!Yb5G`7#iTU zXW;!$D5oock1B#DE!b$Y4roajQdy7GtHd_M02;Ce?L~%fic|uxB2fYrx_OY5B(^0G zS_i~0C<QgUGV=;bK{*N$oZ$0|pam}4Bmt;UN2ywBYQUQ$LB}3tq-g|$S5ws^i~^rt z1Rb^k#cd{P#RN-_sgR_o0B`FlfL515TVzO0H%M6sK3^wOL%Rg3AP3UyD#}v;uTd+i zhl-a%n`OyRIt@w}K<N}HodKoGpmaKv&V`!`UWHWzHP#*8LIf{X19iW^Sw<lW+P18R zwgZdupe}_uv;=M-c!?TBS1Mc(ytE8qToGIXyj~16M+BWB@&l)LSg{35*`NwW5j5)` z1|GA3l|G<-LeOvn?ZC3t$g?xFS5i|@vQkpg)CLKGo7`FXnRyy{c1HF}Iv^<pB~W7& zHV+(>s-sjred0U`;d&))&~0`KTKX}0N=VhJCph~;?LkiBH8qNg8d=GZ6Yrz5l4FrH z1wj1)(WVHxMjKK?rrP^~P7_m8(}0ce!N#2H6-sJqB2!`ac58xGl<69(sg<Z2+S(d` z4)Q=M-hII4g9=Mf#?Azfxk2rM^eu~QOCSvu*yejhMI;-G?7@pBz?nBy2U5w`mt<&K z!RjnqThJaw&{lKM_T%tkjXY560C~t3y1*1Pss#=dMC%rm8}eY*!=^P5wu84XD-}a- zfP!$6Ko{oLC+0!6HiH5RTt+EE7Ted<Xt=_IrKU#F5s3p)o2sS;I!s;xyxsyS7JR`` z2Xap;x_b~FO|7W`M@4-qX!;MtgSriT%7hZwZHb`$;i>jW$KZjEmH=%N2dz9pYA=9C z520lpxU~hE$&5|~x9YJJIH2tq8sH;c;`Qnait<bHL9qtw5i5e12!h%%MX=B{09U-3 zw$5pwIc#W*gN~#GsmhEtK-%UG-j@$8>l76$lhxEJ!F>uO*MbW;sB1w7?x2)^u+{>| zWNZy(&=?b9ezvA21$if`2RP&*?o$An06LHiJV=8mK|{f57(RppUvQ6fb{ZslK|2<~ zCpJTOGJ=OAYHDCn4jS}CDnhED#)6_f&la>fA9T79Xv{6sHm{}#G_7m{8uQ96smTT} z^(?Zr%`Q<>11)$4jg&#TdA7FBpsOsR&0!O=HnyqJ7O^!oMYiB+TkwQ!D!R0qTAr<K z61eLNS`-TJ^(mBC7pbL#P9!UdHUcfvGm6#8tg+2gOE0lEu&ON4v<5GD1g&&42B(%{ zNFfMX&}JNKT@q~^Ynx*q0NM^w3|XgPRjgAIZ2}UF)Bs8AB$sGffmU$9+S?$rOk;J5 zq08b-V|7ZRO+o5?V5XSGYJyEM1Bupyj4_Rc8e<j<+T;fE9@v1AXmil<QaVLyprFzy ziMEJ^wF;swV(mczV-=PR7S{oBG-3NJN}?@e)zmaVlx=FXWvr$Ss4lk!?Y;*eoM4-& z15J?N4VU0E3ZN-68XOLgBv7IWYxID2F@Q39iKZsLGZ4ThGeJ|o0-{ZdNPW<~kBANa z^{JpX9duF*)=tqiv`Phyw!(TYNK;Zph}kF|=sMN#WDVF%lrC5sbm0kjt!X}Jxk)By ziYZk)Gu9fU1wIgv177f%s%;2bIG1UYYOR?ATI*Q^I%Wi#iE^S-V{P*^5;b)|Q+uGf zEu9?XA$I6dKQJ%Ds!kgt`w}bgE|p@?e2;;SE_{b8XfLKaG_$1T7u9P(a}2bPq*DZL z2E%xHnmU=FEySR9J!qO897&*Q{vuH7EQ+-a$k)i%$<qX_{{S!ifVvwRyCBP=z?Ok3 zEs#w`kYOaKvaB@FfmeQ@wU4QZ8jhePI^biN5E14DE>b``Q*8}&@@x%Y1r$=;fMkno zBa$^hj&&{3)hN=<15fhj*%s+!+8KbyD7Cdy?Q9+4TfSf&!Fte{Es(LsRD|J32O7c@ z79$6{H`q^*yo$D5RwvW8NEb5L1D|XyvPuOXU78BrI+AZ22%7)S)YM4?_3iROVVMtF zpPL8Dt$DGwiLl%ZOOdvzunYqVQt;UlpgI^)pMh$S{4`Kw0#bcK0~pe1O0~tgIj!CW zb9Wl}02h$)uw00ItxXxcr-#%D1oaYOHfk#=A;~~JqNId~($qxILA}r#pgvEbRKpGF zd`|duw^F>Gk~V0)pmnNRUbJB>XgCOT8Xu^M1UUw!2($^cM6Wo%s6+#){s&(Z19Cp7 zsz7Xgf>x%WT^u>!3p~J;YCU96Nu~zqHV?>ppp^J{@P#GNyI|l$i>Z3(7o;EyXzGCE z!5x(Ncw3NZP&QZ`e5e8FY8H?Lj04(+0XuL|p$Hr*plp(AtC439Z|Ye=$|g;FL(o)E zIcTaw#{e?Ni8$NK0Nz6bH=2uTYEo@r2W>|~R)&Kz31khA0cb%zcprO_ermm@rZsr0 zRbq5LXwn<J#Vk`NQ`;8NS4G;$l$i+X^utPJ@ccZsI}&st`+uWB7kYrtVuzL+phG9D zK?hi8Mi+r>%hwczCJ+UrF@gNV>9#k$CF{X{f#p~vZ-5t~gH96H$wQRJpjoye+Y<1A zm1b&mk**=~dZ40MSh<l7>agZ%+6RFaa9Bm>#p)D*PFp}J9}~fGQ4fj?P_SVQXJ~RS zve!rj?TCcLlD#2lUNKcu2ONy4HU{<vR;fBgnyB6TVzBW9O$QCT<1jwewn#S>Vu^tc z)EYEPa=?~Ab6K7Os8Itg)a}7L70W@(3XC;%6b(S<o1kn)D}`u<pT&enFRI6q!5TqR zG?1bZX$%38K%oJbX|DmgjSIRL96t4%2VU?1I=CvY9^B6d9}}6Wse^QeD5|AtP)i|J zVvQ?MZwc0z)`j$xU`_+g#e*l}Vd*0iyxTt0Haxjrqeweb$3Rn4CtITgv_L;q$5<1z z4iZ-NC=`%sHK>As1_R_6bMR^<urojlqHPT9L2Zh9u<f7*R;Er7r~*fI2PoPQg=z{o zV?qoC-yws#TU`@$m}m*;jErcc&O!!WP4yX2T`nc4AzlXdHY{mjwM_$F_rY>R0ptJ< zRFl%d4!}{I)FVnYog&EYOGH_c3AtpaC>qrLiM7oH-97^Gy#mrY^<1#|P;umB3~G*| zoPJXY_7h5;tOuV3hHwP9I3hh6!BdelsM<qGKS@Z=!wg1H_=C$4aPti%hsJ|l3yT2- zP(2NbZzUzGP+0Yhatd<=*dkC_mI`aYBdsxjC4JCvZ7O8n2q<CIL)Pz>gY7~I8KMHF z2xcsnB%TRP;ut9$RE(zDdxJx&K2y^Ql=DJ#GEvidHrPdQ-y_E>_$(xFB?(%63-SfT z6V5obsHuUww2&3Z_K<USG_64GSJ(n(6|i1V0AMC0Y`Q^3MV^k4Cd3rz5LXDPhGdq2 z>L0K}phg6Pjerz$d7u;IK*d@~O^qU~kqB$y<bhi@&~f7ESfm48!CjA3(8_O6Sq5Iv z4BPAv+G1T4Yn`f*s8gf^T9vF(4?XfYQBx-q*5HEAbAgZZ$<#!?V#E=g$e>{aOOhp4 zQLq$=)I@Uydj%AvpfriK%!Zvs0a|~FWnmmrJ)sGzf<b+QB26n$WenaelxlAPt%~z( zp{wMIKmvK1u*w<K(Ll*m{$NMJlT~RwWFade5oLiDfLsmrB=p=6@IrbcO(g%hfK|ex z3KkZqMG3s23pqIj++iuQ$pc?W0p3YokGMXf2--?QzCOYaY6sLU5K~YyiYHhJP6wkZ z4gf0#_mv<Ht_O`#z|$7E1(#=wutpa=P6fT~LI>ei*nMEgZuLP<8p!z-bgl?$l@J7V z1}y&3RfBR@DmZr`*JQq63(69U6z~^t;PTW^2W`H^4QwY;IDsv#hn5MTGzDHtWt&-o z+Q7rr_9}#%2XYaP<P9Fw#@D{9hcxh@%{z=%q!ZW@cya|h8R}xx2A&}(o>5Y|2T@w< z(OQ(D;4p?JH)QKFKs!88EU3b50Z1|SI1ESClv;0#7(0axmn)>&r&?u}=%8B<+F^qh zsbOH};wU4dA$xw1yZp8V8c5yH63uGRvIp>44X|<*JX8eB5IU)#wsWnfjvw;cC&X@1 z&;c@zpcT@{+a4mIUc~RJJX^5a>){nBv_#9ZD$~eA9BPNyq*JVs3JL(w+4P9gDiUfJ zG{QiqUDVV>$Lgel$?!a+;>sPX(t4QM{7fXZQQ%+&rR!ACAx0>@V`z^VbcQj~tc4e< z>7ccz$b%W)n9>kWfQJSH6E)yT9AtGyW-*duN{SJ(pw&{)OH08WYz@e!2*jnXNcvJi z`aq*;dhv+cTtRCuL4%f{n-W37@j0d7YgglQz+1LpJ7S;<jNzAhLc95Pkn09P8X@|i zy)9@YR;T3WrCOE1PB#RtGMv8qoupzt(inCg$W_qj0yz#644?s@BG7^-#G(PvJZeT} zu{CH^6h6RF1RY$;w9QKdovD$jhkSP}hzAZ9&>%!+iB770KKK^c`ow|)@RhTfR;jj` z;D!U}c)dK^Jg_uW7Fzu%K=eQbZA(A{7_h}snIOl5k_9|q;G-#^hBMk&47fH)wJou> zL-H^3a0)c^KucV~8?qo5*Md&)utnMjrZYY9iKGa44#CPh5wxJA*ecpF5qwW>v13s> zsEH3*JO>&E1%)YcazM5kw9!n%F%c<^<byl}RRTI&2a+t{o&w)325~Vcp%%x-Bk2X* z$q8CC3TXipfzBl@(X>yq%0V=W5&c|HH#Zf$Y8li;g7(Xi3@Zi={lW_t(C|fxrhS1` zT9GESTUxJUjNJIhK~b+zP^6Io5z#S3GPM*U1{*m>Qssg?;g<|nhEz4en^WM9U7n^+ zK~X*20^~v^4XhKEd7;iOwJJ-4IUCj01=y4)TczVro&r`58EU96fu1H@Vg){u5Oj8) znwnyfJ-A101)DvCmE6!AsQ^7!4>bOtshtPz=$C<40O#3&juwKhEbs@NteXcq`qD}f zH01{A#eoH2`LjMx0UE;4(1d!n%*qKKN2s1HLvlSdi9y<2C7`XQAnmD|pq1^=&KmfP zuISWQ(6SuxQT=&3;3EY<$Kl)NmDcCv*xKfSbb?k=>wph(O$9Y?VGhhwNQYX8njmwn z{B<%BLuk-EXJZTtA$WQ;(bUP)$<!%BURIV1HxfLD1xw_WB$}CyY-T0cOtdruOX@Dg zpd)8N9T()(o>UCJv<?!AppYxkwD-)jD$3MEIg>jcY%)?h#yQFg?mg;2O$x}f$^@B& z+M5QK#t0khOEm3+@~jd;3XyVHIanF|`~uiOrUH250{HlASi=I6>;g4PKu6#}+Hl~K zI2Cf67c4qbK|3$NEz#6e`x5X1C@aue<Mo=*m_x*OHr%_QA{iDpNme<TFvE~LP~cJ) zw66#r;V1=)GuSY2&j8UPgOAvyYSv@yv4w<<LJ8<%pAt<(lLc&su5Jl@a9SZ1y6FH^ zHiOFV(%jU%5|p_X6|n6nF_#CbK0!O4O4QWyN^?L1HJ|{2gq&5X4tV29b_u9WlnEn| zkL(Bm8wtq^d7#<}tG9^u75vaNUELBp(7i;UEzOXP>}cN7)G4vCHG~H@@(B~cU^juh znQ9C1A2<mV*@8Wj1oH-xe_%0LRFAw|(l!{pi5I>T6=^ig5w8{T_^d#&!4b^{r1ep* za4X=0q@ZIkz}0=8Z2@TK3(VOCwkfumC7`9eI%T%72{+JcAw(($^(&x7szRkLXy>Va z8t6(SO`RmrG3A<8Wni`7?WGFviNZYF65U+T)o!|#I+?bqy0EiN72@r~k~K1QGIWbH zt&pZ0;0;<NjW9>%f>$!v)a2QLE+5IWF{r7DS5qspvqicwytrNil9Wnp^9wY<{dka( zu*?mrQmoT$!7c~65vha#Nx}S=4hoD4HMIhW&orRHQ--9xR70~m9lQ)eO|3jlBVALc z(iXHeq(0X+#TKL=92%glX9}S0)6h%^U5s63m7@W29+G)!DDDPLrhx9616@3Vs1tNj z!0lR{TwB;~Hi&sJ-(_m#YJw+f;$b3Cucm716lvtb$BQ7k)YLTK(waJDwV=YOKnJw* z1av7#F4#Xwpi?g6K|}>;{W|F2PFPyPaWh>#%GGqxO^G!%20GvsQfg`%Nw$iLpyf`9 zDVcfcI`Otjxrr6wiJ2uznRyC%IvKX{pz(Il7Dhd&geFLLs-{(jPKB*fNl{{EPG(*@ zShYRKB$$X*g{DrLUUGe6UUF)VZK+P0URq9RafWTO4$_tre{eMbjSO&RRzYrHWr1@H zxM0Lm3PJC=QM3iEkHidyRPgZz^(Z&=fx<M;7N!;&#i+{`QteTS-6BmZ(3V1-eA_&| z<iz9*@HXmvJ<x^EnVPU@g<Q&*37L5WU2ldc;OcddE`)%XU<=uHkg1cX3A!gYu@;u0 zpf-To^cq>kdd?v0YHCXJP(~76z(Gbt%tIm`wmu%s&%~eGqF91BvjDm%5_WtGvXl;J z{R&hbc8Ci|zCJMr(nSO-fS=`pbd(E76{aG{fiBR#l_IPN1Xmd-_eT1Gg9Dm^LW(tv zP<By!7K7GMKu%)BmV&@Z1SN$)O@dF+q=E)UK?i`K4|oRPPn$54>r=}WP_KuC4Z?v& zVIli3Q^ET$vF>XJFEY%u1)l<B0NUmQbzhO18tBHmBBZr1pxX@*g`5xAc{+K}{Ru^& zafeJI%M3`$f!YKsCyH#9a#F#C1R}3P1+0p6GI13J^`O$hDpOMjTKiQa^gzoKt5h9$ znURS+AQXfgwcwTxav#kX>_J#_SRt)Iqa3tlA0_(TiZxh3rN{J*LQcZaoB$o&DnS(E z(FX7daPYcK`x2|@5~P{HLS%P<@3~DuE~K1L9g>P`WUfB5L<g!HrN!)lVSHLi4T=q+ zMA`te0IVOyj;dmfl6ugt4QQl7I#i(389}XD(8Y(~(KuKk0oo^re60j%xngQf4d|3e z$PQUsq#-PDYaLcogA4|*R7JaWC^ZMv6G0?T@Yo?t6ZAeKut5kVkx1d9XaLzIsR%j@ ztfZy}ssntFk*#egXhsS;5#)}f3wEIrSd(6TUVchyNM!+Nn-h39E5fQMuqKS&h$5ml zqNWDv^wiW~TULZ9THs@`CE)D~$*DCp;LC+;YMkpqSER%C0zhjH`1BOGJqzp7fUZnM z>dqk4g7yi5n&jYBsxV<tF9+7i0ncH9D>((w9xu(zH27X3@RS)$k0G?mLB7k%3pJHN zE}BDX5qX2<L5=V{Y)L%N9<+T1?2jVw9T}hm1lo-YO>#w`<I6Kk>>=iYx*vI(R*H&9 zP4GZiEPyVnL%PokY-Xx0II^McR!FtA4TJ3A4lltLCwkC5n@EQ<)Wa7%gZE&8mP~=# zn21zR0^&l`BzXNZc=<DI@tB&L2WZ0sLOJ+yFVIpdl<OLxdp9wi8v(vP9dzR~xR>ey zaeW|C(#<1ae~B%m%ZP9SD3ifTKx{59vC~B?m#<eVv9a|-vJbrY7~K27SPKrGH3#Qo z4a8+%poQSD5(0FFJ5t&J=SOJJA@m}&f&#G~v;+^~_C(NCGw_i+@QUbE@MTh<^)1ez zJ!DAc7lRdp(jGK5;Yorz(7WxxW+0ux4Z1!UDTEaYKpZu-5=C3&6Y)zyqM%rH1RZ1m ztHo2x6*7}G5<x3HQ^9jn;EUf7o=FDlg1HSmC1Hyc(rF-R_>v(|8EK0w4R#4M^f03l zy|jx$G8kNrfm{p8GBq`opzCuKZM|UwD)8hOoD4c>2UK`Ktha?7OsxnR0?dQ&aZA-f z*((Y<h8<-;Da4mpiagK-w8$Gk^VHN}3nKG0ZEdaNkq$!20EGzD%L?Fx58B*etLq1v zyh2T;paCGzQ7cmQH8qOh3R+DKoZi&bz`nJ$%|oh<z$-kV2E(>gAPQyluq;B-nTzZs zP>q*~6wsA9psnUmb7A!g^a8$oBtw#r4MBBfB9b!Dv<awTqM-<jD9F-oa1{tGq!mCO z*R(Gw0S$eD4xz0Fcb{F7)znI&U6SFq$A@cxxf;;97g!|%i6#y3xR`wyXr*Los=d2a zU=HfoUj^8~;5j##z2Lgmz65fJhz9h47EN2*dRv#0ni^2Z=(@n?*EC9O3?K&@Yk8JH zo9p1r47zgy=@jO2usxuv34A^eXcL-ksw%7=0+r{WOB(D`b@QxJt&sF(gY|(uQ=g|$ zVxLz8Ivb`$Q^!EZr$iH3r88J1sAB|OH;0IJn9snQ5Wpz}CK3P^0+)o4aSE)>H^@bv z^{M`8usc2d(=;@#N~}vjcjKgL+JklsTcv__X2Y5X@F7501S`OTRU4$OL=U#z$}<&o z-X^$?%d-uKZ{&ehba^#35l}(UP^y2P2J9etBTbz=dm}3gO{*%Xf)Y*i`#n^^VFC`l zJO%JkzD^(!q>?oR#D}G8q~O){E79=-1u&@L1xgG^TaCd-=fm_sijxw1CGeS9$PHsh zaG?zeR>+B#@Ci|frd0bpEAKoF(1DhSqSO_t3+m`{=sb>&v1Ywa3i6#2{x}utWFV`{ zLRAN`8k9P7LAQBBr<73d>2txVrQW{8suHIjKU6&>YHHwX#-ZjTg}5h%Lhw!Fm<j`s zqXs&Z3!Vc3UpZa~l0`Ds2gFB@l;~J1uwwLB4+6UZRG)%!Bw`UpCUj>6Vtq68sH{Az zBBc92e8JjbEe}M658ay^j~x8qE9DUNJSh0V4GXB+3S_llKf(L}E(`5lK({-CNAfk1 zhEl=)!Bhxd%mKdZ6Oo=gpl$_uG!L{=5}L5!E4_5U@dRtwfL77#WNKD}56gz#a1ZKK zYU<P@osu0&fvH70Fmpj`^pOm$f*J~SVK|5jo!HUT)I<t@unc5W0~DT!^98DFp#@2q z2Kej)#OwmRzy@_~;rS2}2%0+JOa73TPk@pJ)EOYhg0>oH)+2Y$!$6J$O{5`i*9Kb+ zU0Da)Yy<9)KrY!d)F}Z?<boI0A#GU)H<n63lNQih?TcbHW3BVSW6PlHm~1maV{f3t zqUuvYS9aRxL&u{ut@7dZ4I;WD;O>Gt9~waRC04L2YLGHbBvduh>5E0!IyXi3MOK-h z`@f;CMHmJ;*ASL=6x^Z4LCQSn%o1qR3!)bY>I8yXVUUp50Zkr)&4jLa%Lm<PkGknF z&o<M(2z0tpy+XcKbgUJ)vI1Y1nXhRN--m5g4Z9UeBh$XrDg`{b3Ue4NQA2|y6@02X z=*sU}l%d5au=7!}wXJPQO-&hO><cOXd4W|TB@#p^L+=JE2W=rh3Tbbs4x&Q3L<gIB z^`Nu+kc<S+XTu5sn1<+BD<6##9dJp4q_zZf3o#D0;KBq+ZE7iai7jFu9Au58TD=<R zjyE01as>Fo-8|3%cAz0z@KQ=pFW5j+2Xw)DCTMFTbif_7>l$=ZhJC7)fhOoCKyYIP zyb1!5bo0>d1-FzyV~^m>U|$cl9_c7UXyZ($95Rf9yu_dgZW?G@Lro37Z5Q4$!I<UD z1LaTXxrw0d*ock3p#EEaeVRfl>^Q~D5=|?(iHL?4_zI;GNJa-`S;(>>(8A@+5_^pj zTLYa`TSHANjS|pNjNr2xK`KCNR6&{yG_9as*3>DnONHekP<sh9p;=!9YGCEn)Rd@# z?txS_geb_g1>IE%YcGMeTxw@RZmx9A(@-)@)m75g(8vT`=BNjm1O;su&;$*SL9+w& z`b$JaWFjY)r~=5zgL)<P`9AsOsYT9-pi`ES(n~&)a*YzuA@8807u66=Joi+cuslt8 zi!U8~&^p4pM0iX=HS45;4pU8qOeY|&imJDUuP-UGg0zG4K<(fnh{8<xWttj!y6{^x zH0{7U<@F$E#^>o|YT6<X-W4OcT>)l&iJF=-qDcw&N4-XQs!l{6%F^u|9QysR=+|&b z)lrIxQBhMuF`^WU_rdE7p!G?rJ$Ulpz#6pXP%*WprpON7c~yYy;mfquNYyRU)Hi~q zg1meUH_&B|I(eGfCE9uUpo>XC3$l@7Etyzrp{XQQtzNCjCe<EnT&gZ;G8TCOdK$^b zflbTH2e};VOk~pv;HE)s&#S4)s|QyUsrIS123D!yd2;PkO`XVOX!?Y8C<4G83eZwU z10?UJpqofwjYn!G#8^;1fmS1+r97Z%R!~a{Y4}_x6`bUw4G_1dz*ZC47~7{>ftI9! zPchOc0c|-4ZT3cTR~fpyaBqC72aODY4qpH*ItCY28t@F^Q(~0|y7W^MRLX$+C!l4p z8nE6Nyo5@vsR7j#;5kFZ@&eGPx0)L0EDG>>znW@lp&BKcpi39P-EJKN9Z+%y59O9< zfbV}sU67rQ?s`}jf^GZ*ZJ|QSs<40ool*<7Q3uwW%hSozhBcZ{vuG~Fjv~!^@K{}@ zZJu69YHmSJVo7RnYDr0EUV5=L<S1NF_<)bXg;Y^6x1`#-7HCx0>ZIyq>Llkw3JcI7 z-o-F+z0BN#{GyU#olH0@8GJWDA><rTTOaU^l=V8vwg#XZ5A`zhN>Ymo@<C3hsfkL} zDX;~d1EHX8tDvr=lVY0#x&>G-wKzGkAQdF9sRy}*OIxW%NjnXhqmgE7Ya5(u?~!U1 z1-g(dzqBYh6|77nRWB8^CNr@FZbUs)QbkEeDP2iZC&N}rUtd`PVs>bdkFAonh7z0y znxz8G<-!H5lydS@5{oksp$E3DI9f?tL0h{#Pg^NgNmE-XCQr#4UgT+{AX?C=^`I4X zI+>u;a^Y>HqM90wBHK(&odRuJSX3tK<RA)ruT&i;P4ErV`JgGd0&QC*bp`F1y!iN3 z4JGY7Z6!?*PhCk9e5gPoT#a>1o|1O4wvshSX#qHB>y<QhKqp7R&Ct+@k1tWMRnSn< zF49)g)Ksvw1^2}i>=o426|5BE<4fSCC)?)0)0a+aE!e?I>L6Rd#cY{vs$N-QQD$ON zPO5cTO^rr@tx|brNrr+(eo~gELN&-W^#!2NsRf+{qf=n3k!W84uhJ^PWsX$=!rw`$ zI!Y>rN(g~?uz<A^=p1VJ;Gu?+wnkY^4QQYk6!uVyG|E7u2_Qj*ni{YR6l@i$Ya=v4 z&ehab0u?~<@g+J6@$m%;whHR%O4=IvptEe^<5LxE72=^u4|3>@Mj}KeOTkvbv8X7q z5^+L@9_Sn#>zKUh*DlJK)aNN#fkInJQ@cQ030myN#}~xp)k1DDO}F(bKwQuOPXYPK z8aX-{a2-n81@J3mN_0v!Yr%td>Ci-PTc8tItdXt>9am0=)mQ0AqbrrjRVuhB(<?!4 zc_11NN!V0|78JnRC<vADkTN6>Jm!ehMgd*Z4QZWe!f$s)B!1}7RA!n6==yC$DG3`q zgH*mnwve(i6GS5h4xBSJigbK6K)nndH!!6QxyA;3>^Z_|6;P+u<8d3@LU@An0Vg<6 zM~Voi!9p4ABm=N(O2CK8BD)BwcT)~^5=kzCRJ-K32oy*qCH0`X2yrevB7m~Nu7R|5 z^K3&vxAX<WMlDmJ$75&ODix;|Bo-x><QKsUKA3=2rga`@@;)!UBm*J|YF<Gb!<trk zIz_fh`MLF(#l@gwA2ah5Qtd%?lU{x<L`c)Bs1{n6fXfQRC0QWff+|di;}Ss$phVL; zAASP|xV>&?n-7mau>NA(Jl#OhVLh2?8pZI{j`a#fVA&koL{R;ksAHg0j0g@ZSm6p1 z1zDR3?i0Zb&e1Lc2_~wkX%uVQ!tU7BE!Na2FVM);1V<#ygksRemx)Em8DI%eSyHN# zY?}kQ-7ZrvJtsdYF{h?RBNJ4QWkNHqPH>I}><-CH(23&dpsSKH5!XiA8d#UwX6k`2 znM~HS2A>F;W?Kq5fz3L{HV4`Q2UVcpK2Nb#nr1EJa1HRGy7l0_68>o#DVZ9XnmWar zinh=LZwf#jN-Qq%1YHy8p9Z?ayZ}70r-5v20pbMn9BrgoRcGWv0ve5=wox`(3%wq6 zHIGI`s!k-R$%9CKD&XXY)YXTX0b7cx11Ui4t3WNMBJgZQ1!&5mL=SSXA855U@^-Wk zu!BJ14qFKW-b+^xO^`Zype>m25vmf~RC~~NA!r*EG#Ut+?}FDLNXy<pCspEDml_Sa zQrrN1)Q(|nY%Qn}r-QcMrXIG_8Z?3h9;AYuNCMhUT?9UPr&t5DqZ+)s0kni1T1kLJ z4I$eqK+}!Lqh!Hgze3ez7HNRjf25(D1?UJ>GTr#8w^+SG3DTYyS8&k7YZ_3)6+9jT zUWb8l3b=wl)D-aKB+|T97P5Fy5w=sSKttg$chw`c%w3SRdSG?CAF2aGL8A~wpc5ld zz32&621-JpSTC|I1RvCqX<G(TTBK<W@|Ys%poq+RkPK+UKQuAa)F{G^4+5?E&$9)M z1AvAKzze~kCV-8D&VJ?FDr!JiEGdC^T!9L_JT*1NJUuWMe32<=q#RZ!lxk!mns|uS zQmN5-po3@fVr`2+xBMYr#uc3xi@t&|6}%1<v3&+q7UkE}Ku0k0Y)c@Uq~hb@J7i$# zTLZL}C=t958?^bT9yHGf*-Qf$)YOD*Fa}=(VpRlM2wrRjKY0h77(u&vN<d?I2q)O4 z>cBReDip!ik%Moj1{n`(S*L1fA|3OpsR_Clr5<_nSpcZB2Ti+vd3y1nnV^hJ(BWBN zUPUrw6B(kY@BwK+aD$K&5Nx?Sa;`(n3WR}DLWyQAa{BW{)($#bPt)E}1AMxVrd1SZ znj2x08?sV(Nr5mPl)yk|03fC}kaAfe$kh;UM%N=P`*K2vBOiS2fe@}nG9?rtjC`I? z6+#$!txY&MM}Vs(4QR+{+8EZ<)R)-#!6po$3)S*$eLz({Xj}_4<7o{UIM&oD(Y5s{ z0S~W(GF7InpGFaAeW12>o=u6hW-4fx8^lw{r^kdL2UIR-EE-(627(Ts2IY!+@a@<^ znHum5vXKge2(V_5ZK<}}+PTTFECg<&Y9q~VM}ieXZ3j*0LvyozDX4((FV#r`Eiy+c zrQD&xQB)6EU4fwoJUM2hiJ>tH*`{EP5*`0iBnNxJjD?sAl7||Eq{tiDh<Xg0{Y!NU z(OesdYAl8ps2v#kN<iy}U}Mn8x?CU*w=zJQ;sM=NjkI77T{+Ya&;&TF7EQJH%d>LN z(@RNBODxSPDc11I)ALWtN=+`&0Nw8Ho~KuknVhZRm#0&a2Q4l0l5JD<z?~wUA`sK1 zKCvWKClkbUEh@?{(#Z!g-JshTbrL~5-^7v(onjCRVz^EYh#i!g?pjfxQwm}SmlT1P zk|%@Mp!IeTqtZZE5F`3tIt9tL`N>H9lw{lD<a#85jAYx?Xr=i0<ou#k-K^sH;*7*1 z&~8knSe>$D+k#}hl6<I5>B+V!$)F|K{^fZAMfnA(MJ1IwxuC&{%4GDSy2MsLI!-TE zTSXtzR?A3MQ_D!!%TBE<R#VHUhp_ZKUE>3S{6qX}YLt{<MYTeSy;3mvj82W>qGZi@ zLp>$!5-TO8S`AH|B(MwM4vJ5<g{^!k2HmZeYzrzeb;^@LO-iLWC2g2&dNQJe3>qC} zgA9*OPm&eWsn^h~QAo=#Qqa@3*RZ#ZiHV8T)K3TXs`a$&LA_-aB~6{|WLuv+`&2zA z@YU>~-QUijV28L<M+L+V&CDyYfJAagvTb&<eRi^5Vopwea%f(0Vj6hIcyO|9ghp|) zUV3Ut0PM(3|N1l?kmDUe@uHVplnP23u3&!_K*QLx*fp;-H?;^fXrSYtY@3!09w|#s z)yYb>bxyW-PS(pTcFxaBPAmy7C`wIC0VxEz(FHDDk_zs#fCT+ug3w^BPY+21ZBo_o zM2SSuacZD4sKiz!U!yo#M=2#WEi*3_7Vk*W1sd~GQqrle)zm3LK6On)QzrlvFv&To ziA5oqxvBZ3pca*1o*uG@TD@8-ihzz!vTaeanp#n^US57V_$E0$m&B4(5DzA*69h82 zIJE@DSOgz*Q6qw<<C|=on5>tanwg{H24<$^<mVUZ6oP|%`UfR3v3e(1lw}qp;@AUZ zOJ=cKW?p7Vs!k|4<UwN@I#tk!1SMy1?1h7k%}uP(34^dQ^K>FW{s6gJClX{%L1IyH zs%Kt_jyqUIQDR<7ey&aw*wCVS$gPq(Udf=~PSsIzNi0bW%S<g-($w*WiTNfLC~4{h z!ngrNpq^tY=uqJ_sIK7D5+zNYR2VlrH8C5aDGw|JibhBZ0}XMd*`}tcse!hvr>52G z<fqwI*Xksu*_I?~cqMD<6oXmb$(lMjU{+wVrcNoCRg$KulMH61rfKS=r9qP*{191C zA}dI<O-r*+OM`4!_fG?frNG3X2@jm;GSa{$2YCAw=!i>b8K_XAp;--^c1CV#fCfpx zckMvCq}8>cMxbLdl&jzfy7<@{=}uSZJvMou-5#K$P$6{`vI5YpsP(nA8k*LaBfhrP zkl|G;l~f(rIH^@gst(e~tW|KT4s1xzN=ZovI>>8P9dDIaTdR|YC~9qs5Nu>|z2yAq z=ROK>D%j?MPPu`V44}(tk#uP4WKKW$Q9w+=Hd7}aVGxF@c(AH^+jyNkBws?Zm~CMy zswm`4d|Pic;q=rJ+dwq2jKpHwk~~!H#i=E>sd+kiNS=gRR9}Q947DjAO&DZTBAOV; zreZWPkWD#xI;EI4C8LQ#EULFnLlXztRDdQ1vMB{k3}jPAo=z^ZO^GQfwkQGxpe<IF zXsSS_CFSYFgLKwIPgI5mhYC~}CJJ$+Z3vn$$c@2hVjxo;(ZoP*%z_-TRF-BNnyHae zq^Xk*W@QwCR_Ex{=cd_KWol^ZRDx+m15KTzG~1#ydw6C7ts956l8Vy6*H(dqbV_Qi z{7ZG>(`-GHu`BjW)+o_Yf@NYQo$BQLytK^pQgHobrD&j&npc`z52>!K6b*I2oggbm z&?VS9<wcn#;Mz&ipjH!XQAL_<UZzfYnr%RGO%1|v@ZLCDbphH?t&^Q*Tau=xW~lG3 z0V=*q(lnxVbPZxPHNiLAx|G<bl|m2B0-Y2IZ6HHcmT1;m`IPE7qXh=szM?cx^$fBG zq)a8vwh%cO;L2cKo#<H5EPFAi$*EJIQ3$3%zJL^Hh^~<<>;x*%M4zT+tyN*EP6&qK zu(6R;(9v2Y)|%-WsX8j)1=2btw&05ZV4Z<funECwwv|QJ8eYk2YQbsXu<%L-Q;zkZ zA$UklreUb5si|n2lUh^bjZo;Ftf^@0UQ$yNn5?Fz6rB%l!74!OlvpK2(6;ZuWWA!) z;{2SlR1Hndni^1;L#-)E(^RxgO|7W`RUuHZRFGIc__D3ww0dx{4%!C_iULqW0=iUR zCl7QnoOg*m%IX_X{Q%m|Py#wO#7apCRHzqeLhr>Yg5G41m<GFFDkl|k&VMmn#2tF& zc@9*hJ`dAR5Iv<(6?qD&P*alOBKfJXIw!RjGJ)rqW}A_0pPFOkRI1~eX6u!&k(8#X z<DX_5gpyp5x)6SOpuAKMZJB_UxM<euWP!EDr)lcAKq@@ckO6PN1SK1oFf7f2H`v?S z+LnTLnM2AF(3vuzF$mE0L!h0Dh!laCH7U`Y{#MtAy*?Vg<H{dC3<+u*fr>BCCHFdr zNr<de#P|&4g0xJ{YUnxFMfRES838Bo{F0KU6=;D7Xki^_lFJX2iIJ>_21h;Urcv+~ zB>Q4emlSf!sZK;OsE7g$4%TYwcw*5CN-lY}6^Tf9b3_ztfTyG(YiDqo2|CmXa_n7n zY^|nFTmV%K2Q?I+uJ!>LJpG}rkFY6d)U+ZK-g|*fE~}}5c4~sga-t1l?Xy8U&_Tyj zY3c;QwZ?#tMAXT%MK{9M7UcOnO?%J;vsIp60cg`S^s<DK3^g^-GC?Gh^FZE)pGT&t z;|sT;9;Xe6fnCI$J>*!cR5djsYy=(O0}Tr|kaZf)iJCfvX|~8$3zz8B!-wWz<t5_$ zIndeophSU~$^xI~SB89)6?`?N0{B{sJWYG;604G0&_s7piH2XMrlw9&t)`9>*acYf zk7P!sMghnYLs+7#)zt9-sRqZL4LEpU87KmDnHzY$2k00Ibe-@puGQ2Dg_{5gV3-M5 z7qvrA3&SuE9D=o)I#nRUF!K&t)`1)>rl}K-s#+EiLP?n#pwq)5ia|q+I$<DnU{9Li z@gzbIviBn3dc9Hf;`1JoNidH^f{f7!OVreH2eH7835Bi9096BahV~`V(8E4qL5O3+ z5oll-k_kX(YU+T`Fv|m#K2e|~2R6DM*=T$4;i?9p6Bt0_ut+1qI{Ap22~j<#LI*~n z&QR1ywKJ@#0gZm^Asx649bW_8K!m&jCmwv8Nm!nyy+)BO?3(F39ql}AjZ}L>E70k^ zMJUFAi(kk%GyKG;e8|iOXoxuzJjM*#3#Cz{GyU%qNjcEv;m|4pw5<~6Q_%g1V6#98 zwxkwx+9$}j;B%z%L80T7X6uxRlD0sz1BhF;Kp9HABswqFssxlv@<69EY3g{V*+yk* zq$O(V1cF%wiS?Q~B?SbH0vQAuLr>L&83;Nts8&-awZIm6L>jb$2D%a#Gz|pW)(p$N zN{I4ECm(vIQeJ(s2F%Z(LI)a43T2>O0x*rBc1C`*wsujhZKgfwG&;~>5mqW7e}UFd z*J|qIgQ`ue-hlcZbOESN5f&Bon$;!IpfyH@u`mzTBC1PRqcA!;Rwo)X?WL26;a%_; zG_(+e_Eq5n&#)>3=B+$CL)gh&pcBPYqYdk0L3KfNtW}<!5m*XTw}3bKL-y~3ORZ>- zV5}zO>?KH5tEm$m3rYw11-3rO?G>1d75wtxV=Ee(wK|Cy?gpiovc&o#g(BN@@N78f z3=7Z<H)Jk4(>78gPp2YZBe6hJ)4Hg}wgSF634F{%5oql#=)7S~onjnjLyWG;#b<hb zF*f5<L8rum4ut}FF$cqVxF-`qX#jNKX04`9DTXqT521MrtPp&iIOyyRQ2AmFIUk}v zBh|JP(%(uhu&qc#$x@otskVloD@`HGUe(lc3p7Acp=n<RrgZ{9XGUpiYFd?nDx*{# zLru64cq$%rR1ZWiJOv<S+9J*Bw0h{hbeW*rc=JKGW5A~Cbn+k<cjQ}Zg6{0FO^wcs zg)ZFB$Sl?YiNTvDppC_#A`P^b9u#D07-0d4)I8frjZ{#irh!8}wWJhu3_LhKD@s5+ zilO<bfRO$InEs+X1+eyVWbG*hXsrcAaST@M3|0(2Y{&xKYtqRmu+7icNGj6QDFd?* zSs&Wq1XY?PcDA4<X?lTeNRh_$k2*fW^+oBBBb{nBG&Su*imVX&;AsT9hY(RTDkUf8 z<fNv8E_zc$bl%{iwK};4wt1j|SICfWWr3|*o_&CZTb`y>aFI?@fvr<=O^s8jPJDrF zeIZDuFi+FUu}G()z}5-Gb;{GU$|}++FR=9haXs=htvri#vI}fOLEO+hO{;(+9p?hu zDiF6SPt(e$NJj<i>%t;Uoe(e!;SXg0+kpKaTwv<~O+}!y0m1zc(2TwlXv=R+O&F-L z11*RY%JMT)K-<=!2NdX(Xu>DFK*u{Oq-wr+mYYT=+e{PJ`_leeIB<cP2;Gan?C zs#)y|I_%I1G|jA2QV&w(ilGR!%nwx|IAQAe<5LNqgw`p6sLTSVpwuEw9T&8u2#?ni zy@JyE;tY+<6407Vonj5w0#FJD9aE~~hffnkPg*|c<PTqj9?t^XKxnW+{R%2SKzB;m z=GE#rmTLHyYHI2Ppr`_$jRH~z3q{a43#jP>txP}*K|puxMCZlU>Xhee>iB>irc$J- z6NDu!G^?REi-QU%9bYUeK$|~cYIKS~8;W$?z(IwYU?ANr$OtNG)uaF^>xw|vI;Ps9 zG|3T}6nrlv=(=wm$m&d3HD+h1310aK-UkWV9tFBP8nUD^&$bA3=}cNlO#$fa4V{8~ zO+-@5gfFJI&IH}_Q<e$ZvKXC-Snr%ytEp3n#Us$-8|nwpy@`>aA|G6xI~Ca0=j3Y? z=4k486xinEYdGa->Vy{9MqtJw)ELlZ*(fUkbxO1~^6WD~16WpIGpq1v2P;<6g{+E9 z1+6KpM{H-P)zk?mtQmA!Am|=JkY*IUVFk8fnHow+u2a&~i6CTPy}eRAl5<c@j3lJl zUJ2@&D9|eIT1_2yqIG~g4_YQ!58caAtEm$O^8iR3EUcud;{{IcsA&^4{RE8<P_+f= zQ^0S0h01_Wvam0)0uAkDf`;B|Yc+MeF%k&;Y&?Zh<j!R(sNxO;6^A<D_Ft+_Vu1!I zC+mO~4uK}KG<5<CY`s9Es3j>N8Z?TUnu6Yvg_kvOA0W0gseqC@XhFRu$Z2_`>IDtN zfR16()G11_P0iOR)6~fXGtxA5^1+NGO`XIP+su3oO`T#e4RT{nifu_gqKyK!A2!rm zqMcd`x>u|;#kM$KLkTn~rlhHpjH&}vK*2TWr`Cd+ENKu8X`rby(CT75I<z1<QXo2t z>hnwUQa}sI@o3Qny9(a^(MwD#NiDK<F4oD@ODw9iRRJ@Ki!;;nY=a9xf?&31o~<J? zFFdm(!`2lc0_OYIg9S=#vp{rGYFd6#s%;3!z@*H)6x&3wXl7oDV@{5(H;m(*T4`Gh z;v^>)mw>ByTQ`sv@aiVps6-vmLZ{NaY}+C*Ge5T=F}cJx6T$(_#M<UV*(tX5A*CSY z`FUyiMY+Yc!B8IP)Z`LdM+mPpuf(a+)+-I95IhHL>zD&#mlhRO+6IGd1~G#&(=$qJ z9YOq*)TI2<yyR3{R|pTX8o|~D<Y?I11ees*0$V?@|5H-aQj2VJAhJ1$mA0i|W@cJi zYEdf47(bBRDR911rL8Bb2skhUz+y%D1-6MG|AFo~hPbI1g&UrcnUiXp0}-pwFM#k% zLHxALoE+O^C<_$H#US^m<s_E)CKlM{AaTI1FGUe3D9Nx*hKZD<=Gmrz4a!L@DM`%( ztIt3Y0I4slhX`dB*!n}X=9k+Bf_$HrlV1*TeMyQ=o?co}er`ZwW>K+iI#>sEF0$A* z02CFl++FOMXX^tJNH5ASEpV!|Eddz?nj+3j%&|=Z=>*RX7N>%jo7wuL)q`&aE=etd z3OQBU27!VRSs6HReIcS{sYNBWo)A+(Y^O@w04Og%I~5d4sbDU6Qa?4-HVc%5vQsOa zDsA&X5};XW+d_~NK`hU_dRr$DCpWRcHUks@xrqhdsg=dH9#GM+M9^vBwxJMiNpePN zv8@ZpOz^_e)MD72zpWowFf}(nvntg#3v5(sQF^Lv5XjbC5EJ4J2)85yR79od<kjot zrh+*BX|{QwaL&!F$jr0#1R0i>nx0saYU=_rE3YKOu_)a(2qd1Ln^|J(1~Lc4a;mhg z0y!=poK8V%^NUhai<~NL%fOtn)FRs=kjeRFsYQ-O>BY9mV6A1TMXqJ3MfH`onK0Sl z{M=OAd=Rf7v8V(TV`(6zP!1$96u?D5!|}F7U~Xn|wrwGd<y2`K4ssA|g@&y!$k8yK zf10fum=D@W=9Z=dzQiOa2UNZ|gOW!<DVXC_X{&<71qWRST%g3Z5R@8<67$kiZ4*Hb z1~VZpEC%ya6N}PqQ$TJiN(HSyvaJM#Mp0^Rep#w*Fvz5$)Z!9b&w7Y(87KkTI)cQD z6LSl4QiDO!7!Q&J%_l~HJXD-o0(M6vn3GYOmX?!hTLD&*lL;zoz`FB`K!sH%$Y#*R zcd03%d6|W_J}@~5AC$_$A_et1nI*Pmpb#krFHf-z02x@4n3-ei3sM2P``p$I#)9~; z5QPgVKAd1;5UvM=TVU%2W@HrQmz3nB+WLSE&nPOj^#+UQL*~M4<3V03$%kZcCy?8r z9M3#k4;Z&3!!``$(31RsoW#sL$kHoY6|mN##Jplq32y5S;+E!t>ZKr%Wu<wU`FXZZ zpy&cKohofT;GFQxlKKqWP$<99HWcKj(!9(<P@;yh!C@W_;ep~J3SvW5W`S)OM6@ci z0IVni%q>U(<r*)rDli)?=MCb6XIqPH0}*V``aIhbkf%T!jq*!NY^y+yDbFuTDYjJs zix(vp*!qHeQjuR|8xE4K$Oq-FFenpjdIX3Aa#19d0S%l;kc+A^3m{x@8SD-f0_$@J zmw%~wB}JL3#kSyphjL&6pIT9pnwJ8p$sug8M%Mxz&r*#%9nhw4J<tq%4k*=wO8VS_ z5?e1&lqDzTrsjY)3fqQ4xCNOdi8-KToeA<7sBvRkngS|+lXDVt3v5%tqM)l6Z3{vE zO$IT+PWC|Ig6$853xT;#U@o*056QQ!0`XH)lS+$<Z1X|pLMz>nd|OvAH?u4=CDk@L z1(g3&^HPezrX+%-QVVUvLAoJpOKgk5V&H9jkoA4GIbe~p)S^n;M3BNXP(#HV6z(7v zc!Pp%8YqxKTu@WR6%^edj!$B7iESWEC5Y#lSD%tvVOs!G4iW=t@ds-GwdQQoKmnVU zU*wvYoMD>=wh+RB<i!H0h-aQ{7Fbh$k!K!6$_2{zFVC~}L$D!|o*;qr)RKDJATX=M zHUkt(=_RSQWgrG<WrHtBCL<A4sk(ugsfj7JxgfV@rljVTWR_Ig`hx-^GcP%(G$pmz zHU;Du=pGK+O0dGbAaEg>2T@m+pPg#!12R7obp1kUZfbpANwIA@Or$8W(l!@~1DPbZ ztwa*?$;?i*4Fg+L3~u{@1R&|#HUc8-l%JoInwV!B3FU&<1==P-3;``yvyF$aU2{_F zb5rw5Y~3L$U2_XcDs7{noWjz?99u6W4mgo`Lj^!<Lu~^g9LORx+Y(S9WfsHMirS_^ z_?~$ssp+Xjws{b)Pbz4L*0u=3s|Ph1Dj?4BO)N>yuuX(WfH`0riy;DjiGH>@FlI?+ zS*mR*l$V)fn+9cqYPDn-J2xq{$hH8&gN9HhG7l7T^|tvCA>=YO1tJ7Z@Z}KK1t+F~ zmdJs<k^xZ=oLXX=4V48ic(pBqN`Tjh+NMKzparlg;JC7NhNuqBgREFgv8~UAsDUnr zv#msML8d2xxS(Zyw(+3kl%1NCm;^3Usz3(ifHG7CNCLzHXFdNk+j6h~tS4<74ps@` zx@8s>m)M4Z`6ae0V7k5})iwmg%1x}WjRd9A+{6l}N?Ug@6O@XgU@TA{0L;$Jv-O5D zoGNVtLCoTk(j<rv3t?Qh#GK+(TPGM78UY?KK4jglZG9+AAf%`?)wT-6%Pq|*$t=jJ zv@HPT{k)P4+iZ}R^75VY^U`uMlS^y^K+5v+K~o11R=I6H$P)#LDYm5`k%Gh&*Sr+l zWGFkhB(bQ(HVwjqEOoRk0P%|I!Al)&i@==Jl+xr>+jLN(E&{V5WkoJTpddA|#5M(@ z5WJb)HUq*bF3l;i4Fkng5vVt5n*wrnQE8rMo^yU)Noqw2=xlI3NV~>131nC?s2V5- zvFeNS60=jmQ5pgAK{2Qem<^JFv|hlGYU>a3Kazk`rEM0Pkbj!33qlA~kV3TjVG#uN zpP<6^C8;TJ#r|ow0bp@ZaDm+v33d~R3#lT~K|U@nO)4n@btyAI9xX1-wJk~3$<r$? z&2_4@O$9Mwo6~J`LF!8~b5o0L!@<maXjxGK3a*lT&w6O#P!8ck3x{kd50q+cD<K;F zO2PTr86t(88$+N%kSrJs;eiKnY?Huxi!yU<<6$gNx~PD0g6lzkvn_}4OF^CERNHJ2 zuQU%@13E)^nT4gPo+-8wU><CLt*tvKd`dxFNal(H@l)Yd6^I2%Ly&q3oB?waA#De6 zrwu&*4Vl^~K{}Z#1vEATRsb5w1znL_4I7{Zt>A+$)zc}`tf|oeU4~~19{Vc+twXN{ z4+B^!8iHmN^}<|(f<68HY?Vy(49)dSlypipqLn~n3rad*s@^-bQb|WC8PtJ?(O?%V z=_o-v9tajhA{H^bSfW{-7hMvIa{B>jAQWT?sQay?qXcR|D<NwEO$Q*>h}Ne@mmuw> z%G0cdpXUI(&>3{V31q=j5p0iDT4qj3DtIS=nwnxN=wKuT=mkhtph+Y>aN9`(KDh*% z;YMh&2XR5pa?UT!t1pR<2hCaK=^%@i#K&t|fdtAjQ_G9v;~^8P)u3z(x^FfQv<pWE zbRdpZiM9qvT}ozAe7uc;y%Hpdtdx{M^9n_^$g5$aOSGZVNFD~QLV=DLf?Zw&S!}JL z8C?>qkqX)w0PY%TfXC=S!3yz*l8#btVgWRG!CelFFoukvr)nGO6oHN<@-L~WF}AhM zvqpqHDCik&r#p)Hh}EM98ThhpXeS;K0GUt`t8&l<@5Y*tFaX6kNIk@9p#2%PsN9;G zBArywAS1{F8L5dWN;*oQ8Vlj(dg#;)#L<vM16rW~4KPr6qB$I~QUX542@1gIyjTrG zO~}%24b5nSSeUiYK@f0|W#%AkhFEM4K35~pRtcPH!8R*dK`qzBWAk+RgR&C!7zq&K z3Xs)Ep{<t;9f^bIYZRC3L4pr7NrRGX^gvB#gl`dxYCzrvYtl~zZH3bV1+0c9re09- zj-r2h?;%;~`VusynR%erDX2Mywi*KFN-WE=N-%t`mz#)mLIT=gGic}*w8apVE9zlO z$@QQE1n^M7;=|M;4agyQC7?s_K-%HD!G{_lc@I>)K)2IDC$K@`gc!VykB5YFJt&=m zuCuc<0Nn;}pb7O#9_VN)8v}dL4R4@A0-T{WbU{}Sfls!|(*q?DjS|pRYtXw!G*Ur_ zGJ_B4N(JcztAOfD)wIgf1DT_dsteMS2Mcwjl6+7B0+s`-1?OTUk7!m;-+N3}A*}?t z5J2&INj{{>1rIq`Oeui83^rNA2NcaIMH)!y5UKbE1r{jF71>Vzb6i%dK2=jE-&Q|P z!`=#%m})?IR8vJ?uOzh?bXI~+qHSJuzCA2=Lb9-}Z7Oo9XO$YOQ*4`GQ==aTO1E&m z)}Vd)NL3eTP7%r7AV;Ly)`Q)RydWyaHs3zlFxCpO*R|9(6=i)BXx~0)B}$rYX-y4i zbpz;d5xB`Ekg7G+HW9l2H4nW1HC87Fv?K(w-y&a4EyW(RD8i~fwbnXKO|3{x4NF>2 zR#P)nv`vPtvr<#jD78(qRWyXuOpse(5L<6`GHewUp}v9d;)QC}DYGpGojk6SYg?+O zrkDX*Ppnw1rk18zU!7{3Yo7|9GlJG<;51wbzyBvyCkI}uRT5mcRe*KfR;5k~{Mwl^ zHMLxO_{|zQpk*03npPT>kct+(SgSx&r_4Uzz7nZSwSsf3DmB3w8dR_s<bx_C(3&qL z9i`%o%(M~^onHi|3P3}2N;*oVc@UXco#~CbKEmwD(Iv4uMYhwAotKptD$xWbt^y@1 zC6LWZI+?c9WiQBz3zdMjzrgqKfEo<b=YI2+0^h5Xsip=CXmG<PJ{}U~c@Qsvhnx^C z0oc7R;OpV+^Q@v{LFalRRlw0jv53hjMDc}HALua5T20W|p@ec5=n4-|G#5eKmT6lA zK7U?YNy%CxKP@^lwx$L`+eXL2_j>0g=B8RfRz6!5)q)!U`DxMKnV|Ioxh0x<dG(38 zsj;@v)nJ86kbUJvO5p4by4W!mrLX`uiELd_#EKw|4O=f1QE-sirk0>=14=BhjRK9_ zz+*u#Iio%?GtV{<)L}pp&Cdl5kC%XYFbL5+P$wuARjeQ<F|Wk72vrc~qD)lbl6<dV ze?MEK@&l9_>q}EX!}f^%Mj*k`RNH)1&1v9PH?m$(;idyRL|X$%6m*`pZC)|xG)xUm zYd_FtclSIUjZ8$53@={Y^J+osm_R2L=;Y~uTIZUus-Q?OwE}#QmM!Qm7LY2))i;{8 znh;K^PM(H|rcR!QshK9I7C~C8hrIGoCsQZiT3<_%OF>H^I5j6Vxx`4pM9)Ca7$lHU zQc_TCr9a*Mla>%Omx9*xhgH5xj9k+NRh`AA&-<jM7SE-irO%}ZF9s7et21q*^E8Y# zL76R42fV1pK+)D#BOk|6r_kauRVP!^3Vfbe3EX4(nzf)sts?c%IVcVA`a$sS<g`4{ zvd=WoE(5TWQF(faxhdd7QBrM7^bm?b!r)>q6;?~b-3>Mwbl#t0s$NlQVQFSjYF4pk zb*g=yZK@S#DyYMxucgH`{qJ|JC`PX7kw3I_7`djm|Ijk22ZsQtS^>>d7g;01B2^Q- zx)n5iq5wJ66gHb24~ZdgD+T5R(6wo>S~5?k2ox<kiJ;@ZbV_xSb<%VSbW%WfPo;u) zy_RSw>4WByZ7cQaa}x`6%4{>#)H0%#w3K3NY9MP_O4QVp^prpg<Uxl~6gie?7-)j7 z=m5DYzeuCR7IJ9_)FjY7Qjpbmx`sNHdZ61&JX4%O&BzipwQ@+kToRoa3%Vi|MB9Q0 z@OFs$#N<?sa?r8jpffmA;3v<dKr10#LruM8@U~oy5>3#dZq~^*uw|^)$=bGtAV)!5 zs!?ED5}h2YsR?mfa;io$XwE%Z*VfQFHK#aL0d(HF9@tX_;0OcVwNjr9Iz1F3S`uv( zTT`P1<A63pB^9M6W?LtNZv#Xat81uZq^XmvYip!g3knI)z!x}3A!p=(Pfyo_j<0Gc z>FI+Oz(InnG^rTe``0ki1Ru7gQJ+#%Q>Lk=mZ1s07B~+zT$62KOGQC$um*Vr?D8Vp zJa|YY!%iLoMQMsAX!}!|EiCw~)9eha({v%hq>*Wx5se7qG?2#n%sjBm!BLZGn;Bgc ztEpL?Z=0!8Y@2Ki_CDxjq<l><(^@e{O|48#tt`4IR!vPK#}>rUDYZ@3tX0fcQ_E3P z)5y2Y(J8hq)zrxcHABJ4Ejd-gK&MzI9~8rR;DgM-R)Q;c@b(s@;}t-cNF%B<Sn7t~ zepUfV`iN$h0j!w;J3bM9WGv_^G&MC)9K+Ums;L!0I>?|!PMSI?pt7Srr&1$TrwEqD zqDyr0Vl_394$A;v^a8DT;m$!U;L6tkt=>XX4?3CxmQj(_r-PaUsYnXJXE|inr)gwr z<bqbqKznw%(Iv6gkgbghAhu2tNTZ^GP65cdVAtkpf}%t*QzKocL{m*oF;gQ6WB}qk zA@C^%8cKfo3QF3Ddq6-gK%7GYTIy3>mY7qdkP5nn+8%LDu9BjXrj;)Ix`RB(`Awj* zuo#|vL5EH1fRa8!C{No^2bME6HFcs>b&xNn0&T#no^JTmTf$MHQcbNA6yRx@=?GSI z3ApU3MZHT9w4XW`L{x%^BoGmAJ6+DlQNCWM!Ztb<k_&XoZS`aHvWivotuqkSAgFwV z1gcJvEy%l|)2)#%&?>Pl0v+<12|B~aHeVwXbQ64@ZK(!mM@*)Di7n`k5WT$oqFnH7 zn0+3Ctx=*=3_b(R3N*Zs3hIg3LRhFa=^$AFHCa=qI?XE6K2uvs5p*O&iB6tXiB3V0 zRi;h>c&l@nZ8fw4!M4H{bRT7{4!Gv7FDXV*0jfe$Z9#DitDWGLCusK!NW!+dwpJ%M zKczG$6-6r~bysJmSe59M7G;7qV1unFDYgP>(}C<wwE{(9ZEdYi0XT>un=`?cmQFsT zxmXOVX>=-e;%%d2bt+)j7=ceb%LjG0N<d9(=%fOuda0<XLGHuYR=~<Z@I{ZH85mHm zh14zf(Mr&;QPNSWhdL27!UXn`Qmj>;PKvF8b&3tV&`g0=5Cygw8hOzvv7j;tZicO` ztwyqKfnJ)XW_)x?tZf;r>IU7O39m3<*4WzGCd1T$#OjMmKt+R2CFr6$xN1n~f;^V2 zS!@e679xmjDk$qFYu40&vOa`P(n*Foqf{eV6I@?agZAkc=oLT@U<57DgJkRyZ6yWB z8F+c=3QF3^n$`t+1$sI8i76TddU-mD8u_5TfjT)F$(rC3CBV)|k4}!QO|vbshn=tl zj@o!lD@ZcY0i6I|tfp2BYd$I3g4zqnT#yEP5Mc`vtp~Rrtw4vOrmCq`*3@W#rP4Gt zA(bG=Jg`WSX01+%ZJuokIN5-jGa8UolL<;UpgI{+B_cMhz)lrXD2pzMwFeOzd74(G z8W|vsntEyAnzLRJRv&|FM9{Uem3k?u1;uJ=DH;%#P9?auNJ>o3*3?nVgRa!J&VyD; zpyPM*bn<MAKm(7ZIXRkECARRrt9hU^zToAzW_7I&axyKcERajhPg4LLaav@Xsgr4& zuc?!1UjV8Mz)P~NrcX4`76x4?ix8^?ouHpmtCIpP`;fu|-eOMyZJO38(Tj&>5!-Z~ zA|!R7ogiTEV$^me7^y@lICc63BW?3~B~5Ecvk!E`8}wZE=vYl1P$DdWCPEOc0jh3n zqrt8FSj}3UB2a_ZwmK`YG_|PGO3?sxyn_x>`_{Gu!L!ZNNd=welbM%lTLe`I@q$LZ zQesYSeqIWs!v~IkP0%?fF!dTrS%n}QlystzhTkD2N-F3`e-&7P2CBBfsWLe~uQ)#^ zRZR`b&`Sl)@`4vkBTOxZ^hWfBN=q_xij{PtVfMu8On3O|Emse!(coP_ojlNXaZuw4 zRFD>duB1!VtVWA-P?V=anm#D^PAS^j7J+wsmKJAd6d?{b%mY_u;F~=1^jsk;G~j6p zvZ55mRmjuOtOgInfc#WaRGM6pUu0VXHlWD1x)$xoAo$*bOo&U1z$sk=)C~fS6-H;q z+Jbhmz#2yiNc~6KR7gj(9yF|{gLJ%wEvSUa10}xr;?jcDqWE~2Qiw{>IUFvj$@xW~ zbu%z`gR>-}qf!KIsioS2hx{Nmfwb#E2UI|L4I(=I_(uT&ZfG-KC)2hBeCCFvbrHC+ zoeJ>~qM-+oX4TZmw9Nyntk=}Zgf@vl;RZTu4zfc9>A<W^Y=K$?4%B>G(79teiMFYr zf;mqwC9}97C$Z8mF&C6Bka#*s=ZAoUC=(L+^@&9a#kL04#WsmhPgoagYeUj)j%{Le zajZ3x&gh(2Tcog#&WWvsCALz~d7L)+FhfdVh9ukON0*`+k{pXD45oMK`f#}-`nI*! zC7`r`WG8q>8xlXdBo;CX2s)P=p7NthVy7EC^_HA|tb$Ll9vV&Pp`VI7uxmAv!7X{v zzM&$>oi0d47Bo@kWEPjC=A{-DgW4dl{EXx@y?n@3$FNpKDuzB#9P7c20d-S#!2U%Q zw@2lI=lnpK6115Tw5=0v0H{$Nof-=&<=`QqS5hRAnGRY4f=Jzv_)N8(Rwp7_587~x z9x{fS)~I$u#`EA7fn5qIx$;0gBGAa04ycC+Yox#n4p5;8+Lf*s56UpMB^dr=O)V-` zQ=881t}U%s603ueMGQ4Hb(FL~r%0l@2&$(Z)W1j0CdesU4>GNSNM7L9Gc1Yb*@CwL z!;)y8O_6n;wzejCvnt~LXq{9|P#NK$RGeB=20Ed{wn!&WFFiF6bZ}OxbA3i)Q8AJQ zkd_{(xJ|WHQqsw@HLwPq2bc#+|Eb!xzKJCndf=7v8pdW?U>@YWCk;(a_<3p?#%A!u zmkP2RG-Zrr2WUtH(!5nj<3{9_lIaU?dJEUrf^@_u=jVY|2!l?GLeh!kI#9NP4$y<P z85S4hWR_?s>4MIGvIXzBG*q;OchnL3GHng4GZAgkOpw1ozRkDIi_QdH8&sdKhv+^T z=oo^$g>-F)HnOy#rcOS{9pG(3(fP5qpwyCyuoiTArbZD+0<`-=Q>Vxl#HodLBtc@Z zJ9iXHK)%jMEDo+uF3QizLHHT8F%8^dDzYun$OD(Odc`G`IjMS}HNl{T-VvbtjnKp* zq1jm@Q_&XG!dJ@3Oi4-2Qv&hS)Rf9Hi!+mQQo&r%@Q+e4*j7*zxjqwg9V(og4?3S- zFEcMMwa6nCv_@Y;(<V<3q8uVnQ&R+y56?^~$v~0@^EJV#53(A<H?b(Y6w*-vw>Y5D zmug$B6ceLlrKF~8X=Gimq@$z;;w0u4SS#r$*?`zNB_O69h?x#zsw=5mDXA5f=7Ts& z>L77tV@r@4eK6a^+*%2CD>`PY%)Z15vVcefJUs?pj-#O;t!87Vq#jeR9}^R+pAH@f zhq)4(SV2?XwP61w78IoBrT8Z1RiZ@{sO4;^XATNT@F*pu6{QDBQ5pt1#?bS&L6NCx z4LaetKqC*uu6oc;`@|G*n^P0i5UvGJAEf4`Xn>~wAk*d0R-6*7IaQPjT1JH2p3+g$ z(}%RNklJsM;scuF6u^_$pdEGKf=MMcCl$1uPYzVZflB3+#F9kYBJlCBdie#QpeVLY z)tPR%NLyn1KMNhMAoz(g&{h;^Q=1;5oY6#?0w_w&OG!nkf<U=0)wV=K-KI20Avq_p zxY&03#t3Z*@nR)~qWqjx(1qZssY-S>`lUH`>YCQm8G8am>eEw8G?bugyi!3!c&U1c zB_%}~N}#(3biopkKmiqXp!xcuQt&}?ARnnfg9&s9Fetkr>KO33eTb-p)^jlRda0nL zjiA}_Jf!m_VT}{t)Z*gA^i+gy_|YKXaD@gP`0OPm<b0q6t)swpgU-GIIWZ$MCDkWC zF(orET?5iA0HqXlo19EYn5Zk26s4wSmZat?DS&;P16s?dlvrGxS_E3wsDvDn;K0kt zv{MI_8kmkL0j>MaNd(8Nk|x-JsjzF0HLbxt(o|5Y)5z3F)k`c&FV+N|N)l}ls|SuP zP@_!SR!L!cOq8|+lakK#2a(#MHlU6rQoB|U<RNGXAyqTz0Sub$)lixq9i=T<55DpN zw9+3O;E-l1sO|+dD?zKNk(&WvPl2pJ4Kwg5Q<-TRkQyFz6c9Lj)YO2gcsLhYaYB2b z;Jv~c2DVJLw$nYMwdL#8)WD{f6oFeG8cNW_V+Fk!T1lrG%Cb_*%MXHPz*<dEu7)aw zG&(>l?=;|+B6fvBt5!XzVyJ7tRXC`;*H!>s+ys@3&Wi;##z83rlAbh*K>bJ1bg4$B zW-U1Avmg~cB2gFQ7iWSZ7m+f-`9BrBCPYI?50X!ebfI=Afv=qa#W-lzA2|*|K0q== zvl^Tg4Z&FvB$ryG1e%RP%~Bbe=@~ho3In{h&9fvm*LM1UW*<>OJ$SZ)#Jb*e!E|l$ z>H109{Gba;Kn;D!A`1<rXmApTxHC1ywxp;uH5S})h73K~8Q6n7Q&e1{p{WOtr`-I~ z;?&f<5|FE`O7y@Jc(~*trCVxVacNPiM`rqTtqyHoR&ctTmZ&X?bkrBD#R*ChkftT5 zc+>-}d`rzML7DUgm204=1FdC2E!v^gNQqu%3Zkt9y5J)fBTT@4o-UTIEd&b~J<xJM zghg-%flmepRTL$9ASZ#jI!Yj>5-8g%DQV~FWv0N6NY{gw@}TxDlnG4-sVR_~jX<pz zs0?TVE;A3*XRNQ($kZv)w9_@TM=5W?&MZj<Ey)5!j*_MoF6lJTf?m+NHb@1ENTtOY z`Q^~ui;~7bAq_4)K$7){@(_AdIwTtugG((XEG3yzaVqGFhRi(BML&7A)hU_9pc)|s zbc`QpP%bks9mE7Ju(bkpHfv!g>Oc$zpMH%f=R`pT9aI}UzvxVVm#QsRkFCT5xj8d0 z9pNGD1s-^KFf%V5ZX{^64z{8X;wXf1@G2%Hf4Z=Rv8a$zPNtHkHRu4^#NuL5$qcDW z>mfJK6xmjTYE&yk<)H(qFX8cLr38tfTI*C$y#@{{H8l-rOSLE(O?j*iOb8aPO0l5& z8eG>xO5Iew%oMeHHQXkElqrJN`a#Mc&lFHcOb@gRST7zXq^XmtSCUx*8dcKBgRpF& zA|R>cjLe*rqEt{9u1F8$Lt7>A-bE#t^XheT5|dJMlwv`;QY%Vya5@K3E`tYepldDi zZ9(UZfCeX1OB_o|iZYW*OHwsJW2B(To>V=U10cCE5z<00woS=T29J8^O_#DT=Bo#_ zK=VNf(YhFsq(B$0fTy`(ksluqal3ViMlrN$09y&Ik*ZUSa9|E-6dy7^fp7t=`al|} zfJxe<=0%sr>ZC!cBS=yL4QJ;-=H1dX!9y<vwj~-$Hl;a`_Lh=PHMo+u0yoK~N9JfN z)hpG4#<U?#UyU419q_6sP<>I1#4do1G=u6YB=_gRN4=osR35aD0#ERuRvoC_MOX)@ z9#kQM))-~lg3^|@5-i}9AO$kKT7k3&GgFjwGC_$XKMzrNC+6fJjd+6A3c`;bgtvDf z?gQz}EcP!*&C>vNkc#w*c~eWAL9Nu(Vhv55qUrL5+M?j|KT`EjYykHR&@F)m8aAVg zK!+;A4F;Vk1vU>l`ik7xDFPRVu*MX~5gvL-r6*{R8sut_Yasa=$rYdz4^h2?=^Go+ zs$+<6O7qAv0VzE43sUn?>@PypagYcC*X^kl1&MhnNEL_<c6HG1s}8i7($ql>Hk~3p zP$fQHwL@E|UIXEe<edECRMMOQDF;Copd~1<d*SYYRCma(g=|lCEMYDw(wIKqFi2bn z;SNZ7R%}(0pPrtB>L5^ap~SXmdSSJ;q%UYy4Q#p=RQsYfYDx=06{rp*ieN@!i6~?v zL3dsvn+hqZK#eR=6F~#oP_R}4`^OfvR1nddf*75eqNHhGglJzu!?d~<w8$OqK!{o; zoobM=R;iE`XQ_Jm>PWe-peVI0GrzPLB|?xKD^ahLYKs*AkoF;JBQRD8)YeIbEaU(U z5@)7qfcytNbS=|1PuI{I(#(f662TM629Ul~zHO>rY9Z+UqkM#aklKr!5M_zBMbibA z>xhYh7NhFrr==CAf?JsR1v)vlMbibFv_<$ewKa-$6E(qBW!ggoxeYX}iggoh4Aj&h z0y;V1g?FeC23pQW%@6>My=xnS76>Y8WZJ=xnt={95b`qI$B^tfU2M6IfRi>-B;=Qt zz=wVm4K*=>L_1#(T?s6Zcr~?)brVs7h!Ye<c8Rb6vceWXY5B=0X{1E6x&+p41#OoF z7nT~(im6_kw;oHbfOgH0!WmrHLuU}6WhkV?1dr2z6G3@KYHAL&+Xv75pyCuEi)tV! z?WWo?LL!?LlrW2?_cdtC2I{72m*}OW=9DBxg8FSxCTI>NRTm~<V{4!Tx(N-U43uc{ zY>-ob26VX1I@4YQVuP50CU|NnwJbHS#07FohlZxkbiu>g!t9z>ptU^^g^UnqXzC)x zBg{D5Mks>HD{!+L)AOaE)ww7=HN>D5yfF&7r3lpP$b<AnV5JLaR18|c*ybUR*FZ`Q zPzi(53on8VI6<2C;8C4|oK&Q8sJ=)8v>F&Zo2aByonMrho|%`J;|dBHt5h9uA(V+) zLLtg6(BKAU!G+5V(CrVP#tcfJ@PU&Aq?f6qgcLAZNGSw8U{C`ET;xme>Otxa^hE6n z8puWzQn1n<nl~V&Y@QCZqh<vSdC+QVl%^D@RuR)c^c&z)+NjYCDQKa-h^*J<wNU~O zb0T_aDXGOJMfpgho#-7Jh%dlh=jmb{+KP;j-ag0yk^#^%8dkHx>mZb1g*XC#X%FqB zflFr*aLz(0o%3y{3wCQuXlZI|Wa<`yuIkFvEwawnwKdWz!6>EjY;29}!Rj>)G_5oe z?NGx6xlq%rsY$dk&{R_cE3ePj1kX_*LI>8)MFcdg(F$#|qNZn<a>$?&xSI~P8`3m~ z_GwXv3U%^rK?k|!f$lo1&&jd1&9~2k4*5gNG+U*-{Jc~pD^O<x)a!+xHVRS+8NUzl z^|8&=$k((2O(Z~v(=_ryF%52Zq7N#A&R9X8{|60W)EDJdJ2^Ug2M0JhyINW3gg81` zS?aj@g}4S;85-*Zdw9BqSQ(n>IEMuJSQ(n@IQoQG8CvML20L3Bnd?Aw85`*YIJ&#W zhXz;~8$*~b{^5RB#wI$helAwVraB(}zOGirW;#BuZXs62<~ksi7CJ$m?j9;3R>qb( zVC5zTIxen0t|6{gCT5@wQ;3BI)Bp8pizOi~FwjxbgN=xTnPA_cj*Wv(vV%3a6(HxV zL1zD9W8<))acD%@rs@<;pAf38SdTFjUZj(XG8B$Ht6GF-D7?5JF%LR~3me?mg%pyY zt2H5Gz)H#axk>p+`4vhEkTKv4-^AjA{DRT~XcrtJ3Ts;1Lfg!CHu@mbK||@FSS-qe zZ1jmQNd)z`QY&l?bRb>w>5aj<!tzS_IVrj@IVDZV94<mJSdkc-A}go?A17)H%PJu> zgH}I)@;Z`skP;arC7_-Qq+bB;?<?s{2dSu6g7855rJ(f&+*HWe9o$IBU2=LV@X&&c z@*@X4$e)NT3LXpv)!>kgp*oqi8laIm9S{NQT-KKq!-whf^GXsk^HPgoi2z{}xWfi5 znPKS%bZ9S9qZuj-KAjPq*U@w*<&;7<Uw}qzA)4be66^C)a#EdgK-ZojDrdM4!S-gS zR;J{aBloqyEgg9MmYrHzP?TC+tfW%{s`|?_GLtiGLDeugBZ4{^pk_I8g923HfsHOo z)dr87TR~lq>Ng}GfFlmn=aHy~ba9bJaNwrFoo!VLKG_ASq6E7bBB}u~0PI_^Bd~QO z;YLBz1h{JkPVf5YeMziJ^UL#!!J`93(<e^X7WITg3)nhnD*^6R&FUhgG=*Uw#5#DN zar(v?+Tx&q5N8IB5rBC0kfAfMmEc|_!bRX<1@+@WE6Yj}lQWz_-Bpi7P^5!4Wx|6l zH4ii(hZJB~U4_UQMS6&AQ4co-I#frzF-p3Ipr$qIa*X&4u=_xX5|Nh>EuD<aV(aqE zyp;TM(6~lOX6|&E+1k9!8k*J9C(hOu(*vbEM9PUah^?ss-<JW(Tg4iANMQ}ymj~9P zu31x)hiD2xvI=Oj!w|e44qgp|;!=bU#Ze{GAI{Mh4psuU)<D?=I@oQbr=$%UM8evL zP1P$&EJ{x;0nOKgMpW~QK|2`X^Ch4HK|^W!{JGi+VM?0#hvmT|Q;N2bRqv_L_8+v- zrUbf17(4=~p#({F;N5VwIz`i8%+r=bntTAQyU~D;DJJEoRBD2Hr5ZTBg&Hn;#7zW& zDi}>ztDr<v5jEPeGyta;F3{F6LRALI#E3Wm_1!Xx^2-%K%h(_bWtFCXU!ZL&1ZrV| zt~fxdvhx;dOL(JJ+4@O|paC3W>Tb|XHZ0pJfYz90g6d}R>7I+Uxn1E)*5C_MU~B&% zOUyHo<{7cq&n32*(-v#X3d8D7L{C&{y4_-JNeR$(WqKJUxj7o@HlT_YR*g?vsVyz4 z1gm|KrKX=>44UtR*6N^AIyJ8ZJRhrMXOo0oSU(A7k~-)hPvmR0^l;Q~kj;$NnR@ZC zC4^v=ps3EN)Brbokrp6<H&YeaLTkZfSgi*eWJM~yGV@Y2l&1e*p)CWNvjx`yN}y5K zB8;jSx!42`$mgV{BvmTuU{MM0Zi8|wQc+c+Sq<7XQlba0z(CVi@EWcpzaBEGhSm)% z0d<EUtpr4g11{vj1uv@Mpi&alL_t#tDQsZL3REwH6rvjfSs(|>rh2eJR#1_JWER*) z@W5mVSTj5ru~vq8dXRjCs0?dSA{xA80FlWw#i7kqxT(-7UU1|@feI<u0tV!C4(m7| zd<R;X1!@sNQVjM^3uHebxUhgM$&drj1EY3VG{9?1Kx=<8r~9tbmPIPe5M59WC2(ed zrDsrqfb2X-5FmV60$yW{JhX>AW&ml-f&&J+a3a;V1XP89{UTh9RIwlj4rs<1(*6TY zdx6%PYJj?K)_JfsAD~<Un&T*fE@vswfHp~CGgCD+pbLm9Ky&7qSi4d1NYRInV<472 zn}gQrpqFukdnMp*2jQX(bfGWGdO}=9TM^EpEpMH+v>0;H24AeB1S;6-K?NIleU45E zYE6Jz7=Z#6w5mZN6FduL4LbG&x}F)iFakA=k;)>hnKwBnGdUZUdA;%>7rG;w2e2V_ zq6-74c}mms4{3`|Kd@Vyb^6{d+8p&TEAsO+Qo%`2F%vaMK-*I(O3<O!Jm@vukaj~s zVi9O%0O(AFB51`A8kJJgw9Z607BSC)=G;^r2asy3eDFXzYRG~UIU--cMq=RU3^{$H zWPaqn5M45V5jgWJBD)n<eQJQ$G=b+BZIz}M9MTp62R*-%9k@_{Rh|eLXry4R71h9p zL|H>SxHkIWHBYF4hP^Zar8oEtAZQu^F+>GhWeZwMq*G*TU|nQWqE`=@Q?M?AEgQ|W z1s$LS8pj1y9`Gmt9o+@)ENXxTp}@940~|bgY@H7)RuVOJ@<B}xM6r?yndYvk$<zZa zP5{Y+QUYYAMjPB~fnHvg51F_v2InXo<(n#aRRCoA5wu)UqZqUvxE6f56jIBpaEG=m zKd9veA0vqc@5hi3hiq;E`vAO7G9y0+w2p7Oz)o!`eb74M5)CCJ2_;QXClhqT1Y{u! zDBr^eN2WW>*OBLhr-tb(9(c=2rGgj4gZ8;8Dd~WG44ORBNv+jMoj!Y)wu~rTIpm@T zNcA+mYMZu{HZ(2eL0Vm4H^M?WRTETRC#Ix8##NQ3XYJOO6M!!*gNee^9jG42tJQ(- z!T>Kf!$>iR+R+gCQWVhPA9|T7ijZhP3JcJ(o6Ix~#O(n!HL&eY3MG&g>mWCSE?qAX z1tlMF#)j5j;7V!QbYGF_eS5Wq#6SvhL@~JW1)g=*04+rUT@iwaSxAaB(udHQ`FZ-F zo14p>K{pqJ;v2F)RSDOK7}9Qc&{h~&Od>B1OR5JQ;fdUa01cyoq6zGUVrvwyg3mk! zowJA$T56ExcF>_U$iP475YlweB2Q?K60{2kV~ddzbd4%fYYVLr2`<_t<B$q;@PGrf zCkqY>$W#zyq7E@)g76in!wpsMom!ccpIDRv)d$K?pdr-h3lD0G`=X^*&}Kn!)S-F{ zx)uqk;s8ZIk_RAT;h-7`v>p;Pw+AYmV4D*_lljFZ`30cks}s|~9R>}=@(|EAbVP{( z9$f}4d57({wnkd=4w*&(Epe#@*#UMbyjcycn<Pt=KpQkcr4)GHDK!P!?5dsq<A}C? zy;5>UVqQ9YjV)X|ydDPCU?`Ikde{OIIpFd@UAZEZrZl+K4_Yk*8SVwO{~<yVwyAnf zu)*jW=*4D`Aqq$Yffr4Kidg88N$A-cR6>C^bwW38fWiQjNEN3)Jf<ziq@)KfIgFGv zp$lw42R<2q$Il>D0krOitkOm9_JL|H2`eQ#)VfI>H1~uQJ0Pn-R^rLq1x2Z##pa;Q zU8{qA`8OhWLsq?^=WNJAa9o)jlwV;f9Wv|<5&>shSIGGz;7S0N`H@=@=<P|wI1qCE zKHYD!j>7cw=e5~D)q7@ML1_uJexI&*N?WX6NdZ*gf)+%9mh34hzy`8xK?6_<iKQj^ zpu^8{QcF^8mGaZll%PUIMXAXp$RdgGLy{rNiVIS6a*{Jrle2B1W8l!%1E`t-kDr4F z4s%d#0BsUdQqZ@9HY318IH2eOxeZ>g+vdUBrXX?KJZPf}>^UXKq<RtfBGVj55W<!} zP2X@@Te4oK2(@*B+E@l{_Jl4#gEp7JkpVFXd}0iA4G6~AXeP{|h$beu=Ls6dgX#ed zHJPF=K|$y$OU%(w0u>o>b0G72ptWz1MJ?bBekzb;hT9S>1C|I&K&Q!TD8XCLI-per znR@ZyMVx7=MInhv;KN73y=6#=3{?v%z+u-PYgXei&;T@i4ABblK4P2?)Qg0B4qjM6 zR3UVsO}D~whenB}0Fu4nArH`KuY?+CxCEpfJuic5BCz3^c}hA;)Aya%7Iy)8BM*Fq z0%$w|sW$*t2pXpcjWM9r2ylb)OF>6sflabUHwjv>g2rYc6&g0@z$XkK&Jjd2BuxXn zo<Lg%$zg~Zu>`c`Fg`oAGPEE7blg&2NotDi^u&wWV!k@iu^DjT2rrV=)RaJ*VGxl8 zN@CDLGu0L@49{44pxFowaE%S=jDdDaBe$XqAhXAy%!O2rf_hbuL>UCWCBQi&KQlR1 z12n({HW6ihqZWDvaz0|ACTw)oH$Np+C($-vO)cNX*3i(pBttC|W$XYH58zC$2eA%Z zyuhN?5F;!Tp_L_gcYy-fyPzT8%=|pa2<~+4>)LYm;7%b@^`D=XrlFLbT3K2EwFR7i zaYSZm!E}S`+9J#_M>u0TLQPEx>}F6*l<0v9TVk9Q1TDuvi^af|t#zuRZJr)@epgKm z%mz*ILYa;}Ay8I`qm!CirXHjc4hAp72B${Q$oBj@+A>IkLEzzGNC1P1QRp}!to&Dk zm$9%g1LruDSwr+dK~tdvszT6)!>2FXr7ei;2vEZwW)6}wkec#JpwXUG@E{Lz^@rY; zfKMrc2c5v_24r5eL98tzsew-PD@&ceV74~97fR&<^*xHUpu!lX@W&img|-zz<FHIh zn$zX(Ys=|F0<I_(bmlBH1~hf@piOL8=?yM!Kr1$irk|g!BaRdz;NcE%h@cq(JuDA3 z|3fll38Y02GaQ`FA>M<Rvd}fH)g`G#xuDCAYr$5)N)uja^U_w)5R_6LK0p~Z1P3ix zJ={2G1GNNc(ILd&$ZmiR&Oszlk|bKHK=vuDF<KAm^nfje8JS#Mtf5p6+UTgHqhw@S zPyx*&CAN^O-IYLFDp7Pm5+rh@YHA|F3YM@TkqDcef=&5P=U=JKBcr5=vcD2?3`vQt zp1G-(#`K4ev?Wcn4K=luQgf9c0gBD7py5fh*_H*5wPkpbT8fY!zj(c7HLRtF+#5!1 zp`?P((?A-~)5*7uR)RD~z!Yc&iVk#I3qnIgAT3qU(T?DyTM$7+L@Jf$)kBnkWMXv^ zp{9a(n8rXvVY)%QSZkDKJZOR;4?NzEvMdYKyv<D0&;{)f2A!}3+Tj8^a4KI@vpO#w zbjC<EY|DI!9(YNa25d2gm6CR<PIW<IQDSbfRbDNq+JP+&fwzW=G<7hHPSgbNZU9wo zphaUTwnft!*9nN#*MhdgVDGYn+e47;c}TIO13xJTb(9#Trw%JtQ$WYvmw-0A!=e<q z=bo68gOcZ=!ztj@3(|?&X-iK9oq>;Nx1g(zE{R3e0J-o4mX*MRsBoigK?eesq~_J9 zXjFqnT@rJ0U^^f|HiP=pdhyAL$r+$i`gHQZ`(y$VOOVfz0+&&W8sOsw@}P>L?TRAU z@evRsK&J{6!2=+*Tp>>brlB5m`U0+ARZ3=Ja#3bUW-@4BEmCO1W-zLi9!=V&WToV& zq@(nH&q65ca086d2xBxs84q_YgR_=^S@k+f4|lBsGeN8sP}bpQDB}psup<aFHbCVb z?pg<DZGp2kL0KnYRvlje6*=4jWgMReWjx$fzX-}a+zMqJ-vwjzLK!DuZa9H(1I)~a zyVgKeJ=_HgiibO38jiqhJOMNG(Z=;q^{?iDTw3o43cSN@AVF6p9i`)Y;4HAqKw_`v zfPLq$q@(m|4%m`VFmne;X&9IZHXgzR8xX0aqx5Lfb|ot%Cve<=%mT3<?f`iK!UDO? z3AEY#;SP}XAi<NMU<Wad!IT{X#UV)K(Ik*{&S29PD_JRlSVutmz>E%<NEeLJ17#d; zhcX`SfGIi#6FRY5sUBj|t2z6i${tPHsbr<(0=5T~L_n;EJ3z*QSV#Jxk`H%)EC2~T z+%W+zHVMvxsXGFbJk|}BI|eiBSf`SeQa#9sS94)@9^VL36$Oe2Q1G~bS)h1wsRD_C z(g>LKXc8#IL6P%*&r&5TB@pW{$bVo4$Y3x7WEF_<a5pGLfLXgh9tE>@gKVgWFhRi$ zX6*t+ABc4X<QEX*;f^U#3m)#624x+A2_1on90qw0tb7;DWk+T~Ri6M^1d=-eiZ2l3 z;Vw{Qf>`wrcf$lvfHEIQ?BR|%P@P9+Kp78rAXqSCkAZ>~r2ZHvutAJRlXfdvDY=2; z4wU;qtcN>5nGM7`HW4cMYA#IKqe=B3|GI;9ELXBp0<n&RQagxo1mp}5<KYfab_21F zfD8jOU?Rss7J)@TX&l5j4oWs4#<9sz6JO1PseUzgFHCGMC?ecJ>HpCrke~<H5uh*t zv5tTY0Wlu#0GSJ6fvf_tPJmniVm#b|PzKZaa0jS31IZqNseiN)<TsGeqm5gYtdu~k zSMxx{iwDGhkW)Ot_ODd3QUb9KgOWFx0a6BLfI=C>I0CW>%m7&gW`N2dFauOHf*6PU zq2@f?0V*RwLJxO?(kF;@942|91C;+jLMK2e6~uVB8^$^U*SG^_{ITg!Qy)#*uVkg< z1$HsW5g^tPP_%&<Cqedr7>_1{QoT1=)oLXxB@pZ34v-T;tm7bWc!T`^a0e)dfy9o0 zN;eSW;SP{#Al5NZ!UHiLZ3Kl4i1lhN%-mOVK^X@k21?{$);v&zfmn|wg9<Mnu>Bw} zfLKRB4hJ(pS>8vfUPtK&DE2`@4|jm9hp<5T1H?K4N~$2n!yTZM3SohA7>IQgX8sA7 z5sx;4EC<Ow+6YQ>Al9q7pa6leKzR+!ng{ZNkCINk(s58}=mQF`<6w1JprU&+$X~u- zm#<Z_QUb9a?f|6{Fl#4BGlT_G_h=(1x<F#bK)D9Qcr+PQn)`tb0ZD>b$3gxAF^)pz z>Xi<IvL#69;Z9Hxf>=jEP69C=?gTj)#5xKp`aq0_J3$Eq!UDM$#5w`;Du{7xu9B4! zi1BJ3sBnO=Kv@LDIu6zd_9&>Z@&kLcelo~XP}TN+52$7Yu?~ZZJ}?86fx!$=c?V)V z+zpd^xEo{xL=032LRc_$ho>r8DS?G{f-(|_bpn(GK#YewK{*M;I@$wD{~*@Gop953 z!fZGSQ+5IrdLUINKxr4mI1ID#1Ss``L>}&jsXhub={P80L2@VHPJpR71`05c)WiDS zpy&cKcY_L62n#N~8&uLj#6SrP!h#w1a5pG#fW(f&oN*lH$-{6dP^tl`IR=VKFk?P6 zY+lXng8Bc|T$rK9!1jQOf>(3F&IM^X0Tu+cIv!01C4>NQq5_2mi1lzMDA*w^P{4p# z$3U?TVm#UiYAt|RujYb62Eqb`F_=|97pC{oWRL>`!6t)hVG!%pT#$JX7RW;&)=5w@ z0x=#<1|`!Vum(^80%9EnnFeA!+zC<-VjYDsPJpZjiJSo04q`mqIjbIYPl=L_(!-sg zcmN3=1z8DVJlqKid=Tp-C~!cGM;k%j0<m7r1;rMaH4jwGLs+2P2x2{&49Xh8V5e<X zvQh%E9_|7e2VxxsX$3JJ?py-0AH+NgvL3{ExDyolAl6YB<Ka$_4IrV1J3$cvVS$QI z5bFfUe;~$DnE8)3g5n$`^lBbV)vI}+d<GJGG#S)92?4up3n>0U%!fNcDG0<m3i2U{ z@o*<7ErD1kK<))Gj)H6lF&^#&#XW=t${ZlpQII1+jAJl;$6!(?K<)uay_yG#V=!wD z$Ymi>pz{CGWKfiXQrG)Epz0CCIy_U!N(syWSq^5*hKd{o=>&;9+zBepK&+!6*Mk@j zcY?}h5bG$&6(Gi8P{@K9$6*E>2UTNWk*Og6gIO@^9_|Kt10-}5<a#gz<W~^mIH))R zF;0L|8JGb|D<H-(P}v1yJlqX;%5Jzjcf*W&xEtoGhr1!Bg8DzZK|v1Iyc3j;L9C-N z#>1VUIte87a3`or1hGznq7uY-G#ONof|~vB_kfgvSPyrC>L~~d6zm|@F_38>#;duY zGy-Cs1ZCqeQ2q02E-0OafqM*-K?yw^oHRgv2N3JwE>L9yVS$o2h;<a?5)k9zE>L_z zSRhA1SfI2IVm;ajvKP#n3~I$hfDH!48Hn|87bw>2Axx0HAl9SFpfU&KmiK!=6*P$T za5u;p5bH3gdI2$xf_w{NJlqX34#YYEQ}l2b%!s2fxre(E>OoEisXqqFmyw|Q|0GQP z!`+|&14%xb3~C~Q8vpP2fD#mlbrj?t5aZ!4P(cD>9R)QGzzk6R4`Mvr1u9!0EKni= zv5tY#G>CBm6we^Wqm7_e2$)sB5!5mQF<;FE<t`BG(PWSXiJ;Kh3u<A2SPyrB@&Sl- z7!+M#2B^agW`Hz;7!P-W+L;g*s8<4Efh>TqKn*Am>oBND1~HB_g32E-3)CI}F&^#$ z6}}J_C{aULATK~zpkM>BPQa`>4tEB~dmyRfpb7@Wc(@B@(P5Z#j)Q^>BzGJX>WQH6 zKLPXO34|M9W<J~nYW{%KKimaMkzm#in1&;uL<|yov=L_hNm$UmngezzNcJ!&ODCp+ zI&h$Pg0R3YO9k2gY7W?U`QVN;*pgB(6BOTxWnd=Q(GVus1kjytk0yia_atyEfieb& z^>7Es3lJ8_Z4efyngX$ofpQX<0aJByGAR5(LXRec5>7JMG>|Nabp)gl%m9_xU<N3^ zgBhUw1Y#TpMFWWOa0g7$F;M;k37r6y1R%z%IiU0gVm)dDWm7O~GN?350hPb+_ksjL zN7y{v0kQzZIs(c7AjZQTAgdrOkcS~GuwGELxdW!|2u$)AC@+Ilodgw*U<RnX1u<UD z1!X1>>o_QKQmR1Z&v8%@0%9sXnheS^pm=(}7ZiFR)?rW~3TA*3FPH%;U_p$ByFuvy z%-RL=ADFcprt#r!P%whUc7fsy#5w|UHi+?X2dI4rV%0y~0dgIPc?2eQ1SWDAlyyK- z4|jo50El%2REdBXCtwzx0L2nW<l!z*iUG5B!^BR&T>WqdsO$ns9syM~AjZQTGnK6B zl^{%*u_s|VPr^iw!!$mc402!^IEjG548(f41C-Z5tYe_`17f_I3yO9S>(OLT45WiK zfQ$vPj)T%Vh;amDY&t0YKimPzZD28wVPFPK<TxmKfki<11;jWG%4s0RNl-ZiV!WCM zQ~hu&C<MS_b3rizVm+D+3e60#BR~lg#5w{p1H^c^qaI`~gbA_=#5w_T1&Hx*2SObv z93f($I03VEfqVyI9f9e5v=NkAKthi;f=YZ4>m<yKW1!H>0A=DwlR-_UOt6#cLAeIR zJPfLt!3<D|17?6~Z4l!K$Z{|PWH*=rR|6^{K_U-#z*)OtMji*1MIgx&Fp(3W>;)2e zxEso<S2_aMxC3VDNsu={%8r1_Vi4oeWKgOB^_br81y!3M))7!tf*8j^O$iX=B*-2R z<I!YLZIKQ3A;=;S>){TNVIbCVkbgjohdVZd${!H(2&mu#F&^#!84F?^16c`TJlY7# zav;{Lxu7fuVS%z2gayh8VAecPWP(_aCWBIM4%mKBaR6c+1(kjv#t~2<0A}n1rGF6X z;SP}X5Edv2fmlaC$r!|VxC4}bAuLcf1hI~Sk{6f(DtbYTV;~=c7$-rI1Y$he2uhbA z)~mUofC01Sfjj_a%>`wN98mdp94re7H&A0S7wm3Ou?J#3+ySx+%-RXk3}JzM4`Q7J z1uB>UibfFQ(PU800xfoUzZX=;fmp{uo&qtBf=XHt<1k2H9;p0#xDyn9AhDyM`~hM- z+zE0Uh;<Z{(Ls!dJ3;XXVS$_rVjTlD=0J>-ptcW)aTF%?Y96RK1_`~I2g(2-)^Siw z<Uza%(g~{Y-q-I172qJ|VUQtU2B>TXGeB)65aZ!)P{9ddfy{-lK=~TN0_7|a>o6$k zfEW*Vf<h0(Isr=4AjZR;FpG}D<R0#v2x@;rWMMWOg(*7$3Q&;T2~bdh7>7Z58pJpO zieeDs;cl4fqcC?J2bF^$xf3vJPQcV01EmL$)WhANC<3$UcY{(Yn7JDv4Jv^kVxSZa zVZn@hxEqu&Kw`&X&NvS9<Y7>Y6D$QvGa$xEP?ZK^yqXJ&KnM$F)XA+d{~rU}1Ip<q zz$|bJWG>j@AT5t3gIokUf#UsMP@w{1J=_Tjb_fd;6(H6zP+Wr;54VEy42bn=E+}Lm zEKnFjSTL=R>L-JW@j`Hl2Pp)xPJ&ztV!WCQG8n=Fc^breG#M03MPLn}pa!vyf{X(( z9_|Dw1F??67$-ocf<#V$YzHwO?gRxngf$mb{(zWAK{kOH4|jsR3SylE1rwM7@(YOZ zYA#IYt9hU@A1pQxlodg&N0UMA;9{`LKz4yxhe3vc7)L=mL5znxL16@99R($VdJya3 zPLQ8KtfMf-!<`@tKtd09f?@>10u`Jf)(MdBK#Zd>^G|>x93=8;9!$}zd7z995_`A{ zX8WVbAj3fGm)`FMrHm3#`SWlmC?SCaAMOGL1Bi7L<Vq0Z;Z9KE0<lhj3;{8Y!pwNM z6O=VTLJxO>atnxc6y$CY;}}feDNwNj5_z-{)DQ--Ud;m)Fd$a_t2rR|mVl-=9!&<d z;6X|6{a#Rvf>?(^B^Q_hDz(83P#Fwj90h3vF&^%ODLM-B2t)|33girs&|y${4q_Y! zm9b#P3{d$GW`U}5FauPIgBTBYgZu$v9R>Le%m8^7#5fKLIS}In%#|lV!3GjJ2C51{ zjEB47PT382=Wdu$4|l^{RsV1|%-Dy!L17Noyc1Lef>=jkjE6fxH55qb;Z9H~2V$K9 zm9`+pqsbthpr*z9y&#`}SPyrCQZ0l9N*f^7DNx1&F<#9Dr5g~d{uHQG2C-hv1*N?* zNY?@sQRU#24DuO>^>7!c@`12GDIUZ+3UUdE@o*O?J|QenqJywNtsDpo<WLan(MFJe zz^uuj@T~x~|K9HfDXajs=68V{2w{OTABgp6GN>^Ea@G62pi~cHJ=_g42E;lH@+63H z6cjul#>3s9!~kNQfGK*o3sjJSgbss30>pT@8>+ru>ESMfu^|6|q>q7W9uVUsOy|Sh zFs+X!gW?mEUf=Hpr4|tDC@67)7!P-WiW?B?C@8ss8K6!*i1Bb2s8oQkKnVxLI#v&= zQ$VZ}peO_}PJ-GgAjYGOpe7-R^=d9C$AMVqK=tvtiAp+3=RmpY+*A+?6uRf8gIJ)Z z*}0h@7O2GpVS(cJ+<cH2s5NkIDToD1n-Eq#$b;urf&@Xfo!bavffDDrtsoYt33_fj zhy_Zz=XNUTD4hpe0%Dy5RRs_+uqFFJvY>c7-wI-Z;u6d{2g(#+)_IUq&v$}kLG7mV z%}RQxhlW6wo*3za78XKx9!Dd#9zzz$NU(yIkEDY37AwM!z%GFuft{*Tf^zN$@)8>8 zVX=r65#VJS=$oVGS?ZXXg7!ipYXz^ILedCXv4*bI)=I|&bQl)OHWt){JK$whpcNPJ zUGsWac6OsGNKb{_6#zM|#xn)s4)EG}$W{-~ZhFwE8TH_Ukad-y=g%t?Y1@_{ZW{ny zHUPfBvNR_Lw3aY4#lA?}R!J9fNG;N#xK>bMEP9J-aoi~bj<s}19D-KN=s}|p5raC2 z+h!0;dclj^kuOUDhY@(G3T$Z)?8p!3E)KlszJQJmK-zAAEz&_D2HjQ$vIeqB4rUj0 zA-NUAAE2YLupTi`Vw<N?VwRCv3_5PBNDp)(IOsGy=+-dM^`SbTTbEInnM2G3U)nC^ zSpr>cmYQO#XrPm)0Y76+Q!levLkZ$nB~92$QMfdUHqbp)(+jT&i1WbrfmmmzO@H8^ zBT|oaOuHt?pO~j5!xy<n$6A-zf-dtd0iQ_<+8viusZpX+gxJ=SZ);$kkGN$rUmJR> zOQLN_bbc&ouaz!ngLs}E<iz4ijkH9aOij>2RPZU;iJG;kdhjp?txg0V4hk26uPTIX zXQ_qW_XUcqBJg&2w0HuUQKYFeeS@Z;m?GTwwWuKuTbu?7^XU&Abc7?3!v(bS1UVuM z$%_a>@TIKah(K(}fw&i%01+og7a?DU5gn@o30U~{Af$i=T~+}K*hEFp!H}6LYHDaf zj4g!gA=e0iZqwBu7{q9yg{7<l1wUjpEz~=(0|`KR61=nzlBnT}p6kIIf?=1)B6iU0 zKsMgPA_T4;svIVc(103|SV~E7nuaGJ$O=v^rFzUGLGqwyyn!w=fozL}9*hTC{D-`r z7+Wz93V<TeiNCO|AmEJw&@)8f2M}w(ZAEO50O?Ex6%(LR0<^y?6(wVXHm*Z6I^^JC z=<2zA+e}Dtk_y_pnyHtYSdyHPTC7o`lMgz53{-I2f(~#5=TwbE$O)Gk)vzrSnxNaJ zQ8t|?rlj~o?~g!~x|-Fg)9t)<q)fppQ;`ZxNV$WkV_=trfc6nWk9)S)n11lOx0FnN zK?&65I;nc#b0us`Ae&~bAS&u1hAC-+vxfp`4;^GZFlf6$YF>#w3J<E;3Us(=UTRSY z=-O$hdEi5#)YLRmLCLx_6<i#EHo8JLrhtyFMx2{%s|Y@)u{bryJ~g={6(R{qrQos_ zq!E0q71%&93uHCum}}U^A<$|`olM*52V!(Y>JgWPX2Ooav`y849<i7TJ4QKE6Ma(= zs7}BPN6@v$(5n#?Z8cJDq2_?kN`NLyc$uFHN;UN*D9J`M)fTi_w*(Xtpf#JR6(v@X zP}0!UfrW<^_*Sg~q+LFmI<OFc%fSScG<Cp%0G9yslr(F>E1eZUC)mQB0F7_W>Qvim z&@L{x9&q$4Y3jgE<OW~P4hmAZ3b?7To!y{P9i|*n-|1w6G8<B%=$2lRVU1KO=7DeY z0Ud-2E&xEGtdR&>2n?=gib3@Z%v9S<*s{}9Xk4a(&N+i-Ug-H0ki!9x!e0lZ2(|Qy zhu?S#zDNN%8|CR`76;@cX6E@PWu+#UXn-#bEP=!kWIuHYXgiT@o?dE2Nj>N&i|Se( zNZ2VU)#{W$l3c27H7q);6b%vasAvegMn?g1wi{@plbV_ahyv#Vq&Ax-^!zwTY5*$& zMG+`%r&g4J6}l9G5Auho1XU{VliooGk%4L$s4bvEE*VzTgN=f#w4JUMrlV?60^Z>b zS!4`eM682el0XYCq$~hxHiPf3fL<d5F4@4BSAcf$qHT(Yga@=UkXTfdSP5xVLc}3k zrePZ^q1&jD772s)@Z}*b%7z{%2r85FY*PiH`<oL>5|uP-YNBJUr`IRyD6xW?o;uU# zM(C*N<RNY>OojC>ia=+$Ay*g>w}2ZLV)cmT4WurD6@Gfq>onl02Hb3iuHViB<>S&+ zP+Vl9-AV!4<_g=q4l1f38$2MUYJd)t14R;|aA(y3ZMvTx8>J)50*Z?1^P+Un_WB^@ zJjg-r;2eZjg+eS)0v((Is(cC%Ef?6rYXxX~HxFEyYHI3brqn|2uL0Fq(Xl#^8vsFP zIS7C*t3|#7a5|_+wJM1&js;&>ifAt8=w+tp<ZIg5LN}O|+Gb(|T#05i__pMF(A`O( zS``#{8k&&6tF6_@(FEOw4)zqdSSZ!hNrPlOP`*<%(5bG~$<ayH)G0s-%QQ{vQt-X& ziOH$qnI#z-&_ndW`zumVl;(h4U7w=|D`Fs<Z!#c?pqHkF<U{LQ4J38euxq5i$3Ud$ zWN6kVLaOi-P53QjiRdRoKoS@%6J#Y;fb&4TJ~Tg&-?d82O00mo65{rF@RfDYQ;mx? zQXx46qzrVX1X8h(n3Xu)BT+|O98@fTl3+nmesXGYF{FE1Y&+c{QAeIhQwN-*!1sB= z3t^o32-R|=5(5&vskV@v^6(r4IzJ$_1a!F~xL5_nZgs6riB5GPxGpTp1-0xz8#wBV zK{xUuUF;0rz6*|6(0z{}?}55)(9D>rSCWwmsr&WP5;Jo^`xi575hXCF2#4C0s#5~G zPZ+hDKnsbq(!6^3K2xX_Xs7gGYjMJSsQ|k-w8$28TzX<2*e@FSh|RRn{u`*ph-$S4 zsHC#a)XT4jH2ffuNz`!;pxb*D^J{7p^I<n5fsWG3EQV~-feV681O=a63v;ao=!k~m zlEjkIVl_1-1JG8-BE8~zumJcl6(a6&0^e8*y}LyTbb6R|Cg>!~!qU{@5?ja(rO;M5 zQhJOBU4NZg47yqwR2REJuU7+?O?uNkQg!%YS4qKC>Ln)S7nOh-PZ^oT2n#@FLTclD zM4?d)+O27&<n9^*s;oikL1_k>b2P1$VBSYu)SRzZT9l)vrU9mHLFDxKG#yc0P=$$A zIcVGjtRBR$%?GzfrYEH7h_HaPOgGHd5mQl91G!EST$dN++Cw}S4^BNHnYpR?r6p== z(<fx>sB1uW+M!6<LXYn#PA!2d)+o}M&X}VkZmell1m1yI3u+gkA3zLpkA6vFI%xk5 zV&n#NPq27B$_}(5NcsXR1=Sl+esWQ2Vo7R9VmfG(UVdf@xB~z>B^_Ks!)0yrA)%gV z3)PpI2f9rSqAxQ|12o0~)|v<_aWeCQpek$=K@LZpcasO&a#o@TORkxkny@+#QYU3X zkC8yGk}{)<V|7ZQ4a6LH4FahLHA*!h9bb4Y2|3IMbiXU2TtkfJfujVe0K+o6m5&$z zNVJ7tOa`em>v7(jt5a$VNdkyEMNLhy2+{FFh}VKjCQ#QQ2izO81)Y`y+VfdcQwkkT zQUu2WIHlPpLON%lez;~WsIi|9Q)B=>i!j+XQx6_j8mZt45aN<#Na>tr3p<z#bgNAo zbQ>)w@#sRUFWr*FbS03ZK$jE4d!riBX`l<Y_2AL1k*HIjtXT^W65B-3Xbj|(C1}3S zOoJwU$hipqIVmBD>7WZ?KrTY~6T}0ZR#K3do(lC1WCu9PUS6F%&}DIm#FMI1RIiCT z_6qknB1*xnH&8ng)PE@{%FG4bjFeiG3p-%~yx+da9^?coP*1H0(hDf6MKu}jYlO)q zI;q0o!EM;R(BK;<Q>SZ}=}02&6a<}f2r7u;a}tY7LK4%_(kF7`Ga5Y>VnK%yCMIVf zH|oH-5fW3WDK$0Fv+SW`CZJOwKm)$|pnQhCfXL5I&C9GxEdn)7;0<w5DFM1q1mqt` zU_lS7DuFB4w1($wP^ANQ23*z_d~^VE+~mQJ4n-cB#~88#SqO{edQdAD6km`+5xOzg zHdQaBD8B%7z$NS?3eZ>#Bm_Vw13=Y*>ODwcLWf+9bRlOB#K)&)rskv&m?TKm$*Tt) zqywuV6f!~Q*nz?#&o)sHwMPlfR*H#4_aWeIaaeSLhC?;MXFq^j<KWYA>N6lYw8%CQ zdUPJ-UNy*`X!NuJ$)Sm$3K4V%8X|8cg3elnR(TrHMX{Q-`Jj{u_gFsY9F0Wy{#)o? zT_v6BdXN?1o#r5KCxRQA)_HoMvd9)f)zm0Ku1JHPq6UwDjXX%4K}z9bolH&ZVz5T= zt->G^V3h$hwx9(&il}>X2Dpa+(TUi)4>}Y;54!yxbWRz_I9r$^^c~Eglh6*<>xdxd zK+yJUolHbIo)4?K!0r!D1#M6+$uBB~bS`xgp}qx`@j5x+U_cb9H8rq+1O+3cnFuO3 zK;8JFTu9*oV%Hbt*483ltPY9WQpm09nER<qbwK;6K>?p^n~1mpw;0qXf^Po>@BYmL zjYbsZS|!(l`b9Y!X|Peo0(*^2jRH`Y4y@g_xTHv<Sldt&6lWlxXj&C(YuBdc6sIbH z7*Lmk!qO@cRM?@kDW+d<){$ogUuQ7=?PG6A7EnH&{;w5u?g6x9$j!{l%q`9J1f5Uh zlM3oMf<~s04{FmvlmXxYF6fa`*y~*Ip(P;KfbX6w$^|<cG~ig23r#CF;38)_bDNG( zFlsFUDqi6;60ng~_?<S0i$}qydW7WX2WR9Ll_-Hu&Mda7hWf(_<U0umuo5eXy*i+D zky~t)3OWG=R!G6hs9GJ+KoQ2#anl#v)RDjlxQ2Ee@f=%Nz$I4DJm98-Y!m|Dpaaf^ z&>*w}iw98_dOo1b`Cx$u@rxDMTq_;2LvMOmmyR+<u-)#`k>-E}+w=!rI%1%M2Qgv- zl9Uw)r!i3Of*rF5N;4RfJ(-Y9nh$NeW!l3UpjHN;23nCG*by9{aLu=~Et-D6OGg|v zEfyilRXhnX7ZPlc!+}B9xq<ErwyK5-TR{v4opt~k#s}^8F9J7A!QEt(d<v-rjr3tP zBvPdgIw}`3;D$QRhBV3sId&L&8ZvyC6;_gSfbLd6y~G;x=8inHn>&zCOh7;G3=+7I zORSO4euH{K7w!qvLrr1QMXAO0r8y<VO0Xl4p$C|P4vB+|F2HV6P01{R9)<(0k02c$ zkTB@LO;FUUz$}B@dx7k1)HaG{HPSf^)&;4!j)zB5RRAg#FfIU^{$Zkycs<V36QE5T zeMp-HH6CF%vEYeF#4#kuUO|t6R5eH(<e{9k2D&B)^%Qo{5p)`Z?esa&8FR(;1&Mif zh!_V~3D715XqF0miY)9JcBr^*5p<CNxO4(thzC033VKMOP9AE+p+-JRw;5!Ybs~Cu z1Cm>yR)J?&;U|V6Hxx)b9t?a91vs5T(gWCFi2D)aNuZtuxPJw`-vE3B7RuRI;Fc5U z3@)&g0=fa<)7?-``2k<;k*AmMoTmXkm<DOy7x@S|NQ)G4@RR}QoHJM$KwD}$)A?s> zOVw*2>w`+w>VS`&gPb)3I$;mj0ek57=o%th1ZqPof&B|H32Zuwi}UpAVJFOkmNuZd zuol#q1ceT)q{g`K6gu+<8nFhqTEKNFsAXb{Dg^Q)=x$Ny;ZY@;_TaP25{r_VGMuN^ zo9K#4LYvvJPKmB=MrKN?lBQMW^u*aZ(y}<D!3W;tp&vK}inlZkJf}-RZ+(XO7Zgy? zaS?bk3G5#wXk!v|0VODT>%mT!LOxsyTA)OOhStD0s6u>+(h-LBZxjs(7H}Yc2jnCs zr)Gf9Mn<$T#X-$<=<(c02SC|^4^OU#HlC0qKm*-qZ2_Gkc&`(=H2@g{LUV8`Y`_%K zz=w=bAUR9}t^hOx&5zW#)vVPiA?<MHlIflcP-k~Qb8E1%E>LM)oC7+5&j557I&2b2 z*U-Ai4s?>Xt}dk1&a_R9E{cVWA0UMT=n`mK+f2{}(rS5n#RXuKigXO&L6HY-t8(hW zMg*pxT&N?Dd72eu1OU_v1}6s4fJFfK>?T{#a6M|%9z1dfE}@_oef#DYL6aS16b3pl z3=)Qo-9lA@jx2+=*^tKuK(UmXhqPV}G`$CHoIrJg41<q!KuTVyjIE-f4oYHxb{|2x z64@oGplj(KL~4sp=U<{DRF68yL#Xh_DElGh4m2yF7WYVjSE7@t2Y03cywoWyP0cQ< zv;uiMF9oUC0_AQ!eA>a0gL1!OadJ^U%3aNn1Or-m0i6~u)|h^<TtGryCsR)a>K0I7 zMjJpT_7veRR8s>T-w(brP*FP*a?NQ@Niq6;fZC=8cD9+*tC#CY)q|8FnTf6xRPutP zLH22Y*1w<zI!p?YJ)va)NCI>#ydq>^6XY4h{B<>GtkBA^R;MJRKC>7pxHPR(^+0mk z+K}{tTHwJ$8+0KOa^gcvCkV%Y6ConCCW0=`1T~D+)WG&+<|XogxO%zyMc`A|Pp#CE zkw<8UM+C|VzZ)a8C8m3=(owEgg51MiQk0qsngdmWTt)|57y`Ya4tBV%4rFN;bZ`iI z^C4*7tQd0eS+NpiURMbkbf6Gdf(>*kq(TmUhfD)QL#!TjG8<@e2sCJjb<7afE=?=} zUAg6yp8}rOhYlQq&qyZN$$++^AjuZi?hXK7_)rfUi9r<x4aAh7-QlEzp8H_q`Ox|a zTs@)YVCbp>M7K{T(^k<C)~5ow#{k@~f}ZsYIgk&YjX^VH@t}0!0u2Mu-DA^hw&+Od zXryZDWY*MZWP;X$LQc-b-iFYuE}CwzUPr`IrwBAq2RdL9VH&t6htmE4pG%Ka6u`85 zV%H8jLKk8?W+SRdFCJ9WB5VU0k&-&SVT+C!n?@=~>-4pUbtI%g4uD_yg=9Bq_8xRq zt|6$`i5$ilYx_V8vk{eprViNLdPs!|nyy0DjP-IY(BKlR?*_i(LP-a9?=6H2N}<ql zA9@!7v{R@AO0$T23!tL9$@zKHPrK{#aDwGQr%+CRecfBKUe^)~Kr4K}RTs2yOf9lS z>jq$SoFMrabY}_rH9R_?vvuLE19)!B1Fgyh%|3%h#=(}Q6ir{cS%;t9HV@qCnEq$8 zjs!2FqyU9CC_<+DZqeajuGPt#UbIC=1!)))G+73n3I`=!oqSs*NVyLi@77b&E&?sf zNVHXg9M6d^QEaP}Uz7>EH4CzI7hMf>yi)}lG}B{t>WJv3>SZJr2ZJjaP3s(t71ppp zZP55J=#HyxI^xkvI@J}hi+1%O?(|7b15M*rq6vrO7l5ZNG<9-7-5jI|bENapK|a>h zL$bgHe6buv7-BrgoIJfsP|7aRfXtz4f(_JGQc%)P1e3*x-V>;r1?Npk9q_a@dfo)Z zfZ`4vl}tnwA;kcWpwGt@^ofLn-g>(KP94R1<gf;xdYq}LgXEvIG>uHKSMtGRBKYt} z#Dr!%EQ7%^KEm~oBn%pUfd&q&I)RUcfMVGOHG{ziWps5Dlk&?z7Z*TA(DYDrK{ZW( zw@XLd1au-gcmxf0(F-gwr51ra1il{LI$tj-zoaBT7qnO+zd(EX&D}aOLW+j4x#eoe z1>9C(@p?r=&06b3y^{O_h;p4oRNaYs5ar+*&|+JdW>D%tawqZ~#UK-Pa%`(h@(Zj| zq3IKpfHZX=&O#AP)YMLe+5jrgN^NsMPO-@ck-EiD8J%R?9H^`8V4l;4OQzXY=cJ~U zSmo=1C>@ZsFhA7l6xdE*zfVWBUJ0}yBQqJa7^6TBRB9=~ViR<$hem;I0W|y|m8XU# zB(zfC;-Gsiz>cy7Elw-YNdw!aYnuY5b@FOzioms&Qc`M8emQ9UXHAV_X-!R@y<(}F zT4J)ATArGkMy4%H-YU~p2@>r(8c>F<ZDvhPo|+m|iK4A7Xxo5B8pv8(a1`l+?S_X7 zWc8w=ZKj%<251aSbo#%II&6$e;IuM*;UOIf4JA#`lod1$!OC!0i$GUbNgI>}GBS&& z*O=%^Fe**gJgj4=hE)@^)JiRa=z`QmGOTH!Tr&ODVI3)?@)VLEN^Gma2NYXD5)0e_ zNGmoRbat_ZBIv;2f(oTtNZ$)}P!ZZVa4ap!2df50Rf%41W*(SpTcQUxA9NLcesQJ+ zsIdqtBtR{;vQ#C|G4LQeY?VOQDu8BCpmhaw#uJnZK+6O3ru!eoUR^9Wsw2k=ZtH?e zGj%W%OJf7=GK}f=$8<F6!M$&!77vW60NM>xjp(2nK<{*d^-YnlbOLuuGxcCg?CkTj zZA&x|d`+u7ZEbj4trl)Wsz!+pJG5yyJ^zG`3}U2z;RzjaW+hD>urP~_ftuR%yc0UI z@wSHg;I-oL+7{G$L+bORH|Ws^DnN6~)sVKlqDF}ZWGy#r7(mkoY+b!3sAZ3^0dye> z_7jI;2^4x;kbfTdK3Y5>iWs9s9-KgHvPOdZ1WB5Zf)=^C3YLSmR?(Y$phb4DyJ8>{ z3s4t9Pm?d1{_wPpybPi~0QYP_({8ZUN~zNe&*+G9LM+d-1#`u0Gt*$lIfKfjJiT~O zL%XI%3AP0UNfbJ-REubEgD<oPtx{3cfNhzvF@)}%$h1Yf=?%07L(vw#Y9G{ZgicC8 z8!4dm4j@IK(GI8#ND-vO07-)LFucbH5m(ZYf-FbO1YNCzHfuM1!+9M!e7S(AI0Huu zxM_wz%3uzH<pJ;vvR=FwL_7qt<SsP@9AVH{hKDjr!=*?s9-E$8o#`_!VvaL`q60L> zlwXty>b>TG&*-+!1KkRgTvC+domvUK2?!o?(6ohi%U+%i%mhgKG6EX}x_}Hiz@!Hm zUvh^f7$f~mLyJ89)I9V|0m*~a$O{M&i#}mviAvMgUe-|%P^yJYD~9CfgJvGBrUxqc zh}46JvZ1q@x+QwhnKPX{Tcv=U)WqUcg_Km#4LAx)+Ns(~3dtFXMTyBJsYUROmWGP9 zsh~5)wQZG(K~n+<OTd%E2-kqJ6?k?DW-#bL@}hbLC2b9GArG3$)dd}kUQh~JK@FM* z*VI;0$S+a=jR+uYE>^15LF$$xEP#6#I!p!82klNiYFMUJs{{2NB-B$=tkOya5hsg- zVmH-RX?o!`&?Z7{cvxsFDS$^5U|UNKLCX=LCaI}uq(Xh3TC0<n4_yq5#Zi9w3Q(sg zq~(|9r6|?vKxQN|^U^Vu*DFDa+|0amu*-4m7fww}1W)84F7`y6)2^eWrw_Fev}piZ zxPq=?E6&VI&q+lSL|hW8q^Do(3OOb}KTjWNd=yOw@{MjFJ#Z}$e}V1=S$_jG(+qM6 zWNZV(LK<cP8;E?|xso1a4>TlCLZlN*5)sS3A=03ws0c~$@=K7(piYfGcqIyCSr){! z>5rOqAh(pvzo{b$zOLlpO&wX#>Dqco)4d?Y&=v@M>JV8BGzNe)s134y`h|r$64D?R z+#G%6(H*7f)wgt%Kxa)LEP_S@v_?VI3ob1D^B}1cECtK;sPmPe;eDM<oqU}{onoCF zol>1-oiv>SofMr6oid$tom`ztog|%joeG_DoopTFdL0#=5S?HhN2K{`R}JXUU{NZ# z69H>gxFT(c1FwrmRB~zHgYVN|C+MeWK(-ZtD~c3oI@C#nv{7ws)4)AU$CSi^lKRvl zuvSogqiCC^2Z}s<B>B`L+YBq1Bq$2eBvY(V6@wb%(4{6wOJ+bT2{cd@mg>2rCg&GL zCzhn5%IM^3YU-rHiaMeU!8D^1WCnQMLOpJ~F|{RuwCRD8teP6Ct8Ag}#ne*<+HwTG zyb#nm$WF~eEVKf(IO=n9KmiU<_%$`e8k`O_7!)nwv3E#|#nBcNV2QaYPKm{-+Df2H z&=O1Z!3vZ#tuX?*9u&%$u6ER{h0gkcjL*!=EP*8K%=|ovHLh5#K~ad!It<(D3rbRp zbX+xSVfKMS16uNdQ(!7+nPnQRc?uN*4IY((HkCqBBsexuHK9fbs+>+XBIxS%kjh9> z%_#?`2S|AbEfh#KqCP|u>KKs6VU201H^EsiO%GPOYo@{1fI=16#)G#zf*W1_$X<@u zsQ^bdv`~a8_XmYCXh&-rsAmSMw5P8)p(9Wab~T#i$i`t<tfK<<I!d8Ox*@?(uh)YT z8O(a;;$m<gxTXePu0Va^TwIJ0Oav8Au;Cq;9!T2E!kRXb%!i~*sHu)AiQq(t-@jR! zwHSebUxzb13xQ%5l1MW1^Po|I61DX?srG5m);&UrZKf3#!6N8}$ux|Fi*5y~^U!5M z3oUih^uX<adho56;P^vVM!=9na58`;P;yKt*3{Ighs88}+yNG$i1<d9LWqJ>0er~| zOcx{>xL{2N$mW34L2+tMeJXgz6EtcFc-aM%5=acD9B^7tDlP$SWku||Nz=<o%u6p# ztWQtX%uLgOannJY$x~7*{L?g)bd@yipqmT*Y>^azCb&z$(mI~De$fW8)(A=4Xarlw zGZwPi6(NKy9Sd5}S5gn(dxB5}?VbkM=B1V^BqNy)+5e}Mng<HK{2~od%i9OZX*xl+ z2G&6~KG1H7br9^(4PRTI=%82~H_&GClA_9LH``?Jgm6G&eMyFfuV!sBXlpH~HwcpT zg)B&bwNCUBb5nf4ft8*LuGxHb5c<)yr|E$=jj5?YMtJowZU8P%EXuP6C4|hp($w18 zfO^;-IX6(;BDHagZ3Doe2QFX>;qEQT053QKb@aeZcnrsZLr2F65_U-Os%h;6v#Jo( zih){H4;l_DwsnHF<kD(&kQ;O0b{?WJhtw2I1%(!@AFTl9K{}NRY0)LIH8mwL6G7Wk zz!jZ_eso++seyrkfi8$Lca7Cg*Qrm{M2tw~X%vB0iGv0_K!X}3prxF-8b#nmKk!Zd znV@uo7~KMmKfp%5pz#h$wXl)1eDsEACTM{+LVG<_kFKG0B518gB517#s7$c61-k}5 zsurCXtEr}z59h<yc_bpO^FWdX?<dHxGqBIM0+|E9`#e<xdQZAuNq%TSL27-Gb7FC- zhNe!AZ7R&CP${SktovB3mzf92nK_zvx`y_d;KncH3N=_#wXKG>zO0n=^p$kb5-vy( z+%r(pf!Ch(pc~z+6b*F1=@z_~9#%QQ##2Fpsl~~O1*yJ?McJhVR;7B#TpdV3lAdbi zr~}!;USyT0gW1xyGJtiXky_4HOa?mOCB4j620GJ0!;bY<2GFAypv@YP^~L!`C8<S- z?k;>xK%t~orzADEASbaT71D>sstCNV3!xI;pv0oMUZDi0IwLhV)k+B(wn{qSQDiI7 z%wB#@S*lVkYECIezHbaX&Iu}=Kzp8&6LV8@z_ARPv<4MHnbAeDwt3*Wl6>1zy?E$8 zXqUv2M2-4P&?YPBIt$cZQa)%9J+)lH6+CYZ8R|id^gsv2K?_$wJ3KRsKs|NDG68+4 zKR_oOVqeY*>K<xV*TeI4rba3>H-eo3H6L`82e|#4sRp?LJ*_A|*A;Sz4(I?K6t&<v zSkTExpfPo*0h&6QpgapY$^|@z1iMu{-xfTJsR~_H0ZqtCn(&SUST!h&lr*iU-)GmA z;IS=&bk#te2(XBUPCjCDcqUS(6v>f@(hPc3OP*~sZ1JB`tTiO>Prt~aE6Sv%HvIyJ zu9&nfc(}Mg1NkH*a9haMcDmy<K2c`S%nFEsPzhT=0$L*nHF7<tuBZ@bzYWM;1sY1A ze50gkKOH3Q0Jj1ns#lWllV6?+Eds1c^uQUmxI{xK8l(WUEe&!lF^C76@R+`iQ&+6s zmXJbdtJfA%!$D(2FC`Py(}8&syh__1IUYd@;0^>!qqry~vk2m#lzi|JDn&|~*t8?O z0M`Il51ITya*wT2PDv4HHU=74@bJ_Dg}9io4$QT%2B4A-IL_)pYXw200q~3g+VBVp zAxOOmw<0yEG#!66ty2OXjL?9bG6Uy9+FwQxV-dE2y5>qciuDGd1@2IdpdpLUq8xH< zhb+DY8KSFOT9gBts)G0oBm_1WVLeC)q^cgPGRQP#Cb;aeP1Q@w(}NTYYHCV`dP<;u zpl~6?&L<;HH8s#NFJR9Ur-Du&f)-2AA)IJ~SeP6vbTsQVt)RgMu`}N`71r#4=*rZz z2JQYrDf99X$EGDJWacU4Yl51gkR9}iI(eY#uBJu<bQ~1Q$uUTU3aECr2iX)=0$TEc zoOq)XV|DUD@+fI6Ix*H3EDEb$L0W2ckjo788zey|u?T~1U_@1hQt*SPbU;SImWY8a zb4;z($;4V@C+C9->1fzqanM*KG<||c@epI5*{PMqO5njf*Z~Qk84u7pQBWm=v_PT+ zw2}u@-hjrMA&CW=UO|Zv8Z+?HP7`*RB5ZvqY|}RAurg5SW~M+2ig?(Wik@nq$q}7A z$fcu@nNFya!7a{I&^|;>olMYilS=g<$AM}<NJ56MR@bblF|dZYB|j%c7cK){(+b@X zjSvLii43hRk;4|csU)!^5!!tMtw;em8{~0#-x}13$k!-AaVsQkLN-|HL6#b6K-Xu- zgWIa`ejVtjB#<|t`z@h<h1d)USwycHW<5;YArBlTprgo;oef<Wi?}}<62>rHpwrj# zQc{aFG<BwLlhD;jNQAf+x-JOC1+akybpJz}aA50m(ESbx3Ha&}+v$Chx?+qv(>F@$ zs?|d+D}}fT#WK{9ESP7ZqF}2^(X4{l1dR>QXdBGyFiqfKfpWm{zzX%Zl&*?2SQ73` zNFXGG-DN#JQCe4oQD^!ZX<bQ1o#~7+x>C>?_-Z{}NoG*c`N-(XnL!*7UzD1jSzMA@ z1Zg1_gJ;b^o8ZAVz-8gW(?2@sDq4d2H_4zLNP2o|5v(@J%+Ire+@cM;#kmA@?uJeY z()x+%8)S7QA^YSY2|uwYGZD1gAO$oJr&Ll@3R=VivAei3FWIrAq$o3~v?LYmByfoe zv(5;zi%JveNEO!#a0!>Glc(pORGeB=mY9?SYFC2lN$CDgP;Q-mK~9$)X{`mct&<A6 z_ZiwxO9d|x0u>YxXJ)2=>TPK51989|41|1MVs0vu3J6ylau_PCd~gPzm};bH1==l; z=a^cQSdt16GttyZwM~T`8>FGHVO0~OR}&Lm6BApbqp6>+1G+jq)fQGZ=_+Z1ip}Xg z3c6ATC`~rdR3GRx3&*sQ)FMcw4lA}GX(ZKlI-8=dqB%H(QBp9t1+SzD+pwDoI>ZaK zzC#Hj0X|eKbNV_(T?uU@D?vL2Kt({Ft$rL>p_PV4w61ony+*Wwu4Sy&bU`IuEzlG@ zylY@<3tcz|nT-ao1p)OL!0S;oN_3QpODc0xl@Lo6!42vn`yxmc1v)wmMLBe;T?sOj z1LMJM$+Rues|T;Gf>;1r#08DxOdDGRd&tTbt4wVr&=ML@?;2u1+yGD~8IlGd65ul{ zU_(ZVwxIO}`DqHUb1uLqt69T3*on6JpssLzW{HN9wG!x<IRl*>+eB!$+Pc^#$GTYC z)(|o-2HAX#NCYv((1=gAErlH12-<KDAO5#ZR#Qucnq+5d2wmNvkQ{9o3maVk)pZ~? zM`=->0yxD4sDXM0uwIOYX7%(2HC<`Q!Xd;uIA}?PD0D%qK)|U9Qf45loc=~lS3(e+ zoKS@2)OE#$(S>VuGN%{n>5BNd<mW<46hu;j1OjA}2Gl{&$OJ8ugr3O?9gH<XS_up~ zeDb}zu53N1OiCrPOoFemMYaOGLko)yC7RVp=7LozfexsH22(t^oU&!io6fJPD-HHD zvP`gT-gF;LT?sZ&U})-0uh!I+VNz2A(+(O+`FWteN@`I_C1k}bq)^j?7z)X=MX)n> zd`n9bK|@lIvMsf!re?a9mac4lO$~HJ%{RXaT@AR;rf6FPJLV@JTrPsv6sMLe6d{i8 z$kVJYfh?T`ZJLEzuY)cW3|_wqYDUDv4ARS=9;&S?p;ZmaB#@#SG-LuEcJj$AE&*|h zOOrr*2&@zhYc(~krVHrkDuROGp|-A)f`*cdzb~km_svhqOv?oAH%^6mUq{hUQwOA4 zNgkxgFFz&K6MUQxlA>UQB1M>@pj6PA6DdkMP=ml~G+~L48`MpProQR_nSDg9Aju7> zDh8)GjBDn>LvG*-4>W`UT6hjl&B{nM334LV0rj0r^3x&90wBo-x<3k$vq0<HVQP@F zWvU)T5H^tlT7nG8d#GB$rluq125?#hi$d1vfD#=vNrO%!0a=IaFYu5e_#j|V%>n6D z6zSxFSDC@q+kn)-Ju5OjN=BED(H0zV=FotHwx~!7HIeE0hPu2^gUlcX!5Ta0t^@^l zHIC31VMmTi8Hhn312FbWluTb>q$|p(H2r|PuDBw2XC^pwK#IZLZ=_(<tS*5q=LD&S z?Bj&1PR#?gE3hk<G0~M)Ml~GTJx5aybqq+o0;>9?oYEpR#n7dt_8z(tPN<3@GsuYb zSD<aTda!M!H8qG(gYKBEuGQ3;ZfmA19-oTP1kU`h_y*O~pan2i;0>pc)oFP;V0*x; zso+HbDBvK%7`wz$HLJmv)DyM@x~qhMJ=v+11x2aF#Yo`-ZAO6Bj+JL*CTCcKj_UF+ zNX^sGw9m7(wJp+f4X$^tse!OV9Gzgy&;ZaP%EX)!@6<|r4d|$l257HFK@oUsDfHk% z4NXleh-O#65Z54(Qj9QyWJe_(P_Tj)c%tdAhZ+zZ;OOiMvK6|d4Xas@ERWMHs8OK- zST%#3o|#`-jH<o91j8>b{^5S$fi?`k<fT@WplV0ft$`F2u#g0M3&w#MoT>*2SWU1U ziJ)AFJ!rv23Ub37T#dq;`^XIgNXCPnJ_uS{qXf-TDM~uvW7z8v0-zBlQ2m6`wuLL# zgjR#F3<4dd1!sR)KOY`0P+j04(S)=<;c~Ddpc?FrdUSsTLn=IkC%|JLkcP6NA?Qeh zjLc%tT#aH$O^srSUP)q6dTL2cjgo&rh^N0Fbb<#gsF#<YlIoY3n+lP25AqKUK$ouv zD*(@3gJ&#LK|QY26i|g(3`%v0DJf7MtifmiKg%xD*1$T`23ZGGjddn$h7dGPg)kyI zGuApETBm>y#LlyIQ#8;7Psk~NIx*nN7j8FXrxnC4P?N!Hd-6a>YlD|bD1ext6`$a~ zCAb}jbWjN-hvDd3)}jtKL8Aw2uxIMU#}}6tq!z`;!y1V?MYh$T1Zo8?8#D9LL32O# z`NgSLN}v=07Jyi91?_r)g-Y{af-n|HxE2(hkVD8ohvb14G1`Jkg%Z%99sF?3BGAPM ziMG|C><U_|nF5-@0reKGN+5^Uqy~Zw%0p~f1FcEZ)JXsDBv0&D7nEYpA&I*{YY zYmqgA5*?`36Yr{veC8W;nHr89Qd0wN>BH*~$Y?bvJW@5Fxd0Sq8k(R66;iqf2_ga> zY6mQz)zs93Gch!RG?c*g1~_M-#vs@poW?-2E8G;YYAmKetVK4aX!-(oU3qBbuL3%4 z4S6&(BeB>mKe@CRS;zGG?z#$$O4C7gt_8XVa0?5e8nnj{ROrCW(a?m3;&f;&4>ANi z>H$&(cRtt@u=CNv5>mQgnvWV~piz3z$R)J#k99g7JQJg6TcW0Bpaj180W$Xra-MCp zB4~d#s8C9^RRj%YTca1IkWN2RB!k+>2xmbf8M~_zi_%MTQ}arSkup6#mx9MIOKhWK z*`cG((?2-qD%FF|xht^+?QtkUO(|uGIS7}4c7;PvbHwf%d^Ur_$ksNsrp5r2bD{2q z<g)2@{<>n|vD!S_RM2t`P$L7<P6oA-HS%mhOPUKb@(_(Fr1@9yIq9IaC7|{@v{MKh zj{zShm!}CUi!`7;T=bL%+Rv&{lwXPPD>T#*y=~~;Q_#TP`T$7h5=3VZ>Rf{Ttq2}8 z)Pr~DpcN#Xua}ZpoSdJR2Re=(>I1kOc#KTbYWl)JT@_G&Zb6`~sxp@T960Mkx|ERK z8b|{~A*h-_^yv@^!Cf{Tu*u0_6F~~${W>&tFn57l5MW0^`buCcgOLQ_VV|FtrlAC_ z!;C<Cc|K0m7Uot$469FX4AvDER6-em*VNRRzA;!=ictwXiV5BW1kxw2ggS_smY7ov z8pQ-D7MY%J<;z+Rtv*0jf!z+uN6>L;^l1i2-2&>Yfug=BzY^9ifsJRQYk>8d(3K;G z{%yevxgcQzHy$ZiU?w98K@A0qpyoTsi~w?Sgp?p9sE0Jce5?Snus*rONEfuQ2YdpO z61EexGV}8gM`t0QzXfxgZg~-?n^6Qkgdig`B_%ZvaRdQK3+(7E#0gB$ecPr=pov*X z0HBr+nMI&UXmFe$GL&s9SSh&hhDRO3{h-}@U>zt%m4H@6fDB931I4a}5_D(@I-mnf zdYU?*fjE>IFUWMGE_j=Jc}8k#4rrMIL{KTV9&5pZML#?>Bkx;)n1W(7d{=>yK4gjw zNdUeK0z91tUVK-t0Y0YyG@S+=dITLVlm@$##|Sdwk!c$ZZbK>QfLl(W)fLd>s1$2m z0-93=C4=M=BSgA^6xmAo;F~VsYwt8tLFI6DEqq1O^l&Qyp&$*2HK6%2lxfyfO>58; zR-OiUc|@@$XuBPxGyt{6V579Quu)oQm$67E-*&n|w5}?%p{Dip04o7W&_Ph3WSj?C zXHg8>%nfz55@b}|);16KtT=ePkWP_pUUX_KXm@>1rA8iT#RX^@8g`8pXw3*{c@ik~ zSQXWlWWa8Ho6hMN&OiNstgd*yl6ER$nFeSC7d5=$i`&5cD?~iN#X*PN=GAKIR72Ll zSb>gvOUukl)qyU2u}am0vTAEJG<87TXDD9-G}l_6T2u*7O7KB=<R}EKssk-_0rh;~ zLssBKqFJ4%VPXLrw9L~m)YQn+Ff`EA$<r{l)YJj570@lyHBL=QO*2kPR03B(kQF_k zll6;ji}X_KE5OWJq+}18&IK85YJhIEA;@SGLxj<$W@hHe#)d{%jmB-Vi6z|RdZ??7 zz(yM&8EtG}m}q2dMxxQChH#^yCL4oIHbR)3l4_7*kZO_&Hn~0rEkJO)+SCZ$XcMr} z#t5TREt4$_j14WoMiXUneI6*NP0Z1aHU$}NY=JP^$jH>(+#;FOpf)u|H`xqivWW@Q zWOLmz-Ly1QGm}IM;)5DAT-W&0NOC$mi;qBkiJl7NkSFNME6_;-;4O)1dhy9MHL1|{ zr9vL)N~1C*ooEb3HDs$hc)h!oQbA%~YK{V!)P<IiO0@`G=!)y}Qgd`OQWI0ay+RCi z!Jz3atLl`@;)0ySN-L$boK(=|q*<lKC7EfJ;94d%uSCg8skk69IaN0)wWK^1JU5z{ zlbN2U3)(eTtYoE>4C)FNffm|<oDZt~lyss?^y14j7?q|6{^FII?t4#2e7dqTpJ=3# zW-O=_iZ9bpQUGly)KE%P(m{20BDk>E&B@HmR?^AOv#L(c$xP0+Dghs<=3E3mdmnVz zwp%{v<Y1^xP>UA46y|0L$<I!mzR`hKczVKLUY2^0m9ZGsrev0(TMP--B+$t{wK~zD z1~}+;q3qN=SiiwOPeZ8yU01Gdl5SppUMeUaz@Ao$$x}cA)9s6SIHvn=F*KZB%%Ux5 z4|0xGiC#QtF)2hnC?L>mvNHhLRRS5?MG2ni@~?#z>Y<k9YJj(SBZX!O*!emodht0L zFf$S5S1N1|B`Cp_fKE2g(@-i&fqMy>Ae72di%K$+6LWOI5v^pUl$)87k^^2#365AM z4W;Rhx_n9kO4=oQ@t|8(K;s6Q+F((+5Rex^PC!I5iFV{+CX4BY$Au;IkP`&Fzy}W* z7p0cvXQzVB>#41Ur-{VvhPu<4z4&BNQ$nq#W-Ms^6DSTqDFZ!8Vo4jh`6-Dx3TcTc zsY*Ja*`;Fe8Td+IVO>ZT*9Gs;QqqC7+^s<CVRS&pR#_>fWG3e1*Qdks2rdhB!RpdM zu?s5*P$C~@Uw&Q*C}ToAnyX=mmZfkQU!S83P90!vY57IDdf<ivEOkTD92UKaIjKb@ z3Sd$<B{45OwFu<E6216b4I?z0lOSsWkrHGnc%d6OHR>YSi6c$sWWtILa8gp@h9xjq z+5+ch<oH8PXCNEksTo>kg2Z$)@{2O7Ko@`Iz~c`RGay-|T5vg2T$+@dS%O$=oC=z3 zg^rHF#;$!p9xg7)FM=mE>=6YrRu^)s9He}PTqK8D)J@NSEhG-h%Vio$prKXFyn`i1 zlJj$Pb5nH9K=F{Lp#)xW3tH%sSp?dqQkGh56<rO=kyfAt18T$<C6<E>w^Az8&CO2% ziIgSgl%`sh=%v+z5&}rEPHF{sUL!L<&q@j8em#(=Qf;gbN)-f>0ap!0`G~O0OtDfz z&IP()tva9;306v=+uD?LKq6L3AX2GTCnY~OpeVnf*s8j$9_A33J0Ot(_7hrMK!&FE zKpPhGL7SXGLq~cb_kdjrIu9K(Obzy%W^HY)CMb6!rH~T6;^h2-RFo8Nse~nfL57kX zeZgR}m58ZokRlLTR6`twBU^x72&!Dc43r`PbT4aaa&}UF1vD{06B<Z0I1H6^s-XoI zBsP*W;K~uP02WM50adafPk0tP78hrx=cT5AR&%CkLZSpx52F^lCDPzoWw6(wYC(J1 zAr;$nLj_}r=@;G!$?(DQv0i2hC@U9!5LUxqCL_ff_8bN&deidrL8lc!@>o)7NlAVl zdj3x;$x}!w$%D6-VC6SBIO>&Pnjl?*l+5DX%wkZh25dgKz=n7Ra%c%g<ifP0M2Zs3 z&Vr)M+{B_vc$ovX6J{kSR3(v`H=t4lsqzB1oEE$kW}D9B#Rodj9h8_Mn7F{fRb3?} zgYGpWSY4skR`sYJ1cwfp)s-=*3`MFUFcUSX*h)myR-k4VC!%5i2Mqr=p~UGyzj!65 z_k9xrH?2f<F|%F)c;RlIhEj4qsOAPYUNpc>mXhg)#|%Z00uo%GnSe_SP$1VrOTC~} z&>~N_yke_p&_V-=OcI*(C7`A^q)`uVY-Pax0V<F&U0jj@5{uQW)d5>aat{JqG=ZD} zskHMnV2Ka4CV~x>pp+D#q+Oq%r=SGwE~DoS9hAXFE69pTL;^lM9pn?F5YE$3$}mCC zosfhCxkMG*Faafu7<dbMdh{<|f$0lg3bRkYcfycu`ep}SL2$vr0WusOOhF{XN&zHB zK<Cbbrr98ALMc2WKfj<@5o9XF$<rsEG!$n8@kgTq+?|0$h3`Ef(dnBUc!jXU0#y<# z1tq#KO7V&#)glroyhM-Htc|Tj9p<5|8;_a^p_M&oC<uH?r&Wm_xG^14S&#~;xUiIf zU=^TA;KbtMdYBGyixyOFK(v7}C}w>Jor%QA%K3TFb}pnIFVO=Xc>-Rsga{IBc{Woi zM5j6hvuRnJkzcN)gVeHw2!I=3R!YUC;93SWnu_o(auaiU;6Fog0rckO^!9&-^7Trf zMUkKZ1lS+}YG#EL;CkRf19XNED3d}mEm(btUVMoLd_SOOtd5Z;sGxwfVv)*oEOD-v z3L4{@-u}`^n7jcT)R-^IFNe0upwUTcIKpFIuPn1TGbtw(IRur!hQee(AqkChusA4n z!P1Q$C}V({8&=hzNJnW_LlYy+7|@yH@bpkp59-~+R6s8Z0(G8|LOV}G3DS*3G&CW6 zs}jA;T+j%rYf({tQ8A)f2paFm(}2|RNSe~pQj<%pl)!!LS{-mV#fqaElAKDWZ!8lQ z7S{nCH<y%{oQ>)Ouq3}N=vZk)7iRj!C}H7xa03os0}@&{>J;bXmw>xViI5R9czsD^ zmE{Tcs)Ac)PO23sJwnD5>JdXASn@ce?gRJ9QS1kcK(aU%T`84$iMg4{;NG+@B86d5 znVesr1L`N5D1eHfieg<uBWQAjb`oGcgS7l2D<w!|>4K69IMg7`UZ}sosYwakIzo+m ztk&j$Y_(8G&YxZzCd>}*;pQRjm4I0bowTwl(F2DBG`WDRDuyKhSo~wCz>yR%)Y+!i z)}v$^bgRIA1>fQUTF;C~kI*GoDOO5KI*>%DWS|7;QtB9DbOW#i13aEm^NVr`MHD#1 zNQx)u_7-?voxWedNK#FSs3@9V7zWN8;1OY1FA+--56*-rWjs^_5+Ja6gE$3CC_^NW zN+wX^vQh%~Hk0b}D`2An(4+@bjx;;~R+^e(1zzU>KZ63*Vom!Jz4%PfDRZDfIz5Of zkO>_-T|;>4f`~&(!T9)OEBFp-(7F!jj2krhK$L<HtcHv^fX+i#EYgFz1~j3E>YzO6 zSs0)l8u6JLc@W#JGwt(1hjOAh%{C8o-b8YJVu=Q5QcY9SD&J1m5Il(nNt_VtZS(Y? zmtE-OYl3xvG(g4jwGA~jp$pwmL&G)`Ht+!{f^e2V0ma3z0uS2eLMeoxV&FD8#95#U zw6r)RwW0(xIE|U&r#FZi>FOv!J5I2%WYFjjd>k2crY|_dfeV+C>3>CyWHT{G!*O;~ zVEt;?+y_cu9@e#iL@}h510SsbEk*{{6ZI%HoRV{5UUF&<DBGZxYuMXXF#ECh>mdV( zXsxV*{Nj?}#IjUaMy=OS3Mc~KEDo|1)YU|_7&BazK&5wX3ZnGJq69JigIy9n@|#x= zood3`QUP~@(dQH(CSoZbAPqhoEkN+b?{v^YX;{+&Qb5!f7lTI_3yShlWI?3_D1~Jv zgIl>)Fkf4uC#ZtN6wrK@F68`aB`YN(1JHgcob@Fv^b8?&pD>p3zUh18g%#`3Ey_(S zO3%#GEy*uXvQo0ZYX{6Tx=D#e&_=rzQUE~j&jWi*2fTL+Nj5w)r6fZqvBaRHsMx9+ zGAa!-4`duD;ecw-f<(~qppc9MZkA0iEaDNV2Q|k)sR)7zrX>Omh8$4M4eF^tq5_tQ zVPOsl3uB}J7r{D7l^|mzQV$>X0*wxr7Jv@*1Z^Qk%p+mWT%b;0rDf)%A{|7JbM^|- zg$MTvQuRQZ;tLW>GQc5&8Xll&C=|tzG3%80#1c)=De)N9I)(<2>BX5<si08DVm5NY z#RCaKaHLyJFH98%g$QCk6J9cbr>{U+$rn_8q0V3-l@zG9;V+(`vozpY4Wx2VFEc++ z18g1S&{t4n6=ol38Ubx=W_qE#k+{ARWE4GC6FlnzNo8OXbf6BjtVilpfk&+pNEnWR zlrG3&1<U!ykPHi&eMTSDoh}zEEC+8_BIOJv$eA$;&}J*hhkAN?N*ECfYxF>SOrR7B zidsl2Rf0}jfJ9(T6cD>OIu<q-20G_K*Gfr0u^>~w%upZFfGJke0gbH|ltAV@^plIr zpe;snhVzg|4-un=ARl3Rrv#w@GDDt%U5z;;^(zHuR;6N90qQAZ=@(BYeMv(JbaoMY zTS1BF3Ja}Da)7KFz>;bpy-rvO18&;lE}Im<Qo2d`MJcI8pgnv@2?5n0a04iwP*DZZ zgEV~uTBQcv+zXmxN1AH~ML~TTWE8pxtsDVQ1|e-!N<}j!1u}M-1RF#Kmw82++DhO) zCsGlCVG#1ne{n$+T3rHKPYiMj`nU^dJ{L58QVSkMK`H^DZ8lt^<P?qsf(J05GtQus z*bvKCPzQpP!V`<~K$1xLJ2*c#Rbl$oU?X{M@F+4UnUgVsi#_*wmZau_3`7cPQ0yXd zA7rcpqy)>LA~R*9iqWtI9nfXrNE7y;**+{;0=%LH*K(nHwBjDJxCnW<5V)<O<XBn) zo;^=ZQE)5(U782p_*)F}BWf_<asZ<3sR3Hn3_6+`)cE8qfi?98)tVM@_*7+b4(JLX z@Z2(J&eBnrPc9kL*Ptc>$U7yO$*|TEzU4EZJ5<o8prJJ!s9-45P?`>!9F>K;0x~hI zmzAHHr=g^ypri?Pi&8AeEzo?3-qj<~QF&BaZv%4q^aW`~?1)7-`XE<=+6$P42i8GZ zaQlIj;sZIO!b(|0egqAcgIs``Qjw}l@XR%OVwQ(wYVcSJm8S;C$*FiUYJDEI)k4sO zNV|o7@HKAJXKEPpPkSlM3tHYMXoDHl#4qogp74N2gbUQ$fs{Mb4U2iiKvRE0_27aW zJP8FQK=yzV6>78+EPx<u`XKolwg?2&J|VEEj}0;>Io*DXp(d+8s63qR@PJ3eSwTSo z<Pc~cL~;vgBQL1zfY|{lsliPSw74Xx=z}^Osg;3TtHY<5NnX##3@UX%#Ty^I)PXG1 z0L`?!gS?33H&E6f*#?*em<t9$R)80EQDg<S8U9qg;?(4#)Dlp;hCun4lWJ9schMu3 z0#XUbI#twuU1~}u=!T$Lq+|_RI5~X*lL!lF38h>ZD0m4tj||s=mrLs7UM>mU5&`S| zL313)X{;`w3qhtcdhyAF;{}w>z-2cynS=PKafKz@fd>q6tv`Wux^*F`8P9sjbi%VY zG+i&5Qx9*sl;}Ym4O(*y?bl#7!l11HNQWOXIR|aSLi^*et^~2GCN03rCNXTrk^cv3 z?Ig~DH}pkxqDru7C*<D#^bO5Mlq`ZYhmI1!dh}SvDWQ`VNCTBn5!f_Fay@uiIXHGf zD-<CkmBo;ON~G`y$zhCBg1rgaQHEndBqW_<u82fl1z8Vw393UNL)qX<=~1RUGt)E_ z;Y)ck^Ate0HJ9kcXKSSDWv5m;=clCVC_z@`>lhltH!y)_8>~z8;LBGb_XU9rh8|Z4 zUhxW<@jzQ;i53Xh)>@(#3Xp98s97Q-HK#x~DJMTU8x&`dG6%BMXL|VuVTI`dQ;qbe zf6>+!oG#$WC*TJu8PUr|ETs)N1_&;;MN4NvsgRVS5E|qIvI*7sSZslgBU6;#V2fRm zg0l$f4qRytCQn?tgG{i2=3HO{R|x$&Df#vAWw+2(w^$rP%QROH+FhPkP>R0Fnoyd9 zd4ke($Aw6E;BMCR0B#X|(7p_`9RkExa=M6lGUUNu<Pr|P8WiuWm5x$MVtq-XF8V4v zM9TrbUI{g+;vWjeK2rtN1Bq(L2r;N!;04{y4XLF-EjCcw4AcOp`U+G~tB8pDA3ReC zU%XL|5~ko52E7)bmguFXWY(8}>j%h49|g6)3EJ{k&=?zPj3Vus0EHCPS~burn$fyH z5j1U0jj|Y80;bldWI|#VRJ)^;!tlTc$q-lmf+i9`+MuZ$f2|Lx^y|T?3*iJvrlfM6 z4_Q(GYVIQ{eegazjnsP3HW#b~Fvug|#0T;}rA05I<b_oE(4M@4!t{m@!r~*S?uUme ztWv|C=3uhKr8@%kKB(HS2XD85rFvMRhgn1WR98=AwT}@#R7!c^Q4a73<!Ggk*mY7` zz?YI(0$-h?0o_P@XSNY|NKX{JA|BKnf?#S)_~0M0bq0^RD|otKHp-EPZPCYdT_Mwg zNGgKCgFjdeL92jAw_KEIzz1{{6d>#T!CNjqd=X}!ZdA-8I=b5ec~cl2H@+~5@X#>= zBtY4P#0d}R5eDG-?9?3SxdxiB)xPlIZs?Q*<X~<kLjwa<aO)n+T74`<4AP2(`aH-f zFq+j$rNyZVp!?F2OO&i(qpk`?ptF}jhnnbtx(lhc;o$RgKqp+4rrLszsZ%h3h@_;Z zr4|*Xrr1Wug3tSc9rs*RSzUrSi?{^TI4Vjl2A%T_I>uH9v1$}5l?6JEszkFE>2fmA zu_iEK#I0GGAct#KgAU;<E&;7N%uiDYD9X>xEKY?SY*zr`*p@&Jc!Y65r^-OpX_V;I zgAc$?g`F)48h1*q0G&z(4}pA82q3IYMCF2RIY2C=iUhj}p*RPm7`kks#2)ENu(+6F zt(ur(EtPu6N#IsWN(fz``veeXmZ+&g!Wnde8L}BM#o8+Rp!4IcO4QU+kz_zV3`$LR zttik?iUwaq9jmRPqzO@quqGMgxF96gp<cd&?4mS~QWTY-OT1v$^dPG&&?uR{=7G0V zJ;EN))fv?g%}TIP1?^+0EJ)2yQz$_w%s{dQG`6N_3p(8n{Tv}=9c4&5K)Th`{K1C~ z>7`GfDQL{6T%u`f3l%9S%7@$&fUqweq<h+TZz(mWocts;HI$?T5<)1=g(>9*HQ+(V zOslDtOfM8N7EwbesszP8=q8e~#3F?v+f2|Es?daPJ)N&YLcHF_$iB#`NUtO#HBSR{ z^f5wj5=<{7pcG(NjihKm52J&g{s>B`6&fXa;AC5^QkH9#s-ps1_zyZ9s6?k4nUAm` zUZbQQex|=p5opnMUWrDDCiu9}JX-_nJR8_W;?{ZE+M21*b1I|rVs%PDM4l$(OwY_T z4NzEv^%a4Rz%0>>f~wUi0-rAp+E$`b5?ut+SQM*M1Uqa<8#(SOKtT%itv5tJ{9r*H zL(S<AG<`(PoWa2YI)hYG2PvhL6QMT@c2s{J$c?F*@Js~q3}|(DbY84&YIGiGB_6Wb z*+iIK4|bO(Xn7AJfWcy*=!aPh4xCiYJT*0qGL6*eqFBwEn!FMSOVb`ErlzJ?1`aIn zxw@b$(m-d6!qlm$DS~1Nq#5kyqFCGLSj~DJXRsC>kf}O(nwnM+-znPKf<#~{L2RUZ z235d;3B69Z$TmcyL{lddbTU&#L1JEtMk*|t6!O&6^1zo)!cV&@(kn|WD%RA=gm||; zGe1uOq#t}uW2$YmlD3kLk}~M}9wi+meI*?wYb6~ednFwuHKkb4Y3Z@hY7L~m*eVay zMN7;BT__K|Pre8~^NLhR##C!W$Hi2~)W&LS#?;mzIQsSJh=H3D(B0nP19CGVM~NkZ zkG9h(2GvBFX&SnQpiqI|A_%$zF|o+8M8iN66yS-rNCG;UwwbVtpbRxNbuvL$JY<$= z=<DdGYl2Qja7|3k099twWj=dzPJgHC!&a}a5glh0qZO;AsbOzrr4f^&ty!ZHqot{7 zudkO{kqRngt&5QZvsfosqev%FCpFqIRwp&uD7L01HQG29bVV6hnFdG#l(Z7n)ReSA zM|&nh{FP%13Rg&uQL+ae6r5<EQ*W!Jrevk03|6P6rjcWtsHvj?x^NgaS#F<brKF^( zT?|?BlA{T_HUe~O1XMstM+q*JrI8P+cxxe%42t7mNRk09n*$YUnYN(JqmvH}T1Sn{ zdQCMoC6MKrp!-xYj%CZNsZq)+%}q)zLX`L*v84R`oYcfTBtcD3*q7u7gD-5=(9|hX zQ&Z9c84S9k4J21wngnW{<fUsE=oBOt6{mXUm1q?C=@=S-?sLwEgq=U=@;)6`jZ{th zJn%g(nutP6NedKaMVgL9MTwR0y)T)X_L-nX&Y)XW95ts4eD)UAMl!4f)v#JkD`<TJ zx|>QP6QaS>Q6n?D1aeVkL1}S@2G|*(^MFe<HESU*0Hu6|L{PvHv|m0E;Tf<2*zDwn z+o_Q_-B;UKQmaH0e3me>{Ya;jg0{D4LOhcXR_~mrsjXzIq@4&!7@%~ZX$49+uuDup z*M5S1gRBC47POKzC?r$uAqE+O${$D?sHss>1I1aYnwpY5m|?F3Qkn@jOG!!73ZktZ zVn4jl$w#C*N2DScUa*ybE^i0jKyHgv5x62$LL3D;X<H3sC5QpeBuJ|LA*mTs*3^S; zPO(+ehACDCGwic8QZ=no^FRk2ga&y!=jRsW=cR&5V@;hrdo1D*UudUVr6Sy)g>aQZ z39Jm!PzBwa<EZPFsGAmBZB#qG$G}){`dxJ&u6liBDSf??)M8M@3_6a*7H%V`rq(H` z)r7{D5>mPD0`eB5jL3r?KweW*U8|F6TLLY16$&&;K&4%#ZFOl;j#UXL1107bTY(PW z&9v35(5SA}ae>|4rc<N`YeDE_YU;S?f$z)(O$ru+vqwGDuo7D&DNyp)0k!nh)HL#J z{WMBI*J|pil;wglfKHx9CX#zWvY^%vv{9%4YZPiA*8<=+M4nC&=%8Xm$a-p&=+uMt zf{LReolILu)a2Wif$Fb#4V1;ciJH|#wiz0!(0W%>2UHa&+U9A4n#CIVH8n-h!V$Fi zPe(CNO)b+Ne5I8}DtMWqPAa6MqiI!S53)H`CsEU?q#kqxyGA0&VMv||0L3}TQK{f_ zgG-V#H1y+QqHE$}sx|BtW2!avK_@a+D@7|=>BoZF?bS+F`n4+h@H?(j)ztE$K?{dt zVF>`?Z68Psr)q%iG^huU=zvm3iG6N~Rb`2$CMa<rR0ly+Luv{I<npRSQ?DpBr8GGe zREa^xt4lyF7O2u>jZ{rrTiaxfJW%mjQmX@Mg(LaV7v#rG)iltR#)-OB2D+9py2>i5 zYU*0rdNFbF2{m=G`k;G$LCJS|;9YO==|{4R)#?#9K7sl}2zR=HjDuPY>a%1bTm?PO z6LOOrXpMeQYGO)iku~U+xWp7k@UA&f^CeF&KM%AK266bPW_79tNL6uZPKjo1t!8an zeJP}op-_lqA7tqoXqXq?GJqVcq*+q~ZZVXAH+dr@vx@WckTabV$S`PpXJi(GGhCi+ zQi(<?IMu^4Ub#kz3|KA|k*S<uIZac?Y5MyTV>$4_`0!liq?egjl3J9UT2PV?I#ga0 zny>QoN{c}kPS=7?RRo1sIjEG-g!Crhc?kK8>ilf`5-U(Q1lD^-YBfO$!J<5c5{1nA zJa`Wpyx>|*4b;okLDq?s3Oqo`3zWSfMNTI8m}#&d^FcRl!XnhRs0383c<4bEb`|U7 zY3jrypQfFslc-spXIr6BU5`>ILG-0+*6M)ns{vnPi5$HU^EEQ{R5D6R3TkScG&Mps z@<2!ILk=a^1jV`zQf(3naxcWKpyCl?Jh<swU29!jo>`Ktm!Xjgoq^P>PEIUNRWP#3 z1Rn|xIz%<vFxEP$C^a$L8Z2dKHGNL4v9x88UT$hhMt%zDN)k}Eh3Y_7YG4J?2c4+4 z0-p-2G<|-Zu|DW9Sg4iSpmUF*C#oyKT4zOipk3>>c{)XU1&Kw8xy8`ngmFP7a}gpd zRe@4tm0l(&B6D(5Q$Y8If>MW0iC$?@j;)JMi5@7lY@KvK?d#(FQo*9+R9g?75<Tcp zh;8Qdhi|<_>oZe}HNZRVAf08MY86o2RHvsREir&6og@vg@!$a<Fab~FAX_zSYjwbJ zWQ9jN$W>siU_!4RR`Y<J3pN2XT2xw;oQlg7sE3M@Qz4yV&|no<BXqzALmwj3!ZIm5 z^W-VP{RYZl@X*o71C{omjli0<(;e?KiK(XQD8<L87W?L>l!6!FL*^b84M3SwFGV9& zM=7)@XZlA$9}#{RgqTN3NdZ_;*a;yRlv<n*@*r43-lJC2T3<_%OF>JatTa^@=6i)Q zLp@_XW3K6fs?HMAn?4x{O@CPBD?NR~CnJt}E(I-pE|9mvZH=sp^omkJ`5lpG5JdvW zQ%E<1fh*EH&^R0@v%!Wdh}8%wi)wX>>h%(Ha){Lha%QHj0i+KBDTN^y7pSSFYUCr` zh-+(LoroBbNCaJ`2l5(p=n!<XEv)3Lhm`N2t$2{a0i{Ke59;R^>1bqvOt1wVxr}UI zZLLP4rcNHH+oMyYSCp8XN~}j<z5GmDZ_qU>@UauHJ;*N2jD?obpy006tOXB`hS?S& zE?=+?gNOZeM-d+>u~g`2tF3J~xMy1e8vE0n&Irn(&<v|koLW+nlbWJXo>`KikXcd; z8Z1_VoWPrBt7vFlQd9}<a}<FF(MrH!1s?MOU%Chq!yH&sQ^PVqR|L5(Ax{C^5-+NU z4AqpNR3&*eHK0LSXxxArI*JC!2LNeSLsfthrbY==0n!jJG~Pf~XrL<9tc3-J0k}CP zlT(^%TcVSymzNJZRaXO))j`1rGTD}3=y?(dJ(yjFV7std1+f=$O<KKmF`~@^i780T zDS~1SltMrk{z6B_p~by5q$&b66JcZKdc_%;X(f;&yQ2+aK?fy(1_wY@kWs8ozAb2c z034r?`~n_{x6jm2f;Vjt{pdV<=s+PTC_!WMuoi3yjA01Q17I`M)HJX~xP7KZ5hRw; z4AHd8*MOM=j=cJ0&`4l4XowtCIM(WffzugM7J`pBf?El&0vD|u0^LJbod-JS96W^p z>HS874jwPk$&A(1$wNf8CdiKD#FFF;kR__nHY~i<1{MBbCuqQ&4%#Z(sOTe74~=;> zH4W&EAy5I(sp^?%B^b!n&?E_RYNiHMEl3$C`GOiJpw<yM!GjzEbq7v;MXB{*waA*m zDHdM!fNu1Gb%;>ygcRpUI#CNL+;%1=gNkTS&1GGdSYM<NVT*J#j&%gMx<qn3Y9PX9 zLLfIt*Xl%ogB3|RlD#FM8)ZQw($HIcpn5^WkhajF>XLfU{WwqwO--Ft(B)NFwScb6 z1xY~eDnjUh1PVBUp*1_$Mc~FAr11b#3vw(xi9lmUvmO?>#5fk!typXZ8xM*SuzQd# zPRq<o%*jEz)CF4mPQS=yEDFB!2AZ%+AXyA#0QlwzcuGK;`axC#OM=kkkP51@z*R}4 zj=ODjtxlA!yIw|Ov443U=qOmwwWB&-w$ZUV-nL$lLr!!8ZP^qJbxKNXr!(I67U6<q z1D(_o+v$M{J|gwW`FUxX>EI*PLHEUlWF}`@N80A;1locw8b~Tluc=W?)ho`-NzDUw z4NGiM2C{UDN?=nhiN&D9PHSqibuvrP5)7#J&$9(3OIT4*pi!b%l%HRsS+Az1s2`^R zY7iFNTWQ+I=tD<Bpc5daP=%oJWle1*eI@NYO`W`2oqX(eAa{G=LmSYxv?l0!Fwpo2 zvP0_QK@DGUTN|lv1Eq5CEt+}ot{`Y}xJFTQYOF12no_68)&**;MiF?}64cVr0O`qu zYf-XS(zI8ySF%!4Q_|Ef0*#~VBqF<8v${+zu}C2m6k&O`DzJ7n)L<RN(0nR*UZfs! z;DAC2R6%rVET}zMYYq1)WS~b$Ne2|R;E_<+m``;rXsic5rej-OlA2qPlUR~!l~@A3 z3o^e1qAjxoMQO2Zv=T&deF^9ukiybb&{?cXAS;w&bzs4O6y>n0E*dlm03XVN530e^ z0QibJByFHT2hB%-Z(2*$01b_o=H!6dKwuFir3lDPAdrdz)PMz#Waeq4g03#})JWAS z0p0ls+2g6E1RC@JUvICWuWDofnsC(y-NgiUZ!v0nZ~ETr-g5Pch!KmF{A6&qQV+)P z%}+@Mxk4|aC^gNtM5n|y70d)#2o<UZ(N+*)9q_zka(<2#=sLIjlKkZS9D4*4aVNAD zXiP{+6LdV54d|3Nkox?h5}l0v;u4Tq`Na@6Xzd`B4`S+oj^+R{td#UY1DL7P3oVU> z>p@l|mSn&rv{Ut9>U4@z6N{2FtU%kjKn!~r1L2go7<<UPvXYWcMq)8YEr_yD1(h!u zNa~bf%4#8v+G1FeuFnTW3arG1l%L4u8>AQjiAT8P=O$+61*I02rWTjz6d_Up^kO~G z1QlqQMkn9az*-43)&ufprhUGxk%55~<g7ffh?<&4zOAW&fu>HXMm@MwSdgEW5}sL- z0T~Y}$j>WI1)a78IjXg^*ebtPQ?u5(L@zNZzX;~?{5%bKJ(vfP(a@~b$<qT}f(JTy z3f$+{DbY($EeS2k0j13ny^_q_)cn#C(9kD@U0+&a3l|2pU!bE@MIeLnAofAn;N{P@ z5H{2pC=YgK4I)G|t3eJaPR&cv0Nd}BpHd0BtWUF6C#S@=q(n_k3Dg;IE=sLWNzE(C zOw1`(%FI&$2eYpasP732=29f@f*T&0X&NOZkldOFDbI>iHFENk!F$u8=^I+mfyST^ zzPE;UW0Lbh`7;mFr%A5Q&rwq=(gUSkTU*;aFatDTsh3=oUtH{8l$o9hx)~C533YBM zsO<3w2??-OG}Or{fhYqHaoQGxW<OFv;h&7|;9Srgcz#MH=&&-#nS;f8kU~*I$vHn3 ze4xKB=;%8oO{)x;T2M136=I=Rus`IkRPZnhxF|@>1r2?G_@D)CFhh$|OF$+f8K^V; zKo^TrJ@`T>klWJG-3CeBC3-L;(lLzCtf^5_vPN<js9}$&VU!XP2LtFs1|C6eDaeoz z$mM#)CH0`o=Q7hOVSWQ8dw3RuwmCqfdtgnVWN!~r3fjq{p^2#9AXhbkuDT=OSRHg1 z)?+xarX~PX0E7CSC16`^!A=Fw)qz$@L)uKBgTo-QpuuJEbdmy8IsE#Tl3Gox63`_? z1;{~*$d{?*3YqSRju&jOSO+v8P@)G4u!5QzCD054=x|FV9ndjyU{UA9oE(r)O^s4K zSU^d8x{s%^YCUAm*g6l9*`U+pnYMZ0fnc3tl;Q_I7nNvVjHMtdh7?4_usfxq^JCT2 zG$83y0n+Y@&X3iB)hT+@f8OvGtS<t!i$SfN)M9wil?X4bib1874qP+Br6roxiIAX% z%#VT-g=Vb|mVzx$qZ(9}S}B2xASF-`!<!J9`mwh8I`C3UO|3Y!Bm`2hX+Vua$bwo> z(*-Sz#Y2^flZ!G7N|ZEpiu8($l5N2y6S!p5DFTO_EqGjAKP#~;5vo+DNG}m|p`Wdy zfld)@03S5cnV$zK4)dn}dFm})Uj%C6>ZBm20Z_|836!h?KwVzw2rM{nK(+<i7JzDg zP_E2C*9IyylTy?2i$LwS5<LhL(ZB{b89*A#U>e0il^Dpv5<O_40V<``)TVO<7|Yg| zKrIJNt0A&FxU`7S1u4|^1y>ci{$;5}MVX-E(&1WkU@Tju0RP|+B~aegtkp?}*$lHd zUIQ{%?F27MlJj$O^Ye5{^y-mHQv2#!D<mbQ#U=T<I&gvLWO%g&I@SeVMu0}6su3>F zNG#UK(*#{B4l4;jegThrLY<e3?7Vu^+=!VOZLw54*lKswni_ONIk=(*S6uesi5xKB z3c&;wW;!Y0t&pX~R)$7K#^5>zG@?;jY;R;>VwDFTgeffsAEyO5Vi7}~l3%`pGxXvY zs~ioO7LehfDf@Vh9F4r`GeV3N>Xl;hl#q(d63yyNczl5FEd*D`u%jhQ5N&=dPz_N6 z>3eCQii1v@1YPt8nieJ00I4r30VPZDpgj15KhUU+yK4xj(F03I_IaQ=N$}y*KAFWO zsd=eI8cMJRgpv+IucnoLoCYY()dYlwXsW<x>kx@KPp=ewv>e>PdIBbbn>V1l*<p@B zY8>e(8i49jXu}54K0<9C!ID66DyYI%Q-dc05Lc-l)Pw<REdrN|5LLFQnlyDZO7x(O zA6VN5l$Mi=Qej+BM$JQ4V+(O0Qf30_Le2q7DiONSW>ad4E~q)Fq@xsp(wqX_GTIPr zECs$$QL`F!fno_%iwAhx65JsHb<kji9i+VnE`*`2JxIX^5r+mBSO#lruM#;YLRxL9 zws{(UrsnX~6rkLPG@lBs%^(#dtmz7_7t>QqAniz<M9{=FxXjWi22JEmNAgoKxVsBU zvO3kEHj-7o4rKnzDp3a-URK4m(2;JWj1H}wLH9dC;t$d!PX)ID;FTL>+_khAyww_# zlR-JrDyLopCgq!2T%4E=8uqY`*GPrsKtxjp+>R}RiR*z%FHk=a6zm#Bny91E&>@&2 zcx77*G8a@GCZPsx+H~Kq-dy#FAsMuA&D5-h6{rfu8ldUSBE5qA0u9idEoc%QTEFO| z>f~rzY2<4tdFGWR=47TQAWiWqfL6g)7NjaDX@e@~{4|9;Z6zIr+|uF_g``x4L<Ph! zuci*D$AOsk%K@FWo0+Bo>MUy}>Xqg}29i@DOO6yWK`S*=;rrDSk(aPR#>Mh9t5a<& zQC3YL3U;{Tvo&jKQfonL(!istAoZD=*2Nl{wIHlhqFD=W^6C`XM*GC-fEPJILl`tX z3~JGXm*j!E$fal<?jlGZzC^PYbbD%i33v!!9CD?2ZejswU@Kk&d9nd%xk4&vc_OGc zlm~KxX03HRxS)f~T!Q+lC~YLDi$JYTMO)h-$naurVgX364vNn7R3?Z!#On2O6APkI z)WTLWDx}({Le}DFf`?aX(ak7v#6Bqo8t}tnY)wscESed`srAUI5!@63jZA{v<g0<= zs+yV-%~;!LP<lW&1yV&J1qH|)aD0J><gqx#8Z?OjUinoIG7x$-JSanf@)(*UA&puj z<29=xLJBxMid8>KSV6DB&P^<+w*`$>p+rtvei3LDCX$7y{;`fn#4IdpYJevg;x&p8 zr3J=Pqf}7u0WuK?ouaEKu|?XQfUqSMG`S6$qk)w*I+?bxLJBll18sbO$}ekh7=UKr z^B_ai`PsIacAyS}np&ofu>o}N1f;;T&8(?G5eP}GuPCw22lW*px}oJPxM>w%0vc`v zn-40EZA)}O3rHY4A3y>i>upP{Kx^DV?PE~70SSYawcD2HfR@4_3xidI*5iOiL@MCf zsJ<XoFDWNK2@%@x(xDO(%rG-GYjqIX3R3kz9ZmeYKvtsb0`<v|by+|&Ez~lQp~$^g zL^l`IB>;_uf(9o*y#~-?2Jw1i7lF<LC;^?Gg?%XlJRoazijmhklt2?B$e*?)wY885 z)^g;0iL3%tx<KNpAhAdfv}~igR;LJZg|SYFPBpa3OoKPcYig80Z8=ccI{jgxu|$15 zcmxC#U1+flb|F*@6iemsSSm<`j>jMe9W>-zz|o{xtAnl_ROw?;4=H&;zD3i5RCyz` zfyx8qQND^2jS`S|Q^CuDAZralUV*hZKwVhyoJDqtZM9=EXo-^*>R`w8U+FAdiUm1| znRz-2TKZZ_wK~ovw$)0|raELu$4Y6sAU`YUz*=kgS}IUY0q^tJR)aRjI+y5xP7AjJ z(V!Va5Cc*+fmo2PlvQ?#PBOU1WCbc}P}W}ARzo_8Rv9I*woX}z4k(QlSf!NcWYrhv z=UJtd=zx|+S|yi2n?Y9TB|6FZMa5R7CAB&z=7Gk~Atoy6C_z$!l8zGCJSeTC1HLIx zNk<71(V$DW^NWg=Vs)aG(o;)7r{#i9lL8ICXQU=_ra-k7OmF<@Egs|)T@s6k8*u*) znhHQ^2h^9$L&Qre%u6MpNU7D-iB<vymXeNAK`F?h0#Jy7&8^2U7qlE4&Ez6%ChLIG zkyRel0{BWWTkv`ySY809|5}~m#IjT?xEQF5qEri+j)+7EgR)AkPH6#Xi!DMlAT&g& zR;MU6Hy_yu7grzG5LeLUh~OYYD2GYZ>VW6LrtkUW&5;WkSJ4YAO@)owfY{&_cU7Qv z3v>yWZ547u5^{aDBD|Ub2YCtP(wmZE+dK`;S`7n4odYjBr#pQ07OyV?FBr%JZS8;t zCWsBw4bCQ+wjd$fYVb8WCB;^tMZGCjMLM8i@YED5MML=NQP6H1NP8_4W`a(p4uYKu z+RXsb1{!wB)PrBg4QUEg!%a%n%LT8mNVd(>N!2T`RZ`MP)iBVk)rf}s6EriQhj+&y z)I;F8R>V3f`w}bA-Q|g;IVDyl^|jzuW2SAMhLO3ZPQGoCMy94tqHUgrrGchSv277( zVNMQ+Yoe)BYFng{qp6b&;+kvfq}di}Bx~vv*n%!0H__Bdu`SXl(A3EQ^DQ-X%4~}? zGBkD4L3~3aO`TlZB8_xSok}p@TvI2>wn(GCQd1`$Bw%EusZ(KFq!F*FQx4{vYwBd% z7HO1g>Ntb=#zvYtDz-%$&YC(QV7{rQPOxo}Mu?`4BZzNepsC|(TcqKrspAjkTWacL z*%oQ|YwEaw_@+jhI)1iA8ZMeTo?yPIrcQuuQN4zzrj8Ftz|25XC&;!)!$(uc7tA-) z)N!*d((u*PDFpK^HFcb9i!=%~bv!_Pa}!OSP}?F64^5pa5Z}^7QzzWENTW(qCk)It z*VKuyEz$_n)QJRzu7Q!Jj=OD<Mx>@r6qs+SspDl^U!)PGspAb20A1uBXj`P=tqGbP z&eJe5G}Q#n3m1VV1$6RCKx&K(G(l6mMH+darIRJL)hbr`pcNaS$OIkJonMp!x`zNX z3ZDiMOH0eFuqs8U0bP4*l?Lb6Cl+U>q*|rG1t5p$xEJM@7Fd<RMUxYY@=J?TbF6X^ zLeMKWt&-qEpaP*FGdVl8$f^P%Sd?Fol3$)@l?@jH71a<MRO;b^;G@p0g5iAdSvXd% zaDHB5SyEz=RTf+Tvfs|i4=w;c7}zQR!Ot(qFH0@53POlLuV(-m<OUY4FU={@DN0Pq z%(rp^3xN2=sX3rqn?ex+IhiS`MONVmfr8AuywoDA2)IZ|Vv?0RG7sWGFJvK5n<fw; zke{DZQlD91m0E%jt1L)O1l2lLMQ}mT<QTN*u?5Wq>)-@r6b;6p*%%yU1JVwpOwh_! zSaCAlu-`;j+Alu^X|n}r@e!;IQi4zb8nvpaLD|x&Qd0v~pjeM40ba;}=v9LjKf_G~ z&Epki=4yb(u^<Zvk#^eZ#}sSp>ws=agYNPGF|DFw5oQ%5J0H3N%)Y(^(sKl>RzlkO zn*(0W0$#S42ihtG^>;k1;|?j|k-Ec>IwVu0NK>;8F@ID9+VBABSQjCN0`ftsKx@*< z>Jy6;5<$Bni!>qo{4|O{>nW{MbBa?zg9e~htfH+geB~c_Oy4#H)XLN;0gbHKhJZ*N z$PyOY5U{g!O7!x}^HPg!Q$gEQbV?y>W?>0Kp;SY&8f<xDk-~JBo8CfJI;oHqB%oz9 z(EX>7ji;amoA9lm(RuJ5H)!ld1vHZcUV>YXdkHSM?gZ5pMiwY_g^3wTRbgSIiCj}y zSfErC7M75D0$fdiQwU^o6EsGnQ(>D|pIWW}UM;Vo6p&b4oSLElcQbtKCO=I9lvtHO zH4Av?#6Tw-w8X<1M5rLzYDl9<pyN%eH4Jp%#hoU&1+P;A>3QVYrh-;+rbZi>#oF51 zLYgi1dA89IR;(4q7Cg|}bbF0FTkyWZnwsg+6HTP+L4um#Er_sQAT;ix4P!Mmtqeek zBUMdJF;fGqQcVp+si`SJasX&>9wMNT2U#W$+OvqwB+zILEY`u>Ve>RWZP9wrHdj#7 z2GT)>m};8`%^%Q7K~Tp5Dq{d$7O!ET126M6HA-}%tFu!pL08-4B`21^?iGV2IZ%Rw zZT%<#Ee=Lxqk7QXphg~|X_lv1oeA3YQkM!JzXwf*q(U-L9%$hsXc-d77|@oI{2~od zvnka!9x}WS&H&(e0xfNYrvs>ebc&z}JrC5r0WE8;&$CX{*46~&I$OBv=tOu*N4OO1 zP^57SkVDfnKyKB<<yLSut_B@xnXi$jsR`b6086RP`Jj+em_BQoNtUvbrZw0@wVFDm zpdspv%wo`LT1c2eI!e>?*nA{ib0A)WZIgrtFrxnr8jS}vzrkfAh@qir1)f<<%_{-r z05!Fe$qi)^(@Sr73r??j>dkFY3m>Y6t(?{=sjbz4Se}}goPjMm^NTd5JKXdZt0%ea zK!hl0ZXGh7ppyz&Mg+GuEi(sn`!)1_I=D9x1y>0)wx;{s^yVVn5v3aO&@cpzT;`y< z0ul6SnRzJ~zK5>P0Id*%E}N=XfX54DObjszm#0}B4^FyJds21s^uVjNAlJF%7dhsD zwqk)s9de*C4=KD+9pRjjnUhkKnupyn)BQz!I76USR0(9{3FLH*5>2Qt5e`D66i^0B z&M8fS>@!I$O3f>A%}LEo%>yl_vx4|&`UQ0#DWhbl?cnYsG+{tT|1cZ`i6U^?h@(x~ z$jpPddb$_0kBn&@s1$=26`)}dcp}P8EWqbH5>gGQh$*s-2aV7|;}K*l(qh0Oz2f{_ z<h^|G9ww;OR8s?L8r5pr=V%mx$D}l^ifU_hp&?lS4tgvug+?e+Ow>cvg7Puw!~>LK zq97mBw<Vg@uub2JwxH?~G{FI?9c&E|`#V4hStrjn9yDD7UWp7TW2{Sbb*(jF<*tS% zsFW}&0qs}EETRfZi*c3`Tr57a^*VXbf;SbkUctb+$R^dgNLyPIRP#V{a$ZSsbP=v{ z7pa1PER+G&hp-a0!nzJIsSDa-3e9og5*wT%>d}f9@Z=0eh!Y)JC_xhs*)xDt@qj`K z98iX~wvgRyW+fT+plaF*Gw8t6)fi4e%0(n3Q)q$#6>eZ-QPV0U<-v1DG3dsVR2(*g z5<Ikso$h_po0|kjz#AF1M&L1cNW;Op$R-~g<Dl9Q)RrlVMMNLe-SOb2dop-339U%3 zhdUcOvxe8*kj!Zt51WQVO4T}fh~$Q)Q2<)nm~WG3oeypk<j2AkCzcdP=i^G87>xo& zaH{}P-J>K<a7#u5w8se?8E{V}rld@t@XcF{xkR&i`i9je5+Ws_346FaWJC>9i6Nqv zD9KMx&q)O<u>z%eXx9bO)&(utt*HTZCO|BEC5U1rt5kcX#FP{zD<y~pO4ifYJ@A$g z1eXw?z856h=%r2<c;GD}RAif|k*Wv2=^J!Pou+jOco#b4^o_bAL?Ntcomx`^GZVBV zq^1Twy9nBE0Jc=o))ur0yvVi)qmDvM@}`1L9s*T6pkkvKG|y6GkK_c~A}i2tr`-H9 z=Tyg%lA_F{(vnmSC9o5fKy@l8CBQ=wJZ=lw9tdwyAXnzo1FQrjEkNy4P)I@DmuH&? z-cb)L2tlU8YHCF27pInhtD|~_63~UF#U(|h$tC$kwy;BwAaydRF@>m!Aq80~`1Br7 zegmJ5Q=$o`zzdr}y)V!yADW;=co~_+dZ_wA_uYYd2cS>{xzRRNvsMcdV{k8nia;D$ z1zbgY5nn}voCvA|!DT0;v;z%gg8EPSwu%PU;Lzg+b+SQYjnPH1(-W1<h3oA#N^HSH zqR`eJsHv9;ZV`ccoB6OKwLtL<UN@|0sHtfMRRBr6pb*ao2cT7sMkYApAOb!UbZ-@U zGZE3oDXrIt2Bm@MlGs=@ouK>W(Gvq?7&$Xd1EcQ-T2fqM3&|6TAQNk9z!bC$f$hu# z$$)x=5SQE9+SY?($2L_b6*}>*n1`Yk5~_L7hNMECZK^$b+RU?s*BaKajv44!Ak-EI zbah9bZ7L`MmLz88f!5HL#3vS|r<TBLq&(1KU{Im}wKYLekyoo(3pytsvIqebaLAQL zG-S^a=sqKm&(IPeXaOm>1c=s1h4+AKYBE7<Pu0{kz<UW$S3-f#qEIx{)NzI+fa=s7 zt5luTvedj1s}jV$*WhUiP^^ROobLa^TWNX%vkx1SLdo=rTTDdiL1u&3`-8HnrcQ}1 z%GeTkfWW>4v-@3Q4~jnU5&>{hK=VzWX0@}eGe%hipPp7!)KDw}6=YVaIiRwkrUtZg z3N$za&J2*ntR-q{ib#!-B0aF@G&O5#G>Y_6bEa<$)D@`*F+qOTf$Z%A>D1IwGz86- zqGjLwJg1z}B8&_Sil$U>3j-8F(5+sOdR9%X#2(y!L-Sp#W_30+(AB}A4oU<do2@|0 zdo^{+Yicyg5yK!Qn$_9h{ViUpdZ{@mDGHLHK-)}HK?}`G^dKiJg9Kn^f&)YYq*Dj9 zKQuK5<Tah?2bEo<_>{nhvMcG7gM17Tb5bhFFHO!UE=epZfl5Ha0kYl!UYO;lrQr$= zaNz^q)0J(TjS+`=u-3Su2KYcNu){$`tYS$`4P=)lC@4VNF+oRBK^EA6f);LdVlg;b zDd}LJvxW>ln7|HdgS5**_dC>TfTk)`5aU(W8U{M>A$3iSc*wCu^-7=}GN5C6KwAfr z^9w3L%iA*ZU?ORmIXO@^ykrT9E&(lN22r;0pem|X6S^i@FSs%{3AFAXKBBLtrV$bi z=f&EFK(?S3+r~pgc|r38v5;}CU|aBV;_2@{c(Vyw!&-BWpqeIFQxUYUSDYJUX-$nr zaC8Z*ln03*k`JW$3M$+1H@7lvK^wO7tTVyQtxR}xtE4zO6LNSZ=zuGoL{R+#b4fAC zB_WWtcBQr<(Z#XWrEF?yr3klZl-h!L(1NT~r$|!=dX7}7rcNSKjZ><orjck1u5q9W zAfXFChAYuN)hb6LAGC4P3N(KR8>83M2m!4jKuZiD|EAh9N5?|y!g`Wg5~zzEKt(Io z8b1$mI3nm^I1N~(4?1Q;vsS}V(;71LsORTnTdI=^pH{Ig#hfZd%#Fh50rNDBEH!ly z^8i+g2DO+P^E8YNAPJ?&Hc!LYSW^$Ozt0+BBD4ZS9B2w{-xq;`FEcL{wkr}e#12~L zgJ}sUB*DfTYFZa*6zK(P7wNfaDduUI7;5S$K`d0#0l6H>IIBDjV{=WtG|=KfkQ3@l zK(_)zXGq~D8i7vQ13O$NALIcO&`4mOhOrrFrW2$MU004ysZO#^nr(?%v7Vbw0ho5z zNdeQrIvHR(K&K2$JL#l@>2RG~+k$%gOsmZ3)YzID4G?7uI!v(AHWyJA=p@+|*cVx) z*n_q(T7fq*g68fu5h|<;K+A1yQz4!898k*7)6^)nRZLS;OF~M>Nzpl=Gta;Za%*Zd zl5I=vlU$>7Vy*I`b7FOJqjO?y3y{wgfR6@%blQUyS(T}&mD=ZPB<mDuTBWP0fh25g zlkKNB>iP)74(<URl?hsM0NSLKkqOF)@Z)MqG^@cUxMXO+hf!f|BgjE623F8y0Gd1~ zft}!jECxC^3Vg7O5sFfcRGs=fc$Ng~hPnef7OhYM&FY{cTL*5vCelPYc<&!*0K^t) zt&UD=twyq@RR(gv*usWMlI`;~+@OQjdf-uNon%d`WStB(H4Tkiy|T=rlG4PSni>Qf z6v3LHkWSVCrIjExwMsQL#meZMSkNgxl{z^($)Ka(tc&&BYz=ja_1tZZbc*$YZB2BF z^#W`ybc*$yYz@tHiuJ;6jX^S@wq_uyAX`HtT?^0#tqRa?#A4fG)cgV|2|*i&U=xIh z#T1gz0>L-2B*WGgMA}0{tiWpOK}S`9wwL6j>47AnN<gAkFu!XkL8Ay1xJsHDn$}9_ z#|Xy9r>m)H#K))G=Ao?aMJ&`qlnvEosYQ_6r;PMW>h%niYO$FIs+;5EQ!&f~O=7@v zvZ*F!nFBvVIWtWIbYQX$q(BGtdg0A($Vo#P8hM)akd$c%OK$M&4{tDlx^sy+p#EN- zW-TPm!V@P#H7HBKLJ8XT0iVhQ)nSZjK4^)fX0<RDP1FCs^%muVHCPl%rZ2qdEnE+} zW)E&3xO<NXQiM2o84KbZ33w(iflfVuR`Ek7%1X4A6f%ny^72bStD2$7ToJL^7Bm5X zFc<ltH&B^r4k<%TP+|aFI3smlAblyQ4~z8Dz@>erh9T&XROBuPin<ce>h?VF`~#Bp zsY)mjZvnO50JK&mPs0RUgo9=xMY*k0_0nu1E&&VFBlT?{7Qqrms%^eTDrk^Jr${4D zQzugsv|A49+C;Eh^S}pdK+e^u1@#F*;|G~}3VAg(O2w%qps6>|99mI+xdI|!l^m0k zQ;Uo9iy(npUtC%M%C)H}h`?0>_d3DaK?5ydA4A$>pp$h`GdGIAEwLwfaI7nWQaffe z*CWMqo<ctONM?jf6wsm>)arn(Swb}C;JppZV`}U{Jupz$-3pQF;3X)?a69B!1bGIL zY$3Hd=u}+|6C+K;un0Wqn=9Ia;!rFjPs7AmQ$q=KbD5@&67H3w=C!q&dWo>=AGsb! zwH2pr3!j@v){|_3W;Mcigm*Qo5eZ6B5wvj#vg;BanxNJdmdFOJ2mm*IEFr1f*hmw; z;~ly*OHHjvBNKXWBW%V7Yf%Uf%6xk?^%^CbpjDRm?Z;{+s89!u;eyi}G{2O9r}^`A zGC@Nhpc6-7!2sGC2tHg~15`i3&Xm<uQ&TL`0PW`lbr?Y>Cc?_*OzX`0G%P3KfVG3O zjei<m-Dw(%l-XaxpMjd8r+<25qEW8|8gYX83RF5^k91JrK*FRtHLo-`wJ0$uC)G+( z!%(e6QwMUYM=4Cq2qacslnK5(*Gf^t1jGmX(JB?axUWaeI-rIxsK;iNr(t4FOq1Qj z0(4TLxjAU*46K!qr(t2Jsh6gqlv$Emlvt8q1UiWU*^3}Mp;r;q7iA`wD1l=clr~K) zH8m6sG_CVAOpP=(AO{8OC_!i?#8f_P#dds&Ekq79;s<I*=*4H+BA-eHX~LA~KyE6~ zi!T8keFEzK#AiYV#_IDF^6a2<DJ2>9)sSF<)a^Pc`FW|JzKWGbiER<6We6EO(2LL1 zwuR4VL$#DZRU3l#&|pdZ;N#-+G)xU3na|V^QsmZy%J5<=MIz#SGw_O2P}?M5CsC&u z=3($ym`;u@xQ;2cg`ETq@l~Eej*UT0O^%&yseOsPk`naja4U^`+hV=sjKm_)9xTTa zjU3H-oqQWpQzJ{Wnwoq&Q!`^j%bJ=TZP58qr8PAgiD=3}dm3#_&5Vr<YHAYgOwEl= zjO|P8Ax46Yv&y#u@xgOM8aX;S+D4jIiMn7N+8X(~V4G}g3=K53%}h;=%`|I4(=W(L z0}^3*;1;D`a%yIdP7#EimXn`fgtgp&mqnSyeu;h>CAQinn)U`(8YOlH_C;2CnxM1q zP$L8>i`An9eP$Z;OetGi%$ALkb7G!)i2|r(QGl%MR>;p&0PX044}yX!CS>0rCG;Yc zbZ%-4Ne0IChLEO)DY&Tt>n-MKn3`(pfELD@nt>L^=4qIkLsrI`8-rFm<!P9kLYBsw zn`k2EGo2J$MUCiK(2b_WYHCWLGk%mZ^PmEtgDk*DYC(o%!Qoa9nsx={9OQL?s9w-1 z(@EFK)v4612Cw(hDT8#<lXT*BDs)gs_CUpV3UnMH1XlEd25?|4;}Xc(n@XUQwUw-r z6N|Z0A&r(|C9CO%PrW60!ADu-fd?9ON~SZu^A<+kh76Me6`R?%soF{kp0H9z$JrKU zn5}KPjtc0oi4c@-S+H$LbU|!QO-Qtog9E&Dimj<hS5pg#PLI`bv<<GQDF>}1cC}5n zceXFrP)e=OD=ErMEmqRBa)jn19e-OT$f%vIZK{2UUMfUIO--;>FsP#PS5woduuaqO zhcwy29ZOA3O-0z84Wb*arlygsQK6F!X)e~(6l+xI6lm7eB!Xz23{6cPXSI5@U^O+E z#}sXCgTdz(tEp+IfL3`sA`&n-LQ9MC6oMi4f}#~P*j)tbEY{R0rl_eYs(?HS3W7w9 z5S;=YM@^j^P&3g{Cnq{P);2>Y9dyKdk}afAE4FgBceJW6*MQlssRN2Qt6Y0Wt8xuU zBx>qFeQ)Jjt5XS{a*79yCM0QssSwZ#g%F*1ouugaSlBv6jZD1&?Myv4Esd0#8Wl~Q zRGlPv7D_@J8Pco<UG@j<prW2Q2x)dBnn>W>gPzkt1!taZb*&!ixmj3C5=14d02#a0 z0Ck8kiztMZp#3DMxdm;>Jji-b#byfYT9`ueJ18F~f_C779j%e5lc#~6m0{-ABTlOU z#VBZb29~BYEHDt`5k(q_I@O>OzzWhgs@2rV2YCoN%Ybqb%pQ;&sKA0b*%<2NdQ(fN zn++i&T4olS8cLq7@c}{pA^u7zqg$ZkYmkl!g_P!?>KEG5&P*#x%uNLyBw?Em9mD|- z1cUb0RpzAXrDPTt<Rn(wD&^(pf%;||=0=+JpfQ-#ycF<CC5=?jP7Tl@6iSHGCajde zM>K(tXv-@J&&*57FGn<OOCaa^fLbV^Mp3GUk`3gL3cD28!B1|`W6f-0^r2EpAmzz9 z`NgRk^`MftM9<B-2()YkvSv;p2a$)P^P`Jm;WPL-8sPJWU~M7Dh$6H}T~mV`){wwK zOwd6O?X=e@Mwo3|q)}22T5kv{LyC2fWk4MyoxJEo&=F-;dA2zknn*(u_IXyBkj1&E z`2i(<p`C3|Jc9--%?uz-5=e^#($xhyf4b{^CIQf)!6-dm&|=CG$mk&`!Q|;Ag1Wt+ z!~nZnKqtr6z`EEj$66E8N6)iOjLy;423?4e7Yont*s4sBfuKxdW(cVz%?&l{kuogE zQOPCXIu1ER;l*E(Mu|=)zLX8BTtRzM%#0uj+ssr`12lOE+L(ftxM9}TmmoLNKm`TJ zk$F1BwxDHLAg}6_f>v{b<`Tg3?8TaSinfWM4i)HBY&Eq~$Q)T7B*?5Gt9ME=z`>(Y z3_gPz6gZ$04C?YVN_9XBI^cRVt?MC;e}z)C;t@GQ&7h46Slbd3k%%OR6hI(H;|n1( z6XdkupOjS(y0S~DN(nrKT##B+Qt4Uj3h#($7--r<Vg)IUz^sEc-)%vO8FZEtXnjzL z2I!Uuh#qVWG;rvGifw4uu09<W6DSb@vjbjUYeE+5YFOy#f|sx$d=DugLFR&!7Id`U z%nX_Y%#l5e&;_%g9;H1FI@KIxQZcvzo(gKBWoqO=3p7weEng#1r&JTv764sop=g^2 znYXeowM(`J)vy}HwmH$s+S;+2inhhjhLWNIWKlFI34s+RYionmmekZF*MsWR98EQ~ zoakiGqHx4qe@#ttO^pGx-LF`prlxC%-pNBwB#;gWXiQcwH!}}^pn_V^nUK-WdP@TX zb3;o@BU2M|69Y?2Lrp7eb2y+t0R=CzEr}I6`L=j11Z5{^`UZ8hN;Gv!Yz*u(HA=Ko zbqql3vOyO@;7zWUn(*cbC}W$W6lIvPsQ@~2A2f3g+D%C)FM#%jW!BpkMJvU}C+8QX z>Sh(k7iT0ErKZHkD}m-<aL9m0?eT{%=t3Fr98O6rNHJR0hSm?Z2B0obePT(5UQuFR zN`9^e{*<Z&nWNQE0?n-_Czil_G`8TLV2O^BX1tP)hPHN|c9ACH@)%<?(4qQBU2IUK zAR0Q1O4B73O=B&Tz$@uWG(cC$U{);%^?4e|!%J#v(+`#lNYrEMfF&64{2J)04{*;1 zR2_kvL(trx9+H?2TFH*P-2>joP-2^BUjkZ_4!Z|VCtnj(0+;CI>r^M_=hdfWro%=_ z44_MUKvVL#on;0}SmoKpO3;eP08(0j{00eTokUwK1C;sJ8i=4kBtJw?208sDs;T8i zmw*ydqJ6$qrltlo2KAJ*L1*J>>J^vd7p2-3;dUjgJ~M|EW)`Rov_xq0MikMoKuVa? zCkh&ireUo~OCYrys6x%xv@eOykHtD13rcCQg=vu9A7b(jS<b#>`T})Rv3e_%Wi^mW zz&_Cm)S^Ml11KdIbjSo}wFWT=TwY--Eb=tWEx@&JJ$PdWsF(t0ZP2^}G~htJZBQcs zGwtbsHg<znM}zj9Dd{M=`1^+BXQ$>txxT3>nTb#~_}b3kjMUT;sDN{Da8PMZDwr3m zlVe+NV4Y)QYMrC44awrAw#A^i)MVSD=+ao7G}~k~wPd82N>fu)Op8v8Ra48<NYeq; zD?0hnrLng8df+}NmJoxEt)UJ%m_vtsEesMMi5TWtGb7{z1v2smHdzPS$we;|z~g6- zC2Nr7PM|?IC@b4GwN_{Pe`X)ideCSaY}_pyG47_V4X>+eYVz#h18LC3Me!xDD@QXm zKnwODy-ZL)J5$3zCr{G~))$2df!8rwfh42zz?T?;)|4rgCD!MZf;#OwpkRXDya5X` zog#Q`QH0dDEz(ee_GQrrERhC`kh|MxL652mc4Gmk3klt62<cT@r9y`a6-%&H)R1{5 za}%@)Pf$)klqpE#v=+wL$7!9Brz!F@EKDH7HsEBBXKe-Yp{_;K6-`V<Wk7fApriqi zTk<q4Of@x>rVCn_3QuQ}_YtYj)37i@S|ovNJ-n2MHt3CwAxY2#CFvmwN>JSc(vxSa zkqKP|0$#rWE+!$_9CY&<xC5OCs>4$?^6E8p5DPl;k!OAKG(aoh5UV>9v6T)W>p)=x z>JxyP5Eh^XA3C7hZs2t!sH}%fbirpIpa(sI&J$n*^*YtmrVCbCNHN-jDCv60l(?o< zbgT|?_W^kZM*-CQs70H>QAmU~V>N4$#^v<V5Qz^y*`oluLNFTQECoo{H&)5kHXk$u z6bae@WDnY&Y6WS=;q^E)Zp;leL1i|m<pA3Xr~^7@4szs@k|uZ}6y!arXsmSxsItK5 zeW8ttr0O9S1AzvyK!=Zmca+0DIQ{fR?+`5Q1(c!<%^3JB0%%KUCfq2{!eLnJ67POw z4bVnf&`P4j(j4&NFVjCf_ExZi>|2F(*udLY!Aszaz&DFp7wI7;WIz{f!aGGZHHwBh zMbrJBcuQ-6E;uaG0}Vfb=54?y(rFmzWWp>1?Q<*wb!c^pKtrCQ^?67W|Dc6g8qnjU zK?_Ylmn;>jsg-D?g4Um<*4BcK4n)p7pzMh#D)KZe4MBq$&=CowkO$2X!&_8v4Inq= zfkHr22g`h!0$iOvoCUk;$_g%`sRubjyd)KLn1eBvq6{S-!IQD|1orxZGN+{xDEYz8 z>8LI!$}cFkf*f}WAtAFtI#3mm7KKiJUaDh>Bk06Es9Gn;&6GOH`JgMftcvtN40+Jy zLQn~qenrFDTAk#g)Wnk1l<EJNeZ;&Vn_1&Ciyf1bA;%$r(l2OSPERF2PeUoQ*uNk( z54<)RX}$_P{f%%2C>5$qe;DB+=?_Yr;H?PY$bjeuts4Z-B4N}oD4_<6as_aa4JyA< zZKw0CW0B<50S$P9&c6p;LOeYXR2eH2>49dm!29+RGeJjw)#`u?9V{Jog(AH)kQ&f| zZHYPMiIv6J6`>diswAKld$bZr26WC%VrGs~ENEl<^!A_Lf{Nf}h0(D(pw=%Udm`=0 zfUUv?DTIudfOd7&)`AY61(~UVI0Fha449u+l$w}Q2|8LUH8~?OFCFQicktQ;6VUP; zJ+PwSlEf0|O7;@a8X0TEkuH!{SiUXvxY2shx#=Z|C8fo+pbor|fdSYQkS(Rf;KdxE z^WY(8B|%Ob2M=LFwmySH8F~+~qOC1>E*j+W=%QHAbTlZIZ8MRUf8>FK8WcpJ6VJf4 z*7UcUJ{*$J5({*DL9HfaU;v^Pye>WuDqRA(%@uq@PAX)a6MWVV_@rCV{(aOlD#2?= z3P4Byfc8veLXQ51o<6MuIwU?X1#~Sd;%I{+4RAP4PYm&woGx%9lx=$7qEI$Qo9TsD zy(OpD^ZW2}LPswY45sH?_m*cYnBI5YJD43hpgY}O!bh|o%F!#yFR)cID5y{Z*;N7> z@6Aa~D?t+~%Ph`J%FM|uskBwf$V^EAZB2z4P@b7ml3}Z4WPoBwMrvkyMv1MGp(%<m z=yZ;>ocwZI4wyO9({6YhGv-a7b;Da%0d!hrep*^_YDqZARA|~&$g{Pz1((*-AKdWP z;n&I2MY@75bGq$KZ%J!A1Edv_@Ku4)2C??Y94jTT(`~C$5-W@S)523zv#p}1tEu`c zamMQ8Waeg;SSd}v9%-s#t^_{pCo?bIO35cbF(orET~AL>Nhdcm&nGo6y(Gg*$u~1k zPXWSF(#g%wE6FIfik_~m>~AzZQQ6<RK2|3$zXY=JH#Nmd$uGYoBQq~u0VblPQ<Pd* znpp&r1EmNMO9^&MfKo8{wg4sgqDDxo1#~u2a7j^Oflp#yI&^U#iWq362lR{%@Lkd1 z$pxfS4#33{B%SKVf$l|()mDLC_fev0?^g=CF<7HSv!=!nQci<PFwo(p@Gyjqr`Z`{ z4Q(T&(5{a*inTH{fQ^D7#_Ax$ZXlEM!6zZ=B*OOHmB41qb&8=INE1Qh{GhH`BDiY? z>XRW9N9V*^7pbWw=cFbU!A{HuT?JwbK0$l>Gy`ou&^!%ny=cBpG3Z7C4bYxZ$c$xl zD(Gr(P{RmbZi6<BfLju&wu*=_uc<-efX=%s$xO@vmFUU&xdo*qsVP>~Wu>V`h$0z2 zL<!k8qym~l0UhjBTMLiTRC~}7^5BE9K^Jpm=75$#!p_I`%`eRZU1b0{whSt-1D)r9 zDS`@v8WJFPWagx%fEEzz!8o>{<Ery>3qTSGy)apjHgG8nD*yCyK^CT_fRFc0OsPaD z2P@Ikv_d!*T=haM0y9BZ4MDsC<|4EvrKZ*A7o|Fbg+bOqd;|6y*ir}|>J7LtV0jc% z@{3Zzf*>=X4h8E6yA5=DF2wN&Jy1oOn);w4zcVW`^NK;Iq3Y#=nV_58;o`7eqo8Gh zCAEZFJv!hc|3Eb!_>`{n)RN%jqWqj3r^F&~iDg@)lM1=FHwS!$L$Ph94yYlWlUSKr zWSg&(3d*f+nH8x;wu#oDy<4Ehj%_vcT5f3iVad<aD4D+IfwxpW<QiwtoysLerK#Yf zr)z4I(h_ruQ=vOVlt3diFm`EPN@`kWUTO+dpu`GvV-Pr3L(K*m4XImG5g7@VsSVLH zb$u#mpSB@Vu8ua01(yuaq8Vd#aEW~hbV44qzXrYwwWOv7vJwPd#Aw>5TERKBI*=pu zQ5;#6T4D#9IfpF#K{XDvex^iQNvRfe4@*gE5iIB+-h&iy3eXK?Xon63rKY=96ky*n z2Aa`>$b$+}P{^W>1|W|osN1AumMMU@pV}&ckD}5|2c4p&WEWEulc%7dpkPy+lRsT* zg#}kVSinX<C9}*<y%wY64sWD`n&zgUWKK%YfQXKPH}O3KGivq>z@x{IW9DE*EU0x2 ziy%;=8`0}TIi{|*RwENz#{$wku&RgjEg&ffwbPKCss~xK4)1b+W<^pGOA-;u3syc? zCxT8(gB<Bss{<+;A*FdqegURp$jQ182k6@wfH$e?LAcsV1r<u*j8R()J>ap}syZ2T zU>c-=0QXc3L2Xw^za%vWsuNsn)YPDfdVrfxH8s=U=b9=?LMtTDH8h~(HjBX3rk)CD zhhZ_Zgp5w6EqvA-bn>Hhv{DG@cnBq*)U@dhKfOik^C4M2(KcVNB;O~$JhjL<u{c!& zG&2mT<f4@d64O(av^BswZEbDy?Uf>xtdt^@G_{rd!7VZ+&@d_J)`|R_93}01_(Fd8 zx^wX2CU9A!1QXLJ2D@x}*;Q|mddRL7s1WGj5%5vuAW@xE(3E*GWab>i)&`x>qpMK@ z@?$h;4`FIviIR4HY)wrjD%SvXX8@!rkqT<c+U0>rU2teZVg}MVOiW8t&a6mHQM9$q z2UQ)Q;ZkVS+vaP6GC8;|0mqUCXxAS6j6F^0wS}5`psr*wxU^R&N-fT;N(EmWD^#L~ z6wMl-wLQ}(8fXjaAgvHVQ=wy^S*ru7`&?3sON#O<!S-t6vNsL1Lm9(jOAL!a-azCs z(0Co9TtP0YrgxW^Dn=ufQhAB+Vl1gxHzhy0SQm6gU{Yd{l7bbqe1qf^D`=qADk)eM zgL(_LO4YfEMd_J&A^8PXCHV!lAY-R1l$we`iaZ4c8~wb*GH8j2vjEJ~u(Uub_CTj8 zf=*9_yPv2L64Y|AK0gmJBnUT%=yK4|0NW4=D5-%5JuEe?F?NlEyC}BN(ItABDLO^< zI!a2hv7lwMh6aY38bvzQwVKvNdO7*Yi8;lfGzcH&feB(MctN+7LaPFBm>6hkfI8Wr z6Ie7L_9*G4C8nh6g71~f1dZ=1R6}Z?>5s0OsxcN#PiQbziY<!Cs|5)|6sLmjIoCn( zb5aw_QepZaJvS=_18a~11%>>A#N^D9N|*q|n8cjaq7qP61L>OnzQI(~8C=7G%1s4h zgMtdEW=PtwQZP_REG@~03W7SAFyj;yia;Gj2zPp5qp7eA+^uj+bir!iRw-k(3arLT z0o32Ljwu2g1xkXoN}zZ^3tHq_9G+t!Wn>9x#R#l^f)6tzMn(|57m!MwR9ge<R2y)4 z1KE;ooeG;m%CiL@>KvUKYn>Nu6l-4s89h;Q$OTPIDJW@!M75QwK@7uKZKYZz@Y!9Z z#TgoTpyS{W``tj>g+XgGKz9ovjiG`UA!DRMP&XpgHaa@5G^ajCCl%!TSnw1ZbcPLd zmaQ#lBQCO|L0fXcwM;&^Zi&u}jW&pd7xC~-9-y+bC^|nDG+0^-S`z`;(hDDlg&UJ- zn;M-NTaRf%Vzfc5np#mbhz3os=BcSECW1l-MA+t8feugrGnF)yv_TAQB~69Iyc7iu zCG9+IB~2wzDFIIYiQu_$Y)h43F{)4x8uv~`#294M7`93rdDOThIxiMfjYb#gWv0Y} zs_9J7bu&e&X~o*w;GrZ?&WD^AlL_ts!n&&9!(*UA(fP3&;EUqH=f`MT*Mow{I^PB= z25n{|>wqMQQY2kEpt}@72SUP6Z3Nxx0KSC}t3ip_jj&FMF4C*dOo_Fv&P=fa`AP@m z87o83b(AH=R*AK>=!boR91HR#^n@tT0qVA(vzy@I1v<hBoJcakXME`7+h&4pO-{7U z1l^ikY?~Qv1ZpE>MjOZKl-gD&7uOeCCF+1vyH&9c<g#_&!~(0FTI;;%{8)Ps0S!xV zjFxJGE?<PC|9ptU^P$d-E{&~)ZwgICjD<nRH$cwLvrPw$li4OkCqV;Rx84vOl}aV~ z1>mleUS?i#YEg+}iDr>~ksfFnW^iUwPG(-ZJ?IQikdza+BMTbEN0!#K%0pZ4XoaC6 zPcJRAsJH~YAW~B&2^=d*pgpeOxCCt|OUf@P$<GD%%n%Nl{@)>7a=O(lQ!5oEO>1;( zkfI1YFabWy&jNZRWvXow${{><wgzfyN#M00$*CHtI)<8va01OYRf8|tv;bGzh`oQQ z$d`pB7Z)o*7Nml%#)ao2(3BNKcYRJ~UN*AkqSPE)C9sjjpxJe7x=TTeSRsXL9(a^D zGYxdPOlDqsPHIVh9z-VJwo+T$I?oogpE=jI7<8zJPLXXg<SZvpM@%PACtpX=A3Pz3 zA#4C0jV;lGr!uVDd_#kLP{pU`%r}*)M->Cj=j5j;ga-NO6{VKtXQx6YH!<`=)q!qy zz-mBJNq!>e08r4tzD|*C0kU5}OIKjQt5L66od_C!$OB*asHTR+W(|lO=xiX3JaF*n z6xpWXG!bH8Eqp;IX!{nT(+N9@2y|9usvantf;!iF$;HK>%b~&f6)XT|frQ|J3KoX* zprg#zMH(fb(}+L`T_F=R><#moLNX}o!JA{D<whQ;<6Z=^3RK3H=z&v?E_h*vCX@%} zfK-H}R+QMrYozLc`hhvcsbC}WZKoH?I7`%nk1PkZfHQMaKubW1trMeDV?q5%$l+Gt ze5e5u)6{`2ezgak8;6w3^L4=TR^S0b_+n;IcL44I@IF>Z3I(6FQ(O$bfF!pbRE2}Q z0Gjjzjp-wuM+FWxCD1$|vX8KPFAs8PD5&VQE<q|mtTkaLdqO;dEC*T{GQDVpsfu|X zs0xI;wEz^@m~Mqf7ig?hBTw5_X?nv-Qxhg7?aB9?4M3M4YHDgLDQM{{K^7xqg0DFN zrD_dOr3mR~L+%m;6%U{l>$WA}lxhv3Y(eQ2G9d@gDWD_e^RcJoe8{auDWINghOHpX z`JiC|P%)l5-QcOWq^|;e)Cba@0ml*Sm^k=oH0a{S+FG45+YIn54XF7G?{?|u7H6g^ zM4Rba#!ipxHZ{_y1szO}MWF(`^9(wMyQXHc;%Bkx3+6C!)Prw>P|}Px0NwJO3qI0G zr_$CyCkfO>gm)<rZA0*~l2qGN(7Fhuh2MI`u(A$xmJxzyTL#+wgYYQ4Rsbu@%&P~b zRmT!rC1}k7iJv_1`Y-7Cn?ezIML8mGmmpd@(8E+f=ib5&k^-N83(iNywxDI|Iytr} z(Z%2<PmUg_eW0rgJ3J*vv$h^|@PlS`kp^fv1n5*0P%;I@QKBu#Q21s6(2=@eLvw8N zL5JyPrfGnt=O88`+*4|6U|njH1Fi9)t>sc}ZB3|9bZM-HrZseoJ0&_t&n+`07Sv1u zuOWy>1T!R!gPPy4P=F^QaFZC;dIxQy$<ryBTxTz)0lrKS`?NgD1TLWgV6a=jJwW27 zy=!$+GK+IFi;F>P4Dd~LBhPf#r-Bz=fbN;lDbC0*CsrR!n}JSAd470eC1{_dPD*JJ zcqkfb2r(mOwk1{uwL0L5J*Y0o9Dc11_&RUU*bS<9txh>;cEhR~<l5;DB0duQ;NC?% zXo4SnL-TZ7WpgPVO`Q@oHRwz~csrRM%ypnO_9$9x!J{b78k*IqdLUD66%A{3z$)Nc zK;t&3W2wmfIwjEPET{`Rz2K&)2y;<P-t-3>O+~?s{~JvuzzoGrrrL}}(~oU6)dlmr zH<_w~8GAOFYJ(XcH<@aI8LFF24K=|%PX&eA7$uO&pdnsF$J;hW3DgybNKM~y!&IIf zs&4wh%}^KI-)!m(Hce-Xsk{NyG|)J4L1Lbr8Yr}it!?y+K|GiRHu{hY8th_<rVFgF z5UB_2f{dgnp?V**$OLpV2l5Cqc-R1WD=-;DDJUZ;^{{aZ5{6PN(E8sXhk^<cP)0H| zFe5mY0`0_t{AQR%%dr&j-59!{JIBGJ4fn2^N=*NE$W(%{Xu9NKQw_$V>FI|}<(NSO z4C#kWE!ZGq71LK9HkD^An$GBLt}y-eVN-6#qG{VKAWSicl9)U_u-PDEL30DsKQ@>O z`-7uWK><8!0vm5pP=FNokRcI}S_OqF-ORj{)CwyFLjw~_=qQSU0&Ftf3O2Yhea#V5 z2~hfg4$^=I@$^8WEihX_Y=pVc5fk{x46-h;9I7_BI+QUR*uYXT=)w$;`CPi-;U$pX z>F1>^#inmKZOS@b{+KE2^mRu~IT(wk2X40zn_m0OlnX2X3&R6PO+^`tP_^(OsTPJQ zOgv{QB?_`hH!}}p3n+*TR6(ri7q*&9PQP%*lzV#LF|bvF=S)?=Y;|Z*qm5>PvNBl4 z&;ZQ{e#WBdg6B*%6u{C*!(fKc@CS!hZA{Vh{NtuF++bB`M$pw2pir5<?zt&9R;R#x zgAoiUzEM!X2nI|)U<3#(;UWi!`1JQDP1$Je6mxK>BgGB6Q)2Q!Yc^9-!KoQby5ydo ze;S-lz)AA%X;X**ETuJ`HWfokk|MCwc=xoa2uw}lIa37zJPC2bSyOgMQc{@?Vq?Sr zikq>-04(a1&^?P1b>P6CZuinu8f&0)gYBk@J22uO-5t{t&zY)Wbp^~T7-4{71eP$s zbUsFCpadg4G{gk+OG`jS1C~O9imvfSj~h(aK#G5>wEX1KVwi&z6!J?;ax(K$trQGE z)jh=7xvx!SK!v!10z?l&b#7*!E~HgvWMWWI0n!33z`!~o%25h@aKeYz51>E*6`aV{ zK{bID!fYzaluOSjK~xkFJ)rU*WF@G~JA2Voov~>8_lw{u28BzelHgVi<6CG0OX01l zxHvdalJj%&i>wrs)6&wAG^=vyfj9DkY@ELLlBq-(SaCsO3TUO3m4Zn@g@Ofq76Hi& zXyKcdpI4#_nuD`aFfxU!gBR|47D#r<P4|BX&Vv_zn@LEb+GA)62}Y=&<fi+7FlCp7 z&Y-|u15yRHc>0HT;7aPlWm6?KNX0(=>_t<sHty*;@4;nBz!g(5&?JU}0%Z0>7ha#E zI_iTd&-AzNO@(B^PJ*h11huXqrnBVrG1Vbb4I~<MK?j?r6y+Cy!xc0wlK|F)(!c;m zH6n81t^@l}K>^|dSOP|FdBDWr!3+|Ze($QO7Id14v1s~4V>9vT3qG2%fKo70s)V~t z4^dXa&CxT3+6}n~#7ZGCrywIy11fK8YM==YIczgIpq3;`2M#g>p_ek<^F9+Fk?WVK zze)krW3j3(sjn<ZwSx9{Fcv957yTfX0V<;O+pu@F;A<L`z|p8ws{<OeNG(F`kHPwG zHlQ&|=rS7&`_UFj7#o3>Nuc%P#Km>;z*G33J|B3#UMJI5!$7BKx?ZHYm>Oh&0Ng8! zhb2AGLMzbpI$Qwhgjps{o#_IPO(nu@mB6iGc&bp+K^^)=H4=2yJ$M=#v|URtF(pMq z34B)^xS_73sbipMYnusLkv6?>nSd~-Z6<g*hNkuOxerWbKo*LaA#`TuDQW6x80a9) z@T1uVp6Lf4TnwJ!uLm7L4?1)JbgnUIkdv@xM5iznbfpY@ctR6&!xWOmse15G(gdvs z0c|5Ks;tg~9J>#8b5W`Y_+B4WALoI6YG<ot017$eAx~r@b&xpV(JREB7SQ@_P{>Hs zV?+hY3Kr053&<;Bz(EB{-Jt$Bu?r3$kqz%Mm+2;D=A~GH$9`=?m8v0C8kkhjR)|qA zsEARoMOO`ue_JJJ(F`r7;CV#B*49=bMjcdk#i;AV6iw&*Y$|0FqYlm_G3ub=1JqeZ zHWlm%B@hX>$_f#0w$ta|G!+ei8L6pYuMndS@8iU%D_Ft!P%D(6OB@swK;sUuRbh}+ zo|2iElb;S!F@54jGhrb}c<4gU#sG^id@3X=3>AmuXpnGB-t>(;BI46omWGS-JAjj< zZHzj&=8T!X_Livvq}Kf^Bq9RUTasCllM2zQpfG)*nx!x=coZ|W2qHM$@V2R>HMmj$ z1qcY+=ojbYm%yD55(2H-$S^?>f($ss6io-YlpksvXtfc@-0Ai$=2D;%AEFtg9kkL7 z7VPMJm|39q2!u^wO`IX<rcC&ND~=J2dRv4F=w=aWZI>}LG{iE3fmZKKcfQXgLS&6& z4O$cm9^|uy?U;d_at5C2f(-b;cF_>3KcIdE5B6o%mll^~re%UwB!kO-qBVm?*Fd!u zWV|0T-iN4cpmr$L>XfAxm1HI-=0GbPbn|_|`*x5AGhu_0plv(Q+6Cg(>Xg*f0xLxW zos7i1l$_KeL@@(9N)ECgryevlP@)H3S_zuqNi9pvfzhD#R-jS{GX0Q(FamlxczjYx z9{5^LTg(F(F$N1^Yn@`0s@0Q9@*s;j)vc!M|2NHJBzEx4&=|Br0cp(+=uTHe!bGfg zR8vFRkB(3P4QU)HmyE$TLu?B=;e&66CL|5MMbU2XZTfm1GbM0&*7#gl7&Ov~b?FX9 zgO8LEd+ImzGV@YETXyO}7mq`-4tkEjnIQ~73r_P&it=;F$?2J(HC$z|d{|FpBhNI| zxVBaY$68pZU-FAUdt)I3js`lJ#g2KIxrrs9oiO07chEcxk%zTx>LGKFkk$ccBv7No zF4bNMR3C%x8v-ryQUcu$0ov>eIj67Ksv2&eb53S*HX`qqfcH0n%|fyrx<(dkFK8Yb zI{U0>2wLG;U#y3u6u$irqPV112V8R_*?@fT49FtTR4#}HEjWctFM*r6NKG{*J;>!V za8)2Jnb4Icn)TrMFVIRD&<XIMWie=rITJNO?N;ZU#NuKNNU(tXU=KMB&`PPGD78#U z(>hTvIVUqUuLQFE7tM(1OwfF6Vl0wLC6HCAB}Mg#dBxz>f9UPaOmMSO3DK|tDbR$p zFG1Hj*@6xP%~e8c5Tm#@F}WnO417KqY8Zn~)vT@60WG7ks)r>6$lf&Qu9wstSfn8m z5lXb-i8XCQ8`O3-Mg%~^9=r^@9<mZf+t$zu96^wXH>lMC1uP=o!3m3O$AKm_5vGIf zg;;B=QIFD}z~xk3WY_81f~s8bJzk!$ybKRT&_z}GnJEfjD?v2{cv+raJS^9Hy1<V; z1?yE$%<*&q9b5?73k5R{GQ)<VXZk!DGx1RHG#u0?C8<Sai8-L%a~R4&`>0UO0>w3C z5)S4N&<X?{#M)^_>**6@%|tj94Iq82=^y3HM0xW-{k78KRPe+AxKE`DT09E6!VGRc z_(mLX&np*v?|5or8DxRAA*NE$s&BLv)W~rRb%G(n2@;G-)8%zpM8PNfqRyEiw*u6W zo9@Zb3(yt7WrvaisL<3c%1lYMRf0(=Da4oQnkJ^DS{NiI*(xd7ff}?i6~@Vmy1ELU zkeUH>Hn^^COoef3OrAoHf=zx7tZx7_1vIw<szdUNij@?~bU{55TP1keSd7&Y1qGX& zOocMtwEQAlrA*K{RB#PS3eb+i^#2NG;`|^Z!QCxL2Wq;uqM1}ZhM6{?DMxhQKqn$? z^m8)7KC{u!&jB-FUJNfvEGS4VQb@}$f`n4B0^F-8-5?~d=A{-X)hiU`=cL*y<zyC@ zB;{9NxCRuAph?l3{1Pl~0(VyO;C+fb1qGOUobw^oDY`3QfePwyfvQ^<C5$+LNhv_K zx9V2l4EIE+-s$_5%)}g(pk9GA+2LUiDbUd!5AhesX9bCQFk>84Ekvj5Z#UzZzCh57 z#YIUWu_!Z97vc<CCGfT{baS8)12N7<KM@=$3JNxGr@a?66UXT^P$tF^<T#whTTiyD zAl<u|JP3`Yo0q3yXo$Y_-^c)|4Grq;)ffBbr<CS^mIA?B$~5fl8KL*~>OrkeM4OrL z;(z1`YbrFE&B3$ySQh{1Bqo6_>;mmGO3JT@jxW<qNj9`JO-?n51rGs(hP)YzrZ*Uv zNpL{Mt7Gz}?{_s5o4(7yOaR>4p770F3N&!L)k4AxJT3qq^3{b+%fJW1K?A;^R0kcI zMGPWCMz3Lf&}e#;p&4kpeBxFM2~V)G;4x@DqoUMY=wL6XaR}3)pa9w-o0C{+rI3`9 zpPUU<Ql6Pol3}G_sAmGvHvNO4nTQ0~IMB3-E_APgAyjsws0CzM$NRNrV$=Jdn}cTF zVvWo|bMy5OYN3&tJY>K<DZeNswMe%pF(tFK*h)dq*c58YLnAXK#-iztFU&z6Ff=xk zLj+x-hne#9I%6{dP>30u$uJg8-(YMegHQkt+jquhazbENBIb8MO9nO=n~8IpnI)#B zf+q2&e~_@yo!;PS2A@ipYhtF)STx<x*i4iU<R=9X0S=1oTwZ2V8DUcnb4|=7rmr?L zi(oB^$%`qP&SMS^Yjblm4aK6EJiVlnJn#Vv`FS~&m}%m~Yjfz*lcf9#-QtYIl>Bll z1<>KHV5^X(Q}xUs1M{Hxlz(F`IsJ>dnIy>PTP;8<BI4heL#BN`23knaro)DFoCJQ@ z66pA0@CGdKkOyMf6Qn@KF-oDATn|2GL=QFw5AAh>S6roJf){J0;M9v-YhGe*DpVWV z2nuLirxx5$0!4~dbv+eFXTWBII+L)y=#UmWa+3(MBu)wHT_r_ZIgtJNX^<_A;PDvf z#e(2r7W?T79nIA1A#G`B=z{typmBY$;#!@|VyDuQl6<6%x3E2x5Hlg+4{iU04TV~u z0=d;%52B#BRtGGJ=~#slUXXQA<!Wlv<7~~O>uYsD4tEAmD#BaKs5XNXK<$NV1~+!0 zJn(||ni?f&oGaDBSFb^Rif{|)j%Y-fl~fk!q~Z)SP%9neV5lK#YKq`MWKvU`zR=E0 zc={bXGXVh|Naq8t233idy_s-5sEdqcI193aAU`KH5p+)=$d4#4fpl6+Al(G0N3B6u zv+BWzz|_<fOZ4JF<z2ozXqz&~!FusvrzGW9fQ4)o4VZLFrrSDLh%1BUaUd7ffcDFS zTm^3CBLYXW8XP5xYHCR73d3P)Y8nv#*E^cA@j*IGU^`P&Y{9<gM@ePKp%tQuw3ik% z>W6GMemlYO4Nh1fUm`^d#7+^=Xf9|b9@)g{^3G=Bpacf)lOfB1j?f322rC+3hJt7F zH8i2I3JM=k?uN<2yb0C{<$&+df%q7lk#xY4P?stt<tyWkVNF;ZgThk{)YEb?6R9t; zS5kq@|0r20fws{o#X>rAVB=wXW<Vo17$+AYno{aE;D!Wj08}X&mb>j^KqH|FpwZA6 zb!|}OLb6_rI(Us-at23ga&}UFg+k19gTLk?(=7tcbn9WQU_DUhJ2kJw7Ip(Qs2vMy zpTN3H3JNxvc?G2<3LwL6mB7IS?h}BP8-O-s=cJaT+A8IzrGa`fsX10))wW8YovEN^ zPil&-5~RFSQm_L1xgL7sfRch0s64h+0+C7zR<P)?Rf4gU6s%w|YO4feft$uyTnX+W zmFZ@t*(xc*f(PD@$V|@9Qvgl8r{tH{=jlRk+(v{a#D$R1)I|%)7<HZMq;xBg|G|N4 zYik>$4lSHw)N5lg9E95Z$8gtl`(QH_10*9*T#3uH=?jC+B<huv>|oPD;2st@SztS{ zAWy^42z{j62zlKpsM$_(tG%A09lJ(&N4kxO80oH8qR*Dyl*E$Mg3RRX)FSA7W<fr9 z_-^{`-)6kvR{6n&W|D|j<%fl4+K?4b(55(KM=a9f7w}Sx=@S;4NwI(%{-Aa@WI_(y z?uIqo!IPDUMmM~9iq!gpH~)>G%|U!Eb7K?u;u~mNTmc~@s({=`he=EawbBt@o3PkS zSr5`yhHW&~gV+rAk{%+cbPMteN(-uEil&1+2WfeWvn3}dgPPVniDr<d|Ar%`pmll< ziDsgrU}NF_F*Gm$1;g~bL^C~4SZ4^?{LH*Oc!WTE9!7?+RY(}F0nL4a9P=^JOaj!S zz)+A}Qk0`m0Gf=}NivfJDM7Xjq+J1&cfl!OIw-y&@ddLPX0ZZlC>kNeVIhtrgx0Bn z#SRX)fl>;nI|sFr+ssrI9Ot0+zI3t~tXl}{c0@shK=B6?T9{@gs|EIff&$bO6HEs} z_hiT9O+T>QOcW9Kua}!igSr#OW@6K=Q_KVzi>CXhm?^^yUyx!ZGJQgd882he^aUwq z3c;Yh4N`gl4an<4i*3kmc67<~qQpw5>tJihEG<EOFX*b}n4;+kX=dWn1NNHna9U-6 z7F2`c3oZu9OJ%8Mx}ctxg2Hs!6=o7J=PgV#lazy+4(b2ug7caobZH(a6hYy`3^Edw z1V9~E<RpMdAPH$^^5AR_n)*UAUzM?F`pGmi8L*t+YH*Asq?yS~?^$gIT1gFaC>tl( z?V$Jst-unQes{GQ56ql~bTc`|qUj6M&BQ^=(lF8jxQqv-WYF3z(=-bZ1SbOp1@JPv za`0IsRto0e>;p<K&_c*c!MvaXd`<v3PfKIVQy@Qr%mxiafR@55D8N!J{FH#{0c*`b zE5AVwWGn(31<JV)cY@DV(@iSL0~rER0S=1yYt3Xh!MR&EH@|ASVy2leC{-ya=;juK zd62ABTAW&>Tb!Dcnp|Q9FX15OBBhjqqEsia`5>=B1|^K3r5c7>(AXJ5F|;&=t41tP zlg@+O=LEfv7-glvz)o0#n@F(!C$y7_v|A`GzbH4c#0uWMR`T`LPf5|QtgNh50`Fx4 z?PE%DL7bikne>F5O$}|dAUB;M9na`kP$vsKm;+HCTwhX@nU{`OU;sHjuvQ0rm>aZb z2~i50PlXu{+6R=An3s;DpPg8inGU+&P7kD}G%-CDx@jpRKPLrgnH&$u`dUbj9CG}M zI%poTST8;)r?d#M*DO`D8q~c8b$&r}gEciJ)AQ@h#OrHnN+2s(K?l8p+wkx+-ZYew zGct2hbfKL%C2$iTI$e`oT2$ncSdt3qrxhd?6{jM%)}h^2h&bplDv(;pGzRDhSnvTS z;PYte^UEPqf8aGi5Gx=~M?YEyIWkZu)F3DSK-QfpVKWCb<AJOl5|`B=Kh%R9W(9L0 zXhJzP2z1sbXy!O2H90W_i3_<t$R)8dEHky-O3@IsBMx+-kT2-SL^QF;)WjmF5Gch! zHkE-a1lxz`@LN}d!#q8;1SA2r8np2k`2?rbiV{r6gO@JWG@41u;$7u7-LTnAn9+86 zf47+^qwREoCNq&R(1JG|aOVSUx*EFF1m;T8q84lgQ%w!n4n}*h#VodphE`w}ldU3{ z76DIW`lVKsxPSu}>;lj}JMrnF)6FE9@@%I&OgEEEgPsfpbBZ1`d_c<z!F^y@>H|+J z+QXtxBURVX0K7{Z9-|tm+E5|5&EV+5VR1cfi=mrAK@*yZMGBda&`D1%0mU@fNYEXQ zx`vvN+y`?xcn>ltYBe(TDpM1SbTak8HGxhMWT!uPx*c*>3CNQ^D5h!SHZ31wT0X)w zxc@*#;P74+ZtsDUA>7rN;ffioV3ArKkgp&|fg)0AiDor89e@&m4mf4V!k03@?SRKx zi4Hi@r{{E<fo}0gNvy;$4|E0;Xy6E`wnJ_-feyt;1r=+M^#GvtrqKqmXfyP1i%Y-- z8FWYp>~F}SeVJ*M8q>?V%=j2}z=>4>oKqmz!-HcOoS_kUw;HSp;YUT#+AJN2dPwrd z&;ZJZ5DlQL2nv*1$cd{MKGv)ThZ{sOC>KlP3Bl=t)6Ha<N_4<M$XBa_oGigdG<ztd z+8G+!Ym{hfgHHO<v`V!x0FCbG>guH08X9WqRD+_?ss!Q~&`qw;gA6m%Dj{C+NKFJ) zJJSOdd_?NgQ%l@Rb8<i_O#|tg7tmc|sd~kwNs#c=FwlV=sH1DBsSQ6sHBVbfS4mp~ zTse5=m1yMYfbQ%x1RW*@(Fn3Mu@Y({JiHO7(oe7GHxslf0c99)yl7~~YAb>6$^?lZ z90od5v8Xr|tOPY}7WSJ-@T2Ij)tPQsVkV4y@it;G7Ts95D^W}ZO{)=e7A4lBD8b1v zEx#VrXt4&ZMhA^rLdqC$IDt0UE0#c0v=Zb_ThQgiC^4Y}I(9fcwFK;A4NYxBolIM> zFTn*6=vD-<HDCiFYD(ZIYozKGr55DWCnl$AfE!8r={k9uU@@?eudlDKe!5ORst`y7 zCBBU{Q55K>>u4w$D1q(*g527wYlN&IB?YD+6MD7Q^oNtoM08Os*05Jh)YMPcDMB(C zq%Ttw62H@DfAdzZ2d(>n96+FGi#QJy<J4rZ|G_OsomA*mAh50XskVlo<@c~df<WWy zDZ0MCy5JTg=(2E7#RF+os;McZr0Dzlf&&VC4o*En5>XqKXd<ei5~N@<1EqHzWD#Q> zQ%zk%6d?m0BTY>m$XTP{vsw}9S`%)CRVp~IyCl|EI)jdmMM{sL5)+gn^K7Gy4Rwqx zbc_vkj17=T6fXRRLD1#A;Mr+a6VTD*1~oM$swTFe19?hR4GjzwZ4ET-jV!J5qElm` zR+oTUNQ~*z|1$fCn?ou;P$>;=%GgH7LdsgCrWEMN3E24yskV@E2V8!!fh$HUa9t3W zl2{2DT!xj}pgagk#<e=26HGwm75r2)@OepjNI`6%13M`KT=M9Ga)N<%rj4PIHRx!s z>5enZ#Oq5yEvq8!%v#8K6#0m{Iu%m8rb261@YR(05EoQ}@|88HeoRzT(@3;6hiEQ_ z<W+Dx1riq;sD^;=YfH2<1YcqbikO^wxE4@33dxVCdUOpzm%oA2EV98l5ZC2ETnD-l z&d@s9Cea#nr5m_Ck!D+}o2Z?v4PH@LtOt({@L5h8)nI?8>C}V75h)baRGl<Uonr7x z8!IJ{I>;cOF1XSK4Mr%{YJ$&A1No%D*3i1Z#<tkHKwDcAaq>O%K%^pE!72s1Ya-LO z2p+CF`L;?*;KFZu^Bgl3@N(%)TU%Rjc?GH{N<bM$O-&=;7Q;=@(Gw-jT2LiqYn!T< zl2{2^Tn*0bkO_xG&~?3#o(iP$*R)PlQ%eNdkH}o$<M=^|OHCFc1&J6<usAq{LL4w% zu+&Tev<#~Rd-&#o`w~_~uu#me)vVPh0H*?Qgn|MUoJXLm|7=W*;7KFJ*2D;M^e4J1 zoeY#jQx9<*YO2vT)YK`nHMB0Xu}!fq)7I8Rvkx@40!;*E5J$pWVi}N>l>tdvI%R~? zfE@mlE2eJ<4;L2)?W+KdNWdpZz{$#Xx@?Y_Ts>&^1GJVDv>`^lJhLQ2w<xtZwL}*( zsT!khrGV6tu2q6gu7Faol7ba@*9@dTY^#LCf$xI>?c#uL&q3Lp1K&QA08#;4XQqVc z6rq?<rkk6e0y-WHoR*aI;oC`UAg)w^Or{_?R6$Km0it;Nza`<azR-niklUpcKpT8w z)Dgh~U93d-*bGQ0PTv?FF0NPr8bb!nBte$hLC3bCol}t6;2k>C_k@S@aDvB!!D0)a z3W<WnI6%X;V4;h<%)}u=pdl`>kl!{lsp%D=;XKp-7MZErU|ll>^HM=kDyTaLPKe-M zhlYVBc<u#q^v86BS+V(MnxvX#h+<aaW-|!^B}fAsY$2$9J-vUknL22k4IGtV0<uOc zrf53cZ_~Ngm~pazJ*Pj%Ld+Jt+^`(9+z^zMKxGB=5(Oo@>gw{^TG-4KcxVo6Cg>1s z@Tu2G#_~<KOE+Uj7z?^-!&WH;WGp=6A`*Ct9;85p%_`bXPbf4Kj|bV9q6cyY0c#<# z4{{95e=reLJ}M8KT9mP;7I+wf0|vCC3!D%rOfS~Nq!&<?M>x5VXcT5@5rn1|NFN5A zTy#s!Gzcb_IVEOXka#uRVJ0W8lnaVeP#i%@#$r%_#pF$Aj1?B)QGm~mR>w>iC^b`L zj#0OoUhrK<WV&Cenep_(?>fTMXP25;Fe-sX<rLrr4!Aynbp13`z)QU~A!?@2-3cBe zm)mD11>2Jkih1~AQKW>48sF$DP-VfXK?!?m07VHXgg}0yTHzssFELD)t1uJe#$8(2 z;?oRTnF=a-AW;iROQ;FJX^)vDQ87I|tI~`I5#7@lR+@>ifr0@V#nbionz1u0VMK32 z8XwE_ioIrf(3s_e#VqJn%>vu$7x$Wh7Hor)!j>vC&{8u{ghIyjA<>B*T_91^C_`6) zEDK>{UyKU6rwp+$B2UB67`7O-KEJ4>n5=1Sie|NqVT)1g!N=P{XB0pUNbu=NMs!<@ zDi1sO3CCj8=?<sBaRr^7eJ5ri35l}&veY8br9W2C#nsTsCCHqal>+Fn1E>&eZpaWi z{{o*>L<qp=o<MWCppqOi<q4b9M%^<ekqNpG0<zg>5Y54W+8&_O0br{Y!E4$Go)dsP z0RnCdg6|suji!U=WT5jQu;~)e^=Zke(0kOd@5ijy0Ts<qebA{Om?fY|56D_O?DEK~ z=Rm7;AlD{<ot27oH5qI$D7qT7UI@}P1^FKA>iVRd)D(yqv>%cJJ>m^)4x|g5S?rT( zuLNCMlcxkxo|)$fS~Fx1X?j97YJw&Sm8_INOO?ROsgz=Cb)f1H{d<^uz-ttzpEkDO z7XmG1^vOh4GW~$Dg{X91Vp&pR5p+gI1-fW4H#M)cre^xZD`q0<pv7r<rN|l~6C{u& zeo!4XHPa2RnhB@X>J*nIfplZ42fIZNsvb1D2pSZDa`ix3(A)quNE5WHEx!aMu%~~J zHJ21Xp4v#tDJ=ruE+7RNV<^o7iD*ElqvA6_`&qyz?Llrzf(U>jA2h0xkzWoT%QZ9r z4KhNsBD){lLjr4oZ9Rfr!-SAQu?b`_)|G^1iPL#le7IRaGgQ;LZkWj#rt0PAIpvfV zArAHgU)TpqJRmn|>ZIzWW#*-Tk4G&^&C^ht-gCoDLO}^-S`0o23ct^8dSe5haJ`OV zi5@J;fkGU5!e9xQ)&Xxt!Z5!y2i0t)oJ_k!^!o(i&cm}ksVtGBNTCFDibg)ztMw(I zJ$hijg0?-N`YKTe(pdu8ot6fQH#BcUoCT5s?SqDU7<?2dq8?L+Y!?D8UIS$)PzNYA z#|o0G>dW&W%jqB;N^sswg=~K@GqOlcG)hTETC4{;D?kCXqRv(c>N3!(K1_v3+fm@T z7rrhIvi%3Dp99tqoId}onW(msf<ty{Wodz4YH_kH_<RNhTLs9CN9Z<9H+*0w%9uC3 zu-Htb9<(bfwFJDp4cRrYE(!QP9#EqIzFP)*>;YH;bWu+U)LW2HDbLdd<vk4ZKvfR7 zwNaX*P^Jqy4g?f<$vMi2#l^M=pJLTJJ?oyC4B8qyuvz-0kd0L!_kjW!yrBoN?+SFy z5W+4H3mSFg#GG$#s;v^__7M!vA+7xb^{zqtuLwl-bi+?V!l3gh1g7u4Z>HdYFZOUP zwnUCDvZ54{kidb45`w6HAU<BfS-@6F4!;gkV-s{D29`D_B9np|o5*V_iD_%rr-2s* zQ0ZD&Lt|`LT%)v{VCO5Pg6<g$D4HH{pNYMmxNBlzyYG>%`2?Nx02*#Y9E*VC+NZL_ zoJ`P;40w|XxuH^Ds{`Iz8eEzLy1@~3-3Sp4Asx{2U1&Rpg!YpTXo(3(TYW*Q6?*## za~%rKefQwyB1Nfrpv4oQBVhAOOTbM##0m(A@6if(MO)ic$es!=y?99bL``kF!fP{e zl*J9;HR{N<Hh7)8YOM~~(8Q8dWI0f`qQq7aHs?6~<7+dSdJTB(sgVjA0nP-C(%2)I z8k*26-#{*cD1gaYrRu?Mxl~hAtczAs(gC#rpoe3}Lbgx)r$NjuP1V!{&)+E;f|k_R zLYoftV29e4=qQ4w4?q`wKv&ivI~>yB0L?SOHZs6(?ZDg=0on%vS8A;Zx@ZyF-hytK zfJ=fJ2h$DTnTbS0TBFc#wgp|o3tB~9iQxvYV-rhKLF<Abr7ZN0Ck&NPv((h4CwN&X z*W;_cmB95AY-u+3Q-6)kK&=O)gGY>!w^b4>OX}eZjHp(YSb}z0l%lSL10^tUztz|r z_27~E0?^hP)GL&zyo(Y?zf}n|{+K)6<hL2<uusrJMcB&8{NHABkVT8&g`Mz|20<%3 zSN=9rVJw;sQqEX3{q=7%NmcOR5@Z!DtaA!qd~6Kv;es?8{(<+BA>CuJ*)R>zC5139 zTt8$<H2!Uph?UofMV7D?z-X(8AxfdEEn(gj`)j6V4fX`o6-Ka&oKSn!gR@f&o;Uz4 zY{Xhc)av9y7L$RtSzr{_r8znHmL3vQg}}NK^`HuYh*SSy^%rP4BW0CWYEe->;{3mQ z(85Oex=K)CTdR|ino|IE7J4-W_Bp5*=z&l}bQNe&i&=Bl=V2T)2;D&kcNECW;6=yy z+ytvziK<$4aubWQ!F8riJ&5U&3ff8xX$KH<;C%_`qGC`IsX%oSdc;Fku)sY63EkYp z3dm&!V7>LQYfUkN0qwj+sOHQ(ur_!Df;cNP^N_4Wv9TU`&<D**gIXO>a~{<~SVDxj zry#Kee4T1Fx;vl}XnseUJ%pNCk2QsX>PpboIH)3`Q<!0`4y^q^q}F<ve?Y0MD8C$b zwi0p4z!-EBZ7M9Y5T^$caNu&Kx}*|ITM&GC3h3xGP#YF}7X#_()5sKbIwy`5x!^Vj zB>9)rXXd6NH6W43<`VP5APzuj@ga{{!OAeuPEpVx6fD+2tsn>=a$z}iKnj{9puD_9 z&@n+_YEU~MSO3Bm0D%i%%~~CBSp~Y-2RtTa1!^pors|~HMuXdLU|HCj8b#3VRb*R1 zHxYp+;Xzl!O&5?dSI~uC2nXsxK=K3RCca!)_CVEAFJ-P+udQSSTJi=m7_JOrOsXE_ zo;?L6P0+|;K`EB?!_cw1)SO~H@T@l|LxH^w^)+%M4-&GF<=tS#ple|iH6fRQf}<j{ zq*6^yqb^#hv?xbOM=3QoF*8SL`UYupB^zj<=4R%>Scw&&5x<Q5a%a#PKbRIN>c=Fx zrlhCF=uc1RHdU<Gg!B#ckmlEG!MBOHg6j)-X98tNR1X{lYHEt01x?^M0jDj9MsO8@ zLm#M$QB%`^jD3Pe!8F0v)YL#kU^NWL3pv;ZEfqk4Qwtf8#;^juY8$jW7j(cSrtcvU z19m+qc|ijW<f@t)C8RCh;Dm_K4(fk`k^*RVF{s53_AQb$XgOF3s9OUGO!SVH2Dleh zij<+i<8GivZXS5Wi8WO7bOQx*Icrcp0t@SbDk+T;kkg=@9B}Ielv_Y*KrVt^odQ;> zrUtq{MOqT14XOb}9&%X<Xb3kClBH}*bn-w8d!fk`CI}r~2N?q{f;2Uura}A<8k&Wl z&X!nGf_fw)Bt7Hq!<DdTg0@FY++rePVh>qV2)ce8qyGs`R^SYw2bKecJIH=;kst~g zriS|tBmwcgf-0m7mW(LJ?7>E%sD*@to(AYxCvarimVi7D?y`bMPf=Av%I@ibD(0fl z(+(h-K&MLNgNMqI5(8|ZKf(d9$bx7By9Uez_y3?ltCE_VS)!o?8g^IG0rea6^T6Il zH&~-s52_R_4N(gk>(4|fhceTqFHkj?1kF*1Ouwya&aDYr_6kZduplkUg{<3x3^BvI zbs9?3UDeFh>Y<xOkW^d47H`^vt{KZq(SS^==zwO25{pt3bs$@)z!zb`q6{_<Q&3t0 z?mmGQ5rX^)N<y$8K==^p+_ie7_=B#?RWtzKs#IbNDJ#KQ0h~4TN{TXbHQ;M)OTe4w zL74>PU2sl@qyR7zv_;2CQ3K`|w3+~PzmOuxe4%1JXiWtzvene4ztJ$45r&su@M=wC zdYq=Y0;B!(Mon`GMyu&_G|gq}H8nM@AY~e?VNzSGgL6Ov9Ln$&=&-bBTU|@`=!9B{ zUOdY11Sl+^LkWms32<KGhvp^t*ieDCxk5eKQGeh>3w9=C<^-Df;AJp;>_-7~8#gG5 zm7q#eHESVSAW0ipM~NO%EQ2x$BoBh}qB}I$K`XQ2CPGXA8Hi`z1ng3%Pho>5_&h^+ zP6RZr4jt<S1u0}65wY^98lI4me4`Vio{?Cro0giIl9VWxoE@WX1sXks3WF=4nCb5f z%w@!FZEeBR7Er0;(&XgS;$pC*EaU_>6Ej0YBa>7k?9(gYE)sZ%9$6jqqz1^^Ij9n- zAE0NL=|V+eOU)qB1)4iSm^0PUT&5m8^#BS3h+&|Khhja*m{m;;gqN6Bl3Ii~KL9l8 z3Jaz9GF^mukfZOw27)v~XHp<$VR`{F^D@2A!d$#w3Dj@~op=B%ZDQ2n_JJb>>MQ7! z6*#4WW?ax#7b;jK=jRmLDuGDQSr7T;#kNYI=0Ex=5a0u{ZIwW^n?^}yNqtVLCP;m1 zVhX5#f^s$lEQ5mtAq`&~2S!-IyMVSza3;QmmI@A_6mP4PpH~lJC@DCABMBq`W?%_2 zSnxn+IpC{8L9;={sh|*nrUH@zEw4TiG#v!$6)Gu!ya5fF+{6k{u;gau!2~k%Kmx@j zsRf|>UQ-K{6u>7|*n;B^!~wO-po+m^3{np3K!8FJ62RcFh6E-^urRtbvnVx%df^J4 zIs_exX*+$MsX1t=EIhD@3v2icA5zwUHM<qm5_1cz!31=rDs1vnsTx!afXjkf<mh9E z=5E*|CFnqX_)<pHm93~*RLSn}bd1SM&>RvL_kpa2=NbqHYxd-a<WSJ*gWx<reWs1M zG!LT0i;kI|Xl|}h4?06%Jw2zgAOmC==)e*Ua9L;{qn-~c@nX~=N6y5kYsO+-Y=&k# zet#g97?ASD2R$TE=OrQQNg?yLC8@auIf*5yNOQ4hc8?Y_qs7diE@nW7fI!#6gF4RO z?md=r23ov>FMq%+Kn!ElK@}%j+Q%$G5S9%{-nY?*WmsrE20n2YTo!?sdU&MP=M=z8 zGEnzj7knNh!o%3>$Lea3TF^>xL<xyzG<ZA$i_r?;?GxaJTd|UYLp^vWye+hmi(U{_ zSA!LTh8U17!?&Q+#1L&>&IIoqe|<#(Xq_nyPd7EedmCrHi4p3=9G&OoL`#b^G@?uN zGE;Pv^uV|LfKN36-^A$~Z_dG?keXPW3Oe#9&eL386n^FiSSj>!DbN`xV$;`onhV0F zwoZDQgU&!X=w&X;ZlGtV3DPg%WiG7@p6&wAz!@9BX1f#=P|i06-Ebu_-8bHxi?L{W zoTs@22YfDXu9vwYW6|`35K6$yTy(lZf;kK1Do`WvQ6&dYnTk#K^EMaC1zQC-8FIEN zaT9B>u9X7l9`|a<IE(^lcob<?*B<H6j*{A1q7E6!1kH$=n1FV;7J+W;PPEO_ur$)t zDYnhiFf!NF$+0ccDAvSs24{XYC<j1C<k1HFm4Xw?QWcUj67$mQQ;U^qb&?bFl2dc= zXmAF%iE4Gg%|;xCDnW)It*T*-ax2hnS)dC`(B={nk?vcl2c4FPd>1lgau$BL31svq zIWZ>(ba@rjW;f`JHGHN67Wx{R)wQ)cscC7T<76OnOK4t)m<KWov~mbE7fHZ@VE4f% zEDUOOauSQuVJC><@ffN;!&;r<+{7HrD_QDOi;`2VkV6DrBl4-C`30Z_=7~As;B#7# zd<{)-Am4!oSwI60;D7`V$5?@uY$67kz@2oktfqa5I$SCELN3Ud5m*wjv;|b<flsnf z(t!+_f`%=1im+WemN*@B>6mwky@rN?P7cD(JWcSLNDXLt0l!yC6E;|-lcxv1YznmI z6Lj*3trDbC(E+b~je}nqk6~<LN(%JKhRi(BtN`RxdnBuikS=3Dy`c-VDH?PqSrPcA zu6Wp;WRNjTSQ1fF!>}?xPXl%s3p@%yqttpOprlb^YipYaz8)SFZnof+s+v|B5KHR8 zcYJ|{L{MD_X{$p$0xl<YL94ML*PtOO1@9jRT{Z?)3i31fME;T@T-QsWIKN&a5BW41 z1ypUIOWe?60dyvlQZ4uj0r;>pxP5~>atKaQP~X;~FOmVB%MD*ZS8t2R*&2o>rkXm4 zWo4k-kx&o*2WidIFf>71He+n8sRx<&)5|Od-A<66T7;<)G{O&B#$s%!X<ejIq!+BC z<X2jso0M9lq*D#oX9Y6fT(cI>Iv8V1O`S|z-^7v(y|kSC{32_(ZxCk?!B22d1eO14 zYMI4unR%HdsTw7kYHFDpC7PgISzD`vxP${d3xO~Ra<2ho(QOLkE;88FT+qANpp8rD zX=VxvG3wxS5~FSfI)EO0xEiSI7^4op;auGcQVK$EU4w|}#8`l9IFRP5{QTS)G*u8W zn7#0=qza&W&1+K4CF+%`p|<Km+z7WE;uhVU^cZz3Z~>_UQ&<eL1zh&k!Vcn3$xki? zT~>&+6&317aN@ItZD>_MDeh{O?3h3Y3xaQF1A84_ih$fVU(Hff5SqUcx3huwNn#P+ zkY+9oS`sVH3mbw1C+g{p>E@6N+ZKEg7Ms3$NjM)DEI6QdwQ(qc>p&$t@Qyd`>S{2z z7PM?=LAtqwEi`~ZQ31j>`WdK~w1HN?f*Zg{3SoWcqUj)C@I!rpx{sA(c{raGq+5+s zC(NU1`T3wRK~S)O_K9K<hWTGWE~z9Be0D6fibJ&GApxSDX%0R?9U5K&^)U4XMVYyY zMU_bEp>;H9*QWxc^`QW2fWub)BDorG7{JF)P&^B1zQ+{RgQOuGLJM_GVY|XWjdi4E zm>M~^dcihU`PjqrtR5tJ7F)qZH1%LzCs3=+6t*i2RA+-OUjh|pC<}F`JKkp!BW7hT zsHK;QrL-Z?!qh0j)-nW*=0Y1%pvF;X9?}_auv7p&kqwkfk(45<1WnlDSnH6PVx=^_ zvCv$`Oi3p>KPM-#pg1)J)EES3?_#TJP!)k#^#B@M!rUTLkGw?&a#*i3)GS2R1FCgF z(=E_bj9pT}ORYhZh@fT-+-_UQY!IA}Z#oFFr^r^3!vM6dB{2nj@|+}S*GuN~sm10> z_3#Y@O0nvYrh-apj;0=D21f%F;7IKQB|T6xGbO(qe&DbUYLfxO<*9n9iOCr#TWV7E zKm+WFnR&$;C3^LcMusM6-2}Kw038XX2MHhzB}k*87B=kz?kFqiAh`mx>A?<dTTF>& zH6dFOmewN<qSAx3TF`6-?~+0GB#~y<)POE=O)M@3dkE8LP@^eRFJ<~?IWu8%SPM*{ zB)>E{qqroos6<IeDJRn^FTX?s9_E_pyMMrqNyyAIJTZWewlV^3p8`#lp}HQlp9y@J zpciP-vmUY@P3YMwh!!zui%@YY>|!vblKcYD;a%Xi5qJ$2C^LbMT6d^0m(~c$FR;x6 zH@P)+lpyyz<5aDv1Xl_+4V+=%jsZ7NGpFCH1l7+l7ow(3qy!0%801MqNa}%QFAV~d zd>RHinTVD>B5f(@Kza}0?2w<925TgP8=T;9g-*AV?tUc0KxGHq6Bv!Cyu>o_FtZgT z8^cHbqhr(|BA}DJVKq8TOgA&HEVZaOHKtzON&{3nDu8dQg^8+bA~micrszV;$ruz3 za6v2@(lRSjQ$UB$g0#Ss1GIHkl3x%5vIVl(7}Pq0S_9DqNgmiV!ep>mSX`1=l9`Ol zMu=>TI{4OZ1%=vJ@SboL$bda)QUzSJfadD*N)j{kQj2uca!NB(K&rqS=tY#EE<`l7 zV)CZ**O-e6Dk-AIuM+5>5V7e2HRj@`N(zvxlTs@R67y0(=fZ=hUlEN6)RYLaE+%h! z;9p@eHKpPrUC{KOl3fV+@PCCo$o7rQ{5;syMG;i3m=btOBq^~7X#+kHa+=unftqn3 zY@-iv%7EKxBA}T}aODQJ27Kogqy^`xlvI?Mmx3e=YPCSjKyCYh2SBZ$felZjy0B~< zGyOxexj1D1zCeq)h%hMFK|W7PEYi(OECU4)_+np6q}G)Uc&i$+0C*o9Xk#HHX246w zVZ*G`=eL;4aDWT~xe<IFaXs|na@b}DSbl+c0JIMdZaAbR22+5{v(e8>EW>szJ-oF9 zZX;nEXsxH;HBzSNo2fLbl}fpbQx!nVh?7f{tO+&Ibnx90jB`6tPJUtv__j{aic!!E zEXpPo*lHo@h8Ml~ILPWA=;9`rFtqszs+mBo9W-IkjUdo9JJq$;C6LvdXli^wS5w8> zPEYJH7p>R9t|lxor!+MdvLp_?><8NBfwXsEZD7dxTP4r}9_l??!dF^=F33yGu_{w2 z;{jjW0M$ADL9e+;J(dQ3o`#_*+Gv2GDM_1X;58S)Jv8;ujXE$t;%w*R-9%%Gwuy%L zvHJA<<iwm}l-^2_UJh6g%V<R^Vmbnpu?(=>M5dRRoSa{jl9>-{jDm*kWAdhhPBaId z%?&<Ed%E2Mb8*HZ$cVb`Omk7_vFeI5%@q-fW-KsQW-OXMXQsI<-ENhFR5d8w5zxT^ z{spP9_4#PSu|-JZ%<xgw`qCWe);-9P4!B2&kq2Hg^BiGehv<EvF3W}HEyyZV*jWL3 z@tMVNouE@4^XgM`LO?^#@HPz06s3a1ywn^8FbO(D6x`GUwML)|WwDzNQ2;;c0kpOc zK28UzOp)DNl936%h8GlO&`wciF^B`r)S$DrKzndBlpw;cWvO{3kkyDFlM$nZ#a7j@ zI?AdVyduCAw4MWD7pP|j9nsBAtbkmWYpbNBQ&JBVg`GHJtE2>5Q09}GScbe#7Zx%K zB~U#Glfe7&;f-x@I~sHvLP=##svg2*$PJB3I>@T)GfF^BNG!_%kq6Hq-UsD9P|*tE z!2%4C6hLRhA@%3LE0JLX1-6h8Jy_iij#f~_$HA&v1<3WAFa^;u>R>gxpk$tzmkw^I zs-x#v&{8&p{h*6yAmdl?dwiznFEJOZN7#Y7zZztAY7w%mf`Uzk3G|*zND9;i4`_i$ zaUjaUqc|v|Sn%;GP?G_DFvlh(GrtVgL|9Tm8SqQZu>yM-)_71rT&xOCl1PdX=?>H) zg$yXbr9q=ypaZ^ypw5R4o5kcQOfO`!6ooaaG2DqXz65EwV6Sh?&?kq@u(ermH(BbT z-2xof#lzAI@#9KnrdW!9*l4$*8T#CCeQJK1!oY0WEXXg&FRM>2(ksaaU9u9Brw0~E zEz$$s;Q;Pc!9~E0QdA*G?*>vyVck{<uCVlqlM{1Nb-^3-U}|;CQ<JhYOLP<SGIOWj zm$GD=F0jd*ZTjDx=0c1`(*w6#h)w^#(_8{{+Xu24IiLavWXAOKQkG&MJ)rwlz{<UL znM=WDsuRzdicPQGWX{D6ZU-Bvg0)=OYA!$hz%KCAvfw#W$?5-hn{%myRiMpQgK`bn zS_K6|1B7l+g$mZlzs;OW0bL_xGFm|atPwQYT)){|Vn7`L4u+iF=G^G6K=BAh2%vZb zH3Trj4|1atuJ8kg#q@;T=HfJTf-`zdz&8GZZ6|JZ0HIz4xS<Z3tTHq+0Zlf+8wc=t zCDKNEb2BS4^NOva;o~&1It4}E`30bzc14-#=}5P1pzKA3PHSSF!y|9x8njjcw1xpR zf}Kys2zDlDKoweo+Ey17A^QQgj~6tGotKV(-d_nc1Ez#+0RyO+msgUSSAy2Egj9Y| zL98vydTeKQfiASqNlZ=!jrKt`L)-^ntN<Pvti{<kEP&iI25Qsh7g!nSfQm{h1L)cc zP>)In*1%({2Dk90+l%-}`jn`tDS?KGQ!7e9W4!Re#1cq+V;v<2ZMG-|AE*Rv+kob9 zHPzI>!=%z0ustf^`v;0)B{k@b>gfhY%%$of$CYZN>cPjeG^>*ni&McKv`W>3`2<|r z+vY*XM}1P$N_1f@vT)Es27M!Km?V_1gQU3xG*SxH8<JlD*XmIZzVygCsVFru+Zt>y zD5#W3uo#aua2G+EuKGp@d%@P~8(G&Q*$l3|@LLTx5$s3GtOna$5Aiglmc(y2-0@($ zNeXYcvmpUd3u}v)<U1GGqDB*HGaM8d$O=Gwu!>q815jrIJnRA91mgo*Pf`rpNdzjH ztU<#cYHAwL<$bWdM9_3xQ&U%>SCW|InU|7U0UG)MAJPTy)N3eBw>Sk_QLY0Ti_nAY zI0Y*MweCS%>7ZA1rrK5`<rXWHtfK?Ismn?!H@_4#@B&&Z1!jVq7)m<e<&9S0-C_!0 zwo<J%+6tR`&{Tp(DrC?F>hjo{8ffvV1L@j<hcTfeCh<^3wxF|9AbT=!o=E~#3Lf{* zNBA6UDAb(k`e)2Jj6nSyL`{O;JAp1UP0g`_8VG7g3#_mZfi;-HW0Ro03s%rp8`26` zc<UQ+L@cNS18VQ37R9LRz)OT!WR=M6c*ybuxGenSX$6JpGdG%XJ1Qj>73G(MhEUN) zOf!t(oePL{&<+dKb<o~R3}hr$6E<59pQlIbyMTHH8O9*5gZdC6paWz<{YQ+Y1ssqR zl2<a_VV}7;EQmn5k(~$WM?iWs&{1hDoeGo@P&0F+wWq|+Qs<OVuQ!2hsVUiYJ(h)t zdHLngdJwW^2iKtsNUH`xi|mq8Q5MV9ClYsP1!z13Y8|B71)Ua9lvx12dK@(Fg0&{c zR*@Ul>VUcri6vmI^(5-Wm-m#wISahjCq}8DC_lX@wYWGbu_#7K0g`m!nJPvpS{<Tb zI`4IJF7Rqq#p~t<FowwV{OjhBs|OXYn~O|edEHzLA$Rw>xfGbkc*9(cv1s~)Tjo;y z(AI2iYz#Q>O;5XFt^^v_Qvk2>`FP7*5t6teNg4Y&M&`&XD?p=-=0;>BVq9ssp7buU zxiP*jvAH2h%cY|<HHvhqYc;K5qphG}AeftMVS-pJBs>H={q0k81;(Q30?*9Bw`y*+ zkZ=b_2<)I;Sl<HU2wnK1WS9#0u|v9$4%PGt-^`^z5ee>=Oh53=ToQC|=T-{|FR%^Z z1=M<mrbVf_;I+{T3ZM!Zb|x>@?lt0QUp*6uw&@=X%|KVTg6<aur>ysD&BUhnKR0J* zESer`WG2s8G`$`|Erd}2pPPgF&<~Bwlo*SqJH9a2U@V$$Xly2jaBATXaO#|BYzAIw zWNan_>u3u+Gnbey^U_>U2<!#;Rk)xqn7+Z-Oq|oqEHNz=bX(~34-yu-(;Ga^lwg|o zy)*||X=rRF%4b-VnyUaJz+Rs&^~?Mt!hXfy=Cae3UYpy1M!I8)rl-FKk8St9Hdht_ zU1yq9lBWl1tbk@8!9D#Gug&ERz%EM4uh1>dNKDBuw^9JDlmr`()LYdvGX)EQ`s?y< z!0v$_y&V6>ToN3D9|J8U=r)87p1?ue90}S&55CPCT*Sc+WvYdqX9_JwF$>K4e9)q0 zJ#1$N!Hy@vsTa3a&<01SHb}`0?=XRyZji+|peVqxW*h5ZKWMBUbjS=wt$=Das0)}| zPzo;TA=iK-2C@-@(4diE@Ug}9kS*=d0eR5A>C#lt`c9AnNC<=5Vqhjr92(59unh){ zRO7M)GR<6512zS0BkH7rfgVIfajgzm7MD3t2db$}&;MvH5eqph8hn2_E*+q7g4zq$ z40Z*Srw360pKd@bqyjhO17Xu1&@=jyO7g%*{ecdv(TfKMK~jDNR7j&lFTN--B{Lt) zw^an4Uku7-C{v+em)C;|U{K(~TmcSQNF;y_O-+H!Pol`fLLRIbvN8p#7^`s*6Tpf! zH9_Y_mt^Fp6kAoN<tOu%qApL9cQz9T9diP1z#|7GIH+J*0MzRMIU3wWfGtS_c@UI{ zVUkc6Az2RT9Dw5$pF4v=)3TbNb=kG3OP@ifYCtD0ZPihBqC*l5IOQR4Csl{7=!}_e z@Ymd-9<~?*KBb@p9%V>H%o^B$cX&fDtN}-%l0sr>Nj_*vUruUCs;yFfS{k@@0a`Ht z8rM(Fu>$LXHE%#-ps@y9B}G_>z|@1byj#J7MG2A{VR8xz3Rd74vW4u*MHUAYAGS&$ z5?K^xI%p#^baykt4cHF5je(3LDky;N!kG^04jF+<dK-Q4mVIb91>ArGb&ZNsk(U^O z!y-mqXZn053p-*05^N@{I|E+32ekkcaHIw^C{U3Cx*oik2V@YQ;KUuE3JO-Bz{Chr z1qCa-fvTVY4c2<l@*Y@bK#CJkz=B4=K`yfacS51dUqFj?6wsGTB7zr^6zpR_=@qoy z8B`QO3Nz5YN}cMYbntF>u#l~-ZA_9nbl5OP9kjd&+8sm0KE!UwzD9`IYHDyZK?Wf7 z!`8}x*9U>Rq#$R5`iu&trecuhGN>mAj!kF;LYmK5I)8Z@hUTV7tz~fYnVdc#tod9I zzQ&rO`ztK*H=oV$HlOP=Q*?^xbPOn@2m_yH1MZ<0<>%;4zb|9~JpvSVHwCCL0=K)S z`*~Z4BU*Z=g)9tYtiaRN&}|gpF`&E>D+P50b<l=GQ0puLoZ-PEdR7XC#_)SCz%6J~ z168oe3JS0$JLql<1q1LM>!4%}x$6S7?#@cVq@Y3}C9yaoH3h6^dbE#)EMw7hH4zI< z#-iy#A{H8I@Xe7)#k$3*iABj7N%<Ag@nyOOX~s!O<_6}m;3g;Z4AX-m7NW5B?E?`D zP^S*$Vn`AMyARYf1~~)jd>9wrTcF1wrI$r5v>1z~iCJi1Yq#5pf!&SKUOymaAt?wB zdPopLx+c>>ca->ng<-LaxM&193cw+(pa2@Y!E%uaN`GoPD9j)eY~Y=4Rthj9!F?x4 zBD0(RLBv9I`X+G;P>1KFxP>ue(e(e~7NCBctOPh7LB=4TD63#;hMqVK6pTPZ(;Fl# z#H7H!fV;%FphCeEnz*JH1X_R=-GKWvsm34(N{t^REDYhD1X#R-EC(eU1qE<~!;DZ+ zfX6YULkQ|~{1>;7)CDCVP?CUmA@x8VCXfhZ=-3MG43L(Gk`^9}MbmYpEabpeA6#fA z32`~rpq*Y240ibfDGN~2J|JZw33KQ}Nejj4EYcQA5lW!q0ZWG&Wta&zQc05?wB{BB zcF^jSf=+zGwV1EE1kpKyF1v$vRUC`zixMm0-3gc{;QJM$V?p~EN^?pw3v$TWHHvgJ zAk;>*{#ar?wpC8Bjt_VfkAEKIA}$;T;L{JQzwv0TFTyc;M%wYPIhlxa;ZX+);hSU8 zj!HE&Ffyst0UwV8bspA!BQ(BzKx-Ybt5X73+)A}NP^I7{k2sWqo1aRcm0U&ODZ`Z1 zdhnhT(B?(Rs5j)+M(o<rd$OSR2KuE!aPOk`uVI=YNAo}}aLTXG2d`~|9tKN5cW!20 zFu0b1Y9}tFL9>s@x=@l}J^t;>I*?io_ug`dw@Qm(!@bxd5$9xSPJUtlcqJ{!6sT2@ z=z|Dk<d<718iLQ%^vf^FOsfR(z~|&xffRuHulcZ^KWMHexg<3O+?A~dO+$eXvj_Fz zpa}yyp9DP<4|-R1D(Ko@=>BVP2N0Y@ib0JOSCpMRdEg`V>Y|k(=~zie3AD&KFI@?7 z#y;doM$iW0dV8hPycF;a4k=1#8@Tf{p_5oe;N8U5C9oB$dd2y<sVG~AGSf6t6*BXR zOF$d^^V1X{S3}sRM#J@hLn{_!r4?upBM<7idW9m}R2@ZwTJT0A@R_bf2u<M36kAhM zq*+@Fy5<LRDyt6oSXOXrp6CmvaNREz1KDN-=?#PK!=dH{Q=pR>rO3Wjsvdk^0yG<8 z6!?%+PT~0sGD?A(e(WIKeYhIP-~=R})arl>LU4A$VfJ)QQw!mGrRr+1%Gz4U`b<4A z4|I5IMt*q!XaxeaAi^{SwC^1`r9x&&p<_%LiNyhlpt22ebO2Z#cs37W9CUQ3L_4*j zL@zJD1X8o4f^G!^-8qe6nTCN*;`EwEGfDAU9k|iRV<yw*n^`CuLxKsqrX1oPNT@)B zpl7(E4#UWrTPOuXG=j4nI7h>#i@_plYLE<tB4`hpl?5w^wF1}A<)AgMR@Km00v~ly zuajr1XlPx6oOv9JiXb;HLmUWNQjwcjfXHtp;0&&)fuaeL<KP*#x)ydTdr@>MEZ;)1 zlWmC(Lae?RnlVd24l&Rvs)ZFXplhIEBSTOZgAbJiji(?27PS5rrb-2L7IJZF4*aYI zaHK*-L0t}L)FX-LsY8dYG;4K0MKe;of;E>GfG!x((5#(qCE_CoImi=wG%EO5kyOyx zsF2JH6^50r(9{a!YU)g{v$l{90tF@{Sna?TfKxNf10b(Kif_<4ou!bZuBHZV8^NwK zgNkbEKpBuzW<lre!UPlzbyC5LU0_BT*6J9V8W@091%L{9@Sqbo)M2A_;EDp0S;0*3 znX%xsn3;kU)Zm$Q#0kWRn_fyXrYpTR6HNs*0aKyliJ$}S5PG3oIzS!-?Uv91dkI4t z)(V4WKG^sRY!DHglx@M`SZ^O43(g0Su!oG?X@CYa!6suCTHwHj6g^<CgV$(-LIXK5 zK+{644kCz<-3ZxTn+s~>vKHi|*3^KV5{BwLP<4wkBwJGh$($&HAm=0JPtYYZAlHBm zFUUz%Qv;g~9}$Ll9qb7(6Iw$fl?tF`OB$NsFoCYM04FUQLs;Shb8SJ3d_fk0O(}*N zgC!|~<!vpHY%I>nOitA>fCM<$Fi>!37Q;$LL`aorR!?8xXdx|AqG_iKIuRx{2Xsyi zJa2(_GlKocXg}T1$wIWgL=)L3D$q@_C7O`35$qP!oi`}$eQ36ZCju+TdM~gxTRewE zYucw;m4N(XRSer$4Du4h9E5jJ(k?haK*_jP2V6Ex|I6$nt^hgRwzMb*9@vnLPoQiJ zt{F02EEM@bmluK7FXw?;QmNA)X!?kzK+*;%Qz2R%-~<|rRH!30V<1JSnpz$tJV0Am zLCgNZ=j9aJ=IP`?qZE`Vp))om(`_9r#4|ui4wN`Sd!`d}$`dP#5hXfkFde!j$yU)& zrv!d5d@1PiAW)#d$_3<Lft1vcTmf6vP*XE~qP>L-bm|Bk1yC2+8GsWfN*x7SABAOy z0yvQ4Aw?%B2;qSQmH-<HjdMt~3GysFQG?rxLL_IX;*89+67WgDAd?UU0IZAzM=scY zaJ;8#Xp(bovPcPZ$_R8cDtJN&v{TyPotdaOC?OWZ%2aSo2P*%-+w#R&K?|>PrqA-S zkaf!gZ!v~vCeYSxaA^-JS2bZ<OmHr$f&>`!%wks1UURUqsu*`ZVI1NBvyp^xi&Ug_ zKA@YtK#3o;NEUR^O};JsoG(LjOU-(nV%s8(M9@KBN-&!cW4*<&<zH%QO2w7AN%=Vl zIr!2rdzd~Aq}9Zg;C*N%wTN_!B&ntbx2qmuAd+Pzpc4s-ONvU9OY)0sZEcaI6p^@k z1x5KK`Ji5|J<NUJLHhhOg_2sNwL);~Fl?*O0WEBW`^`2-1MV+PY#xJT2~eGa(t*m+ zDA6S7R}9N@O4RDrDDf*k*Pu?@fsz$sT^Qn!q<RfQ3j?A~NwP51)XCE@v^0QFP#*Ha z9NRn%(9uc3;Dmx{J<4btC`p1Aq}Ll8ffl6aX_%UVM$qy!KxZX_4xuwPgd9R=Y641| zc^ZZmMw)uwu8}&Wws{&RMw&Xwws{(6mYO<gws{)n#+o_>Alg7vCj~^CXzFCx=4pW3 zTn3r}u`t%uNe44bG<9;p3{y>=O4~e;|1C6il0a^^(A0?s8ET}dQvtHXL{q06M4M{r zWZULxfcAkpgA6s()KLK&VX3JT0@7%%sS^y+XrQU%Xse=^rsHZGqL-%QZ|kg=rjun` zqz4HS9T(doJ+EMYKOH|?7d15(z2cH0?aaLN%(O}!Pumm?CD1*(DXDo%nmPd>Zb^PX z5opvZvn*9fQ^&`4x?!S)c)d=LZL$V5wd)q8re_wH6jdr|>i8mri<LBW+(6v?0$oVb z28k5fLi!4bOrzsuizR1d>3G-{=><X*>x9}Wdeqb?dcbtm7o;L{3y|*M)v2=0S5qrR zuHGP3m4dmVZMKH1Ms=-@QlgShb$TkweFjiPuHfbaL<P96u`;jK)Jv?b)dZ2S+*qHV z2RrKql7<{L3UyL7t&7yuQc^*)!wQAbsj)h)P(?aLYHFYhI11I&TtNzTiZpAjTy?@x zwhDj@O11TkE{V0x*2seSv;bskYDsBPo<gc#e70?gPHL@ASiP+imclSgFS8`ID6u5J z2uq;>jVwg=$5AXI_XV?Rbs~`52)Vx;6j1d=c?zH-;0o2$A~f8<;yOthC7L>^wiOzn z5fx3HB#k^xolFg1om5SGjXb^7ywcp%BG3il_8OTQB|4s<Yhj{2W1~}JLCq!z3v`a0 zPM&SHMxIVJLW5PghJg<3ggJ=b`kES0*m~-eYZ!u7v1#g*z)UdE)Tx37yQURLQL0X! zX01*nia#`~L9T_@;dwemwz(Rqw(%ONnxKNfKqnux1THl%y(Ggr-!9WyGeQH@MJ<ZX z)YgvGNsX@0i$&Z9QLE#QW;iH_it-fT1!JmxwnmAjRip-p(n-~<)rmsV0oj3&YU`s1 zIsp=r{z_~sG(Z<kYQn4m-x*PCYinBwI%=)nR|j<FnqsDgn@)))<W31tj>v@S)~u;f z1ciNxW=#!L3>@GYnZ=-RDv8yssR22|3&|Ov4jyP#x@|maM1m78)Vx%%d2TxOsnEWD zo~<J&u;H%ELs5tl%{4VB$pEw#MklYfR>vF34Vu+y`9&JwoS>6u>#qTFil$DHZFH<o zzO8{ZtbJ=&pKq-R@?WZLUUa^;HrPA1ww^ULskXK`H8n-B_Az`IqE;smr#0Y&tW#v` zuaRf(W(Bb_A7o{stpR9xBsdw^C0c8OgEZB)C^|6#VrQP3nqnp>Lu=O5<U{QAjZQ@* zjr>|`r<xj#EQHnI!4ptJ5+$2ymShy=mn(pF&Vo+|)=-+xSYRPjucQgyGgV?+ppjUV z4n9r}-fJ_khYLj;#6mAV1!X{ZLnsf@cY&mtR7m1-(*fs7kPE<B5Ry2eJ!8S?37mQ$ z2?UfCV?a46BePhi1f0+EG&SMlI{9j9p=xSX8ihI~I-orUX_@Jz;M@&90V}n{Dz#Qq zCmhrs(J4kQ%yg7W@*!j2(?1IOh}44|q8FcCtEr=+muBmw6QY-98=;e@VPUSRmj<f2 zY`sDCJ%k$tW}1Oy0(J7$)D-hHOpP_w)QU9<bwEpu3sQ?pDm{x`;YE#-PLz(Kfu>G| zUK%0_5KX{v4Z{?T5>3roO`SxIL_K%yM7?nBL_IexMJJtVNNs7ARg2WrFR@jcE>UWc zSFfa3T#y60O-DybQzx~=*1)<1cHfI#YKgUGibhFEbZQAGmB0&`k`misjTF7&lKi4n zteVP@G=ba`40DST#4SoXpxgm!%R*K|AhmQeHG*_Xv~87?H0^_;OJc1+gl!f$__I?h z-SSZ{P|8fx2m|>WT1=&bG;3O;r@<0!C56mlg}nR{g+v8N1+EA>d$hDTwLUl%bUPo& zDd2S(8k*Ii;1i}wi&KL$b3v1U@KgwvG6apFqxuO_vn%OTL%M)g?x5+#%)HcqqI_^X zT1B7=WTqBdMe3xdmiU+FO)sBlA;fIur88a7!c>^q%3Ejp2PHAldaJ-%O&u3CHH1wX zicU2(D2)M7;ZkCo1;5QlDH_x-j#W~$_0xz37mP~PwP0R#qE$()W=#!@4{<Rl;A%BB zb(BDDC?%b0$n*wi(j~1PdSWjqVlvY-AjLnZ%d4iQ2o7*i{J}~$P^nfDtCMMKXbsQE zu+DO(wI;L(gG+&H9#}D}04jtGV|CElP2f$?scLE(dA6yVI*NH}YLyzG5?dn`DfL5( zdGO(_wt0|J0h9}MKm#+HI*MVSIuM#NK$*BG+A!8ORmV>+v7jKQQo{w*b^*mEQVS(I zAhxC^Ps6z0OcN!q2k0Ovf{aJ_r)lb>X=LfZk~E0tn^=;eqXZ(Az_~R|1KL1^1~GWi zBs@KpfLj~YplAd&-OUX&HI#BwOA?hdb?QOgOVB~4`JjffsiqFN2@fhsbc$^abaG%# z&&*=iijvg4;>;w_I3C<&*dkcag5gqIMQ{TjOEWS@1CkJ6O9!E5<>wVoPiV4Wt*-_3 z3gCv8XjUg`l;{-cR6|;m)tOdG{z}>k+S<iB<={gCK}!ZO<3|y6o+@;j3bW~EUt*;J zn^?281$8|^olSeCU?r=1r2r*O?Gn(;o?<@8W=(LNqX_C8!pw710!ydD_^wLU$)Lgl z8to;~MX`FBwK@e@oQ1<kMFW_L_29;;q9LY<<+VB~NG8I9TcK1<Ekn=G)zw8!4dh5Q zHK@DQ)Ig5XDXG=TKsxrN+S@hKsz?W<9yHCFmRMZkomy#?1}YlDQxmi6tqOGV^W2J3 zQ>#*~Qqb0of;ynElmqMY85=|Te5S^b1Ow`>fes!w1|=LE$KZm@NVUz>gA~j)H5xFc zZGOFdb*&Ywvjw_LP}5o|9@OgAOU_6vaxBp>0NqZfkeR2DT2oW3kqW9nAxR@qFAWq4 zpkXmY@<C1QW(J_<X`Tk?`~yTs8d<ewJ-m>~)5*65r6Qd~+ais8P)9ZqTEOV!*cw<D z+vQkmW~OQ6N9WllM(1d2$ATtEVQE4E)HFjj7&+)*&M>qvgM^)-g}Ej)sOpPKicw-2 z5>}uSgLU$3GxgFy2_;Vx*3L@=AM#!T>R#vTrRkJ{90qlzU8%KZ4zz&MNwh7FE(O)6 zpd%r{Gqs6`(hxb8IYH%Eb*f&P?R3E^3(@KSl*HIYP{#p4Cqbq`JF=)UD4sNdc?skr z@U)m-W-*wqsX>GcEEy|-Wt41fK|V!x5L$r+3Mw5?L1h9OYfuFB*o`0w4|D)NDB*zy zA#y-negjRNQm8NLCt7gTTZ4QB9-Oc*Mby1u|AHIt`H+TtBD4pVqghf^2|J~~6x>X& zO$JQ@g6gN*%ruQ+uo$!uP{`C!EYeGZg?B2bOO+anoEYoD%BwL$3^Xoctf`@tSX`Nx z><R6Hf|?45P=X|5n8N&|;?$xtP-hTb6=*CPv9KF-MjvPavK4qVSi1ytyA<pw8R!f= z_=+RgGD2G=*!^GAzb^@wogP2MLWT$VPN(U-au(wC;Jcq73#E~kOe;VRnX!eg1lQ11 zQgDFY;#8b$3%(UZ!Bzo!lpoUCMO(O~pkru2R~mtxW~-D`k_TSD2|8U!p-eZUBsa%a zDJMU1y2n%tLv0L)!`ALXS2QE7+?~F0s)e!_e0?r>`UAFr-Bt-a=LK>tnw!w>TtOV{ zmp6TbyoE?TC@|44FDugp&2B(Es|39~t-2btM7p*XZhvuVa#3oDl7ba%zRFe!#sY^d zWa$nlWFaiDAVzSj!<JB^te^(nbAlS1(+d?Wg!PnQQw&Ow>#jhKNAs_ZK4hZUE+%jK z1_cWd86^lGRMbLP#Y*s%_0u=1ScptNJKchVA1xxLDO%`*mgg(j=z~*T3G9NH(j3?t zcKGsb@EHV{P6jRdR#32k9g_^*vkP?tv~WYS6_##6T5WR7K_|w6jxtP6gsx<Q2R`x& zS`0I$GtRV-5Qbdytbnwh!FIZ|5~w=~^8jf60h~08@^i55YJi+B3Yjnkg)}^wK!m_k zRHWyQ=|5-Pd0m;ucy*pf748W+QlXvrEJVEQ?k&{zU<b6~*-OElnn(!hkG3^=<u zm6nv`=V6#VUEa)6OcR!)6u>&bgaT+n8zYZRzo%?rBm}Y&gl)jqrsWsePLG>yp~<eK zV3nC-tAt2tf|&N5o^7Et{ljbv6)bZ4b1bB%`_8eDmB7#kEh?t_Z8MXa?x1R+#0k2U z5S(?V=c-yLLT+_L&PPxkp!KjIw}P;Zej;+9A%~$2`t3-dk}W5{1U;$4wwc3<EJ%5s znZ{^4ebQVDRa1DX%>yq>Q^?FyLb{B>7JOU@NDL(>PiLHGAtnVj5^~5Vgb6d-cDmU- z3l&6Z2sJvtw1fz=mF&QqS}^ProzA0f!BG#|-;k0?_&`rf<h>0@(_EmDO!yvJc>4@C zeMN9Ly9Z1!Y{?9+!x$~iK%EA7Zxhs|Lz&kApTv`ys-uLscR~r)0RgRc(?MDSjO%!F z(9siC2H-`7R^S6!KpUS*!Mg`R2@TQy(5wcnG!v=M1nB_HNr9$N!JJyienynNZm@PA zX!#Ii6&Y+ln@Vy<W=={`Y96Rj3hI%<_SxydWk6%&w&0~IkfAL-ur;;?iABY!0-kv# z8YMc02AYt=QfjAjF1Jum(t$5;1gnM49IK?}K$hNtkKs;CNzs69!Xo0dJ7}4eS(2Iy z+Aap(KLy#GfNwvHCGr8Dws{($!?<-2X#^2dWF;cfx04$gU^}@V)K~{~s|_tJ@$QE~ z-wqQ^yY1xa(-)pF6%j7T%!94*M?OzXa(dWi3jxNW>5xOkwpa-0fp;K)H#vX_P$Mp_ zC^0v+SfQ9`LwHdPnXb6iLO2L!J$Od~Y|jbm{&Lt}1DGtX4JwwFmKLDB51`Ez!eFal zdo&EdTW_X=_MS5qO@F(^LJPLjKyj;u3S-gq_YJ1--7z3%O?TLB!8M)tv<2u^FpznW zJs)64BKGk>oC)DiXY@8#n69wRf{(Fi+BOS4&|dXzDE0`03>9Djd3ZW>Q_jk57LX$t ze9l;aHo(8xW+4IJI>A^3IZMuZyM-|1=sD2VpYu|dqSKFUw*YN;-?-hv&<fe3#_%2b zupKW55%?Yt$UYv>h7Gt+IY9T%B0CHeQrTdWAsb~No01IlOyL%w8Hd>L4+(2fotT!N zSE5^-S(R#~U}*~4%K{Qi&d<p&vQkhsHa1U8G6!$HfjUKIy68>|QC+aDu!uvl5auI8 zxENet^-c>>&_;N;BaGnAgz18bfb<;PX<>+BjS<{P1qHYUxEM%_;#Lcp>95bDInNlb z2B8lj2GZBN%R&zvp^X<TK*txn-esY~STtQ~w}k~`(e%*W7FM7;?i3V~5|gt*8+Y?k ztQ1O%ax|vbT(n4<e*Ypknn5QDa=;D=03AUnUXOHQ05pOiX%Uu1pn{O}3f(EBppcYb zl#*J6a^3(mppA{-ieLc%7phgq*n=Ys>3L#SkHp+aVrhi!U^Z|%!Fr;uQf><9^fk~L zVeImtlSV*i<XcsjkbKsP4vv}{vaJ)NjxNZ|%S$Z^2Bm3uHyk!r0jhZ2i}gSru~z~W zilDRam9)W?E=bS{E?Atagsm0_tBeO7LTWqx;6V#<X(bR_3A*+WEa6|4S_ImoW;^}w zK?^C*ni|j%xUfUrK$GvjnR(%fnMiZ+h>4jJ+mf0Z109XL)N%!v#FA7^z4X))&>C0` zP2K714_Sz-+n5>{*qa&{=z{BhP}PrJ@&7{>67_}#n%X5+2HGXi^X1^-0a-s>q6aEd zK-Dg&<pN^cLWDGRz;_#hLIfrYV%wI0Lk=nnzP$h@4d&RE=z(ciXiR55WFZn`s{}u& z7i3L5_&Sf&6kC`dAuGTjkqKJ%1`cACqWt_4J(Z-Q{KS;x#NrYS@GwN4l@&D7K*J{) znJM6Ph!T)>i1AP<$GptkM9`%?kTt>r8la&SnDK@>CDR!XS%}r!mgu3xmQINtrkxOn zqgV=dU3zK>G!iuoK%4Y+Qb8vv7h6?>U5QYSXe)vO9OQdY3lcQeS+4^!JQbT#XbUeR zGX=B?5wwjYv8cq#DlsduLJ7BlI!dW|DHy6y%|coxCs0z9kJ3Dyo^`@Pg;58bX6?Z( zP1Nwgcj6K1S;)~b(+&1nNG8Ro>p)`!loxfXW7MHsU2r0aQMUrqpi_=vqc4zH0<|qc z)sO<@2xVxi6Q;SmD6yaba>_CIt_n$bmQBtqO3q1DvV$~6V~W7i^>ArW`UahQ45Djm zVTzy@5p!BFyv+)3#1eT-F!VNAqPs#w_JoWK(62TCjo_jb_K?Y%>F)QL1jsM)QI5%k z%wN~)z!t1ScbTE=7fZFma#TwsbQ7H+%8o2ZY$K91av@!;7hjT?RGeA@S>y@n`_$@y zyE4c+ru*NvP^(8T-msbk?Ezsm7jbkQvf;2<AyCGJYJ)7;hH~^$Ay<*sgC<fzUMork zpC<+{W}(?HJ~I#0a43LeD`>Y5>KrH!>|L-T#I!kBIcVXmB6v#=SV?gzxMYUvveqoI zEzwg6fh=#eE`cer*8rcQSPWU20V=X!MKaVS_H`wCkf<$&bS3@Mz)K)tJx|S=n&~U< zS;)9rA=H8A9+1s~M360Py*e~dY^!S_B|6O4YHHJU?pw&DAeBDog%8M7nA`Or$pWQ6 z4Xb6KR=|{i&M5=O4b)d^YSXzNSjaQ#Ot*PpA&;@P7gP_R4zYs|X;UgmOadQO4j;5B zNlelOi6}sv0v}=mm+tVhE@0#F)u58vN)c4DBkokRDk+kKUD;`?gh*ac-JsJYK&Ouo z>^&P9pxuXIWPseArgR8~oZhn~+7Jw=;DPm?jSNV;52K!Ty=Nu8yu>nHP#OiDw_u){ zoMd5UYzjVa0aWHgTHn)ea#`|&x+PRT=ox$andEX4UTo?>GAp>i4NJ9x7Q{IB&4PSw z6&;Ip3=5K`F^jqBk{>Np9r2Z7C5cJk5(>7ay#!o9!HNtuHAT>f)AWm1%tWC3AfTm` zRdp@6Py^?3s2I-DuLN?M6vzkIiaLyv4s0m2T(B*H?t!U?3BbxCQ04@!yF)tp2{f>c z9138AAnFWjb%@*zgQHbc54w}mR^0}4Arolm7?%1#GiK1CW2|S#7#V^#D#4lnpk{_4 zk<ARqo%OI*Mm@n1SC}0H23(B{u{AT`x!n-`HUj8n1oaw4w$YF)<mq*G3`%aFZoz2D z1Mbsb<gyf}P5uT?Wg8lqgVq7SD}1D$9B9iUVr&!ba(E5YgU>-D%=vk#c_qbG)hYEw z`30aWC9U9FA!>D?C!^;jmIZ^4mc!o324xy0A`VK=%u}k>ftCY^vo9bQ=0Gn|#&wJ< z^w1?M(9Kpjy5*oe1m5!mEwqY3B@xJJklnbDRc}ZeEMbi#kdo9ATg7^VS{>+?U8oz8 zgBOua!7Pxb=n~K=9N=w3*fTVeN>FnFVrnc>Spb>uglYyaaR;>(V8u0TpA|%(Z3(2s z1R5_#T@e7%gWA4`FVju6NK8#mvNQl?eNerlpb%4GoUEv;tKgSdrT}ujg05~%g>foG z(xx<r9XeS#eLlCPs1oc}<&wmtoXp}9@QfI$nbRNcF%xrF0?#Wzs)=GOsz4K8APkwT z15L3iLYj-<A{~BW-1JBuOLZ(~n?XWIqeK&r(FzJSi3%A-scE)K${5NZWg%!n-Bt<W zN(?2{)zy&J=5%#lOF_f|XEyq%vz)M5Xz*lhaVlt@)(X_AvsHp<Pc4FbN2wYTX;vlB zHe)UFq6noD(0%lv)fg!lj)`H+n;yt&DIyMP9)f1lAuVdS$<ymuEhQ2#v>}H8WLX7l zwVbUIEDRHqFhjArx+F0P+9U^cP803GzMj62&r&QNJP!z(qJvGWL#Hooz*hl+Wx=z1 z(4I1=`3gPx3e<E>&9Oof0fiP?vYf8NZz)x;1nM}0DlE9+DVb$pHl(YJqryUOo*I(b zJgwJ2Thj@uO5i<iqOZ>}GQ`_FHN@FGt*3j1Rg#|%IyVS<droppo*qmDG)@e;D+eY5 zo=!m(g3P#pCImnw2h!<Jpfm8m^FMl^OEEI@5O?Q*<|;sw9^fl)tQ9RKB;n_iL6xFh zks~{OuCyg|T0?C5G-*rZD{@4qpO?1e2?oyuKrXofIRoi%T-Y!-*eQsMV9->-532$z z0~6EtD_V*NQr+O`iRVngj%JU{FD-$E8&;>IItr)TQG5t-dZLo01f)+#J%folUJEkV z18V<ePWQRb#7)eI4=rz_sYkxa1>9|c^;$rS+Y><tSSf+;VIb6A0bl>5gmGmJYF!ID zun}Avz%M&siYY>xo`#Mjf>+dGx$Quq7}Th;RRZ0Qmy=j&m6Vg8oNW#5s)H&`SXVzf zMje_XiM<4YKQ*}oZV;%~54wjyLJ4Y$F4`>!;1Nq9xGZ=g12h^6zK|CC9R-lW8I<Qi z4n^icSH55`w~f#{8b%~`H0o2qol~lHG>q_eG>kAh8ubHq?HQ!`F`d!KQW)ID0Nt-i zvo1z?W?o8uxn5XlD$;&x=*|($HZ*8uMlqyUUI5#>>XKNJ2tLrPBr`Dw)W1kgO9bDN zsSaCc30a>B(yLITkdc|5k&~I8Q36?R2yPS<B<6vx`h|8vAZxbK`wfsG2}I^rf(}kV zdMe;0!qCHyU{ip8rMXF|MQ|M!wL0Ksv?zr|tq!cogG1OaF&B339=Z#lT@|HTo$S;~ z6zw{&OZ&jxlv<r!(Ar?<#A299ga@?2X&*H62+<o1x}hFw1u>ez;SV~wJU`DP6LvF| z8+2I{JVY?MJw>U-sU@(J8Nks1zEB2fy(82Okf5m5Nl672XOJjB4(|G#5-TGE100<^ z+?Q8@x^^zG?x~`oPF{XcYH?{!Nik^iTXJa;=wK-;107IO0`>YpgGuo7*N_t=W8(CG z%syg#pcV1p&KamHsX5)#)>5G!bX*ANss(tY*r!^h>XqdC<d>%wfg(u*vNtf#wnPu1 zrUbIf#tKTKsfP{ZLo|S6%N{gXl?v&~`KM{*X<F$Tg3cqUM-r;l)WdT83(jd_SW*S0 zNi{Y2De9noP@rxns&uAaL1GaoOG3uo;gZt>>@8U!y8~fj$mf+qPT_#|RP*yRAX{9( zVF*qTur=*q5m<Twopc3q0VtGVL+Ri+!ctU#$L<5cvo5fhhNuE-fUe=SgN?j{b1ZZ$ zudp<=s8U0-RtL-g9covk2Tp*gMVcDZ|1<lDN`cPvC<0AsgSL=qLVON3LVLQ6qopJ` z?n^*>xpRwcHA?idQ!Bw|*=46z##*H!MF!-ED9|y>$SD%kGcQTag>4kA)vVP~0y{uS z2fXGC9303&2M#2#zd)N_OET&+iy_GfeoPYb=`f%WM6nK(fs0d19Ft2j(Jr<H8w|}4 zwk4ozjIk(!B}$OF5VcyM4Y{CQKWK{sN??6R7f7Y6p{X-{v$LfNIGKQs@G8LY6~w?2 zI|FFsK>515wL0LjC3x8a9eshy+kjmT4iaco>l&h(psfws;*ptCl3G;EZB-4gE~W=E z`-s*nl;{<ug3BZDs)V4_bk~Xk4J8dF?Nn_gO(h+r^h_m99VMIMlA`>)bUPJ88+|BK ziJ0*eXgdvd^PH7JQEE;iDD<ICEb#Jmg)-fw%)As>o2@!V9dz`1jJg$a<iTcYpyzoj zD4-n24jN5>&jz8a8HY8r6cnt$-h>>RXR8F^aOLNuq!xi4Gu_d|Qn()DsQldgl++x| z^X(nL=jYohL9#d408n#I0lX0d6k&R$1t3{$G9YPNB@l@rJN=xyC6}>MMkb;SiezLe zXm<xVQy^;ujf>k(4=}Y9t%nOE4t2M|xfuZ5xQ4Wi%JbmCs-OTFa00CkR|2Ig&`=79 zE(Q%vpv4nptR_a?N&$4OcFFV;9+o_8p!RP}-t_acE#&IKK2dN0U)PqKUzQ3QQ-S6` z4HfX*uqH$~B=A6_4YZhrop%o_R6&I_sBr_8MshG{pd}HB4<3jC$2%x_LB?Fby;DeI zTfH_`6I9f|a}?UPCnE#=>q%j!tLwn79s-rnu;F=In4qS0o`zAqriPM5nn_xkrE#K? zP7!F&DC!6#%2XVIYmrE>S5rgDJlP~QrQXuikg&Z*RP!&$UPJR_%ar6)u(kD|OGI#n zvoSU8HB3pdNKH(H*bB3^9<-_mv=<B|oK2`|uepU~nuS>!*uOA)Vb<28*lS8nd(Dl_ z4J{KBld;+hv$h_zK-viZeF2%Ir7JTtlN3`E9QGo2@<GuK4}ZjI8K6Vubc#T04l->G ztTSy=q1BdkrnWZZc#(YD)acAuokZLGXoFatV%z*^!&sdh+x%#wSe;Va{AlA?on+hU z%oM8<Z6zxu?M$8I;$o{}o!r!v%tWgko#On`qU2QH!~(0*+Is7v=)_oi5CLwzLDyF# zYg$3ir31-;%}Ue(l`F+o(aEv3ny|Ayv283xS+RrIbDgSLt*@oXrJ$t{R+_4pRjg2E zq-U(hWXv`Fx09pf^oLcx($hD5GUBM`Qqa=p0)-7IjVR=SHaJ4t6_8E%pk)*_HK6q= zAXY70C1|fEY=<O7C8(LIrUp_8Vj)z5Hqt^>f+u)O5K{RXGVlp6MMG2z5;aPuuX*4t zRbNvBI}sVNUmIaWF_Md6cB`o=<tJr<22QZ)0PU29x<@G*q7HiQaV+Ro+^kIKMovwL zCH0y4c?zWnTi|*iZ4<0|Kw3aMu%Xr{fE;FPTVk)IWQFN6dr(^zbe2>m_$VpRaXF<q zIXXs~kXicBbkK4?c({W$I)k_Hr$RPwxaH(0mS~i~cl2f!`z88mq-xrO4ibUuDgYHa z$ccXXh8RbY`XbPROvG^<kQ@NIeI0y!4=4xZMHfY9#>RqX?4ijb70U@p3VG2bs6D1w ztf#5vfoIy_uBuOgI197|7n<!LSq{`S1J}m>X&R}TpiW+%ovtCgYXUw(Bso<hPsdQR z77|OK5YK>^26d+&EFM9p2EnZ?14Sfg`Z?9sKdBy+M)V-_i5j3df`=kZy+$5<C0J^7 zUTjT`28gmP(Ey$3g0MLqVlzyaLLNvT$d)2o_%Rev55mvYu`jY?HncC9zVN2EaJ^Lt zB+-FRT!OO^`Ccy`a`vq)?5Gr-JcQ-B5X)0-Q)_Ar!0RMHHiLo?qDePZrwF`O7CeTc zk*8^$r>kqNSrnZYYg-bXr=1#WT@MYjB7~`x5L02Bj`Bdwu2jtukS0(Nz`TK!nL+15 z!FSN7f=bjp(7{7CFgIK0X={TG03WWQ12PI0-t`Kp2%F<IG^-Ij&|yxguv7uc>^eoZ z#n42d2s$&V2%0QFhju6ysi{GRE;LFsZEbC#>{Lx_r2X9J*-g{dw%!&^FjW(}-y0GC zpsrOaQfezl3m{CtW~OOWXn?$_ld1`Iq(UAv;B*ZUUd-00FM;?l6?CRFG%jF?Nkg+b z6_oD4E1RK5iGVs;I`EVQT0jg_t>BDE;2I^`N=lmG!xNnIQ&PbPC_t@OFgCNb1tl0u zQxGkRaEuDbTRM3<MVi&%y>RuQ)+qD@jyxTtqs0^zi*(A1GC|YIso>F@{5<5NjB269 zCn#fvfZUXsrlA;?saKL(3@WZ*{w)FL<q{1gJtbITP=NUbq$@22da4y9Ex~JNP+F=6 z8Ce1iS?dzpl4wxMjD^*fCACPg6%6qfc(kJ`Q!llsD8I-fF)t-2wMernb2?+5ql5^^ zr+J#zsX4`|3LvB1Giz$5H!Avw)F<cX73b%qLJyllO7o5&H$ox|+w7y7ntmR*d#R9| zpOUH%^}HVJASckl%P`L>xPpu-$k!`LEJ_D0T*`nRi&c=XR}T@>)PYOeBDuj|L$ewo z0n(OVpn(+nSs<^2T0-&h;Nv#q<86_0n+r%5)INjd^degW(8?5eab=TfU0;M~3*|)@ z#ae?BNxn{MbUx^m1Go?TKt_Q>7?e*TF$_!Z3ZTMSDLy_wDL!5abby^6gpGWdS5m$` zsMLZ;SXJhO#*j*LQk?Va^U6|-O4QU8i}N)=C$@nLGT4a{8laQfKy|vNni_Nx3;C29 z4e)7iC3^9h#bKq86MjJZ29iK0K4|Kss;T9H4h1gDb<Qu%E78^lovQ}-kSEAPI(a%m zMG((qf{W3De4Tv6*%I7Npi?A3Rg_|WO^u?VqOEN{==4)~UVvy#1RbrI4;r}wwIJ2h z^7V>SOLTH<{Xpe0Qbt40V4&eulspAGs0DeT22{?c+9uj3LMo3EO)GeC!xMy>nntEx zN@_uBUW$gMPL7&d4u}WB5D|D-)`L#3*GSb=Qwsu}V+1-Zu^9QBM`$5jgk~S;Qi!6O znpDuxr<z)kqOEOFO^rseeKFKcI;omgdA6xwucm71WP&aQ$V{sQCH-3D$~ypjMg}M$ zW~OPt9R+q1C<ZZ_fbi2+VAYE)=olou+{6kEn1~MOBo1)-lANlMs$&Q`z%36HQ=qhn zD3VK}Q)6xObn5fKC&q!AM358+D=J}Wr>3SzO|3`|npEubtcvV4JT;0S1AgGWQaYgV z$^y6#b@DW=G@z#EA!SG(P_hE&6J&qZSAvr&ZjXXn*^u%Q;vd8?Hq^lgmm(+Xni`0I z)zmbgCv1Y;qytuxk_vZjy(W?qgFuB5tVBq)1zT;PlV@w70}3BVyTUrprU+c8r-GUh zv7o#JI=C2=!$Bv_K->gMXdsN1*ue1$OKXtI2i(r~g$IoyB7zZZ8l57YOr3n#VN}_v zm7tb@4(PDKM4NnAiIu3Wt(j+=ADtKra%^-S=%g@E#h?QUhCEIC9E~DP(0NIjnrdpk z8bvypnpOcCB|7zaI+^e)2&s5=gE$FN$Sb7Um)L_({7p_Q(MZ*_LXJVukzw|!R?(@k zR!I5_A^JgiH4o-;Xp^%9(y@Zr3OX1x)xJ_A51eBlVFIc=oj_3m(hZu^0MDR-k}xzk z=0QWGx)vme?ilb<L3y@_N)y!XLqGgVqsSH%I+~y}^D}J&GBt`cb@HP#V{IX`KA>iC zEuvD)0hJA~gpmko6oL#$1ch=yCg>z;ux3yo+ZRD+lZtAsK_k%l1;w`cNOiIYvd>cL zGmBEe1L4IWucU(A4)Qj%<q7WdfNaW(wZ>A_7OAO0n&#EuA;BWZDf6jTMJR<#C@3yK zWemKCFVcXO?e(_t`O!tOH8mCa);ZBdv7iH>qKiOBmKMc=+e5WjtOZplskZQoIy7~h zG*UHnJV5PJklQnDQ}t3o2d1TfJ(UR>nX?5sB2y<%6Lc|7Ze~ShUNP9O^&k!Twgx(h zwyAm$aafAZw@I|l2Q{9-dSSBB`LQ~AkTRfHCkJ#r87N+gL2*)|S)@@6Ieih#Pt^pa z{bJ3U8n8GtE$1K-S(QdfJ*Wr+HTyEtFb_z}gVbV~pf*-4D1I_Dz+Qlwlo_2D3obqL zK?x`i++zc&$cMLkGo$k%DiUpdGBxtyDiYx;>NBGgV_{`3$iSK!kR}kB7>kr@!Xa@8 zaw#apGHp|%OF(CwDrRWp>6C!agNiNzyD?G&HkFzQzL*%)bO4=w333^Ha!u1d(N@vW zDpI2!(pk`fss-)3RJ65CR8vb-w6*mG4Pw;PXe5HxfNSbN%0pXQ+eFRkMB6Y>A)-?P zjS5?&h6}jeVvQ~UYRUV7atew>eQHsOZ85Cznuv&-Fo=i26-I_eDriayJbSDJJxI35 z7JeoLEchT>d|=1sfC~+m#F9kV)d--07CjX->H3ny=se`x6H4?z?ZtxP=)72aB(@cn zY*3`8rUaXPR#LRJjnGJigt&bXv>BjjRfH6W5lA^7w9FaQAf7($x+9-eTuiYRJacNq zlxu71LyAYxDbDt((T1^BN=k^Zi3EiWIAj#3=gRs>)JJHff;xU63lP-?xY|OLg3xL! zGfg7`TxP&DKzkC32GC$sMCzltgIo+v?V$E!c|P=zN@!YuQuR8JR0KZi67G*EkY-R~ zO$9d~%k#mztI~B!^gt7;;A<l?!RL4AKz7f94!6k31&Qb9fo77xtlR?d0&joFl@*9U z(aS5gEz!#>)=AaNEUphONi4}s22ErZLzp_Lpjl8`@LVWZiF1B#ZfYKA+gD~WlnoKj z$<Iqo0i{i(-hmg$<)C5(;(B<?Di7=taD4+R@QOgk{o15j7uAF6UQpo~r2#q$5$;N) z;R<iCk<g_I3aJ{9lBEPOP@)5>vC{IuC8i?S3V2gL4_;d2L3_fW>ItbQTn~?Qh?8K) z9$SNYFrcmrvbGZV086S~8YmQXkbE8pN?DNF72?7~onoCFol>v`;EJzAv)Hx-)XK=Q zO$AY<wjufTplqF|0V-)V@-%Wl=XYxqgA50iJrL!#-WtW4nmR=qrFx*n%sRz7rF!{! z$*DS}ddZ0eC8b3mRzYHMab{VnrlwV~qOC3HdXyZHDYnHrARBFSG$DmM*d3{wc^V*5 zkQMbHM}XXr2{RtzG?>xIZM+iDp)aXA`I^=6gqo<KS)C6JBD66EofL>ibP_ddL5TrW z<$&6e)?jZI+j?t6C&p^lTNP=5U8)H>Ydc3TH?=4|HAT~2qu4e_2OJQP9fgS?pMmt` z=p@E!>J&p2f>IyIP}^ce7EgsZGZPXE`H0FEbk2JLB$ec8<U<O>dWA&Lz!NA(B$kvE zfgOoZ2dex)RbY-LxW)x}qZCwK=0nU*1{L$An$~$G8i}B&)=36Ukk!<H`NcY=Aig0y z%_Jg~XW;X5Qg!ll>N7#%nVF_h1ZpRN1}H!!HX_-AMuWi3EuH+D8fa@A)cVp<1fK#5 zQk)4-<50z!u_%f&V?o#ML5d>e5~>I^tYVBb0B2yGiWqxK)z$_b4uqPWKtZjkIsHHd zpGti+=p1Wk!KZ-Ke9Z(I3meBy)F{!kj|P>6v1l#d5>0#XFf{ZuZAA3tBkKoE8mOri zfr`J>3Q)HWR1$)Vp?Xl6gwz2683sC>2^2^9kemm){RdPOfsQlJNB9iXFaqT)P-_UB z@syw!V}ec&g<NA&TvMZwV_O<s3T;s78pi6NhD33_rhO?mX+l$fsZL^vMzM}YDySWx zsjU>Rq@Ay+X_cr^tZAQL0?OGr;Ij|3VPlNNnpR4ns;^j04PuanJ1C!9<(Fs_YpSV1 z^q@Gw)?EW?MzLN=Jt#b^K<E2|M=E?Wi$TFtq*1I_l9;Zkrk1Bs3@XPpL7@lgH$k|z zO7Zb!;9VV{<q;q^YAb=pS9G9GDAt6Zg0E1Dh!fBV94K%hiAVu7T2pTiYpH^c+eeE3 z97y)d2UoJ08YPgSGq5|LZ0G#k0z{gH$b-Z{%|uXC7o`^G=ai+UAgO@~fs}yE%*n4$ z1YOe!H5R&P24o15CL~diK1Gn(;9Uw8CB=~3uaIa9?wf(?%wk(m`#1+wqLd;IRYgpJ zl-L^Rq}sxcb+xW9u}QTq(bm>Xj4p}QQ%TD&N=^-hU1Fz`Y@3akS_2&puLtviZE*>> z$EK45IxHJ>9(o$G+EmSIkTb!<jbQJ9dH|3h0=o<}3<A3Pq@-RWStku%T^4H;fJ$>L zEv*8*l8n?m`#g;jxDzzh)F7f@Bdm%v3iROH!8DPs>OtfOBn4pO)YLTU(Z#@q>3|Fa zJ09d5r1%DTy8z-3(BL*$9W;I*Dxn;ZpCM|Y0-!M&16y0$0?5iP`w~5f1Z%pjqJh=) zi3Zxjpz%yJ|ADwj&VXnE>Ch<!g`f`9w3-^wGA&TuTA){wnVXtl3d%%aLqQk)flPtL zo2Hst8f40+RtKS26Lgp^_#!W;6>#^ZgM4Cz2=rP+LIW2Y8u>_tS1Gv6Lm9^c-2x42 z6oLvcP??r$i%~p-d$@V<9#)Y?9ymMXAz~BO_JcN5K?e=PtL|j5oh5qlkds8vMjG;_ z?~ie0l_}AS&qyrx$j{Gq1)Vnnnr(nMrbJI=dY!F{WPPfdS_(MFBY7tcECA{@=h-{w z>#2ZRE1=eqrWJ$-W+O_M0<dz;YOrKl8k#J`bdX`r`L-oGff}hgd7!hNb<#?73QFpA zN{}qhfSLqyV;-o33mTP&4freMftz9=Iq)qPnYN(2M_?^f>r9(`#1wv_ZAo+{xK9YW z{}|k+hKyGx>cIjqF~>PS4_pj`WNK;@6Tyvh$Ow(CErh2B+TH{|U>-6m0*<y~WCc1o zwt3OTpvgiIWg8u<X{`iXH3XVrP6U<d_Br5m1FddybQ1MIhxpZlPw}&Y$Y~^M*24OO zMS7`apw*FOpwVuPJkUOk#L}D++agWmslYODB7hd_C3@hR6;!d-)F>%{Y=(3%5K)y5 z4PfxxVRfx_T0P2a3p_AEvn{9<Ca7(qX%Es58emJ+v`UQz34!V;@T_92UK)HX8mU#C z3w9tV&OoDCur4UL#Sh+?T@OBe9dtQJs$ODJaY<2PatWl&w$4NJSYa}tk$V-ez7lKA zJlj0jPI8c1P-ubz6CBE*8T1mEtZg3bs2<xq`#i{@J)rvx^;D8G>LL9w@M=yym7>(N zVo-CkL@yq^pEMP6p|TEWoHY-!)(m`W9!MYsJbdK|69yL|@tMWGplJnAx5^NtD6<%P z!5or^Q)*^jI!w4e1#}%9EKMp@g5w92SxWR&QgdumK`w{&+lx~3Qc^*K?Innifr#0v z<ZJ3=gY+sTrKaT<rGi}ny%MDe*2pVDt`<x5;z3IX>q}BKO7!9(#%O4Q@BcyeeQLQv z0Qekxop?>q#j}PwpbnTV=nRpvy!;f<a2P0X5Z*R`x+5174oaZQR1xVf3FJmlyBRbJ z3(82`3i-B*iW-?UH6?n}8;zVK>Ooi1fO^S##mV^vsVTuZ`6b05SrsI{qOEOsCU{5* zDJbG02_p>TEZZVbz=2%|X2ye=;JO&X1g*vab&88XOM+p^5)=;8dySlU>TNSYquWS^ zgNIZ!t5F7UK;t)xhVViO)E0pZpy+_QBM3u5dc9LCi)(74LF<SNtaEH&D~_#mU=wYn zw#CsovDS&vrLnf*!5XC?_roF{WI(Y_DyXQ$bbtYdO3=uUZ7S&0a_A@?Xm|ip+%rSV zeTjP8JRNY!oTrnlS(^_I8I@vCSleclXk_Yuj^qIso8a(4X&oVz*YV)o4XWZmht6n# z#u%X4Qxkk%J}7BGGYGT_gN?P+=OK4xD!|DC+~Q0HlO=lbnE4BA8`PXy*rY9nN~i)* zixJ6sSg{T|#49r|F}WVJ1{gd?3gUq{pt=#{6Hr+NnR_k)6%df}0osoM&whX$i;#&1 zU2g@+df);Abes=pWimWVmm~b9r~%C{DVg=4v2R4-VW0!?94Mj3!(60^=04=L9tPHV zHaOe|vJk8LQc@8vtVf=T13Mo!!2rtI(1aJA3a&yCHxOW%Dh7?SfYw@o$66qlav?3H z2nG$&>ZEEbDP-j5XDeye!Wty?&=v`3Fc5knG)RS&l6ERm`f@JO(5&{$w{?Wg_1L<? zSq3`(`Jl2oE8o^7AEgjg0qFvX8GwhVOLS7fdDJmquQ<P`1k$btO+JAeDzKhziC$)k zZmM2pO0A}jAE?Lamu~~N*4hu$=`68z%#ZfVkJSNHWtk~D{`ugEM9|u;61}3*Joq*f z*L>(M5KWyTklP_!LNu*G-qCRcttHZ_4=Dl7yX54nsa1idYs*0U`-;`na`N?3b3wNy zrR9_sXDA_sMF>2vfl?^Q3D8-&RL~?3s4P{0v?W1{fAq?7t&0$qn5}IdXeJX;J*m~J zWtV6a=|Go{r=X<RV6aU{nFn;$tt)hO0&;WB5v&lFX|S|#LE{a2@bnDo0D&?O=(@jp z&`mY)JmLyA2<ETM6j0`c)HC2P1{Von7RU$}&;S;^*#eIvT|?_UJHLE2HOKtuyjZ== z6gyCqT5E#VK7pdX0DLWTp0=Tmfli5LJ){6}g!{@mD<5?ISU$*x<a`Yk&|O!EddnZ| zK%aa)@R8^mnmSpaT<wG02LOw}G7)GT(H5-%1+K3^H66J7jdSq=*s~?j)e?|#s(etX z1zt%3npxF@gioqoMq)8&7!1<-vrg3moz0xD2`cw9!NXmkwH44b0ty68kP9J=H|x}T z(3%%e%oV{p4&cev5>O=%Uk`}T1zI~63tCr)2oe`i2!NKaRR@8WIUqMKAWi}uomm{6 z8XKJ#TdNZUUH}1CBnTQ528}pE<ZVl8r$2n_Em@zZ6NDV7e&BFNG)Rg;V?wZW0;^%I zQz0XMYHFTfH$iyd**3@}>uPF+5DDm+njk4q6T?0LWW1Fhs09S#+g8`tf<^#!Qo&uY z(vs8^HMJm!R!|QcBmmM2ZX2qpIYDH=Jfw^YaRemhKv4j5Cd65w${F1K0nMvJnhT&( zEE7`fg4Zj9E;la9F90<eK<(0eTSa(N)*7S!&j*)npdf*c4J*QOl?G@C2htkOhfGx^ z+J<Z7gJ=CpG_5@~igfaI5;b-5K_j9iH8r3Jt=Cb4xJgMTU$a&tQ4`ZbMFT_{0EZvA z=mC{SaF2q*(i$WZ4`N}vvNYA+rv!ALkET^BI50r7%%C-I^|sYWm&n1V&%tRk6;zs{ zH_4D!E@grW!Xh=b42>e4yy#5OO^41JPzK0zI!a*oC_yBx{UCS0AbjIfq5)d`rdbWD z&tORyGMxoq9tdB(tPl*UK6I2oKGe`u($uL&UVR2hG>9}14@*AbppB!cMa8gO2VEEd zD(pZb{PmC<9g9Fw0xe5G^PNSY`A#f@Lz(uOR+*qRM%JL}7d%A+Zms9*#OwIxYwCc_ zDXFRP1*KF_lN)IW8!QISzeonh!!F3mv)6!TYd6rc2Uzxv*R+C(=Yj0C2d{quU5%EU zk!lZCY6X_Ciic^*11)^A2a{Iu(;vL`mU2x+&E#&NTnMX&;i(rAc&U)Bgc#wcrZ(NS z!b!Zo1l&S_FC9tMOUW!MsRS)YNd@h0Oe{&&Kw3oy5{EC1N`)-sK?)K`DFJGA!ILt$ z=?%|f(4`5WjxV?$Xj=~++qaLmN(WCYf?DV>4=6y22S{fYls}=G!Py16t^sAls3@^g zqX;okfn{yB2PhizbU+KVAwv-g^)Mmi<{VfI9J3&6i>!0N14|l3pj+>4^Yk*Hs~|z= z#1>`dr6Yz3K^NVD+7NlM;8s7lU;_=;fbOw_dn*(iTOgBDZA<DAJ<)=q{IblHRBLDx z7s^e+p8KI!Y?f$RAvgD`kc<v5(Ll=UnR%d<+n_1;RQRGlP@xc|k*cYemS5zWn4AG= z*k$H}*J6WK^5yA(W?Dd7t>BIanF<;R2Q5HHiW!WmTBpbsvS2>bHqXAqsx;p|C^ao7 zHMvADzdR3AFoOoop^Fbe?f~5;1!^?r+hoGJ3ZNDvsDcHBRH7|tWdrE?F8f3)(A1qy zj%})Sjy1Th&(Q-FxuCF1QBwo2-av@dr)XA#w}>EwQlg7vq1QI#*yg~-IN-xZNXa=2 zlw3faZSWiw#2wYO;La(ufe)#YK&>s%Oc}V*08*9%Dt?MJ6QgtLV{OAVa&(Gyz{NB) z(G_Xr>47KPG}Y81KvQQht`0~BoMR9&5H7eOUW!)eWuo5x2d<ck;LGm=OEgM#K;<!L zEe@zwuGLAiErFdrrw19afRxUl(o-i{ry5iiTjfEIK1<YrjR;xggZ9>>=9O4w>VW1> zQu9)aimmeW@*(4pkhGPVpI2-JN*-_<K;reuB|4d!I^d2m@<L2#?T}HTk*|}fSz8Mq z$WKFF-&zjpSEr$kIHp#V*k<Y=i$X_v5uVe@1CKj`M(H)uprevd2B>}nZEMaiv4tqo z)YM5sRACX|C`U@!pqK=$;t$Bw$kU7kmsSYXkzm!JR)9_pI4LTEwgW*5-cno8z;8Wd z@qu1^Qetr`D4l@XuAspJ+fwK{C(sx-`sJG7gP7FRG(g7bC1<8+*3>{2&?ws4YLwW5 zXP8QL@-;OzHLFunL3sx{9;s8Lk*WvY@T#e%=3Syuq6mu((2e1sq?v4+3T`;)<ba#g znHtkCnj4DNLp%Kn;3S`{lM3<^q|K8Cnm^97PSwi?tulZt&i2pK0Zl@|G68IK5j2qj z+Qy)%69uaCz-hJs5i8)?`<j{@*l-$jRftkqX==SLsD1}8*U(kcE&=&jTcf~UNmog` zz)A^p?=5t>2pW~IQ|(-mUu0DRNwY4AC5cwaNNF@przA1mDhH906G5xn5E1AOiNL&i z9r$cHXqp0b<%mwAZFM|&WEirb1hjS^GE`=jiezs-q%Z)vK?hvjg1r-xm~I7HqMojU zJiKOA0^@?_EmQOAK^ZDv51zSnpaY7|&}(X}^1*}Mpy64VM%SENt31f43`lhvh@T1J zLy9O+X4cEh%gM}34N1){$Vn_og@rt*uu@agNQ4#ww#D^OmQJExF?c;p5O}E6Ew9+N z7+pkD2NZGndZ2&@4Y<SWhA43DQ=$hNhX5Vm2WEis8@&35^l%GdLlD-WId*V$UY}=M z2pS9ktv>~819h`9ZQVdUQEP~apnWt&_FmwzHBGBbq+;3&9EtF959S^X=u%J3YS4ru zcpa>!PAXg!$pG&X@KS0>z6JF-z&QvsvI1s+<F%$n3Dh1+Rnh_VG{E8r1>hN^ni?hW zmU1O)4QPJ~)F20I291epYJz+K&7F{z6F7t9gYs8>9$0NYXwF8{x<~`GB2?2JMA}Bf zw1CEjKo?@ff)>kz7Sn>HHLXA-X#Hb;3h17p#GD+E8bk^Y1P2bd3dq+fh6NJZdhxt^ z&6=7-&=xH<HI01RBG3qkP9Ag-v!+factTzy-_|2vQwKEO4XJ5BJsenIE5L=pbtQN` z2W&PDvaT6EFRhZV0WNwF>y=gV>oqj3QG5HKwZ=&8YFM*6Guj{)eCaTx>d8YM<hHGb zo<Cy+QdO%1Yf0D|fDR0`we`ri&$P`f(a6-a%D1((bpll`nYKkBfqF<;m#70?9fQ8$ zR{`3S$gwWAtpax!LK4$KyV;8i5<v^gK}#sBGW9ZxgHl0vO{S)VB&LHl6oT?edA>#! z_~4P^)PS7C641#8P|X^tnmTzpncxzwUcmrND}aVpKr4c5tB_i6I!f@;u~-Q-du$(B zqLHJMr&FSn310i0TCPx@4{m5ej6*gJGES3d8wo1*!CK&TZIMPIXrYmsT55f&Mxsu! zrcR=!6)1WT$tN`x)Jp@`ZJ;G{wy8Qwpy`p!^gKx84YYs*bWCG9XqiO`ypTd^h3kNZ zUtnzsSnCdTwh?qU1WW~J-mypnJmm*o#*wI(2U-u33UXp9ax*;->NZfd1`5c0okX1+ zP#ue!l0fr+7%^G`ZmYo;<<%!v!Z$&HZoS1iF$(Gl+oo!OCPqOE-(dsj82b;<%mx_^ zHq$!OrUX303N<KG+Yn|>J!tzBsA&LpRwAsO2WuI_-I-Xa0b76pHc}@au^<B$qB*vS zpxxI{OG=`1Vs&yr_CT9lkXdq#Jou^^&;s3h<T=qIaJYhs3`mKX3F$&2&mTe83unTb z4SBYZ{8$9qshFoz1S&J~G;3;7p+y{Mph^!iJp$4SbxM9s4RodxG@7iC32Mo}y0KM| zqiSINNFAj#$N?xyIwhdCY)wsJCL)#QLtPAUZxJYyW~Wwyw(u24r-JSahgE#2DWgc! zUKg~7x=0Ulp&aN$eoZUTjvS=rJc&@VLCdEzL8lghFSE_l)T~A|3{=`_<k=>HN>Q+{ zGvU=9cz`GmoQagc2Zn-Xmh)?Bl)#6pfH?K}nwhpG;Ei<P`Vce~2JRt%>KHHsygJxA z6SP;TDpN1Fw74X+7<_-dMygJtPQIpniC#*6F6csg(Aq5o2UP!pj$#F^?E_cJVADXN zwP0suf-aPfuFsFP&4X-C10`!%a3KXlF*q0?0h|X(5TI*iN-~o}ic(XHkzy4*7j2Io zIQCwk1D~Qmga)R5R*(U<(>V_~$uX8p*E!%MS+7$Hs;iaap|-@wD`}VLC>nxiSmCu! z4%k(o>0W4(Dg_CEcFpA_r-HPkYHQ@#gVv(uft!(vpi`6(=?1JC+|kDvNT@GClwpvS zvGBQl@Qh7#QLLI8tXNTmRZpNLylQI6ph5z)5dyplt_ZZ}02HbUAaPLDi8R&;7pev= zK7cGh292PX)PoiVfTyoBi~aMGQ*DtJ1gC*BN{Jq1CKf!90-7s_wA{ea0Tu(NLeMCp z3V8AsGC&GCw4hiIxh)D>O8^?zfvya*E&*p$j*?=~L?&!f8MG4&B!QSxwhhk&S(*$V zkp|a4pfNI777j!-Ju*QtR|}eGg^bs^=A?pFSrDt&0A;qV02Ig2DjC#TgOw4mQWIi@ z2B;yQS6ot5np~1!1nUNATIa!Lu2Z25ojgbz4b*VAg|^&4Y@IwrFxBU$fHtk51{+Ko z(u4<%Nv2{5feeB4v|&wo+f>jjIcOmQOa!C`UcrYXrh`-<^L6s{>Y+Bf=H!B8A-xaR zoLrFBqEt}ZA0!N6>7+s%^PqMTlxYhS1NDs28u+Og4SYlf0e3E|%M$C06hH|H+TjD$ zu_b!Nr3I<btw4FUAcas7kZd04Knn;T+BpXe3W9Y&`L?jlgBhU2Yz?kBKxYq^q~@hS zm4K=dsI8#-q1ZMQG#Lu*Hbd2bW)nb*!a<vvz;h1ZPFHbsD!8*5Yg>X?5CpAiKs&_1 zc7hAqR2@(Xg8B>G`+)2|f*KEQ>=&md*5{<cT!mh$gNjW>Tk!Z4$Pu7+Jg9U9@Ab7U zOVt3$>lA^OR)U7G5UWd(oKpr)(4bNbqZlfItkbMl0Ik@v&O;k#%hR;avjTOMQqd$* zH6h#T;Esh1hQf<5&_NX%h@<#GO&U!*TZ5XKJos6BU@;p5(26>}g8I_p3~<8-(RPFl zm?6~>>7b~r2G{lRnR(!K(1@gz3z5_-Elx#b`x0=a2s+-qxFj(rCp87upa2;HEx&R# z5{v57OF`vDv5q0!0jYYWdBqu-prv*hnZ=q|hfwq~^T6iX!)<`B9s}(_#<nd7ybUO^ zpdhCbywnl2_7bes7~(o`$()f{jMR6mgnA3S{|v=r(;0gLgzG^Y&@wWMVdW2KzZJ-D zNG2pfO-Rm6v4u>yr`j4?!}0=(k>I=Ps%yak1F1woJvGp12{@s~gSzD4N*>GtCBu49 zZp@4>iiHI%hz-^cYLtU=4k*r{=^vbDbP`dm1UViao3MsKBB;nL$uFra0G$c~8d`=Q z3WAW))JfEve(0lsXuWMBXtiEuifyX4woW1}EI|1g#s-B;BBa2u%|j>w8CFoNrWT(H z+M)s13C`)D$wW1^3aAVu+uG(qiwB)V$c{kUJiXjZp^8k9nV^)H2TFfB9+}exK6{G_ zf|f4Zf{$3y)B*Jd6Q>6zy9n1u=f~P6f?SVUV8Pv*2(<)SNZ6KuhD}lv5oLsJrABov z!WWu4pil<|0#dZcgQFePcY&61paE2{f9s3k*%mtG0h)XRNkKv!F~x|yN4f&5d7yd( z6j10Uf+nw!OoWZ}gBw;npdzvyY@A2t^aq+gq8^}i2uR5SR8&D5TzU2yh~6ovDVqw~ zDGX^0gVU339+;}BDbdNZogVnfNva;SlT!(@JSnp*6{-nKXCE@10@<IMrvqATSCVR# zR|~yZ3z}%7Q?-?fm105HHRpl$kArd-ET#~0wMeIHSSn<LJqPtc31~PLJemd526HfI z)hSY2%{g`YiU;0u_4bf0<s}+QI!c=G@-kJ^PS?;%Q4w_T5vbJ;KDGmSaz+JS%EM+g zAhU~*HZ^FYXc2fWE)yb<Z=0Q}kqJ)e;5rSO*fgyzKsz!)`*%PG6@ZrBs;PyfYGi8a zfEu6Rh9Br$M{rDnA~FQ*S5Uz={iBhKu%AjwD(L)2(6OO#HNjvtFlT|%BWUmtR5gOi z73(5ocX)z|)V$<W&;m8vOpuw9^*Wh)APu1U&(;y-Y7h@JPytSM)<qhirKXTZi>9?^ z9*W{r9S9#$GrFc~AcvbHINV?(SJjYKu5(Ueaj}&@XzgWjNj+!>A6P^O)|dhFG<Cqe zEi2H50x(O{KDq>Q7dL2y0?3G1t5k>pQqFV*hXyQXf;EDI0@_Rhn+z)lL7nNEntIUQ zC3}BRe<cg#cF@KaM8yYkBxuSEmfY-9?Mt+k6qK}6tx7<%_sF|5v%pq^x|yJ90f-JI zB~Td->uT7-yBe?(y~G;45gK$U2S_1m#|zYcfW<55AOO&2X?QCDwoAH5qXg9V0}bJ1 z+Jc+_;%Ta>fw$*?wqU1f+h&5Cj8yqTmSh>|=o)I))`Ppm$X0<Tz)CbhgAbrYp>3Ok zM?1uu$Ojs^fP(=lo&w%OrBqy&u4JW@n^=+oDlkgyAx!Y@sYC^&B^7>Py`XjP?y%tr z$X2m3kU7vmQ#1qx6==C7$|=X-wYiG6>7aT6s!{>WnZD<`w_H8q%rH=+ASJcJKTShP zR|%By?ZL`yLF-=NeGXe&Tj*Kh9wELyp?TSP`Q>@go=;5;9;Hw<RuD7wVY;VxNH_~w zVm}MV6Xt6y=>*cyg<PJ?i||8gP0e&c3uE!=?>~66DPn2P1wb<%C@19Eg4H5|0D83w zc>K>k&q^Z|nyDc)WO@^}dm2<ofu$kBdby>bTR3t+N6CQJHaM1)6lErrmZWMZ!DN(l z5KQDAKUbcD57brD|4BP5NTh+H3bd{YUX}%cLjoi#HoZZ{nM)9<1ouUfJ167JS&t;= z1~wN|vw<SFIJKz63A_><)U8EQRtQ!G>dh3Tg3dz)cj8dWD<`-L(5<O?DVQoez|JU2 zEvYXp%2OzT_Cx*hQ;_-up)fTNC3&e8CBd0VIhlFsh?1oWRZR(GP#Pg04tEJ?e-~)C z257}Lk|p(FU=<KggU(fk#{_6l1YuAFSQ(^V0`-?b#k*cnY8ogLL6=B_R%1a&5I}VX zqTYhl7oe57sX4hi`L;!neFE00_VuWR6==3c(>_H5M1u|)0nxU$wxALS%!JH=YFa^d zfrA|2ndg>Ygf`X$QVQBX2wudP2g#+Gnl=XZAPLBFF3=1BXf~!kIy2S^By5X3pA-r8 zEwuarZv?lswFPer2iNS0>0oY2VmgQmo*4x7PQZe29;h^hI25#79yBit3N=kNHFt>d zpwO*P1`Wq3Kt({CU!hY-;O;YMA0xyKijaN*Y=4Lbs6vIB4YCGQyMl-HK;z}$fkKd# zU{#Rp2<pUv>tHlh^&m$;+z<tJ6(}WuvU?_I{ui`=2vm1u+NN4(+Suk<Yinm}=7To| zfd;2^iZt>;GrozS<}%_S7^HI;yufB^R%<}q3R+r}3OTR@RQ#nRmeeOAiGgOUAsP^_ z@`eb2OEBnko-OEDxuis$L|f27N=b=2#kPT<W&kL3kxT=h003Qpp94|>2?=Bssd}Je z%0O8|Q>PTPP%s&^I1=PzaI-r{v&a^7l!H#DZ4Ri9U1YD3sh6LV5|)@#nraI_#VAiB z6SfLi3B1Js)EG)lQ&R)2N=`%M1IXUU6g9PESQ^x{s@F&bYX_acf=zQ~9;h4wEuw^O zPtDW>Po2TG<w9~~8lq*6v~U4@x*kj+c-?(!o<=FiBT6u1l|Uz$lxWsk=i8T*Kud7& z>?>#x15#jv=5j&(NFAsqC7m=)t27PpBH3i<T#lL=VciA!#U%xxrF%*`u##Fsv$`G> z*r4<V*)ISy5a!xsuxmkG7;p<18iJ63s@2p{%m>ewfFr9|6BI`^HK}<T;5bt%&4UDL ziB1V<13t`B1yEW6wZ_1<)}sv>g4V%+16UDh&m2f)kq%@uAInHEq~WfU30iiMnU<Ma z1R8%w;@OrbYU<=gm*i<=YR1}T>VT7lZIwo<o=Sc_WOaxRqBB&i1Um35F*g-7$zcu2 z{R&7!za^jrCa?k461}3ta?m^^sB8uG<+YXcl(ZoebD$hrtWkpOs_I%zy{!DqJn+$h z;5-IiEvt~42b$vp&G#U$f=B_S;S$icIp{8id`-}@&U}qLJy0=T0#y$^^|45^IvBKS z6f`#t%27yOQUERJfVd9S=tXR0s7<Sf9cqyWb^>@X2)yP6oS7koRZWdz9xQD_L?Edi zQbeVK9Ru1fgwO(65DPlvC9xzC(&PXMS%VH*fX+p$scGccrs~xrG(o!Tuwx=JLCbz} zH1ln9KvQYO(V4NJQ|i>zit;oPK?iDST6<@L4u%6S2~f1Pg<fI+RRCKlkOP_K2dzsj z(f}J-teK|)G7?m7<|Jy=XKLDm7GZ!I67W`#U$91TqE2a|My95wRX&KSsliYLl0@pV z6oJDJRC*^Sf@YqRL6iCRpv|`^MuX1ZDnV*;fi|zDf@YBO!Mc#8N<as|fsLuDQA$h9 zDF*k`^X#E)E2Wa6(o`i)s~oUSutH4x;9dcp%YkY-SPE4B<Y`*r(2ed|u#=F7Jo3T5 zh9(DFNKybTrvSyO4rmGu!~nHX6gBcR@{#**po&r>U(XKQxdTN;o<^c(O--H#Z2b$k zmj_mr2<ab!*II#!f@0fXP#;ex$2N1iV863SeUU~E$b@2B|5S})ovc)i98FD49ndKx znV^M<sbyfZK%I4@kOwt(!Imq5rrnVh+7=_vaVLWFJG}G)9sZ(`SOYp%DLPhD6I7Gb zXK0i_cgtkxWNPY_6lLaWXlm+Y*k)=Qf)5^nR-8JZs#4KVCkM0}r4&RYgNQU+1Dyg} z1DzCG1Dy<8$QCIqqs5>V9pLq^ph^D3BGBBbBWUG>PJOYav863|gN&sS=rBVyHH~6h zMMLOX$ILX198F^rGzB0xAQY5pT7nK&%~Ml@n*eejLP4^oi8-1HAh&}R)Ps*6H8e6& zv;|E<8ybP^LUp9Jp=M1DHVIvjL|RQvK}}7HW_59SW=V1e=pf?c#Nt#1V-qXTVF-|= zqSg>0ORHkg!OlrVsfpPTA<KF*t5P&E69cOhZEa+YCWcliy1K|BmWEaZsA?>YtqM@p z7#bN{rJ*V^G%~eH)71s-QGo=BW<C4>lQP>(T|=F8=&~K_GCNxXH8sdKW{q^vIS(0$ zMUEvJWty7SWxBeW*6C_$A&HO^R?{_WYBZ8TD*<XD>qQ_<ZChL0e0vRWN&+w9fOYy2 z$;>Jhv~(vk4SKc{SOaKe8AGL&fugN#hMF2^Ie8+u-i9PH*m4H&!iap^;yjIf9nks( z_)tSWxTXTPlZ%n^J7_T?_`vIWP$ygiaTac#je)&-e42)mx^}9zx{{`bx^@ZZA`~l_ zAT+ZW=;Uc4<aLy^Q=t-h+J;E|y&P}`M7W_8>IP`lTw>2yGW~+Ok7RvxYHY2h9%PjQ zVkI?VyF*E>Cg?U^cvemZ8w4t{HK0fRfk*Da%Y8vR;K7+YL!%m0b6Tb9fNL7i;3vW< zX~-tjgX>1H5nvW^MifAe0ByGdox=lase`v=XO^Xc+A*NpT0t8vL0l{*LYp5}c{*kF zpjNR}5$I$ot4y8T{1ixA$SNOc;8h_7%{uV$pwKg%)ZmA0f=)n#9P5;7tE33p(5M4e z2s%XpSrv${lWMC}2U1cGQ3E{&3RxLc2&7UCq!K*)kqDY`EYgE4XSIhN^9d6GR~`^K z@Uah&pg<M?wTU&YKy?gw?O$<CeGTZO7tk3I;KhDmONwpb$3P<jq^MR0v_dB}7Hz>> zj;4L4eGYt5t5_3ura`f$RU&AgWR88NeRQ!-POMdQj!to`71D`M8F}E1H=x7>s-lW) z%Rm7Qx?3R?v~(EEfnL!A4gt^rV`)x~qAlzwaD~J?jUq_P7jzykv`?Q2F$a2{JXiy4 zNKFCl`0q@V8G5kwuo-$#1q^CfE82n<en8q|zKI3Vsj<i_EJ`2}pt*D%$iWowU39R8 zO`s|$Ix`kLIuGh=YgQM*&Z^DSsW;Sw6tA#>ETl$rIw$}@BO2g-WD%&EsIJw?v@O!h zgItIQ8j}Fkn>vZMN-8R4O4i`XAX_C3&;(b0nu3Z-nS!mYt%7=S324KIx;;n)TGLvA z*qTc9nmV9yibPwb_&g0I?L<(K16fp9Y@3@0TBM_C4Q`F6=D<<~;*O@&ih`ol;^NHw zJS%l*xuvcHTknaOr&Q2TQ7O|@s8-T0)>f)jLTdlz=Ao=$tppWX@ZLjdP7bK@)XPk% z0F6A`f<~T|K<Pw9CAFeJ!B#;@8#HZJpsl2%prVqQQUMjpOsUWYjXf)9pdBg))~Bgi ztpqArLB?q-)lOf(+F7O^a_Lkp(s_emr+`K_B0-0jMC98>!dCz4MCIFh<=c9LPVfW` zxj{y1l%kb1Z45vinw-Sq5>M#(jZ&<VrcFe?F6>5w>ePw?s}h~elnN_Q(yE2bGbq-_ zgZ2<>y64*_<!NZ@ROD&6=WE($gDERZ&{8k=d^NRlFdrH`5R>$ZOOqgRt6`wym9Ggl z8MMR!ChC>1ZK&g&kK8l^Spn;bMS|96Cl=L1n?>5%QOKJxL9T+SjLNsOjX<i?DnL;M zlLWVuN@{Ar4JxFG^>VNxP?UkDhC!WXuYB96d}~FJ$&iBrz&@@AdAUSWGaIBHyqXNO zt`O|;5;Zl@<g2AI=qO7ywNzbQ9Ro-v@&+3PZqgv7D6kRmrbVi43B)qcTp8FZP0*mO zwWc+qI&wx7LV@}4<sHyXVmhFMUEzfwxG_<Zm<}#y!PS*-VgY#I3RGCYhL%B%3C&<o z-UY2Hf_n!#L<W*oQ&URLNKMX8%C7)T3MAHRst{0Kl$es44_2!gf=_8pjS{FEn^=^Z z2vVJ|>4>3P5o5`3em#7VGq}hBIa^235Sr2yktQj?&O|PeKnJrx3!_Zi43J&WPNXLI zGMAhjC7pbzIH=>L3vLc5fh0j(C7ndDWW5fgdxj*P2JX69gIgPrz)DR~(osSkc!gwJ z`}j=At#LX^+L_wmX$>W94M;~16x#MmRuFkjB`YPX_(BLrM@c&$T-a&qq<DcG?wF_p zEnN~JWrL0i=p+^ua776{tY1e(CD|4vtOt(2)D(LSh%q1=KxL=(^uoQ);^2ub6_qku zC2fr&dq~L&a+#7<rlz)%j*3dAZG5JNib|pms9*%89Tk;i&1w~uOdA6=HHiCcRaC%7 z7=c#IgH&mP8@M1fcA$&)kQBk%tSTy*nxJuv<izQ<`<z7~JKd|5w86!=l8Q>Qk|wD5 z1y2@%hG`I40Gy;qi&oH*PE?=ipv6^)5>ilueXpqlZb&&M>VTb;sfooY;CzGADeBYZ z4myiXcR1*5t)!QmSb%7-LQi%qOUwb)0`cH<Hhuj;XBmHJi&q^M6=jJzpoCDCm;(+E zO;8GjMtpH9Xscf;Xs8rq3Me&MD_Q5;=7VMdq2V}P@sP7+y%N+fO34|CdFiQ2I{8@q z0?vC#eu1_XU}Xkq3o~edM<?GlQ!gj6s!}J>HWOC07u#lnD{4@;H(yOnsR(QhsGkbD zib};EX0a7i#@5!h$UZpH3R=qOB-<)Y-#Eocm{ZBRSWQg>#x(&O3f{Mz2oVNX`^n&( z0B-!HL8|>^O>59$q-nNFnQ7Dc_8Ce-Z;r86(oWNaMm0E)m2}|k0ce<%>ZHK~Lr0^y zrX~?w7J#ns1(ivlGugrEKnZkzppuRf>KS}WNSzp0P<;Sy{G?jfgJye!6JtSR7OA#g znMff3*}kF!UhEMK-)2%09h?{o76hHYqY1j<Hnk*G0W1tUIj$ty5oTImzP(a%PG)kp zk`*jm!5VFmOsfYe2aBQ^2QmebmHa_P325&ns1OCUAE0g0eA`q|t&wPrw2CZGvl`S2 zP_(tx0M+sEYhIw^)AsqGRmZSXTJu3lLERL{iZV@2HMJ~=T}7aQ;#$y<VM+?P*$--r zg7!LshewO@?W>_(6{{j0Xs5y|v(~BzDWIVy<$)H9YZTSglq70S-x#PX0&bmw&W3__ z|6IU!qK$awgVxL=hCA~?tIR>QKKQ_D&|oHP$E7WFMg_vRE&-i@4jPqp1vTS!0>Q^? z`{(Io<$=~YKu>8yZoBwlvmLg6ToZZ76)p%JW&=+QL5AAkqpmPD;7kY_R|So`AuUI* z23_N(kpnxD13LJMq6o|IEAm(=XhgtPNeO8rH3xJ!D|CDoTvbD-H$fB9nQCfE;EUWr zGv{D|dhm<}Y=;SGNrE1X15G60O+uiNT+q1(AhV(MFKGTzvpP`^QWDzcgY$N&Eol7> z=yEdX;nn$?)}ElD;Z&VcP`*lp4E)-bLMj`D#1zo=0LUl#dx9eX)M0}ZtBRo2%DJFh zR`b$9H5X)Y6DXUff>t5b)C7PufRcv~gn^Xkz*4E2)zbslG0E10rVc^VlHfuG)JQ|* zDX>;px6BrLZ!>tdHonXk)?<gZRuqafKwGe2<tR$YQvz<P*@HGiDB9YBE*!IhsV=E6 z%FMOTgO-jU>!D05(2`)JsplX>k!0%&I%g8R7Xm)&Qvw~W4KAt70p0O{!Uv65BN+wK z4qG0ifHtLEqG=DhWy=b4S%iHSXgvt>y%TPrkc9;g_=ZDJivn@4LZ)qrHPV7C*u=KA zW~MDdc=|6R7XhRNQF*pOd7%4b5=#<6MNK7Wl0?&511t>5#7M%RmOUuH=i8QmYD?(C z0Bg;B@MIilJvYcS2oFgcBnc@X?joyKC`9rLsOb&LY~WTmhyn5zXh=L0Igr7F-5`<5 z9MEyOhyinO6o6$xL+Bt`$eLsY@cG`*VRz7OXUNJdkn;Leon+g5y}bOQ+{B#Bs?-#a zU}{Yb)Btcfk!D+3Q<JPy0E&I++$<ysfMl(qB4{Sqf=*Y3PT|;t*H{*4S`~n^WQwgD zsF$s104gKui!{LJ0HkT=X@Iu-YpSVvCW5!&!^#k_bc&`%qAge+l#HW`W8um`b%d>L zA}EK0j+BI#+D_15%}fKIL<ZUu02(*Y(9{GK8PK(5KAFnJC7OuU)k+HBwzPdJc(kHK zLqDciTVE5ruoBuBP=M<!E&-oHl&V<^TIK+rApq4vP(f?ZHWF|>o@WbML8egxIzt3L zbEE;?T?FbDfZAjVO4f+=+#vO!bHqU1Yf$+BUhXk{#T{>fB#k`nRQSXJQXkNRINuWM zS$1eToz7ThF3bw{BAA(x3LeN$h4(gz^qfu+I1s>|Lh@)4XeB%3bW7O9*hM;^IIy0+ z@Q$~5J*;p-t`9@Or4i&%3(##IkV`HR2YbM8o2#ycmXC^{ak3J<<l<t`mbX+L-$acP z@W>QsqcG^u#!B$<JUXe+@hEr!G=1*_Z%%i6ka|t<>NN!eq#&;XJ0vU-(ID5X4g(cb z$it}N(0I`(0nI=Ovw%i@!7L4=G1^p39cXGrQ~+U6jSzjTYHBG^BkFZPm#{!&5y~UL z0-#C?R45hMMuPdEjfX|x8UVbO2YPI<PNHoQXhCrS_*yV<2?HN11P#i7OenU^w6(P@ zOtcS8v<gqu$+0!ifu1zY4mx#2v$_P_STfNl)=AdX$<xrR)j{4~q*)EB3qg0iLB=q& zwR7x1*Nv2FXx3VT&ny<w(5%j}NmNq<3F+i(8*1uIZ#-ZkTn{o3;V-B^AQ?%g$QHUv zFFmycbY?MVxiq-E0-dXnX<HQSk*KZYlA4oPsT2#%!Ad#`N}xT(P`T2gM9};MnslPA zJ7{r7zNSuby=_r+6%JE!U~<?^DFvBQtdj#e>cc=M4RmcpY6)mf7-;oNVWNE^=)QT4 zJln!Von+fYoitn6@S3I-NQG0PeW{%R=%%7PTPKi`Qk^v09B7+I(@G;5aS2$WPN}9& zo^7(7fqkM~seNIhl~W>kbWJA>bnGi6=3u5<!OXBS(A0t6d!z$R3RcPBQxU)k!75EB zBeA$Xq$n}37_|4<Di3Uqnpy;O<_QvnpnZ#}MJ1I=DA(h;L(&_#T(E|%T1DJ9tXTq@ z)XL8T_3RPL8hsN>GC-G_L3et9N^+h0RMbu`xGxDUjiT~2QZ==sKsQ3<fvy!tYFL2; z;SCGJRAVha@NhAFz7@Rs6-hmK_ygL20G$$$nv)A&I~`x2lbTqT>YM~>8)ky8CI$2K zk`wciQ$f34K>JD%;u@d{y2K)dd|Obl1g`q^N<aaa2})&<QF>7OQ%y|~v@$zBHLoPK z2y8g0_XD~wE+sXjvLF?)7^prGbj4mV=yHdANX`Y-*ARW6RnXwt8q5vJ2hUdP6xinL zfdw4F3$`GFDYoEFRBB=ogr5QD!?cybMUeHS*W2dnLC)261-Vrx7iPLnB}hYBNoo;9 zA_*qp3=0~ac(`82f`Zh<BAp7576`K(#02SvN;!l0U@3%t72ABh`V?s9(h0E*&esXH z4bIntY>KoFR#OXxx3hw6VQi2>&=?SC5D?tHaI{qn0d1KE9}JwDQd6S{+OQdvpI_pc z2U?^BF7X^|YAQh2AK2R3RzUhouC|V9YAN;hDOROA{vdXleVJ8(P8NunVV_}@tm9(q zXdhowlWvu+;|CJOvJaxdzQQV3$J5r)zPzTU(yCG?z}C^;xuzz`DoMx3Hcg{gLq*eG z1rlFYDw;Y$w&2<+QB6(JJ5$HkwxqsD!%tJk%{EgHmROLF+}ErQQd83i0~J<TnmS<G zUsF@Z4Us<WHG<UCz!I*SIss~G0ifk4R-S5Vo}hgPNTz~vTP<j!1Juj}-9}knQ&R#u z6%LY$L959?l@)>qnny!gTLxVZ1ij)W)fRkmLTX+KXl*QPpK3hlX2wiVHwm=eGBpo$ z4MH?{k!Gwl_=>&~@cK;XsRZEFO7-wO2O4Kh&B=xHH8gen)YSYmGIiWQR}r|Vskwl> z1PYLFP=L5<>VRo~O`WPd<VqPV3JWe*l+dcF@vW)R2+Y&)(X=m4EeXlYtp^>fui>WS zqiGcZGBroXO;fWLbh0xfB#JZg%R!w|$n-eeL7F;2V6)sbP<C{9!-_>{XenfBXjVHT zVha(%AaiSKG&Jh-p-CJRj(V^Ftf|q!Dh`ShO=yVPmT2l^fKCL=*VKtuQ_~0s&Ce%; z10`Q41xujh>lA>~P(G*%hdBzgeG;5CK%r6&3l(snIO~*y10`RlRL2<-C}nDDWg7W9 z&YC*$U`@^%nvffGKnn{XWokY=A%luk1P>7ipduA6UY`UjQxkEQsh}l5utoo=&?8EU zH1gp|MN>@;RK9|`HL&s()Tqg^O$4<9bxLg$Aw_F4_(%p&2@ft>3v3hhAmu--kW7Io zKrSOQY!jhHqz|aB&?$o{(n+^X)Jp^vauA7Jm;|DTs|1~;4{D%5R3w48umUe0R2I~O zZ$ttW1{Jm?MH*$AI_2PEBT3UfNe^5%StV)efJ)DJFwZ#&wR}KMCZL;GAzOJ+5)<g) z7;K3QoQ~=%V<8)pz-cH9l!jobBt=tG2bN57K=T0c;F1QMd~(&)azO{QT4{h*jijro zrGt1nh$sOYTB~VYX<rFC)g=>@PvCvEKyXtUT+7$zVII<<rlttF`5pN{-V)G#JK)hq z#QqyaLvRHE+7$)5V+(9xo&tEwPe~ElK{}v)x6uZ%R;i$SOhG9JbS->MO+BpfqG^Y8 zLt1JPXkbyZTG0SJP6977)zrK|Z4yL#H4m&1(GEw<sg=O@Qh@89%$ge1iJc-%a3i2z z1C&zp!7IQFbaIf6<bob=TWphKT@1PKC=nqWT^y?eTJc>D8czfr76aPp0^aKg8QzDi zi3F{ggO2yx=0kdNpjpQXjZBahogz)mqIyV^6||@b)Odob22bvShTK4tih8g)1F)!V zF=(MPxFACn2W>Y(1WXY)V8C7k`w(*7D(1a)^`LvjGmF4SOls<sz-H;NPR(V4lK>=^ zl^~;jN||{Ipi4|4JS*tH8NwO)U@f2u2h=%%Ecq_Z%mZDw0#TF%+K88kLlxNfko&5U zwHoRagZ8aKBtTVUL1~E+@@-@wY4}QJ+vyt&T}11ZKqH>uvFl<b&`}4VUD#kQ_^4LU zWEJQNz06|pQf!C>@`B17uoEGEhmA<)rRIT}I3=J48E9G_luSY62Ot`$S!!Qml~cr| zQ3Bc!C}jchHpthdU?V}vFVz;b2@&E&kfG2GjnMwILMrGCis=b+okZ*HON%s0K?~Ah zW3-x@$m4X$NJduIg16?uj(`BK0{~eD-dc%tu!CkQ=#D+m4oPrk&a{Oe?f@EI0S)pa zHr*OS4o1;TjSc`^ycrAL+Yfgp!fR>J)R&p2p+DWw&P7xm)IUv!r7ndM4W;bV)B@ea z9MCRTooevXF3^6%>Gu~nN!BCx=nKGJ0uBFxZe@p-qmYSxNDBd}{SS>Eq}k*Ys6!w! z3gC?@pe{0K4LB%Nks3q@*QaNI?JUs)H-|vWgq@Q>@ruON0G(nA=7YNeNb*oV@}=oz zP~*VqA}_T(ARjb8keV}nLou@?(ngbXusTp2fl5@c>Vo`Ya4dp35Uo0(DUY1gv=Uv= zg@kD(;PnF~`31UpdL{V<pu(=GrX~}#4GXLZ<b2RgjNr(HHWT!~!->}U;6w`PecI;h zg{LNEXO_VGqqa)mkOdu%r=g@>q^(p?0h#?Sr~pl9g7p@I`&};38r4?GpcrN84cI@> zpieBeO)N&*SI1tTSgZ%1iU4gCF9u(N2A!-x#6~4F3PItLXPastR%{hs3`=vMb=(Cx zprgj}5W6Q3D+{YYhvy)trX;9gX{CA49Y&z~q&is}be@bY^0F4>eYPM?;E5}c8!{m$ zp@G`-;HAA9dA6V-8Sqjf(9OX`ATDU<G$@i$_E3V#S5QLE1h-S_K^35`p>-yBF)C;p zM=vM8JhjL<u^4<z8mRcU&IGMS1r2Q~fY*ekX@FECN_9{R3sO(%8d~Sr*=Abj=;~^w z>ZRtTfKoT;qU^-zoLJC2320M-rZsF$scoiCeLiUWSYmXht|3?fc=BH<sR%T)Qfv?2 zEnEaz8Uq>$2i*s#6Aij75NwQ<QUO>Ms9_F~2H93zk_cC42v(<q;u7$_2v9Md4?c;y zUIDUCAv#v47&KH~QIMKk0xG0I2iWRm7Ki2~7FC8Mrq|TCW$KjLrh*!<PN_brX(j#z zsd+GoWLpF45^L~eVWw>f=%@k@@X7Vy5iHP<4@wN^6xfCqN2h_VQwpsIF~H|q2c@RF zRupI`X++1w6vxB_$7<PYYS`#2X{Tu`MaS92YT0Qj=_qA_hAtsX!4avh04ddhy$oBg zlwu28q^ILitdRy9ch1W%PA<wUC;<gsT1`zoc-t9l99G{(QCC+ZI;I$6y{@jEe!7m5 zilLIG9+HxnXlED45XYEkgv!`hxJuB8FUc8+Ma7`l05df5G<B4eYBjBswQXSyE!_;r z7*~CUPKj-XPLW2MPO@$a=&BY_Is=DW8R*Ve*!nUXCGfb4fvv4=891CPKp7Qu?H_cq z1GIn|yxthJ+*nsProuQCq9xtV)<Cm5Pa|F1SkoG`12QwOG_@AAK)W1#OCgdOxyUxg z+ClW^LiOir8zJilWx`6^61`l|rYVj1VzBcnK^9d;8^l69mw}`Kq&^9*J_({eNwXg8 z)p*-v>pYDlB#k;n8cETHu{!ZO$!LaDAnzsvnF=bVA+E@Um<k=?DzdGH?l`pq-7>5L zUdLqxO6Z_0VwGHLou`pnk7Osja?aGrw^q~ujgUditt<vjW@&)RZHPbysQIUvr;(4O zTc-%JLKL*;Ap?3JHhhG+NUs!>k%Ds)i!*F9K_1J~038Ae>Un`mAWfYjz0|xE+hm=h z+FD58u0pdKane6@d>^#873wGOv?#(*@Zt|hfsn7JmRt-z5gfDuQl}Km1RW@u2i}Vb zy=WE`a>=$i^%|f#TcwPW+#FDj$Wv2O%1BL20kQLIY7`YS!DljqgAN*}ItAeD3U0@1 zq-lcoWmu=!q*<rHE;`Dvg|2^zPKmY7E>=?mpJA5)3MyCvRaa6{2X%~<l<IA5Z8M^c zW7X84cc+3lI!Yk>Gonq9g-v2%!luZ=rm>J!tYu(hYHC2bK%{9bXrRlwAUY-17P3Y? z0~GAwS!b)tB8@W8Q4AUR)1Q>M2!hrICxbSvK;jORY^?HhQ0f6IP`&O0s~I#jp{c2$ z7BtMB2g>u{f)|wM!3>Q&odTU?9q_bpQ3>e!=e!inT8#>%#0=j1QV!Y;QJ<n<ppy+^ zff&wE2B;AM+9Ls}XtF`|BKU@rGEHkmjU;IH&(^G|$wgwriUp83D1WCGmuP_48qT)a z@S{MKY?O2iH8pJvG_5tuv~8X1bx=$%2U&%*-n0xf*HNZfTLxaVR&HCOQvzD+09v{M zDd);T-i8!)<(i<91+)b=6EqzH7DULFz}7(579lsy>f=FmJ2cyZS{LrcpuJTQ;KNSy zAUi;iPj3L9l?&Psn`oP-2VaH@ntHGWEfh{o)+o^g)kd~O5HIUw+9iUA1xkxEG|(1? zgZ3uXXC|kD_RWFrRt4pYV%x+#jiP8!jSShWWDUJVMk&5n1H8CdQwemYYNmD(C{;u1 ze&{@!LL&SkTYOf6Z3OMZ%Gb-vuLtdU)JD0Yrve%x@X-SBU;$_&2I%;G@ctzoSJ3`R z&?ao~f)zzW&01$r9bTSTlvh)elc$pf;-#mSK+kgp9|jAq$NfPPNJli*gGF6IqM5}3 zMX9iAJ-FDm6tuT7H$SB`C$(5dsh}to-ZBM^t|)2hgrKVdw^u<^DNqHD=n6nvZBb3B z*VIt~S)P)blbM@Yl3G*@ZYLu}GkClhboL$O0Ne14%#u{Fe{?`W0a`l;Tg9pXZd_J_ z0>R3;SSJ<Ups@m7hYN4rAX+w7se1Ydo=$RN9!mQL)E`0<(wY9S#6^VJDpe26sMi7K zc*N=PB|4y~DsaV?3~JqF>g5&J)MSB<Pqp>}t^ENV6=G{^o2;g$k!V{88ijzAVQIFI znJPo@so*7$G6vNDvr2@peG?0;f<WpK=iMj6Za4&O-mwN5nFhK)K3P-8tw<wHQ%y~= zI9~%))~123QAo;6NlDEE?W2NMb_KQu)&(}f@C)k-w6!&Zi=zu-HPS$5vV)FJsj1N@ z2N|Z5rdLn|O@9WOnxF)jrdLuAzRp+!v=>cNr&u!^q|zGPiU|QRb%McU7MOGflWBSd zIf<Ehwu)(x9-tzuL9C+!mUjV@ejpO=Owie5DK;T+XM(DmkmBf+SdDtHJ3T?FL1j;o zJ!}rJrlv?QGfhoRBTWzFoXoVE8VCz?HB*sBkq&rmJwzxoO(!WQKRMeftya^j$TkhM zSwayh$Uw^{U@GCpID(pOne~V<r8Mxd{=uL_C^f4yVZMZn&t=#`WJ3}`gD^EU>Ppbl zpq13EH8PRUi3Xi`ip+<McW1=frh$703YmztVFjhd8TFuAI1Sn-x6QOJwa?Q?)3nma zv`y22mRo5^m3|rM5H}k~ctDnEYil|dN0&k3yH+PPF9ng5A(KQUw)xSpKn2~j4Qg@0 zhCZT8>JiR?l!Us5vDT?-YM_<;so)`J*e<_RaNkl*O)&@5k%yU}SCC(zp{WD6z}8SF z6U{<U;a95zu1pYagPhHmsaCJ1q3D%~ydWNQ+##s9Ra27*X_J9g;(|M<8TmOWso(>2 zq0MH{6b{TGpbEFdHU~6_1X(m=?+aQsW?y1elmogBBoS1RLA+?Mq@V;kuoaZa>lN~> z6^p@sgsg4T$g>4kXez~;n)a!%HbrGYs+AF_Jc8|{$<qN%-dTb6-9a`%g8O+8^TDQp zwm(F}1`EOc!_<lr(8&~_Sl56Q6~;Q?8*V|S)YjJ4YU&^sSt*o*d;Xv<vLa-olv0^) zK~bs_s5AiAB%pEt(Z$aOD+kqop!fwh`9Nh4wAlv=9K=#HP(u`~!Zt6pzFYy)7zE$n zWMExnlWGk*f);#Z5v1t_Z4iQti!Op}kb-U)#HfwIrot40TWgxN;L-$i4oy)ic*qr6 zdKf^awjqZEI3u|}12h4pl$~0sqzOuh8sNz{Tja3>6%5ryscCT4MX70^kqGz!F17(6 z<q+FIQ``z6AU-JW6;iD;>(ew+;o+N>U!(+0TA&@EknVyvq+g<#2c5pLE&-Lrwt3M; zvC!3rkowLx57FiTZ~ua54+Lqq*C^3T%*jkFwgq(`pxSgw^fF88Q;QNy@{0^@GZE(L zWP;n&8X$Ryw2>`H2&xY>UI{g=s1}g|f)U<=dngkWETH9Nnk9OfpkVO_wM@VzXDXz~ ztOq4Na1=pTIfHlCDV6Dh3SDSo12I9V4eZZ6xZxmSU9b&#;8A7}KQqlX4|(a6Bgj5@ z+t3wsPz@}@YJ%re>%oP*f00HWq(BFa7#63(3-l7?ktbKM4?)8}uyhW|Z`P1I7Bkbp z3$#HC%)td0G`<u-0@fvvf(j|Tz(J8(4;tmmOmoi9O92nWK{jI|3xHNVfuagY4Wv{+ zPLf$*r=jLn&<;{)2!fcP5Jbe53s^&DTD^u6==vH^mkBh)pRNgN(&m?d&fNfSy3tVr zZP5iK?wsOONTP*`gSEl32#5ozn`}YdGf?4Uk5orlrE2P++<6VQ3lwYhh)NF{vEYk* zL305J$NGUC3l4N^jZ~=pnZ-)rjx}^`F=)`;7If(Vcqb<$6+!L?(S={O4Jo@IqR?AI z>Qhm}#S>u_XfOzL90q7&2|TR?FI~Xxid0(zojmwzBkNR~Jn)SlpnaUSphI<1p+yyF z8Fy+dWX-gW7qquk1YJ^@QJ+}slnI{Y2kpJrNwoDT0^R%x+ICT7TLd3C%FEGF0u5fJ z=0G|$pm`@G=~S>Z=)8Q;(iupz7GwnYB+~-OnFR)*X_mayA`fV9U8Bf0AXB5h2pot- zwn%HrH9@C?CMV{mg7$WRRTY7SiYxPy)zl!nGN9*GDrpB~g4~-6n)OtI?1EAP^-PLu zYW$%+3>|0z4ys2%TTXR~H0{B=fQoeTHS4X?K;<on2`&XdlWS3kKtc|KsA5nUKz0X# zFDKMdG}Lh}hBTn6kyUzuRf3C)QrjZvC{qb|m078pT4}UlEV!);(ozrG7p1EKJD^9~ z5aa>y=5cT*LMIutbplknR72g0R`29%A{RN};vT%J3!Gp<2j7FbldwYsz_X!g`LMmo z{)z_HpoO-ONoQy`5c%?BA4GzL4}j%Ct~Y|0Yw&fO3aQ|uU+eRtLD?A8O*GVuwN*5z z1zih|$WK9FGZ6(Dc%I1sd_Xj`M9Z@&f}B$XxyBt-20-s|2iK~wv3ulo>R>Y=GX?cZ zh+$H2PDj2C04#uTiyM+YCGeyMyetCgf)BTXwSjJpLQ751rkj3NVp$^0)_Twl<lx*2 zOLIuoZz0%1gy*AUbsz^c!A4iX9tRh7MYf>3{H!x!nGU=J7Ic^dXe)hgsx5?qXVQE~ zE=<*{2e+|`G&P~|iG2E_6SPJGO)t0<+a~5{fXC@eGLu0U$AN~OG<Ezy{aKU?SHOMj zP>{=Ysz3%P8iGdQVM}B@KoYQF>jDj>>A$YKnAa<5Yn0e4=_qNJfEt@fApkZ9v<?6~ zz*Lf%Y#RnLKnJt{1hV@9JV>nQ2hG5s!!khyJZQ5CG#WrP4RRnyD?v(CL|GdPyLAg( zSVFP_sK5jrUXqyuy6XwnHiVU&upo!`2tY?Og@TL2BG42?NhWBR4en;pkOfk83Jw;? z_23YH)Pu?zutz|%^5A3PL5*`zRS2mEAS?R8hwOnW4w%6xy$eWoP*c-@E{KNSSOs-@ zO^q?A(T;GiK`f-^2UY#x;}2nr0>IXT*3*G%8&GQ)W*bDz5Okm$)NJtaA)xSr%=cr4 z7c6gre2lO<FBWtQpQ0kTbqHFdR*&3>P*V#B&9@^9fzFjgWJ8cNXuchmFY;^+v6TlP zJ3&Veg1fsQ6W~Kk;3Nb~gP@~w>LE!<O-%#TmxFL>Y7{jT!Mz7i-LIE{sQf@t1L|Xg zonKSq0=j_>G&)sNgGh!oH4&h6T2rHlatfHHUTRrtQKg1UG3Xd0xR>e`z^cI|F{t^K zSd^Lvon`_pt%Vf0NUaiZOoFV0lwr_AR6%WRP;8bK<tZ9Kvomt>90|&e;1#!^C@Zo} zwO7hZ1YH>KU!P}Htz@N?52E0C0DMjsXmV5A7IYRurnb70mAbZjkw&Ht_(*zfB^@QG zEeb`@BU``=aY1`>;a*d42ipox-0+L0;7cntG^=ZstTU%)%lb&xD@B9OenHs;n+jj` z3pECQa+(fkUq!4ExZ=#S&4Cts&;>b~Iz_g{XhNWr48Fk&avln#!=GuZ1l}zR+P7UF z9Siq6cvlLt>a?8b;#hl)d~I7WOQ#gXS5r%bG;fPFHLc)G_^hXznntF!Z4_u23v#M? zrZ#9@4kXSHK>%rqXja#QHhXL2*+c!Ht)u~!QL-ws2X9G*G|aS>G!ZgT#o&F=u*k@( zsVRb)VufiBD3HN5BWgTF@qrR7G*^K3$QsNr6028J105O%iW9FQ*r9c5YM`)(rZfdm z@oJ59&V(1(7*GmJwJk_2Do*vx16@C2XaJr#gWYcnZGVA=#Xv_jDB6N{s6!*OGzWf( zO?{qHd^Xg#Fts{L+GvfM5>4>sGMEy1paY;aL0f?l>CqdS9!vDfixLY!_lqFr+45k? zO({M}LrFVNyIx609TWg1iRs!(>fp19AVCMY-4T+MK%*t_6BWQ)FYJ|cz^4I#Dl@R{ z2<ro()`J2l&(^J2r^wa~bQiczrfp%dbz!lsfsRwLZK{qZs9r6vhYfKDpbsv?N1s8# zr=+RlgRUSwH4o%DB~6_mkWuhc-itxox^#R&Vi?snI0Eu*OYBQBLE}K`@%70XN-3FT zN}B4hW|Uj8ZJthHv2CVKHRL)KE2Z+xk_?R!(A^Kv)T01CLZDU&G+tbinGC<e&<eQ^ z4z>chW(QR-YHErl(E2l=C_g#1zPLCQeicP3$WfqdT%rf68Nq5n46sUMg?R{tY57H9 zb!quU7|QYy%0Q#1pmpSFXo~9d6pCP~5S>C;@e8U5K#dJZZxUR@q4iK9d0n9rYz8RG z!B>wWbpth1ZIeLtM{+*&s!Q<Az_9*n9_TtY@F0*qsCHH`uu24(1g`BMjTmUxFx4KE z4Xp|?HNcm0S*O}6#V2bZC0!+04gp`k1U@-HM@hQ~o<L!BDR|w7O#p1rv>tpKSgLIR z=;TH4B1u>}fNiHz0NDvzZvb&1Qb7QYE?9~{iB(WsftCfk6+?<otSJbbKI%bbl%|eS ze6EI)wuT$bS-OUr+VGYVxK)Ia<KUG&I59xd8A@USIRG@$15O^9=n)T%ckrzpFt>v( zf=p6^qY_kifW`+Q)w6XTr0bLiu7;~qZSz0{7W612(80hEWw1gz)m|w+UqeY7>`hQr zs$E#Dt*xz*3T_6cLL;VL$qK9ht_u|Xh{6P%HW5LL<O`7RGC>Ioxfunmq>-EBAT^rR z@W4Vn$2vc+J~`DM9Dq<~fKGFV^*x{!fKq&_h9;~YF3~Fn-vk5SJ`9?sECAPDV3xL$ zroEDOsz#n3xK*a94LTYN>;@|(WO0}m>+=-AxfI;q294IH<rjfhs3n3%2qF2P1TyYt z2o5;JIG~}Gk`j3B0BD{KG;U~wrohNbNePyk!A&`M-UkJqQhbhvhElzDs<x6QV$}_( zPACGMq5-QYKxe9g;zV1iRud`hgR?2r(Mr`yI(fFmAXT7YJdIRs+dNQ&gVywAr&fYi zHEG*|263%GHBEMEB}}p?H4U_1ELGc9sVFrKEL)VCh9nD4kWl?ascB%Y6{zCTQ34qb znZg2TFDOby5{H*H5UuK<n|YPgwZYvbZFMCbb<oaT@S-V&ddNAuKCp}j9`8=ow)H8F zE{X+BK7)2@LZ%)dhADx&vR2hf+VP;&2j+nqComV~gD#N)1%VRmtOB@N@TyFNTJR|~ z^`N6ZQnhVCO;=FUIj^J`G?L<33_5iN>`6!q7QBKMSuL`#j-r7Mk`6?P4Rta|035m? z2Ba*91#&%jgfAsHC%*)0dMU_TNTP6uKyRW2`wh&tf}S}CidC=xtoep?pqMuFBr@>r z-=O<qwUv-(PL%553J@ogX)D!2LKC$HfHi1yzzHoA;<rq&N8qIg`1UdI{E&vej*32L zj0#l1>LA)eAZ@k?ZoNjTrlt<k&<QvhLlZXgnS`Kf88*fPIl~Zigd3vKVHK?e9_j<P zupzxg*o2QYtdm%s3BJ`^Cm(c*C#ZzYv8@j(j?M%RWyIFh6y(6z;FDbPZ50)BG(b16 zdKPO!8rYC=No`wo$ZU*~x;8{JC{@FbNCXQ)IohC(jYcLUV(gWmQ#Be&+E5{F(6Km( zkhj8Uc|z4enwc7zdWl8p_UfQBO{~DyBo?KEtN<708c0V`+bba*%!tKMcx$pAVlp_! zVX;_jp9n3;p}nnGCCu&1;8XyQC)hkfv;p{H8_=KwWWo}XX!2|Wi!@SooQh$^Hgtp} zBz3wCzpIoI=vX>PV-J+}AY&1TMqRX$cHZ;_{I0Uo@2dN7)gw9_&~xc(mC!nEC<o?& z@)N8uRYJ;FR`I18(P(FAYocu)h3QjB&IIl81|4KrTMz4{Kst!Xg>o{eb%f|qrh+PJ zH8n*r4KMrc(;%v>l&Z5+D?!DAwvtX-9%43DNgI09NGhb<^Gz&(%wdE28P%{I7U1)` zpqG7v1_{9n((MZ}H9+S;DnZ*yph`7W6IA3OAJhkR066kMQ){3q53~pyQssfpkbu=_ zkSZ@#56-tzQmWU<w?&9R>O3SqQk{qDZ$zD^orhNCfhs)E$zrgEhLSckB+)88P)ks! z9##r~wgf|mi9m$|X!SUF0U+34MYefJX%Qx;rd9-r6O^WQ5om@Rbj4>*ehFw;56p)) zJ`_qoL;B!uOQvnAeM+WAeV(S30km2N4JhP+(@c6MYO+w$*2n}m2Qoo<6KQBJ1yp*1 z$6-JP5M<uOz&a1U)CqII6*7|s*@v%L4Vom)0J#aWCIc~72J#zfTP!~}6|s*IG|mFq zo09>mU?8odT20OBR9hox8∾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 L+c~C%ryT?Uy$Y~M diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index b9076ae37..5a5fc5f7d 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -152,7 +152,7 @@ 'select_model' => 'Select a Model', 'select_supplier' => 'Select a Supplier', 'select_user' => 'Select a User', - 'select_date' => 'Select Date', + 'select_date' => 'Select Date (YYYY-MM-DD)', 'select_statuslabel' => 'Select Status', 'select_company' => 'Select Company', 'select_asset' => 'Select Asset', diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index 9549d6451..86dced192 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -86,10 +86,10 @@ <div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}"> {{ Form::label('name', trans('admin/hardware/form.checkout_date'), array('class' => 'col-md-3 control-label')) }} <div class="col-md-8"> - <div class="col-md-4 input-group required"> - <input type="date" class="datepicker form-control" data-date-format="yyyy-mm-dd" name="checkout_at" id="checkout_at" value="{{ Input::old('checkout_at', date('Y-m-d')) }}"> - <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div> + <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd"> + <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ Input::old('checkout_at') }}"> + <span class="input-group-addon"><i class="fa fa-calendar"></i></span> + </div> {!! $errors->first('checkout_at', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!} </div> </div> @@ -98,10 +98,10 @@ <div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}"> {{ Form::label('name', trans('admin/hardware/form.expected_checkin'), array('class' => 'col-md-3 control-label')) }} <div class="col-md-8"> - <div class="col-md-4 input-group"> - <input type="date" class="datepicker form-control" data-date-format="yyyy-mm-dd" name="expected_checkin" id="expected_checkin" value="{{ Input::old('expected_checkin') }}"> - <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div> + <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd"> + <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ Input::old('expected_checkin') }}"> + <span class="input-group-addon"><i class="fa fa-calendar"></i></span> + </div> {!! $errors->first('expected_checkin', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!} </div> </div> diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index b3b741b2a..5f46acff1 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -165,11 +165,6 @@ @include('partials/modals') <script> - $('.datepicker').datepicker(); - - - - function fetchCustomFields() { diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index f0d4420bd..437e59d03 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -675,7 +675,12 @@ <script> $(function () { - $('[data-toggle="tooltip"]').tooltip() + $('[data-toggle="tooltip"]').tooltip(); + + var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value + $.fn.bootstrapDP = datepicker; + $('.datepicker').datepicker(); + }) </script> diff --git a/resources/views/licenses/edit.blade.php b/resources/views/licenses/edit.blade.php index fbb032c47..0e3a8279d 100755 --- a/resources/views/licenses/edit.blade.php +++ b/resources/views/licenses/edit.blade.php @@ -69,26 +69,26 @@ <!-- Expiration Date --> <div class="form-group {{ $errors->has('expiration_date') ? ' has-error' : '' }}"> <label for="expiration_date" class="col-md-3 control-label">{{ trans('admin/licenses/form.expiration') }}</label> + <div class="input-group col-md-3"> - <div class="input-group"> - <input type="text" class="datepicker form-control" data-date-format="yyyy-mm-dd" placeholder="yyyy-mm-dd" name="expiration_date" id="expiration_date" value="{{ Input::old('expiration_date', $item->expiration_date) }}"> + <div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true"> + <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expiration_date" id="expiration_date" value="{{ Input::old('expiration_date', $item->expiration_date) }}"> <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div><!-- /.input group --> - + </div> {!! $errors->first('expiration_date', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!} </div> + </div> <!-- Termination Date --> <div class="form-group {{ $errors->has('termination_date') ? ' has-error' : '' }}"> <label for="termination_date" class="col-md-3 control-label">{{ trans('admin/licenses/form.termination_date') }}</label> - <div class="input-group col-md-3"> - <div class="input-group"> - <input type="text" class="datepicker form-control" data-date-format="yyyy-mm-dd" placeholder="yyyy-mm-dd" name="termination_date" id="termination_date" value="{{ Input::old('termination_date', $item->termination_date) }}"> + <div class="input-group col-md-3"> + <div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true"> + <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="termination_date" id="termination_date" value="{{ Input::old('termination_date', $item->termination_date) }}"> <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div><!-- /.input group --> - + </div> {!! $errors->first('termination_date', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!} </div> </div> diff --git a/resources/views/partials/forms/edit/purchase_date.blade.php b/resources/views/partials/forms/edit/purchase_date.blade.php index 16cf0052b..6e721bcbe 100644 --- a/resources/views/partials/forms/edit/purchase_date.blade.php +++ b/resources/views/partials/forms/edit/purchase_date.blade.php @@ -1,11 +1,12 @@ <!-- Purchase Date --> <div class="form-group {{ $errors->has('purchase_date') ? ' has-error' : '' }}"> <label for="purchase_date" class="col-md-3 control-label">{{ trans('general.purchase_date') }}</label> - <div class="input-group col-md-3" data-provide="datepicker"> - <div class="input-group"> - <input type="text" class="form-control" data-autoclose="true" data-date-format="yyyy-mm-dd" placeholder="{{ trans('general.select_date') }}" name="purchase_date" id="purchase_date" value="{{ Input::old('purchase_date', $item->purchase_date) }}"> + <div class="input-group col-md-3"> + <div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true"> + <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="purchase_date" id="purchase_date" value="{{ Input::old('purchase_date', $item->purchase_date) }}"> <span class="input-group-addon"><i class="fa fa-calendar"></i></span> </div> {!! $errors->first('purchase_date', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!} </div> </div> + diff --git a/webpack.mix.js b/webpack.mix.js index eed7d34a2..23cd99b62 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -22,9 +22,8 @@ mix.styles([ 'public/css/AdminLTE.css', 'resources/assets/css/font-awesome/font-awesome.min.css', './bower_components/iCheck/skins/minimal/minimal.css', - './node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker.css', + './node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css', 'public/css/overrides.css', - ], 'public/css/dist/all.css'); mix.js( @@ -44,7 +43,6 @@ mix.scripts([ './node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js', './node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js', './bower_components/iCheck/icheck.js', - './bower_components/select2/dist/js/select2.full.js', './node_modules/ekko-lightbox/dist/ekko-lightbox.js', './resources/assets/js/app.js', //this is part of AdminLTE './resources/assets/js/snipeit.js', //this is the actual Snipe-IT JS -- GitLab