1"use strict";(self.webpackChunkcipriani=self.webpackChunkcipriani||[]).push([[718],{718:function(e,t,i){i.r(t),i.d(t,{init:function(){return d}});var s=i(324),r=i(712),n=(i(107),i(72)),a=i.n(n),o=i(548),l={insert:"head",singleton:!1},d=(a()(o.A,l),o.A.locals,function(){var e=document.querySelector("#home-carousel .swiper");e&&(e.querySelectorAll(".swiper-slide").length>0&&new s.A(e,{modules:[r._R,r.Ij],autoplay:!0,effect:"fade",loop:!0,speed:700,slidesPerView:1,spaceBetween:0}))})},548:function(e,t,i){var s=i(991),r=i.n(s),n=i(314),a=i.n(n)()(r());a.push([e.id,".swiper-fade.swiper-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}","",{version:3,sources:["webpack://./node_modules/swiper/modules/effect-fade.css"],names:[],mappings:"AAAA,4CACE,2CAAoC,CAApC,mCACF,CACA,2BACE,mBAAoB,CACpB,mCAA4B,CAA5B,2BACF,CACA,yCACE,mBACF,CAIA,yFACE,mBACF",sourcesContent:[".swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n"],sourceRoot:""}]),t.A=a},418:function(e,t,i){var s=i(991),r=i.n(s),n=i(314),a=i.n(n)()(r());a.push([e.id,'@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{-webkit-box-sizing:content-box;box-sizing:content-box;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-slide{-ms-flex-negative:0;display:block;flex-shrink:0;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{-ms-scroll-snap-type:none;scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{-ms-flex-negative:0;-webkit-box-ordinal-group:10000;-ms-flex-order:9999;content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(trans
1parent));background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;-webkit-box-sizing:border-box;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;-webkit-transform-origin:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{-webkit-animation:swiper-preloader-spin 1s linear infinite;animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@-webkit-keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes swiper-preloader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}',"",{version:3,sources:["webpack://./node_modules/swiper/swiper.css"],names:[],mappings:"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",sourcesContent:["/**\n * Swiper 11.1.10\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 21, 2024\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n"],sourceRoot:""}]),t.A=a},314:function(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,s){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(s)for(var n=0;n<this.length;n++){var a=this[n][0];null!=a&&(r[a]=!0)}for(var o=0;o<e.length;o++){var l=[].concat(e[o]);s&&r[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},991:function(e){function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==i)return;var s,r,n=[],a=!0,o=!1;try{for(i=i.call(e);!(a=(s=i.next()).done)&&(n.push(s.value),!t||n.length!==t);a=!0);}catch(e){o=!0,r=e}finally{try{a||null==i.return||i.return()}finally{if(o)throw r}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var s=Object.prototype.toString.call(e).slice(8,-1);"Object"===s&&e.constructor&&(s=e.constructor.name);if("Map"===s||"Set"===s)return Array.from(e);if("Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s))return i(e,t)}
1(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,s=new Array(t);i<t;i++)s[i]=e[i];return s}e.exports=function(e){var i=t(e,4),s=i[1],r=i[3];if(!r)return s;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),a="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),o="/*# ".concat(a," */"),l=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[s].concat(l).concat([o]).join("\n")}return[s].join("\n")}},107:function(e,t,i){var s=i(72),r=i.n(s),n=i(418),a={insert:"head",singleton:!1};r()(n.A,a),n.A.locals},72:function(e,t,i){var s,r=function(){return void 0===s&&(s=Boolean(window&&document&&document.all&&!window.atob)),s},n=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function o(e){for(var t=-1,i=0;i<a.length;i++)if(a[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},s=[],r=0;r<e.length;r++){var n=e[r],l=t.base?n[0]+t.base:n[0],d=i[l]||0,p="".concat(l," ").concat(d);i[l]=d+1;var c=o(p),u={css:n[1],media:n[2],sourceMap:n[3]};-1!==c?(a[c].references++,a[c].updater(u)):a.push({identifier:p,updater:h(u,t),references:1}),s.push(p)}return s}function d(e){var t=document.createElement("style"),s=e.attributes||{};if(void 0===s.nonce){var r=i.nc;r&&(s.nonce=r)}if(Object.keys(s).forEach((function(e){t.setAttribute(e,s[e])})),"function"==typeof e.insert)e.insert(t);else{var a=n(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var p,c=(p=[],function(e,t){return p[e]=t,p.filter(Boolean).join("\n")});function u(e,t,i,s){var r=i?"":s.media?"@media ".concat(s.media," {").concat(s.css,"}"):s.css;if(e.styleSheet)e.styleSheet.cssText=c(t,r);else{var n=document.createTextNode(r),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(n,a[t]):e.appendChild(n)}}function A(e,t,i){var s=i.css,r=i.media,n=i.sourceMap;if(r?e.setAttribute("media",r):e.removeAttribute("media"),n&&"undefined"!=typeof btoa&&(s+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n))))," */")),e.styleSheet)e.styleSheet.cssText=s;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(s))}}var f=null,m=0;function h(e,t){var i,s,r;if(t.singleton){var n=m++;i=f||(f=d(t)),s=u.bind(null,i,n,!1),r=u.bind(null,i,n,!0)}else i=d(t),s=A.bind(null,i,t),r=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return s(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;s(e=t)}else r()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=r());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var s=0;s<i.length;s++){var r=o(i[s]);a[r].references--}for(var n=l(e,t),d=0;d<i.length;d++){var p=o(i[d]);0===a[p].references&&(a[p].updater(),a.splice(p,1))}i=n}}}},712:function(e,t,i){i.d(t,{Ij:function(){return d},_R:function(){return u},Vx:function(){return a},dK:function(){return l}});var s=i(375),r=i(44);function n(e,t,i,s){return e.params.createElements&&Object.keys(s).forEach((n=>{if(!i[n]&&!0===i.auto){let a=(0,r.e)(e.el,`.${s[n]}`)[0];a||(a=(0,r.c)("div",s[n]),a.className=s[n],e.el.append(a)),i[n]=a,t[n]=a}})),i}function a(e){let{swiper:t,extendParams:i,on:s,emit:a}=e;function o(e){let i;return e&&"string"==typeof e&&t.isElement&&(i=t.el.querySelector(e),i)?i:(e&&("string"==typeof e&&(i=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&i&&i.length>1&&1===t.el.querySelectorAll(e).length?i=t.el.querySelector(e):i&&1===i.length&&(i=i[0])),e&&!i?e:i)}function l(e,i){const s=t.params.navigation;
vendor: 1,323 bytes, line 1
1(e=(0,r.m)(e)).forEach((e=>{e&&(e.classList[i?"add":"remove"](...s.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=i),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass))}))}function d(){const{nextEl:e,prevEl:i}=t.navigation;if(t.params.loop)return l(i,!1),void l(e,!1);l(i,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function p(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function u(){const e=t.params.navigation;if(t.params.navigation=n(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let i=o(e.nextEl),s=o(e.prevEl);Object.assign(t.navigation,{nextEl:i,prevEl:s}),i=(0,r.m)(i),s=(0,r.m)(s);const a=(i,s)=>{i&&i.addEventListener("click","next"===s?c:p),!t.enabled&&i&&i.classList.add(...e.lockClass.split(" "))};i.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}function A(){let{nextEl:e,prevEl:i}=t.navigation;e=(0,r.m)(e),i=(0,r.m)(i);const s=(e,i)=>{e.removeEventListener("click","next"===i?c:p),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>
vendor: 4,474 bytes, line 1
1s(e,"next"))),i.forEach((e=>s(e,"prev")))}i({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},s("init",(()=>{!1===t.params.navigation.enabled?f():(u(),d())})),s("toEdge fromEdge lock unlock",(()=>{d()})),s("destroy",(()=>{A()})),s("enable disable",(()=>{let{nextEl:e,prevEl:i}=t.navigation;e=(0,r.m)(e),i=(0,r.m)(i),t.enabled?d():[...e,...i].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),s("click",((e,i)=>{let{nextEl:s,prevEl:n}=t.navigation;s=(0,r.m)(s),n=(0,r.m)(n);const o=i.target;let l=n.includes(o)||s.includes(o);if(t.isElement&&!l){const e=i.path||i.composedPath&&i.composedPath();e&&(l=e.find((e=>s.includes(e)||n.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===o||t.pagination.el.contains(o)))return;let e;s.length?e=s[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...s,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const f=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),A()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),u(),d()},disable:f,update:d,init:u,destroy:A})}function o(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function l(e){let{swiper:t,extendParams:i,on:s,emit:a}=e;const l="swiper-pagination";let d;i({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${l}-bullet`,bulletActiveClass:`${l}-bullet-active`,modifierClass:`${l}-`,currentClass:`${l}-current`,totalClass:`${l}-total`,hiddenClass:`${l}-hidden`,progressbarFillClass:`${l}-progressbar-fill`,progressbarOppositeClass:`${l}-progressbar-opposite`,clickableClass:`${l}-clickable`,lockClass:`${l}-lock`,horizontalClass:`${l}-horizontal`,verticalClass:`${l}-vertical`,paginationDisabledClass:`${l}-disabled`}}),t.pagination={el:null,bullets:[]};let p=0;function c(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function u(e,i){const{bulletActiveClass:s}=t.params.pagination;e&&(e=e[("prev"===i?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${s}-${i}`),(e=e[("prev"===i?"previous":"next")+"ElementSibling"])&&e.classList.add(`${s}-${i}-${i}`))}function A(e){const i=e.target.closest(o(t.params.pagination.bulletClass));if(!i)return;e.preventDefault();const s=(0,r.h)(i)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===s)return;const e=(n=t.realIndex,a=s,l=t.slides.length,(a%=l)==1+(n%=l)?"next":a===n-1?"previous":void 0);"next"===e?t.slideNext():"previous"===e?t.slidePrev():t.slideToLoop(s)}else t.slideTo(s);var n,a,l}function f(){const e=t.rtl,i=t.params.pagination;if(c())return;let s,n,l=t.pagination.el;l=(0,r.m)(l);const A=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,f=t.params.loop?Math.ceil(A/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(n=t.previousRealIndex||0,s=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(s=t.snapIndex,n=t.previousSnapIndex):(n=t.previousIndex||0,s=t.activeIndex||0),"bullets"===i.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,c,A;if(i.dynamicBullets&&(d=(0,r.f)(a[0],t.isHorizontal()?"width":"height",!0),l.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=d*(i.dynamicMainBullets+4)+"px"})),i.dynamicMainBullets>1&&void 0!==n&&(p+=s-(n||0),p>i.dynamicMainBullets-1?p=i.dynamicMainBullets-1:p<0&&(p=0)),o=Math.max(s-p,0),c=o+(Math.min(a.length,i.dynamicMainBullets)-1),A=(c+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${i.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),l.length>
vendor: 4,237 bytes, line 1
11)a.forEach((e=>{const n=(0,r.h)(e);n===s?e.classList.add(...i.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),i.dynamicBullets&&(n>=o&&n<=c&&e.classList.add(...`${i.bulletActiveClass}-main`.split(" ")),n===o&&u(e,"prev"),n===c&&u(e,"next"))}));else{const e=a[s];if(e&&e.classList.add(...i.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===s?"bullet-active":"bullet")})),i.dynamicBullets){const e=a[o],t=a[c];for(let e=o;e<=c;e+=1)a[e]&&a[e].classList.add(...`${i.bulletActiveClass}-main`.split(" "));u(e,"prev"),u(t,"next")}}if(i.dynamicBullets){const s=Math.min(a.length,i.dynamicMainBullets+4),r=(d*s-d)/2-A*d,n=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?n:"top"]=`${r}px`}))}}l.forEach(((e,r)=>{if("fraction"===i.type&&(e.querySelectorAll(o(i.currentClass)).forEach((e=>{e.textContent=i.formatFractionCurrent(s+1)})),e.querySelectorAll(o(i.totalClass)).forEach((e=>{e.textContent=i.formatFractionTotal(f)}))),"progressbar"===i.type){let r;r=i.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const n=(s+1)/f;let a=1,l=1;"horizontal"===r?a=n:l=n,e.querySelectorAll(o(i.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${a}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===i.type&&i.renderCustom?(e.innerHTML=i.renderCustom(t,s+1,f),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass)}))}function m(){const e=t.params.pagination;if(c())return;const i=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let s=t.pagination.el;s=(0,r.m)(s);let n="";if("bullets"===e.type){let s=t.params.loop?Math.ceil(i/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&s>i&&(s=i);for(let i=0;i<s;i+=1)e.renderBullet?n+=e.renderBullet.call(t,i,e.bulletClass):n+=`<${e.bulletElement} ${t.isElement?'part="bullet"':""} class="${e.bulletClass}"></${e.bulletElement}>`}"fraction"===e.type&&(n=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`),"progressbar"===e.type&&(n=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`),t.pagination.bullets=[],s.forEach((i=>{"custom"!==e.type&&(i.innerHTML=n||""),"bullets"===e.type&&t.pagination.bullets.push(...i.querySelectorAll(o(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",s[0])}function h(){t.params.pagination=n(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let i;"string"==typeof e.el&&t.isElement&&(i=t.el.querySelector(e.el)),i||"string"!=typeof e.el||(i=[...document.querySelectorAll(e.el)]),i||(i=e.el),i&&0!==i.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(i)&&i.length>1&&(i=[...t.el.querySelectorAll(e.el)],i.length>1&&(i=i.filter((e=>(0,r.a)(e,".swiper")[0]===t.el))[0])),Array.isArray(i)&&1===i.length&&(i=i[0]),Object.assign(t.pagination,{el:i}),i=(0,r.m)(i),i.forEach((i=>{"bullets"===e.type&&e.clickable&&i.classList.add(...(e.clickableClass||"").split(" ")),i.classList.add(e.modifierClass+e.type),i.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(i.classList.add(`${e.modifierClass}${e.type}-dynamic`),p=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&i.classList.add(e.progressbarOppositeClass),e.clickable&&i.addEventListener("click",A),t.enabled||i.classList.add(e.lockClass)})))}function g(){const e=t.params.pagination;if(c())return;let i=t.pagination.el;i&&(i=(0,r.m)(i),i.forEach((i=>{i.classList.remove(e.hiddenClass),i.classList.remove(e.modifierClass+e.type),i.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(i.classList.remove(...(e.clickableClass||"").split(" ")),i.removeEventListener("click",A))}
vendor: 4,302 bytes, line 1
1))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}s("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:i}=t.pagination;i=(0,r.m)(i),i.forEach((i=>{i.classList.remove(e.horizontalClass,e.verticalClass),i.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),s("init",(()=>{!1===t.params.pagination.enabled?w():(h(),m(),f())})),s("activeIndexChange",(()=>{void 0===t.snapIndex&&f()})),s("snapIndexChange",(()=>{f()})),s("snapGridLengthChange",(()=>{m(),f()})),s("destroy",(()=>{g()})),s("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=(0,r.m)(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),s("lock unlock",(()=>{f()})),s("click",((e,i)=>{const s=i.target,n=(0,r.m)(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&n&&n.length>0&&!s.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&s===t.navigation.nextEl||t.navigation.prevEl&&s===t.navigation.prevEl))return;const e=n[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),n.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const w=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=(0,r.m)(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),g()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=(0,r.m)(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),f()},disable:w,render:m,update:f,init:h,destroy:g})}function d(e){let t,i,{swiper:r,extendParams:n,on:a,emit:o,params:l}=e;r.autoplay={running:!1,paused:!1,timeLeft:0},n({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,A,f,m,h,g=l&&l.autoplay?l.autoplay.delay:3e3,w=l&&l.autoplay?l.autoplay.delay:3e3,v=(new Date).getTime();function C(e){r&&!r.destroyed&&r.wrapperEl&&e.target===r.wrapperEl&&(r.wrapperEl.removeEventListener("transitionend",C),h||e.detail&&e.detail.bySwiperTouchMove||T())}const b=()=>{if(r.destroyed||!r.autoplay.running)return;r.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=r.autoplay.paused?d:v+w-(new Date).getTime();r.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/g),i=requestAnimationFrame((()=>{b()}))},y=e=>{if(r.destroyed||!r.autoplay.running)return;cancelAnimationFrame(i),b();let s=void 0===e?r.params.autoplay.delay:e;g=r.params.autoplay.delay,w=r.params.autoplay.delay;const n=(()=>{let e;if(e=r.virtual&&r.params.virtual.enabled?r.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:r.slides[r.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(n)&&n>0&&void 0===e&&(s=n,g=n,w=n),d=s;const a=r.params.speed,l=()=>{r&&!r.destroyed&&(r.params.autoplay.reverseDirection?!r.isBeginning||r.params.loop||r.params.rewind?(r.slidePrev(a,!0,!0),o("autoplay")):r.params.autoplay.stopOnLastSlide||(r.slideTo(r.slides.length-1,a,!0,!0),o("autoplay")):!r.isEnd||r.params.loop||r.params.rewind?(r.slideNext(a,!0,!0),o("autoplay")):r.params.autoplay.stopOnLastSlide||(r.slideTo(0,a,!0,!0),o("autoplay")),r.params.cssMode&&(v=(new Date).getTime(),requestAnimationFrame((()=>{y()}))))};return s>0?(clearTimeout(t),t=setTimeout((()=>{l()}),s)):requestAnimationFrame((()=>{l()})),s},E=()=>{v=(new Date).getTime(),r.autoplay.running=!0,y(),o("autoplayStart")},x=()=>{r.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(i),o("autoplayStop")},S=(e,i)=>{if(r.destroyed||!r.autoplay.running)return;clearTimeout(t),e||(m=!0);const s=()=>{o("autoplayPause"),r.params.autoplay.waitForTransition?r.wrapperEl.addEventListener("transitionend",C):T()};if(r.autoplay.paused=!0,i)return f&&(d=r.params.autoplay.delay),f=!1,void s();const n=d||r.params.autoplay.delay;d=n-((new Date).getTime()-v),r.isEnd&&d<0&&!r.params.loop||(d<0&&(d=0),s())},T=()=>{r.isEnd&&d<0&&!r.params.loop||r.destroyed||!r.autoplay.running||(v=(new Date).getTime(),m?(m=!1,y(d)):y(),r.autoplay.paused=!1,o("autoplayResume"))},B=()=>
1{if(r.destroyed||!r.autoplay.running)return;const e=(0,s.g)();"hidden"===e.visibilityState&&(m=!0,S(!0)),"visible"===e.visibilityState&&T()},M=e=>{"mouse"===e.pointerType&&(m=!0,h=!0,r.animating||r.autoplay.paused||S(!0))},k=e=>{"mouse"===e.pointerType&&(h=!1,r.autoplay.paused&&T())};a("init",(()=>{r.params.autoplay.enabled&&(r.params.autoplay.pauseOnMouseEnter&&(r.el.addEventListener("pointerenter",M),r.el.addEventListener("pointerleave",k)),(0,s.g)().addEventListener("visibilitychange",B),E())})),a("destroy",(()=>{r.el&&"string"!=typeof r.el&&(r.el.removeEventListener("pointerenter",M),r.el.removeEventListener("pointerleave",k)),(0,s.g)().removeEventListener("visibilitychange",B),r.autoplay.running&&x()})),a("_freeModeStaticRelease",(()=>{(u||m)&&T()})),a("_freeModeNoMomentumRelease",(()=>{r.params.autoplay.disableOnInteraction?x():S(!0,!0)})),a("beforeTransitionStart",((e,t,i)=>{!r.destroyed&&r.autoplay.running&&(i||!r.params.autoplay.disableOnInteraction?S(!0,!0):x())})),a("sliderFirstMove",(()=>{!r.destroyed&&r.autoplay.running&&(r.params.autoplay.disableOnInteraction?x():(c=!0,u=!1,m=!1,A=setTimeout((()=>{m=!0,u=!0,S(!0)}),200)))})),a("touchEnd",(()=>{if(!r.destroyed&&r.autoplay.running&&c){if(clearTimeout(A),clearTimeout(t),r.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&r.params.cssMode&&T(),u=!1,c=!1}})),a("slideChange",(()=>{!r.destroyed&&r.autoplay.running&&(f=!0)})),Object.assign(r.autoplay,{start:E,stop:x,pause:S,resume:T})}function p(e,t){const i=(0,r.g)(t);return i!==t&&(i.style.backfaceVisibility="hidden",i.style["-webkit-backface-visibility"]="hidden"),i}function c(e){let{swiper:t,duration:i,transformElements:s,allSlides:n}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==i){let e,i=!1;e=n?s:s.filter((e=>{const i=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(i)===a})),e.forEach((e=>{(0,r.k)(e,(()=>{if(i)return;if(!t||t.destroyed)return;i=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function u(e){let{swiper:t,extendParams:i,on:s}=e;i({fadeEffect:{crossFade:!1}});!function(e){const{effect:t,swiper:i,on:s,setTranslate:r,setTransition:n,overwriteParams:a,perspective:o,recreateShadows:l,getEffectParams:d}=e;let p;s("beforeInit",(()=>{if(i.params.effect!==t)return;i.classNames.push(`${i.params.containerModifierClass}${t}`),o&&o()&&i.classNames.push(`${i.params.containerModifierClass}3d`);const e=a?a():{};Object.assign(i.params,e),Object.assign(i.originalParams,e)})),s("setTranslate",(()=>{i.params.effect===t&&r()})),s("setTransition",((e,s)=>{i.params.effect===t&&n(s)})),s("transitionEnd",(()=>{if(i.params.effect===t&&l){if(!d||!d().slideShadows)return;i.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),l()}})),s("virtualUpdate",(()=>{i.params.effect===t&&(i.slides.length||(p=!0),requestAnimationFrame((()=>{p&&i.slides&&i.slides.length&&(r(),p=!1)})))}))}({effect:"fade",swiper:t,on:s,setTranslate:()=>{const{slides:e}=t;t.params.fadeEffect;for(let i=0;i<e.length;i+=1){const e=t.slides[i];let s=-e.swiperSlideOffset;t.params.virtualTranslate||(s-=t.translate);let r=0;t.isHorizontal()||(r=s,s=0);const n=t.params.fadeEffect.crossFade?Math.max(1-Math.abs(e.progress),0):1+Math.min(Math.max(e.progress,-1),0),a=p(0,e);a.style.opacity=n,a.style.transform=`translate3d(${s}px, ${r}px, 0px)`}},setTransition:e=>{const i=t.slides.map((e=>(0,r.g)(e)));i.forEach((t=>{t.style.transitionDuration=`${e}ms`})),c({swiper:t,duration:e,transformElements:i,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}},375:function(e,t,i){function s(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function r(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((i=>{void 0===e[i]?e[i]=t[i]:s(t[i])&&s(e[i])&&Object.keys(t[i]).length>0&&r(e[i],t[i])}))}i.d(t,{a:function(){return l},g:function(){return a}});const n={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}},createElementNS(){return{}},importNode(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return r(e,n),e}const o={document:n,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle(){return{getPropertyValue(){return""}}},Image(){},Date(){},screen:{},setTimeout(){}
1,clearTimeout(){},matchMedia(){return{}},requestAnimationFrame(e){return"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function l(){const e="undefined"!=typeof window?window:{};return r(e,o),e}},44:function(e,t,i){i.d(t,{a:function(){return b},c:function(){return h},d:function(){return a},e:function(){return A},f:function(){return E},g:function(){return u},h:function(){return C},j:function(){return o},k:function(){return y},m:function(){return x},n:function(){return n},p:function(){return v},q:function(){return w},r:function(){return g},s:function(){return p},t:function(){return c},u:function(){return m},v:function(){return f},w:function(){return d},x:function(){return r}});var s=i(375);function r(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function a(){return Date.now()}function o(e,t){void 0===t&&(t="x");const i=(0,s.a)();let r,n,a;const o=function(e){const t=(0,s.a)();let i;return t.getComputedStyle&&(i=t.getComputedStyle(e,null)),!i&&e.currentStyle&&(i=e.currentStyle),i||(i=e.style),i}(e);return i.WebKitCSSMatrix?(n=o.transform||o.webkitTransform,n.split(",").length>6&&(n=n.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new i.WebKitCSSMatrix("none"===n?"":n)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=a.toString().split(",")),"x"===t&&(n=i.WebKitCSSMatrix?a.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(n=i.WebKitCSSMatrix?a.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),n||0}function l(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function d(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const r=s<0||arguments.length<=s?void 0:arguments[s];if(null!=r&&(i=r,!("undefined"!=typeof window&&void 0!==window.HTMLElement?i instanceof HTMLElement:i&&(1===i.nodeType||11===i.nodeType)))){const i=Object.keys(Object(r)).filter((e=>t.indexOf(e)<0));for(let t=0,s=i.length;t<s;t+=1){const s=i[t],n=Object.getOwnPropertyDescriptor(r,s);void 0!==n&&n.enumerable&&(l(e[s])&&l(r[s])?r[s].__swiper__?e[s]=r[s]:d(e[s],r[s]):!l(e[s])&&l(r[s])?(e[s]={},r[s].__swiper__?e[s]=r[s]:d(e[s],r[s])):e[s]=r[s])}}}var i;return e}function p(e,t,i){e.style.setProperty(t,i)}function c(e){let{swiper:t,targetPosition:i,side:r}=e;const n=(0,s.a)(),a=-t.translate;let o,l=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",n.cancelAnimationFrame(t.cssModeFrameID);const p=i>a?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),s=.5-Math.cos(e*Math.PI)/2;let p=a+s*(i-a);if(c(p,i)&&(p=i),t.wrapperEl.scrollTo({[r]:p}),c(p,i))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:p})})),void n.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=n.requestAnimationFrame(u)};u()}function u(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function A(e,t){void 0===t&&(t="");const i=[...e.children];return e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter((e=>e.matches(t))):i}function f(e,t){const i=t.contains(e);if(!i&&t instanceof HTMLSlotElement){return[...t.assignedElements()].includes(e)}return i}function m(e){try{return void console.warn(e)}catch(e){}}function h(e,t){void 0===t&&(t=[]);const i=document.createElement(e);return i.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),i}function g(e,t){const i=[];for(;e.previousElementSibling;){const s=e.previousElementSibling;t?s.matches(t)&&i.push(s):i.push(s),e=s}return i}function w(e,t){const i=[];for(;e.nextElementSibling;){const s=e.nextElementSibling;t?s.matches(t)&&i.push(s):i.push(s),e=s}return i}function v(e,t){return(0,s.a)().getComputedStyle(e,null).getPropertyValue(t)}function C(e){let t,i=e;if(i){for(t=0;null!==(i=i.previousSibling);)1===i.nodeType&&(t+=1);return t}}function b(e,t){const i=[];let s=e.parentElement;for(;s;)t?s.matches(t)&&i.push(s):i.push(s),s=s.parentElement;return i}function y(e,t){t&&e.addEventListener("transitionend",(function i(s){s.target===e&&(t.call(e,s),e.removeEventListener("transitionend",i))}
vendor: 4,160 bytes, line 1
1))}function E(e,t,i){const r=(0,s.a)();return i?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function x(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}},324:function(e,t,i){i.d(t,{A:function(){return D}});var s=i(375),r=i(44);let n,a,o;function l(){return n||(n=function(){const e=(0,s.a)(),t=(0,s.g)();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),n}function d(e){return void 0===e&&(e={}),a||(a=function(e){let{userAgent:t}=void 0===e?{}:e;const i=l(),r=(0,s.a)(),n=r.navigator.platform,a=t||r.navigator.userAgent,o={ios:!1,android:!1},d=r.screen.width,p=r.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let u=a.match(/(iPad).*OS\s([\d_]+)/);const A=a.match(/(iPod)(.*OS\s([\d_]+))?/),f=!u&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===n;let h="MacIntel"===n;return!u&&h&&i.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${d}x${p}`)>=0&&(u=a.match(/(Version)\/([\d.]+)/),u||(u=[0,1,"13_0_0"]),h=!1),c&&!m&&(o.os="android",o.android=!0),(u||f||A)&&(o.os="ios",o.ios=!0),o}(e)),a}function p(){return o||(o=function(){const e=(0,s.a)(),t=d();let i=!1;function r(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(r()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,s]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));i=e<16||16===e&&s<2}}const n=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=r();return{isSafari:i||a,needPerspectiveFix:i,need3dFix:a||n&&t.ios,isWebView:n}}()),o}var c={on(e,t,i){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof t)return s;const r=i?"unshift":"push";return e.split(" ").forEach((e=>{s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][r](t)})),s},once(e,t,i){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof t)return s;function r(){s.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var i=arguments.length,n=new Array(i),a=0;a<i;a++)n[a]=arguments[a];t.apply(s,n)}return r.__emitterProxy=t,s.on(e,r,i)},onAny(e,t){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof e)return i;const s=t?"unshift":"push";return i.eventsAnyListeners.indexOf(e)<0&&i.eventsAnyListeners[s](e),i},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const i=t.eventsAnyListeners.indexOf(e);return i>=0&&t.eventsAnyListeners.splice(i,1),t},off(e,t){const i=this;return!i.eventsListeners||i.destroyed?i:i.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].forEach(((s,r)=>{(s===t||s.__emitterProxy&&s.__emitterProxy===t)&&i.eventsListeners[e].splice(r,1)}))})),i):i},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,i,s;for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];"string"==typeof n[0]||Array.isArray(n[0])?(t=n[0],i=n.slice(1,n.length),s=e):(t=n[0].events,i=n[0].data,s=n[0].context||e),i.unshift(s);return(Array.isArray(t)?t:t.split(" ")).forEach((t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(s,[t,...i])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(s,i)}))})),e}};const u=(e,t,i)=>{t&&!e.classList.contains(i)?e.classList.add(i):!t&&e.classList.contains(i)&&e.classList.remove(i)};const A=(e,t,i)=>{t&&!e.classList.contains(i)?e.classList.add(i):!t&&e.classList.contains(i)&&e.classList.remove(i)};const f=(e,t)=>{if(!e||e.destroyed||!e.params)return;const i=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);
vendor: 4,458 bytes, line 1
1if(i){let t=i.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(i.shadowRoot?t=i.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{i.shadowRoot&&(t=i.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},m=(e,t)=>{if(!e.slides[t])return;const i=e.slides[t].querySelector('[loading="lazy"]');i&&i.removeAttribute("loading")},h=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const i=e.slides.length;if(!i||!t||t<0)return;t=Math.min(t,i);const s="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const i=r,n=[i-t];return n.push(...Array.from({length:t}).map(((e,t)=>i+s+t))),void e.slides.forEach(((t,i)=>{n.includes(t.column)&&m(e,i)}))}const n=r+s-1;if(e.params.rewind||e.params.loop)for(let s=r-t;s<=n+t;s+=1){const t=(s%i+i)%i;(t<r||t>n)&&m(e,t)}else for(let s=Math.max(r-t,0);s<=Math.min(n+t,i-1);s+=1)s!==r&&(s>n||s<r)&&m(e,s)};var g={updateSize:function(){const e=this;let t,i;const s=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:s.clientWidth,i=void 0!==e.params.height&&null!==e.params.height?e.params.height:s.clientHeight,0===t&&e.isHorizontal()||0===i&&e.isVertical()||(t=t-parseInt((0,r.p)(s,"padding-left")||0,10)-parseInt((0,r.p)(s,"padding-right")||0,10),i=i-parseInt((0,r.p)(s,"padding-top")||0,10)-parseInt((0,r.p)(s,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(i)&&(i=0),Object.assign(e,{width:t,height:i,size:e.isHorizontal()?t:i}))},updateSlides:function(){const e=this;function t(t,i){return parseFloat(t.getPropertyValue(e.getDirectionLabel(i))||0)}const i=e.params,{wrapperEl:s,slidesEl:n,size:a,rtlTranslate:o,wrongRTL:l}=e,d=e.virtual&&i.virtual.enabled,p=d?e.virtual.slides.length:e.slides.length,c=(0,r.e)(n,`.${e.params.slideClass}, swiper-slide`),u=d?e.virtual.slides.length:c.length;let A=[];const f=[],m=[];let h=i.slidesOffsetBefore;"function"==typeof h&&(h=i.slidesOffsetBefore.call(e));let g=i.slidesOffsetAfter;"function"==typeof g&&(g=i.slidesOffsetAfter.call(e));const w=e.snapGrid.length,v=e.slidesGrid.length;let C=i.spaceBetween,b=-h,y=0,E=0;if(void 0===a)return;"string"==typeof C&&C.indexOf("%")>=0?C=parseFloat(C.replace("%",""))/100*a:"string"==typeof C&&(C=parseFloat(C)),e.virtualSize=-C,c.forEach((e=>{o?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),i.centeredSlides&&i.cssMode&&((0,r.s)(s,"--swiper-centered-offset-before",""),(0,r.s)(s,"--swiper-centered-offset-after",""));const x=i.grid&&i.grid.rows>1&&e.grid;let S;x?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const T="auto"===i.slidesPerView&&i.breakpoints&&Object.keys(i.breakpoints).filter((e=>void 0!==i.breakpoints[e].slidesPerView)).length>0;for(let s=0;s<u;s+=1){let n;if(S=0,c[s]&&(n=c[s]),x&&e.grid.updateSlide(s,n,c),!c[s]||"none"!==(0,r.p)(n,"display")){if("auto"===i.slidesPerView){T&&(c[s].style[e.getDirectionLabel("width")]="");const a=getComputedStyle(n),o=n.style.transform,l=n.style.webkitTransform;if(o&&(n.style.transform="none"),l&&(n.style.webkitTransform="none"),i.roundLengths)S=e.isHorizontal()?(0,r.f)(n,"width",!0):(0,r.f)(n,"height",!0);else{const e=t(a,"width"),i=t(a,"padding-left"),s=t(a,"padding-right"),r=t(a,"margin-left"),o=t(a,"margin-right"),l=a.getPropertyValue("box-sizing");if(l&&"border-box"===l)S=e+r+o;else{const{clientWidth:t,offsetWidth:a}=n;S=e+i+s+r+o+(a-t)}}o&&(n.style.transform=o),l&&(n.style.webkitTransform=l),i.roundLengths&&(S=Math.floor(S))}else S=(a-(i.slidesPerView-1)*C)/i.slidesPerView,i.roundLengths&&(S=Math.floor(S)),c[s]&&(c[s].style[e.getDirectionLabel("width")]=`${S}px`);c[s]&&(c[s].swiperSlideSize=S),m.push(S),i.centeredSlides?(b=b+S/2+y/2+C,0===y&&0!==s&&(b=b-a/2-C),0===s&&(b=b-a/2-C),Math.abs(b)<.001&&(b=0),i.roundLengths&&(b=Math.floor(b)),E%i.slidesPerGroup==0&&A.push(b),f.push(b)):(i.roundLengths&&(b=Math.floor(b)),(E-Math.min(e.params.slidesPerGroupSkip,E))%e.params.slidesPerGroup==0&&A.push(b),f.push(b),b=b+S+C),e.virtualSize+=S+C,y=S,E+=1}}if(e.virtualSize=Math.max(e.virtualSize,a)+g,o&&l&&("slide"===i.effect||"coverflow"===i.effect)&&(s.style.width=`${e.virtualSize+C}px`),i.setWrapperSize&&(s.style[e.getDirectionLabel("width")]=`${e.virtualSize+C}px`),x&&e.grid.updateWrapperSize(S,A),!i.centeredSlides){const t=[];for(let s=0;s<A.length;s+=1){let r=A[s];
vendor: 20,378 bytes, line 1
1i.roundLengths&&(r=Math.floor(r)),A[s]<=e.virtualSize-a&&t.push(r)}A=t,Math.floor(e.virtualSize-a)-Math.floor(A[A.length-1])>1&&A.push(e.virtualSize-a)}if(d&&i.loop){const t=m[0]+C;if(i.slidesPerGroup>1){const s=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/i.slidesPerGroup),r=t*i.slidesPerGroup;for(let e=0;e<s;e+=1)A.push(A[A.length-1]+r)}for(let s=0;s<e.virtual.slidesBefore+e.virtual.slidesAfter;s+=1)1===i.slidesPerGroup&&A.push(A[A.length-1]+t),f.push(f[f.length-1]+t),e.virtualSize+=t}if(0===A.length&&(A=[0]),0!==C){const t=e.isHorizontal()&&o?"marginLeft":e.getDirectionLabel("marginRight");c.filter(((e,t)=>!(i.cssMode&&!i.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${C}px`}))}if(i.centeredSlides&&i.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(C||0)})),e-=C;const t=e-a;A=A.map((e=>e<=0?-h:e>t?t+g:e))}if(i.centerInsufficientSlides){let e=0;m.forEach((t=>{e+=t+(C||0)})),e-=C;const t=(i.slidesOffsetBefore||0)+(i.slidesOffsetAfter||0);if(e+t<a){const i=(a-e-t)/2;A.forEach(((e,t)=>{A[t]=e-i})),f.forEach(((e,t)=>{f[t]=e+i}))}}if(Object.assign(e,{slides:c,snapGrid:A,slidesGrid:f,slidesSizesGrid:m}),i.centeredSlides&&i.cssMode&&!i.centeredSlidesBounds){(0,r.s)(s,"--swiper-centered-offset-before",-A[0]+"px"),(0,r.s)(s,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],i=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+i))}if(u!==p&&e.emit("slidesLengthChange"),A.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==v&&e.emit("slidesGridLengthChange"),i.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(d||i.cssMode||"slide"!==i.effect&&"fade"!==i.effect)){const t=`${i.containerModifierClass}backface-hidden`,s=e.el.classList.contains(t);u<=i.maxBackfaceHiddenSlides?s||e.el.classList.add(t):s&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,i=[],s=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>s?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{i.push(e)}));else for(r=0;r<Math.ceil(t.params.slidesPerView);r+=1){const e=t.activeIndex+r;if(e>t.slides.length&&!s)break;i.push(a(e))}else i.push(a(t.activeIndex));for(r=0;r<i.length;r+=1)if(void 0!==i[r]){const e=i[r].offsetHeight;n=e>n?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,i=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=(e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop)-i-e.cssOverflowAdjustment()},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,i=t.params,{slides:s,rtlTranslate:r,snapGrid:n}=t;if(0===s.length)return;void 0===s[0].swiperSlideOffset&&t.updateSlidesOffset();let a=-e;r&&(a=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=i.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e<s.length;e+=1){const l=s[e];let d=l.swiperSlideOffset;i.cssMode&&i.centeredSlides&&(d-=s[0].swiperSlideOffset);const p=(a+(i.centeredSlides?t.minTranslate():0)-d)/(l.swiperSlideSize+o),c=(a-n[0]+(i.centeredSlides?t.minTranslate():0)-d)/(l.swiperSlideSize+o),A=-(a-d),f=A+t.slidesSizesGrid[e],m=A>=0&&A<=t.size-t.slidesSizesGrid[e],h=A>=0&&A<t.size-1||f>1&&f<=t.size||A<=0&&f>=t.size;h&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),u(l,h,i.slideVisibleClass),u(l,m,i.slideFullyVisibleClass),l.progress=r?-p:p,l.originalProgress=r?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const i=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*i||0}const i=t.params,s=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===s)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/s;const i=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=i||r<=0,a=o||r>=1,i&&(r=0),o&&(r=1)}if(i.loop){const i=t.getSlideIndexByData(0),s=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[i],n=t.slidesGrid[s],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(i.watchSlidesProgress||i.centeredSlides&&i.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:i,slidesEl:s,activeIndex:n}=e,a=e.virtual&&i.virtual.enabled,o=e.grid&&i.grid&&i.grid.rows>1,l=e=>(0,r.e)(s,`.${i.slideClass}${e}, swiper-slide${e}`)[0];let d,p,c;if(a)if(i.loop){let t=n-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),d=l(`[data-swiper-slide-index="${t}"]`)}else d=l(`[data-swiper-slide-index="${n}"]`);else o?(d=t.filter((e=>e.column===n))[0],c=t.filter((e=>e.column===n+1))[0],p=t.filter((e=>e.column===n-1))[0]):d=t[n];d&&(o||(c=(0,r.q)(d,`.${i.slideClass}, swiper-slide`)[0],i.loop&&!c&&(c=t[0]),p=(0,r.r)(d,`.${i.slideClass}, swiper-slide`)[0],i.loop&&0===!p&&(p=t[t.length-1]))),t.forEach((e=>{A(e,e===d,i.slideActiveClass),A(e,e===c,i.slideNextClass),A(e,e===p,i.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,i=t.rtlTranslate?t.translate:-t.translate,{snapGrid:s,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const p=e=>{let i=e-t.virtual.slidesBefore;return i<0&&(i=t.virtual.slides.length+i),i>=t.virtual.slides.length&&(i-=t.virtual.slides.length),i};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:i}=e,s=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e<t.length;e+=1)void 0!==t[e+1]?s>=t[e]&&s<t[e+1]-(t[e+1]-t[e])/2?r=e:s>=t[e]&&s<t[e+1]&&(r=e+1):s>=t[e]&&(r=e);return i.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),s.indexOf(i)>=0)l=s.indexOf(i);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=s.length&&(l=s.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let i=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(i)&&(i=Math.max(t.slides.indexOf(e),0)),u=Math.floor(i/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&h(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const i=this,s=i.params;let r=e.closest(`.${s.slideClass}, swiper-slide`);!r&&i.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${s.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;e<i.slides.length;e+=1)if(i.slides[e]===r){a=!0,n=e;break}if(!r||!a)return i.clickedSlide=void 0,void(i.clickedIndex=void 0);i.clickedSlide=r,i.virtual&&i.params.virtual.enabled?i.clickedIndex=parseInt(r.getAttribute("data-swiper-slide-index"),10):i.clickedIndex=n,s.slideToClickedSlide&&void 0!==i.clickedIndex&&i.clickedIndex!==i.activeIndex&&i.slideToClickedSlide()}};var w={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:i,translate:s,wrapperEl:n}=this;if(t.virtualTranslate)return i?-s:s;if(t.cssMode)return s;let a=(0,r.j)(n,e);return a+=this.cssOverflowAdjustment(),i&&(a=-a),a||0},setTranslate:function(e,t){const i=this,{rtlTranslate:s,params:r,wrapperEl:n,progress:a}=i;let o,l=0,d=0;i.isHorizontal()?l=s?-e:e:d=e,r.roundLengths&&(l=Math.floor(l),d=Math.floor(d)),i.previousTranslate=i.translate,i.translate=i.isHorizontal()?l:d,r.cssMode?n[i.isHorizontal()?"scrollLeft":"scrollTop"]=i.isHorizontal()?-l:-d:r.virtualTranslate||(i.isHorizontal()?l-=i.cssOverflowAdjustment():d-=i.cssOverflowAdjustment(),n.style.transform=`translate3d(${l}px, ${d}px, 0px)`);const p=i.maxTranslate()-i.minTranslate();o=0===p?0:(e-i.minTranslate())/p,o!==a&&i.updateProgress(e),i.emit("setTranslate",i.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,i,s,n){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0),void 0===s&&(s=!0);const a=this,{params:o,wrapperEl:l}=a;if(a.animating&&o.preventInteractionOnTransition)return!1;const d=a.minTranslate(),p=a.maxTranslate();let c;if(c=s&&e>d?d:s&&e<p?p:e,a.updateProgress(c),o.cssMode){const e=a.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!a.support.smoothScroll)return(0,r.t)({swiper:a,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(a.setTransition(0),a.setTranslate(c),i&&(a.emit("beforeTransitionStart",t,n),a.emit("transitionEnd"))):(a.setTransition(t),a.setTranslate(c),i&&(a.emit("beforeTransitionStart",t,n),a.emit("transitionStart")),a.animating||(a.animating=!0,a.onTranslateToWrapperTransitionEnd||(a.onTranslateToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onTranslateToWrapperTransitionEnd),a.onTranslateToWrapperTransitionEnd=null,delete a.onTranslateToWrapperTransitionEnd,a.animating=!1,i&&a.emit("transitionEnd"))}),a.wrapperEl.addEventListener("transitionend",a.onTranslateToWrapperTransitionEnd))),!0}};function v(e){let{swiper:t,runCallbacks:i,direction:s,step:r}=e;const{activeIndex:n,previousIndex:a}=t;let o=s;if(o||(o=n>a?"next":n<a?"prev":"reset"),t.emit(`transition${r}`),i&&n!==a){if("reset"===o)return void t.emit(`slideResetTransition${r}`);t.emit(`slideChangeTransition${r}`),"next"===o?t.emit(`slideNextTransition${r}`):t.emit(`slidePrevTransition${r}`)}}var C={slideTo:function(e,t,i,s,n){void 0===e&&(e=0),void 0===i&&(i=!0),"string"==typeof e&&(e=parseInt(e,10));const a=this;let o=e;o<0&&(o=0);const{params:l,snapGrid:d,slidesGrid:p,previousIndex:c,activeIndex:u,rtlTranslate:A,wrapperEl:f,enabled:m}=a;if(!m&&!s&&!n||a.destroyed||a.animating&&l.preventInteractionOnTransition)return!1;void 0===t&&(t=a.params.speed);const h=Math.min(a.params.slidesPerGroupSkip,o);let g=h+Math.floor((o-h)/a.params.slidesPerGroup);g>=d.length&&(g=d.length-1);const w=-d[g];if(l.normalizeSlideIndex)for(let e=0;e<p.length;e+=1){const t=-Math.floor(100*w),i=Math.floor(100*p[e]),s=Math.floor(100*p[e+1]);void 0!==p[e+1]?t>=i&&t<s-(s-i)/2?o=e:t>=i&&t<s&&(o=e+1):t>=i&&(o=e)}if(a.initialized&&o!==u){if(!a.allowSlideNext&&(A?w>a.translate&&w>a.minTranslate():w<a.translate&&w<a.minTranslate()))return!1;if(!a.allowSlidePrev&&w>a.translate&&w>a.maxTranslate()&&(u||0)!==o)return!1}let v;if(o!==(c||0)&&i&&a.emit("beforeSlideChangeStart"),a.updateProgress(w),v=o>u?"next":o<u?"prev":"reset",A&&-w===a.translate||!A&&w===a.translate)return a.updateActiveIndex(o),l.autoHeight&&a.updateAutoHeight(),a.updateSlidesClasses(),"slide"!==l.effect&&a.setTranslate(w),"reset"!==v&&(a.transitionStart(i,v),a.transitionEnd(i,v)),!1;if(l.cssMode){const e=a.isHorizontal(),i=A?w:-w;if(0===t){const t=a.virtual&&a.params.virtual.enabled;t&&(a.wrapperEl.style.scrollSnapType="none",a._immediateVirtual=!0),t&&!a._cssModeVirtualInitialSet&&a.params.initialSlide>0?(a._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=i}))):f[e?"scrollLeft":"scrollTop"]=i,t&&requestAnimationFrame((()=>{a.wrapperEl.style.scrollSnapType="",a._immediateVirtual=!1}))}else{if(!a.support.smoothScroll)return(0,r.t)({swiper:a,targetPosition:i,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:i,behavior:"smooth"})}return!0}return a.setTransition(t),a.setTranslate(w),a.updateActiveIndex(o),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,v),0===t?a.transitionEnd(i,v):a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(i,v))}),a.wrapperEl.addEventListener("transitionend",a.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,i,s){if(void 0===e&&(e=0),void 0===i&&(i=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:i}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),i&&o%2==0&&(o+=1));let l=t-e<o;if(i&&(l=l||e<Math.ceil(o/2)),s&&i&&"auto"!==r.params.slidesPerView&&!n&&(l=!1),l){const s=i?e<r.activeIndex?"prev":"next":e-r.activeIndex-1<r.params.slidesPerView?"next":"prev";r.loopFix({direction:s,slideTo:!0,activeSlideIndex:"next"===s?e+1:e-t+1,slideRealIndex:"next"===s?r.realIndex:void 0})}if(n){const e=a*r.params.grid.rows;a=r.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,i,s)})),r},slideNext:function(e,t,i){void 0===t&&(t=!0);const s=this,{enabled:r,params:n,animating:a}=s;if(!r||s.destroyed)return s;void 0===e&&(e=s.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(s.slidesPerViewDynamic("current",!0),1));const l=s.activeIndex<n.slidesPerGroupSkip?1:o,d=s.virtual&&n.virtual.enabled;if(n.loop){if(a&&!d&&n.loopPreventsSliding)return!1;if(s.loopFix({direction:"next"}),s._clientLeft=s.wrapperEl.clientLeft,s.activeIndex===s.slides.length-1&&n.cssMode)return requestAnimationFrame((()=>{s.slideTo(s.activeIndex+l,e,t,i)})),!0}return n.rewind&&s.isEnd?s.slideTo(0,e,t,i):s.slideTo(s.activeIndex+l,e,t,i)},slidePrev:function(e,t,i){void 0===t&&(t=!0);const s=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=s;if(!l||s.destroyed)return s;void 0===e&&(e=s.params.speed);const p=s.virtual&&r.virtual.enabled;if(r.loop){if(d&&!p&&r.loopPreventsSliding)return!1;s.loopFix({direction:"prev"}),s._clientLeft=s.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(o?s.translate:-s.translate),A=n.map((e=>c(e)));let f=n[A.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,i)=>{u>=t&&(e=i)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=s.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-s.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&s.isBeginning){const r=s.params.virtual&&s.params.virtual.enabled&&s.virtual?s.virtual.slides.length-1:s.slides.length-1;return s.slideTo(r,e,t,i)}return r.loop&&0===s.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{s.slideTo(m,e,t,i)})),!0):s.slideTo(m,e,t,i)},slideReset:function(e,t,i){void 0===t&&(t=!0);const s=this;if(!s.destroyed)return void 0===e&&(e=s.params.speed),s.slideTo(s.activeIndex,e,t,i)},slideToClosest:function(e,t,i,s){void 0===t&&(t=!0),void 0===s&&(s=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*s&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*s&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,i)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:i}=e,s="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let n,a=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;n=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?a<e.loopedSlides-s/2||a>e.slides.length-e.loopedSlides+s/2?(e.loopFix(),a=e.getSlideIndex((0,r.e)(i,`${o}[data-swiper-slide-index="${n}"]`)[0]),(0,r.n)((()=>{e.slideTo(a)}))):e.slideTo(a):a>e.slides.length-s?(e.loopFix(),a=e.getSlideIndex((0,r.e)(i,`${o}[data-swiper-slide-index="${n}"]`)[0]),(0,r.n)((()=>{e.slideTo(a)}))):e.slideTo(a)}else e.slideTo(a)}};var b={loopCreate:function(e){const t=this,{params:i,slidesEl:s}=t;if(!i.loop||t.virtual&&t.params.virtual.enabled)return;const n=()=>{(0,r.e)(s,`.${i.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},a=t.grid&&i.grid&&i.grid.rows>1,o=i.slidesPerGroup*(a?i.grid.rows:1),l=t.slides.length%o!=0,d=a&&t.slides.length%i.grid.rows!=0,p=e=>{for(let s=0;s<e;s+=1){const e=t.isElement?(0,r.c)("swiper-slide",[i.slideBlankClass]):(0,r.c)("div",[i.slideClass,i.slideBlankClass]);t.slidesEl.append(e)}};if(l){if(i.loopAddBlankSlides){p(o-t.slides.length%o),t.recalcSlides(),t.updateSlides()}else(0,r.u)("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");n()}else if(d){if(i.loopAddBlankSlides){p(i.grid.rows-t.slides.length%i.grid.rows),t.recalcSlides(),t.updateSlides()}else(0,r.u)("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");n()}else n();t.loopFix({slideRealIndex:e,direction:i.centeredSlides?void 0:"next"})},loopFix:function(e){let{slideRealIndex:t,slideTo:i=!0,direction:s,setTranslate:n,activeSlideIndex:a,byController:o,byMousewheel:l}=void 0===e?{}:e;const d=this;if(!d.params.loop)return;d.emit("beforeLoopFix");const{slides:p,allowSlidePrev:c,allowSlideNext:u,slidesEl:A,params:f}=d,{centeredSlides:m}=f;if(d.allowSlidePrev=!0,d.allowSlideNext=!0,d.virtual&&f.virtual.enabled)return i&&(f.centeredSlides||0!==d.snapIndex?f.centeredSlides&&d.snapIndex<f.slidesPerView?d.slideTo(d.virtual.slides.length+d.snapIndex,0,!1,!0):d.snapIndex===d.snapGrid.length-1&&d.slideTo(d.virtual.slidesBefore,0,!1,!0):d.slideTo(d.virtual.slides.length,0,!1,!0)),d.allowSlidePrev=c,d.allowSlideNext=u,void d.emit("loopFix");let h=f.slidesPerView;"auto"===h?h=d.slidesPerViewDynamic():(h=Math.ceil(parseFloat(f.slidesPerView,10)),m&&h%2==0&&(h+=1));const g=f.slidesPerGroupAuto?h:f.slidesPerGroup;let w=g;w%g!=0&&(w+=g-w%g),w+=f.loopAdditionalSlides,d.loopedSlides=w;const v=d.grid&&f.grid&&f.grid.rows>1;p.length<h+w?(0,r.u)("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):v&&"row"===f.grid.fill&&(0,r.u)("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const C=[],b=[];let y=d.activeIndex;void 0===a?a=d.getSlideIndex(p.filter((e=>e.classList.contains(f.slideActiveClass)))[0]):y=a;const E="next"===s||!s,x="prev"===s||!s;let S=0,T=0;const B=v?Math.ceil(p.length/f.grid.rows):p.length,M=(v?p[a].column:a)+(m&&void 0===n?-h/2+.5:0);if(M<w){S=Math.max(w-M,g);for(let e=0;e<w-M;e+=1){const t=e-Math.floor(e/B)*B;if(v){const e=B-t-1;for(let t=p.length-1;t>=0;t-=1)p[t].column===e&&C.push(t)}else C.push(B-t-1)}}else if(M+h>B-w){T=Math.max(M-(B-2*w),g);for(let e=0;e<T;e+=1){const t=e-Math.floor(e/B)*B;v?p.forEach(((e,i)=>
vendor: 14,386 bytes, line 1
1{e.column===t&&b.push(i)})):b.push(t)}}if(d.__preventObserver__=!0,requestAnimationFrame((()=>{d.__preventObserver__=!1})),x&&C.forEach((e=>{p[e].swiperLoopMoveDOM=!0,A.prepend(p[e]),p[e].swiperLoopMoveDOM=!1})),E&&b.forEach((e=>{p[e].swiperLoopMoveDOM=!0,A.append(p[e]),p[e].swiperLoopMoveDOM=!1})),d.recalcSlides(),"auto"===f.slidesPerView?d.updateSlides():v&&(C.length>0&&x||b.length>0&&E)&&d.slides.forEach(((e,t)=>{d.grid.updateSlide(t,e,d.slides)})),f.watchSlidesProgress&&d.updateSlidesOffset(),i)if(C.length>0&&x){if(void 0===t){const e=d.slidesGrid[y],t=d.slidesGrid[y+S]-e;l?d.setTranslate(d.translate-t):(d.slideTo(y+Math.ceil(S),0,!1,!0),n&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else if(n){const e=v?C.length/f.grid.rows:C.length;d.slideTo(d.activeIndex+e,0,!1,!0),d.touchEventsData.currentTranslate=d.translate}}else if(b.length>0&&E)if(void 0===t){const e=d.slidesGrid[y],t=d.slidesGrid[y-T]-e;l?d.setTranslate(d.translate-t):(d.slideTo(y-T,0,!1,!0),n&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else{const e=v?b.length/f.grid.rows:b.length;d.slideTo(d.activeIndex-e,0,!1,!0)}if(d.allowSlidePrev=c,d.allowSlideNext=u,d.controller&&d.controller.control&&!o){const e={slideRealIndex:t,direction:s,setTranslate:n,activeSlideIndex:a,byController:!0};Array.isArray(d.controller.control)?d.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&i})})):d.controller.control instanceof d.constructor&&d.controller.control.params.loop&&d.controller.control.loopFix({...e,slideTo:d.controller.control.params.slidesPerView===f.slidesPerView&&i})}d.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:i}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const s=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;s[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),s.forEach((e=>{i.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function y(e,t,i){const r=(0,s.a)(),{params:n}=e,a=n.edgeSwipeDetection,o=n.edgeSwipeThreshold;return!a||!(i<=o||i>=r.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function E(e){const t=this,i=(0,s.g)();let n=e;n.originalEvent&&(n=n.originalEvent);const a=t.touchEventsData;if("pointerdown"===n.type){if(null!==a.pointerId&&a.pointerId!==n.pointerId)return;a.pointerId=n.pointerId}else"touchstart"===n.type&&1===n.targetTouches.length&&(a.touchId=n.targetTouches[0].identifier);if("touchstart"===n.type)return void y(t,n,n.targetTouches[0].pageX);const{params:o,touches:l,enabled:d}=t;if(!d)return;if(!o.simulateTouch&&"mouse"===n.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=n.target;if("wrapper"===o.touchEventsTarget&&!(0,r.v)(p,t.wrapperEl))return;if("which"in n&&3===n.which)return;if("button"in n&&n.button>0)return;if(a.isTouched&&a.isMoved)return;const c=!!o.noSwipingClass&&""!==o.noSwipingClass,u=n.composedPath?n.composedPath():n.path;c&&n.target&&n.target.shadowRoot&&u&&(p=u[0]);const A=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,f=!(!n.target||!n.target.shadowRoot);if(o.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(i){if(!i||i===(0,s.g)()||i===(0,s.a)())return null;i.assignedSlot&&(i=i.assignedSlot);const r=i.closest(e);return r||i.getRootNode?r||t(i.getRootNode().host):null}(t)}(A,p):p.closest(A)))return void(t.allowClick=!0);if(o.swipeHandler&&!p.closest(o.swipeHandler))return;l.currentX=n.pageX,l.currentY=n.pageY;const m=l.currentX,h=l.currentY;if(!y(t,n,m))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),l.startX=m,l.startY=h,a.touchStartTime=(0,r.d)(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(a.allowThresholdMove=!1);let g=!0;p.matches(a.focusableElements)&&(g=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),i.activeElement&&i.activeElement.matches(a.focusableElements)&&i.activeElement!==p&&i.activeElement.blur();const w=g&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!w||p.isContentEditable||n.preventDefault(),o.freeMode&&o.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",n)}function x(e){const t=(0,s.g)(),i=this,n=i.touchEventsData,{params:a,touches:o,rtlTranslate:l,enabled:d}=i;if(!d)return;if(!a.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==n.touchId)return;if(c.pointerId!==n.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===n.touchId))[0],!p||p.identifier!==n.touchId)return}else p=c;if(!n.isTouched)return void(n.startMoving&&n.isScrolling&&i.emit("touchMoveOpposite",c));const u=p.pageX,A=p.pageY;if(c.preventedByNestedSwiper)return o.startX=u,void(o.startY=A);if(!i.allowTouchMove)return c.target.matches(n.focusableElements)||(i.allowClick=!1),void(n.isTouched&&(Object.assign(o,{startX:u,startY:A,currentX:u,currentY:A}),n.touchStartTime=(0,r.d)()));if(a.touchReleaseOnEdges&&!a.loop)if(i.isVertical()){if(A<o.startY&&i.translate<=i.maxTranslate()||A>o.startY&&i.translate>=i.minTranslate())return n.isTouched=!1,void(n.isMoved=!1)}else if(u<o.startX&&i.translate<=i.maxTranslate()||u>o.startX&&i.translate>=i.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(n.focusableElements))return n.isMoved=!0,void(i.allowClick=!1);n.allowTouchCallbacks&&i.emit("touchMove",c),o.previousX=o.currentX,o.previousY=o.currentY,o.currentX=u,o.currentY=A;const f=o.currentX-o.startX,m=o.currentY-o.startY;if(i.params.threshold&&Math.sqrt(f**2+m**2)<i.params.threshold)return;if(void 0===n.isScrolling){let e;i.isHorizontal()&&o.currentY===o.startY||i.isVertical()&&o.currentX===o.startX?n.isScrolling=!1:f*f+m*m>=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,n.isScrolling=i.isHorizontal()?e>a.touchAngle:90-e>a.touchAngle)}if(n.isScrolling&&i.emit("touchMoveOpposite",c),void 0===n.startMoving&&(o.currentX===o.startX&&o.currentY===o.startY||(n.startMoving=!0)),n.isScrolling||"touchmove"===c.type&&n.preventTouchMoveFromPointerMove)return void(n.isTouched=!1);if(!n.startMoving)return;i.allowClick=!1,!a.cssMode&&c.cancelable&&c.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&c.stopPropagation();let h=i.isHorizontal()?f:m,g=i.isHorizontal()?o.currentX-o.previousX:o.currentY-o.previousY;a.oneWayMovement&&(h=Math.abs(h)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),o.diff=h,h*=a.touchRatio,l&&(h=-h,g=-g);const w=i.touchesDirection;i.swipeDirection=h>0?"prev":"next",i.touchesDirection=g>0?"prev":"next";const v=i.params.loop&&!a.cssMode,C="next"===i.touchesDirection&&i.allowSlideNext||"prev"===i.touchesDirection&&i.allowSlidePrev;if(!n.isMoved){if(v&&C&&i.loopFix({direction:i.swipeDirection}),n.startTranslate=i.getTranslate(),i.setTransition(0),i.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});i.wrapperEl.dispatchEvent(e)}n.allowMomentumBounce=!1,!a.grabCursor||!0!==i.allowSlideNext&&!0!==i.allowSlidePrev||i.setGrabCursor(!0),i.emit("sliderFirstMove",c)}if((new Date).getTime(),n.isMoved&&n.allowThresholdMove&&w!==i.touchesDirection&&v&&C&&Math.abs(h)>=1)return Object.assign(o,{startX:u,startY:A,currentX:u,currentY:A,startTranslate:n.currentTranslate}),n.loopSwapReset=!0,void(n.startTranslate=n.currentTranslate);i.emit("sliderMove",c),n.isMoved=!0,n.currentTranslate=h+n.startTranslate;let b=!0,y=a.resistanceRatio;if(a.touchReleaseOnEdges&&(y=0),h>0?(v&&C&&n.allowThresholdMove&&n.currentTranslate>(a.centeredSlides?i.minTranslate()-i.slidesSizesGrid[i.activeIndex+1]-("auto"!==a.slidesPerView&&i.slides.length-a.slidesPerView>=2?i.slidesSizesGrid[i.activeIndex+1]+i.params.spaceBetween:0)-i.params.spaceBetween:i.minTranslate())&&i.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),n.currentTranslate>i.minTranslate()&&(b=!1,a.resistance&&(n.currentTranslate=i.minTranslate()-1+(-i.minTranslate()+n.startTranslate+h)**y))):h<0&&(v&&C&&n.allowThresholdMove&&n.currentTranslate<(a.centeredSlides?i.maxTranslate()+i.slidesSizesGrid[i.slidesSizesGrid.length-1]+i.params.spaceBetween+("auto"!==a.slidesPerView&&i.slides.length-a.slidesPerView>=2?i.slidesSizesGrid[i.slidesSizesGrid.length-1]+i.params.spaceBetween:0):i.maxTranslate())&&i.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:i.slides.length-("auto"===a.slidesPerView?i.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),n.currentTranslate<i.maxTranslate()&&(b=!1,a.resistance&&(n.currentTranslate=i.maxTranslate()+1-(i.maxTranslate()-n.startTranslate-h)**y))),b&&(c.preventedByNestedSwiper=!0),!i.allowSlideNext&&"next"===i.swipeDirection&&n.currentTranslate<n.startTranslate&&(n.currentTranslate=n.startTranslate),!i.allowSlidePrev&&"prev"===i.swipeDirection&&n.currentTranslate>n.startTranslate&&(n.currentTranslate=n.startTranslate),i.allowSlidePrev||i.allowSlideNext||(n.currentTranslate=n.startTranslate),a.threshold>0){if(!(Math.abs(h)>a.threshold||n.allowThresholdMove))return void(n.currentTranslate=n.startTranslate);if(!n.allowThresholdMove)return n.allowThresholdMove=!0,o.startX=o.currentX,o.startY=o.currentY,n.currentTranslate=n.startTranslate,void(o.diff=i.isHorizontal()?o.currentX-o.startX:o.currentY-o.startY)}a.followFinger&&!a.cssMode&&((a.freeMode&&a.freeMode.enabled&&i.freeMode||a.watchSlidesProgress)&&(i.updateActiveIndex(),i.updateSlidesClasses()),a.freeMode&&a.freeMode.enabled&&i.freeMode&&i.freeMode.onTouchMove(),i.updateProgress(n.currentTranslate),i.setTranslate(n.currentTranslate))}function S(e){const t=this,i=t.touchEventsData;let s,n=e;n.originalEvent&&(n=n.originalEvent);if("touchend"===n.type||"touchcancel"===n.type){if(s=[...n.changedTouches].filter((e=>e.identifier===i.touchId))[0],!s||s.identifier!==i.touchId)return}else{if(null!==i.touchId)return;if(n.pointerId!==i.pointerId)return;s=n}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(n.type)){if(!(["pointercancel","contextmenu"].includes(n.type)&&(t.browser.isSafari||t.browser.isWebView)))return}i.pointerId=null,i.touchId=null;const{params:a,touches:o,rtlTranslate:l,slidesGrid:d,enabled:p}=t;if(!p)return;if(!a.simulateTouch&&"mouse"===n.pointerType)return;if(i.allowTouchCallbacks&&t.emit("touchEnd",n),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&a.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);a.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=(0,r.d)(),u=c-i.touchStartTime;if(t.allowClick){const e=n.path||n.composedPath&&n.composedPath();t.updateClickedSlide(e&&e[0]||n.target,e),t.emit("tap click",n),u<300&&c-i.lastClickTime<300&&t.emit("doubleTap doubleClick",n)}if(i.lastClickTime=(0,r.d)(),(0,r.n)((()=>{t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===o.diff&&!i.loopSwapReset||i.currentTranslate===i.startTranslate&&!i.loopSwapReset)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);let A;if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,A=a.followFinger?l?t.translate:-t.translate:-i.currentTranslate,a.cssMode)return;if(a.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:A});const f=A>=-t.maxTranslate()&&!t.params.loop;let m=0,h=t.slidesSizesGrid[0];for(let e=0;e<d.length;e+=e<a.slidesPerGroupSkip?1:a.slidesPerGroup){const t=e<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;void 0!==d[e+t]?(f||A>=d[e]&&A<d[e+t])&&(m=e,h=d[e+t]-d[e]):(f||A>=d[e])&&(m=e,h=d[d.length-1]-d[d.length-2])}let g=null,w=null;a.rewind&&(t.isBeginning?w=a.virtual&&a.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const v=(A-d[m])/h,C=m<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;if(u>a.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(v>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+C):t.slideTo(m)),"prev"===t.swipeDirection&&(v>1-a.longSwipesRatio?t.slideTo(m+C):null!==w&&v<0&&Math.abs(v)>a.longSwipesRatio?t.slideTo(w):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(n.target===t.navigation.nextEl||n.target===t.navigation.prevEl)?n.target===t.navigation.nextEl?t.slideTo(m+C):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+C),"prev"===t.swipeDirection&&t.slideTo(null!==w?w:m))}}function T(){const e=this,{params:t,el:i}=e;if(i&&0===i.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:s,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=s,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function B(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function M(){const e=this,{wrapperEl:t,rtlTranslate:i,enabled:s}=e;if(!s)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(i?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function k(e){const t=this;f(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update(
vendor: 5,377 bytes, line 1
1)}function P(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const L=(e,t)=>{const i=(0,s.g)(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;n&&"string"!=typeof n&&(i[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),i[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),i[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),i[d]("touchend",e.onTouchEnd,{passive:!0}),i[d]("pointerup",e.onTouchEnd,{passive:!0}),i[d]("pointercancel",e.onTouchEnd,{passive:!0}),i[d]("touchcancel",e.onTouchEnd,{passive:!0}),i[d]("pointerout",e.onTouchEnd,{passive:!0}),i[d]("pointerleave",e.onTouchEnd,{passive:!0}),i[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[p](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",T,!0):e[p]("observerUpdate",T,!0),n[d]("load",e.onLoad,{capture:!0}))};const I=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var G={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function F(e,t){return function(i){void 0===i&&(i={});const s=Object.keys(i)[0],n=i[s];"object"==typeof n&&null!==n?(!0===e[s]&&(e[s]={enabled:!0}),"navigation"===s&&e[s]&&e[s].enabled&&!e[s].prevEl&&!e[s].nextEl&&(e[s].auto=!0),["pagination","scrollbar"].indexOf(s)>=0&&e[s]&&e[s].enabled&&!e[s].el&&(e[s].auto=!0),s in e&&"enabled"in n?("object"!=typeof e[s]||"enabled"in e[s]||(e[s].enabled=!0),e[s]||(e[s]={enabled:!1}),(0,r.w)(t,i)):(0,r.w)(t,i)):(0,r.w)(t,i)}}const z={eventsEmitter:c,update:g,translate:w,transition:{setTransition:function(e,t){const i=this;i.params.cssMode||(i.wrapperEl.style.transitionDuration=`${e}ms`,i.wrapperEl.style.transitionDelay=0===e?"0ms":""),i.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const i=this,{params:s}=i;s.cssMode||(s.autoHeight&&i.updateAutoHeight(),v({swiper:i,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const i=this,{params:s}=i;i.animating=!1,s.cssMode||(i.setTransition(0),v({swiper:i,runCallbacks:e,direction:t,step:"End"}))}},slide:C,loop:b,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const i="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),i.style.cursor="move",i.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=E.bind(e),e.onTouchMove=x.bind(e),e.onTouchEnd=S.bind(e),e.onDocumentTouchStart=P.bind(e),t.cssMode&&(e.onScroll=M.bind(e)),e.onClick=B.bind(e),e.onLoad=k.bind(e),L(e,"on")},detachEvents:function(){L(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:i,params:s,el:n}=e,a=s.breakpoints;if(!a||a&&0===Object.keys(a).length)return;
vendor: 4,072 bytes, line 1
1const o=e.getBreakpoint(a,e.params.breakpointsBase,e.el);if(!o||e.currentBreakpoint===o)return;const l=(o in a?a[o]:void 0)||e.originalParams,d=I(e,s),p=I(e,l),c=e.params.grabCursor,u=l.grabCursor,A=s.enabled;d&&!p?(n.classList.remove(`${s.containerModifierClass}grid`,`${s.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&p&&(n.classList.add(`${s.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===s.grid.fill)&&n.classList.add(`${s.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!u?e.unsetGrabCursor():!c&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const i=s[t]&&s[t].enabled,r=l[t]&&l[t].enabled;i&&!r&&e[t].disable(),!i&&r&&e[t].enable()}));const f=l.direction&&l.direction!==s.direction,m=s.loop&&(l.slidesPerView!==s.slidesPerView||f),h=s.loop;f&&i&&e.changeDirection(),(0,r.w)(e.params,l);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),A&&!g?e.disable():!A&&g&&e.enable(),e.currentBreakpoint=o,e.emit("_beforeBreakpoint",l),i&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&w?(e.loopCreate(t),e.updateSlides()):h&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,i){if(void 0===t&&(t="window"),!e||"container"===t&&!i)return;let r=!1;const n=(0,s.a)(),a="window"===t?n.innerHeight:i.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<o.length;e+=1){const{point:s,value:a}=o[e];"window"===t?n.matchMedia(`(min-width: ${a}px)`).matches&&(r=s):a<=i.clientWidth&&(r=s)}return r||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:i}=e,{slidesOffsetBefore:s}=i;if(s){const t=e.slides.length-1,i=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*s;e.isLocked=e.size>i}else e.isLocked=1===e.snapGrid.length;!0===i.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===i.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:i,rtl:s,el:r,device:n}=e,a=function(e,t){const i=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((s=>{e[s]&&i.push(t+s)})):"string"==typeof e&&i.push(t+e)})),i}(["initialized",i.direction,{"free-mode":e.params.freeMode&&i.freeMode.enabled},{autoheight:i.autoHeight},{rtl:s},{grid:i.grid&&i.grid.rows>1},{"grid-column":i.grid&&i.grid.rows>1&&"column"===i.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":i.cssMode},{centered:i.cssMode&&i.centeredSlides},{"watch-progress":i.watchSlidesProgress}],i.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},O={};class D{constructor(){let e,t;for(var i=arguments.length,n=new Array(i),a=0;a<i;a++)n[a]=arguments[a];1===n.length&&n[0].constructor&&"Object"===Object.prototype.toString.call(n[0]).slice(8,-1)?t=n[0]:[e,t]=n,t||(t={}),t=(0,r.w)({},t),e&&!t.el&&(t.el=e);const o=(0,s.g)();if(t.el&&"string"==typeof t.el&&o.querySelectorAll(t.el).length>1){const e=[];return o.querySelectorAll(t.el).forEach((i=>{const s=(0,r.w)({},t,{el:i});e.push(new D(s))})),e}const c=this;c.__swiper__=!0,c.support=l(),c.device=d({userAgent:t.userAgent}),c.browser=p(),c.eventsListeners={},c.eventsAnyListeners=[],c.modules=[...c.__modules__],t.modules&&Array.isArray(t.modules)&&c.modules.push(...t.modules);const u={};c.modules.forEach((e=>{e({params:t,swiper:c,extendParams:F(t,u),on:c.on.bind(c),once:c.once.bind(c),off:c.off.bind(c),emit:c.emit.bind(c)})}));const A=(0,r.w)({},G,u);return c.params=(0,r.w)({},A,O,t),c.originalParams=(0,r.w)({},c.params),c.passedParams=(0,r.w)({}
vendor: 4,641 bytes, line 1
1,t),c.params&&c.params.on&&Object.keys(c.params.on).forEach((e=>{c.on(e,c.params.on[e])})),c.params&&c.params.onAny&&c.onAny(c.params.onAny),Object.assign(c,{enabled:c.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return"horizontal"===c.params.direction},isVertical(){return"vertical"===c.params.direction},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:c.params.allowSlideNext,allowSlidePrev:c.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:c.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:c.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),c.emit("_swiper"),c.params.init&&c.init(),c}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:i}=this,s=(0,r.e)(t,`.${i.slideClass}, swiper-slide`),n=(0,r.h)(s[0]);return(0,r.h)(e)-n}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=(0,r.e)(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const i=this;e=Math.min(Math.max(e,0),1);const s=i.minTranslate(),r=(i.maxTranslate()-s)*e+s;i.translateTo(r,void 0===t?0:t),i.updateActiveIndex(),i.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((i=>{const s=e.getSlideClasses(i);t.push({slideEl:i,classNames:s}),e.emit("_slideClass",i,s)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:i,slides:s,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof i.slidesPerView)return i.slidesPerView;if(i.centeredSlides){let e,t=s[o]?Math.ceil(s[o].swiperSlideSize):0;for(let i=o+1;i<s.length;i+=1)s[i]&&!e&&(t+=Math.ceil(s[i].swiperSlideSize),l+=1,t>a&&(e=!0));for(let i=o-1;i>=0;i-=1)s[i]&&!e&&(t+=s[i].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e<s.length;e+=1){(t?r[e]+n[e]-r[o]<a:r[e]-r[o]<a)&&(l+=1)}else for(let e=o-1;e>=0;e-=1){r[o]-r[e]<a&&(l+=1)}return l}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:i}=e;function s(){const t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}let r;if(i.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach((t=>{t.complete&&f(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),i.freeMode&&i.freeMode.enabled&&!i.cssMode)s(),i.autoHeight&&e.updateAutoHeight();else{if(("auto"===i.slidesPerView||i.slidesPerView>1)&&e.isEnd&&!i.centeredSlides){const t=e.virtual&&i.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||s()}i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const i=this,s=i.params.direction;return e||(e="horizontal"===s?"vertical":"horizontal"),e===s||"horizontal"!==e&&"vertical"!==e||(i.el.classList.remove(`${i.params.containerModifierClass}${s}`),i.el.classList.add(`${i.params.containerModifierClass}${e}`),i.emitContainerClasses(),i.params.direction=e,i.slides.forEac
vendor: 4,112 bytes, line 1
1h((t=>{"vertical"===e?t.style.width="":t.style.height=""})),i.emit("changeDirection"),t&&i.update()),i}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let i=e||t.params.el;if("string"==typeof i&&(i=document.querySelector(i)),!i)return!1;i.swiper=t,i.parentNode&&i.parentNode.host&&i.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const s=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let n=(()=>{if(i&&i.shadowRoot&&i.shadowRoot.querySelector){return i.shadowRoot.querySelector(s())}return(0,r.e)(i,s())[0]})();return!n&&t.params.createElements&&(n=(0,r.c)("div",t.params.wrapperClass),i.append(n),(0,r.e)(i,`.${t.params.slideClass}`).forEach((e=>{n.append(e)}))),Object.assign(t,{el:i,wrapperEl:n,slidesEl:t.isElement&&!i.parentNode.host.slideSlots?i.parentNode.host:n,hostEl:t.isElement?i.parentNode.host:i,mounted:!0,rtl:"rtl"===i.dir.toLowerCase()||"rtl"===(0,r.p)(i,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===i.dir.toLowerCase()||"rtl"===(0,r.p)(i,"direction")),wrongRTL:"-webkit-box"===(0,r.p)(n,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const i=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&i.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),i.forEach((e=>{e.complete?f(t,e):e.addEventListener("load",(e=>{f(t,e.target)}))})),h(t),t.initialized=!0,h(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const i=this,{params:s,el:n,wrapperEl:a,slides:o}=i;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),n&&"string"!=typeof n&&n.removeAttribute("style"),a&&a.removeAttribute("style"),o&&o.length&&o.forEach((e=>{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((e=>{i.off(e)})),!1!==e&&(i.el&&"string"!=typeof i.el&&(i.el.swiper=null),(0,r.x)(i)),i.destroyed=!0),null}static extendDefaults(e){(0,r.w)(O,e)}static get extendedDefaults(){return O}static get defaults(){return G}static installModule(e){D.prototype.__modules__||(D.prototype.__modules__=[]);const t=D.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>D.installModule(e))),D):(D.installModule(e),D)}}Object.keys(z).forEach((e=>{Object.keys(z[e]).forEach((t=>{D.prototype[t]=z[e][t]}))})),D.use([function(e){let{swiper:t,on:i,emit:r}=e;const n=(0,s.a)();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(r("beforeResize"),r("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&r("orientationchange")};i("init",(()=>{t.params.resizeObserver&&void 0!==n.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=n.requestAnimationFrame((()=>{const{width:i,height:s}=t;let r=i,n=s;e.forEach((e=>{let{contentBoxSize:i,contentRect:s,target:a}=e;a&&a!==t.el||(r=s?s.width:(i[0]||i).inlineSize,n=s?s.height:(i[0]||i).blockSize)})),r===i&&n===s||l()}))})),a.observe(t.el)):(n.addEventListener("resize",l),n.addEventListener("orientationchange",d))})),i("destroy",(()=>
vendor: 5,041 bytes, lines 1-2
1{o&&n.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),n.removeEventListener("resize",l),n.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:i,on:n,emit:a}=e;const o=[],l=(0,s.a)(),d=function(e,i){void 0===i&&(i={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const i=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(i):l.setTimeout(i,0)}));s.observe(e,{attributes:void 0===i.attributes||i.attributes,childList:t.isElement||(void 0===i.childList||i).childList,characterData:void 0===i.characterData||i.characterData}),o.push(s)};i({observer:!1,observeParents:!1,observeSlideChildren:!1}),n("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=(0,r.a)(t.hostEl);for(let t=0;t<e.length;t+=1)d(e[t])}d(t.hostEl,{childList:t.params.observeSlideChildren}),d(t.wrapperEl,{attributes:!1})}})),n("destroy",(()=>{o.forEach((e=>{e.disconnect()})),o.splice(0,o.length)}))}])}}]); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvYXBwLzcxOC5qcyIsIm1hcHBpbmdzIjoiMk1BR0lBLEVBQVUsQ0FFZEEsT0FBaUIsT0FDakJBLFdBQW9CLEdDQVBDLEdERUEsSUFBSSxJQUFTRCxHQUlYLElBQVFFLE9DTkgsV0FDaEIsSUFBTUMsRUFBZUMsU0FBU0MsY0FBYywwQkFHeENGLElBQ2VBLEVBQWFHLGlCQUFpQixpQkFFbENDLE9BQVMsR0FDaEIsSUFBSUMsRUFBQUEsRUFBT0wsRUFBYyxDQUNyQk0sUUFBUyxDQUFDQyxFQUFBQSxHQUFZQyxFQUFBQSxJQUN0QkMsVUFBVSxFQUNWQyxPQUFRLE9BQ1JDLE1BQU0sRUFDTkMsTUFBTyxJQUNQQyxjQUFlLEVBQ2ZDLGFBQWMsSUFJOUIsRSxxREN0QklDLEUsTUFBMEIsR0FBNEIsS0FFMURBLEVBQXdCQyxLQUFLLENBQUNDLEVBQU9DLEdBQUksd1pBQXlaLEdBQUcsQ0FBQyxRQUFVLEVBQUUsUUFBVSxDQUFDLDJEQUEyRCxNQUFRLEdBQUcsU0FBVyw2R0FBNkcsZUFBaUIsQ0FBQyx5WkFBeVosV0FBYSxNQUVubEMsSyxxRENKSUgsRSxNQUEwQixHQUE0QixLQUUxREEsRUFBd0JDLEtBQUssQ0FBQ0MsRUFBT0MsR0FBSSxndVFBQXF1USxHQUFHLENBQUMsUUFBVSxFQUFFLFFBQVUsQ0FBQyw4Q0FBOEMsTUFBUSxHQUFHLFNBQVcsNDlEQUE0OUQsZUFBaUIsQ0FBQyxvL1BBQW8vUCxXQUFhLE1BRTUxa0IsSyxrQkNDQUQsRUFBT0UsUUFBVSxTQUFVQyxHQUN6QixJQUFJQyxFQUFPLEdBdURYLE9BckRBQSxFQUFLQyxTQUFXLFdBQ2QsT0FBT0MsS0FBS0MsS0FBSSxTQUFVQyxHQUN4QixJQUFJQyxFQUFVTixFQUF1QkssR0FFckMsT0FBSUEsRUFBSyxHQUNBLFVBQVVFLE9BQU9GLEVBQUssR0FBSSxNQUFNRSxPQUFPRCxFQUFTLEtBR2xEQSxDQUNULElBQUdFLEtBQUssR0FDVixFQUlBUCxFQUFLUSxFQUFJLFNBQVV2QixFQUFTd0IsRUFBWUMsR0FDZixpQkFBWnpCLElBRVRBLEVBQVUsQ0FBQyxDQUFDLEtBQU1BLEVBQVMsTUFHN0IsSUFBSTBCLEVBQXlCLENBQUMsRUFFOUIsR0FBSUQsRUFDRixJQUFLLElBQUlGLEVBQUksRUFBR0EsRUFBSU4sS0FBS25CLE9BQVF5QixJQUFLLENBRXBDLElBQUlYLEVBQUtLLEtBQUtNLEdBQUcsR0FFUCxNQUFOWCxJQUNGYyxFQUF1QmQsSUFBTSxFQUVqQyxDQUdGLElBQUssSUFBSWUsRUFBSyxFQUFHQSxFQUFLM0IsRUFBUUYsT0FBUTZCLElBQU0sQ0FDMUMsSUFBSVIsRUFBTyxHQUFHRSxPQUFPckIsRUFBUTJCLElBRXpCRixHQUFVQyxFQUF1QlAsRUFBSyxNQUt0Q0ssSUFDR0wsRUFBSyxHQUdSQSxFQUFLLEdBQUssR0FBR0UsT0FBT0csRUFBWSxTQUFTSCxPQUFPRixFQUFLLElBRnJEQSxFQUFLLEdBQUtLLEdBTWRULEVBQUtMLEtBQUtTLEdBQ1osQ0FDRixFQUVPSixDQUNULEMsa0JDL0RBLFNBQVNhLEVBQWVDLEVBQUtOLEdBQUssT0FVbEMsU0FBeUJNLEdBQU8sR0FBSUMsTUFBTUMsUUFBUUYsR0FBTSxPQUFPQSxDQUFLLENBVjNCRyxDQUFnQkgsSUFRekQsU0FBK0JBLEVBQUtOLEdBQUssSUFBSUksRUFBS0UsSUFBMEIsb0JBQVhJLFFBQTBCSixFQUFJSSxPQUFPQyxXQUFhTCxFQUFJLGVBQWdCLEdBQVUsTUFBTkYsRUFBWSxPQUFRLElBQWtEUSxFQUFJQyxFQUFsREMsRUFBTyxHQUFRQyxHQUFLLEVBQVVDLEdBQUssRUFBbUIsSUFBTSxJQUFLWixFQUFLQSxFQUFHYSxLQUFLWCxLQUFRUyxHQUFNSCxFQUFLUixFQUFHYyxRQUFRQyxRQUFvQkwsRUFBSzNCLEtBQUt5QixFQUFHUSxRQUFZcEIsR0FBS2MsRUFBS3ZDLFNBQVd5QixHQUEzRGUsR0FBSyxHQUFrRSxDQUFFLE1BQU9NLEdBQU9MLEdBQUssRUFBTUgsRUFBS1EsQ0FBSyxDQUFFLFFBQVUsSUFBV04sR0FBc0IsTUFBaEJYLEVBQVcsUUFBV0EsRUFBVyxRQUFLLENBQUUsUUFBVSxHQUFJWSxFQUFJLE1BQU1ILENBQUksQ0FBRSxDQUFFLE9BQU9DLENBQU0sQ0FSbmJRLENBQXNCaEIsRUFBS04sSUFJNUYsU0FBcUN1QixFQUFHQyxHQUFVLElBQUtELEVBQUcsT0FBUSxHQUFpQixpQkFBTkEsRUFBZ0IsT0FBT0UsRUFBa0JGLEVBQUdDLEdBQVMsSUFBSUUsRUFBSUMsT0FBT0MsVUFBVW5DLFNBQVN3QixLQUFLTSxHQUFHTSxNQUFNLEdBQUksR0FBYyxXQUFOSCxHQUFrQkgsRUFBRU8sY0FBYUosRUFBSUgsRUFBRU8sWUFBWUMsTUFBTSxHQUFVLFFBQU5MLEdBQXFCLFFBQU5BLEVBQWEsT0FBT25CLE1BQU15QixLQUFLVCxHQUFJLEdBQVUsY0FBTkcsR0FBcUIsMkNBQTJDTyxLQUFLUCxHQUFJLE9BQU9ELEVBQWtCRixFQUFHQyxFQUFTLENBSjdUVSxDQUE0QjVCLEVBQUtOLElBRW5JLFdBQThCLE1BQU0sSUFBSW1DLFVBQVUsNElBQThJLENBRnZEQyxFQUFvQixDQU03SixTQUFTWCxFQUFrQm5CLEVBQUsrQixJQUFrQixNQUFQQSxHQUFlQSxFQUFNL0IsRUFBSS9CLFVBQVE4RCxFQUFNL0IsRUFBSS9CLFFBQVEsSUFBSyxJQUFJeUIsRUFBSSxFQUFHc0MsRUFBTyxJQUFJL0IsTUFBTThCLEdBQU1yQyxFQUFJcUMsRUFBS3JDLElBQU9zQyxFQUFLdEMsR0FBS00sRUFBSU4sR0FBTSxPQUFPc0MsQ0FBTSxDQU10TGxELEVBQU9FLFFBQVUsU0FBZ0NNLEdBQy9DLElBQUkyQyxFQUFRbEMsRUFBZVQsRUFBTSxHQUM3QkMsRUFBVTBDLEVBQU0sR0FDaEJDLEVBQWFELEVBQU0sR0FFdkIsSUFBS0MsRUFDSCxPQUFPM0MsRUFHVCxHQUFvQixtQkFBVDRDLEtBQXFCLENBRTlCLElBQUlDLEVBQVNELEtBQUtFLFNBQVNDLG1CQUFtQkMsS0FBS0MsVUFBVU4sTUFDekRPLEVBQU8sK0RBQStEakQsT0FBTzRDLEdBQzdFTSxFQUFnQixPQUFPbEQsT0FBT2lELEVBQU0sT0FDcENFLEVBQWFULEVBQVdVLFFBQVF2RCxLQUFJLFNBQVV3RCxHQUNoRCxNQUFPLGlCQUFpQnJELE9BQU8wQyxFQUFXWSxZQUFjLElBQUl0RCxPQUFPcUQsRUFBUSxNQUM3RSxJQUNBLE1BQU8sQ0FBQ3RELEdBQVNDLE9BQU9tRCxHQUFZbkQsT0FBTyxDQUFDa0QsSUFBZ0JqRCxLQUFLLEtBQ25FLENBRUEsTUFBTyxDQUFDRixHQUFTRSxLQUFLLEtBQ3hCLEMsb0RDaENJL0IsRUFBVSx
2DQUVkQSxPQUFpQixPQUNqQkEsV0FBb0IsR0FFUCxJQUFJLElBQVNBLEdBSVgsSUFBUUUsTSxxQkNWdkIsSUFDTW1GLEVBREZDLEVBRUssV0FVTCxZQVRvQixJQUFURCxJQU1UQSxFQUFPRSxRQUFRQyxRQUFVcEYsVUFBWUEsU0FBU3FGLE1BQVFELE9BQU9FLE9BR3hETCxDQUNULEVBR0VNLEVBQVksV0FDZCxJQUFJTixFQUFPLENBQUMsRUFDWixPQUFPLFNBQWtCTyxHQUN2QixRQUE0QixJQUFqQlAsRUFBS08sR0FBeUIsQ0FDdkMsSUFBSUMsRUFBY3pGLFNBQVNDLGNBQWN1RixHQUV6QyxHQUFJSixPQUFPTSxtQkFBcUJELGFBQXVCTCxPQUFPTSxrQkFDNUQsSUFHRUQsRUFBY0EsRUFBWUUsZ0JBQWdCQyxJQUM1QyxDQUFFLE1BQU9DLEdBRVBKLEVBQWMsSUFDaEIsQ0FHRlIsRUFBS08sR0FBVUMsQ0FDakIsQ0FFQSxPQUFPUixFQUFLTyxFQUNkLENBQ0YsQ0F0QmdCLEdBd0JaTSxFQUFjLEdBRWxCLFNBQVNDLEVBQXFCQyxHQUc1QixJQUZBLElBQUlDLEdBQVUsRUFFTHJFLEVBQUksRUFBR0EsRUFBSWtFLEVBQVkzRixPQUFReUIsSUFDdEMsR0FBSWtFLEVBQVlsRSxHQUFHb0UsYUFBZUEsRUFBWSxDQUM1Q0MsRUFBU3JFLEVBQ1QsS0FDRixDQUdGLE9BQU9xRSxDQUNULENBRUEsU0FBU0MsRUFBYTlFLEVBQU14QixHQUkxQixJQUhBLElBQUl1RyxFQUFhLENBQUMsRUFDZEMsRUFBYyxHQUVUeEUsRUFBSSxFQUFHQSxFQUFJUixFQUFLakIsT0FBUXlCLElBQUssQ0FDcEMsSUFBSUosRUFBT0osRUFBS1EsR0FDWlgsRUFBS3JCLEVBQVF5RyxLQUFPN0UsRUFBSyxHQUFLNUIsRUFBUXlHLEtBQU83RSxFQUFLLEdBQ2xEOEUsRUFBUUgsRUFBV2xGLElBQU8sRUFDMUIrRSxFQUFhLEdBQUd0RSxPQUFPVCxFQUFJLEtBQUtTLE9BQU80RSxHQUMzQ0gsRUFBV2xGLEdBQU1xRixFQUFRLEVBQ3pCLElBQUlDLEVBQVFSLEVBQXFCQyxHQUM3QlEsRUFBTSxDQUNSQyxJQUFLakYsRUFBSyxHQUNWa0YsTUFBT2xGLEVBQUssR0FDWm1GLFVBQVduRixFQUFLLEtBR0gsSUFBWCtFLEdBQ0ZULEVBQVlTLEdBQU9LLGFBQ25CZCxFQUFZUyxHQUFPTSxRQUFRTCxJQUUzQlYsRUFBWS9FLEtBQUssQ0FDZmlGLFdBQVlBLEVBQ1phLFFBQVNDLEVBQVNOLEVBQUs1RyxHQUN2QmdILFdBQVksSUFJaEJSLEVBQVlyRixLQUFLaUYsRUFDbkIsQ0FFQSxPQUFPSSxDQUNULENBRUEsU0FBU1csRUFBbUJuSCxHQUMxQixJQUFJb0gsRUFBUWhILFNBQVNpSCxjQUFjLFNBQy9CQyxFQUFhdEgsRUFBUXNILFlBQWMsQ0FBQyxFQUV4QyxRQUFnQyxJQUFyQkEsRUFBV0MsTUFBdUIsQ0FDM0MsSUFBSUEsRUFBbUQsS0FFbkRBLElBQ0ZELEVBQVdDLE1BQVFBLEVBRXZCLENBTUEsR0FKQTVELE9BQU82RCxLQUFLRixHQUFZRyxTQUFRLFNBQVVDLEdBQ3hDTixFQUFNTyxhQUFhRCxFQUFLSixFQUFXSSxHQUNyQyxJQUU4QixtQkFBbkIxSCxFQUFRNEgsT0FDakI1SCxFQUFRNEgsT0FBT1IsT0FDVixDQUNMLElBQUl4QixFQUFTRCxFQUFVM0YsRUFBUTRILFFBQVUsUUFFekMsSUFBS2hDLEVBQ0gsTUFBTSxJQUFJaUMsTUFBTSwyR0FHbEJqQyxFQUFPa0MsWUFBWVYsRUFDckIsQ0FFQSxPQUFPQSxDQUNULENBYUEsSUFDTVcsRUFERkMsR0FDRUQsRUFBWSxHQUNULFNBQWlCcEIsRUFBT3NCLEdBRTdCLE9BREFGLEVBQVVwQixHQUFTc0IsRUFDWkYsRUFBVUcsT0FBTzNDLFNBQVN4RCxLQUFLLEtBQ3hDLEdBR0YsU0FBU29HLEVBQW9CZixFQUFPVCxFQUFPeUIsRUFBUXhCLEdBQ2pELElBQUlDLEVBQU11QixFQUFTLEdBQUt4QixFQUFJRSxNQUFRLFVBQVVoRixPQUFPOEUsRUFBSUUsTUFBTyxNQUFNaEYsT0FBTzhFLEVBQUlDLElBQUssS0FBT0QsRUFBSUMsSUFJakcsR0FBSU8sRUFBTWlCLFdBQ1JqQixFQUFNaUIsV0FBV0MsUUFBVU4sRUFBWXJCLEVBQU9FLE9BQ3pDLENBQ0wsSUFBSTBCLEVBQVVuSSxTQUFTb0ksZUFBZTNCLEdBQ2xDNEIsRUFBYXJCLEVBQU1xQixXQUVuQkEsRUFBVzlCLElBQ2JTLEVBQU1zQixZQUFZRCxFQUFXOUIsSUFHM0I4QixFQUFXbEksT0FDYjZHLEVBQU11QixhQUFhSixFQUFTRSxFQUFXOUIsSUFFdkNTLEVBQU1VLFlBQVlTLEVBRXRCLENBQ0YsQ0FFQSxTQUFTSyxFQUFXeEIsRUFBT3BILEVBQVM0RyxHQUNsQyxJQUFJQyxFQUFNRCxFQUFJQyxJQUNWQyxFQUFRRixFQUFJRSxNQUNaQyxFQUFZSCxFQUFJRyxVQWVwQixHQWJJRCxFQUNGTSxFQUFNTyxhQUFhLFFBQVNiLEdBRTVCTSxFQUFNeUIsZ0JBQWdCLFNBR3BCOUIsR0FBNkIsb0JBQVR0QyxPQUN0Qm9DLEdBQU8sdURBQXVEL0UsT0FBTzJDLEtBQUtFLFNBQVNDLG1CQUFtQkMsS0FBS0MsVUFBVWlDLE1BQWUsUUFNbElLLEVBQU1pQixXQUNSakIsRUFBTWlCLFdBQVdDLFFBQVV6QixNQUN0QixDQUNMLEtB
2QU9PLEVBQU0wQixZQUNYMUIsRUFBTXNCLFlBQVl0QixFQUFNMEIsWUFHMUIxQixFQUFNVSxZQUFZMUgsU0FBU29JLGVBQWUzQixHQUM1QyxDQUNGLENBRUEsSUFBSWtDLEVBQVksS0FDWkMsRUFBbUIsRUFFdkIsU0FBUzlCLEVBQVNOLEVBQUs1RyxHQUNyQixJQUFJb0gsRUFDQTZCLEVBQ0FiLEVBRUosR0FBSXBJLEVBQVErSSxVQUFXLENBQ3JCLElBQUlHLEVBQWFGLElBQ2pCNUIsRUFBUTJCLElBQWNBLEVBQVk1QixFQUFtQm5ILElBQ3JEaUosRUFBU2QsRUFBb0JnQixLQUFLLEtBQU0vQixFQUFPOEIsR0FBWSxHQUMzRGQsRUFBU0QsRUFBb0JnQixLQUFLLEtBQU0vQixFQUFPOEIsR0FBWSxFQUM3RCxNQUNFOUIsRUFBUUQsRUFBbUJuSCxHQUMzQmlKLEVBQVNMLEVBQVdPLEtBQUssS0FBTS9CLEVBQU9wSCxHQUV0Q29JLEVBQVMsWUF4RmIsU0FBNEJoQixHQUUxQixHQUF5QixPQUFyQkEsRUFBTWdDLFdBQ1IsT0FBTyxFQUdUaEMsRUFBTWdDLFdBQVdWLFlBQVl0QixFQUMvQixDQWtGTWlDLENBQW1CakMsRUFDckIsRUFJRixPQURBNkIsRUFBT3JDLEdBQ0EsU0FBcUIwQyxHQUMxQixHQUFJQSxFQUFRLENBQ1YsR0FBSUEsRUFBT3pDLE1BQVFELEVBQUlDLEtBQU95QyxFQUFPeEMsUUFBVUYsRUFBSUUsT0FBU3dDLEVBQU92QyxZQUFjSCxFQUFJRyxVQUNuRixPQUdGa0MsRUFBT3JDLEVBQU0wQyxFQUNmLE1BQ0VsQixHQUVKLENBQ0YsQ0FFQWhILEVBQU9FLFFBQVUsU0FBVUUsRUFBTXhCLElBQy9CQSxFQUFVQSxHQUFXLENBQUMsR0FHVCtJLFdBQTBDLGtCQUF0Qi9JLEVBQVErSSxZQUN2Qy9JLEVBQVErSSxVQUFZekQsS0FJdEIsSUFBSWlFLEVBQWtCakQsRUFEdEI5RSxFQUFPQSxHQUFRLEdBQzBCeEIsR0FDekMsT0FBTyxTQUFnQndKLEdBR3JCLEdBRkFBLEVBQVVBLEdBQVcsR0FFMkIsbUJBQTVDN0YsT0FBT0MsVUFBVW5DLFNBQVN3QixLQUFLdUcsR0FBbkMsQ0FJQSxJQUFLLElBQUl4SCxFQUFJLEVBQUdBLEVBQUl1SCxFQUFnQmhKLE9BQVF5QixJQUFLLENBQy9DLElBQ0kyRSxFQUFRUixFQURLb0QsRUFBZ0J2SCxJQUVqQ2tFLEVBQVlTLEdBQU9LLFlBQ3JCLENBSUEsSUFGQSxJQUFJeUMsRUFBcUJuRCxFQUFha0QsRUFBU3hKLEdBRXRDb0MsRUFBSyxFQUFHQSxFQUFLbUgsRUFBZ0JoSixPQUFRNkIsSUFBTSxDQUNsRCxJQUVJc0gsRUFBU3ZELEVBRktvRCxFQUFnQm5ILElBSUssSUFBbkM4RCxFQUFZd0QsR0FBUTFDLGFBQ3RCZCxFQUFZd0QsR0FBUXpDLFVBRXBCZixFQUFZeUQsT0FBT0QsRUFBUSxHQUUvQixDQUVBSCxFQUFrQkUsQ0F0QmxCLENBdUJGLENBQ0YsQyxvSkMxUUEsU0FBUyxFQUEwQkcsRUFBUUMsRUFBZ0JDLEVBQVFDLEdBZWpFLE9BZElILEVBQU9FLE9BQU9FLGdCQUNoQnJHLE9BQU82RCxLQUFLdUMsR0FBWXRDLFNBQVFDLElBQzlCLElBQUtvQyxFQUFPcEMsS0FBd0IsSUFBaEJvQyxFQUFPRyxLQUFlLENBQ3hDLElBQUlDLEdBQVUsSUFBQWpFLEdBQWdCMkQsRUFBT08sR0FBSSxJQUFJSixFQUFXckMsTUFBUSxHQUMzRHdDLElBQ0hBLEdBQVUsSUFBQUUsR0FBYyxNQUFPTCxFQUFXckMsSUFDMUN3QyxFQUFRRyxVQUFZTixFQUFXckMsR0FDL0JrQyxFQUFPTyxHQUFHRyxPQUFPSixJQUVuQkosRUFBT3BDLEdBQU93QyxFQUNkTCxFQUFlbkMsR0FBT3dDLENBQ3hCLEtBR0dKLENBQ1QsQ0NmQSxTQUFTUyxFQUFXQyxHQUNsQixJQUFJLE9BQ0ZaLEVBQU0sYUFDTmEsRUFBWSxHQUNaQyxFQUFFLEtBQ0ZDLEdBQ0VILEVBZ0JKLFNBQVNJLEVBQU1ULEdBQ2IsSUFBSVUsRUFDSixPQUFJVixHQUFvQixpQkFBUEEsR0FBbUJQLEVBQU9rQixZQUN6Q0QsRUFBTWpCLEVBQU9PLEdBQUc5SixjQUFjOEosR0FDMUJVLEdBQVlBLEdBRWRWLElBQ2dCLGlCQUFQQSxJQUFpQlUsRUFBTSxJQUFJekssU0FBU0UsaUJBQWlCNkosS0FDNURQLEVBQU9FLE9BQU9pQixtQkFBbUMsaUJBQVBaLEdBQW1CVSxHQUFPQSxFQUFJdEssT0FBUyxHQUErQyxJQUExQ3FKLEVBQU9PLEdBQUc3SixpQkFBaUI2SixHQUFJNUosT0FDdkhzSyxFQUFNakIsRUFBT08sR0FBRzlKLGNBQWM4SixHQUNyQlUsR0FBc0IsSUFBZkEsRUFBSXRLLFNBQ3BCc0ssRUFBTUEsRUFBSSxLQUdWVixJQUFPVSxFQUFZVixFQUVoQlUsRUFDVCxDQUNBLFNBQVNHLEVBQVNiLEVBQUljLEdBQ3BCLE1BQU1uQixFQUFTRixFQUFPRSxPQUFPb0IsWUFDN0JmLEdBQUssSUFBQWdCLEdBQWtCaEIsSUFDcEIxQyxTQUFRMkQsSUFDTEEsSUFDRkEsRUFBTUMsVUFBVUosRUFBVyxNQUFRLGFBQWFuQixFQUFPd0IsY0FBY0MsTUFBTSxNQUNyRCxXQUFsQkgsRUFBTUksVUFBc0JKLEVBQU1ILFNBQVdBLEdBQzdDckIsRUFBT0UsT0FBTzJCLGVBQWlCN0IsRUFBTzhCLFNBQ3hDTixFQUFNQyxVQUFVekIsRUFBTytCLFNBQVcsTUFBUSxVQUFVN0IsRUFBTzhCLFdBRS9ELEdBRUosQ0FDQSxTQUFTM0MsSUFFUCxNQUFNLE9BQ0o0QyxFQUFNLE9BQ05DLEdBQ0VsQyxFQUFPc0IsV0FDWCxHQUFJdEIsRUFBT0UsT0FBT2hKLEtBR2hCLE9BRkFrSyxFQUFTYyxHQUFRLFFBQ2pCZCxFQUFTYSxHQUFRLEdBR25CYixFQUFTYyxFQUFRbEMsRUFBT21DLGNBQWdCbkMsRUFBT0UsT0FBT2tDLFFBQ3REaEIsRUFBU2EsRUFBUWpDLEVBQU9xQyxRQUFVckMsRUFBT0UsT0FBT2tDLE9BQ2xELENBQ0EsU0FBU0UsRUFBWWpHLEdBQ25CQSxFQUFFa0csbUJBQ0V2QyxFQUFPbUMsYUFBZ0JuQyxFQUFPRSxPQUFPaEosTUFBUzhJLEVBQU9FLE9BQU9rQyxVQUNoRXBDLEVBQU93QyxZQUNQekIsRUFBSyxrQkFDUCxDQUNBLFNBQVMwQixFQUFZcEcsR0FDbkJBLEVBQUVrRyxtQkFDRXZDLEVBQU9xQyxPQUFVckMsRUFBT0UsT0FBT2hKLE1BQVM4SSxFQUFPRSxPQUFPa0MsVUFDMURwQyxFQUFPMEMsWUFDUDNCLEVBQUssa0JBQ1AsQ0FDQSxTQUFTMUssSUFDUCxNQUFNNkosRUFBU0YsRUFBT0UsT0FBT29CLFdBSzdCLEdBSkF0QixFQUFPRSxPQUFPb0IsV0FBYSxFQUEwQnRCLEVBQVFBLEVBQU9DLGVBQWVxQixXQUFZdEIsRUFBT0UsT0FBT29CLFdBQVksQ0FDdkhXLE9BQVEscUJBQ1JDLE9BQVEsd0JBRUpoQyxFQUFPK0IsU0FBVS9CLEVBQU9nQyxPQUFTLE9BQ3ZDLElBQUlELEVBQVNqQixFQUFNZCxFQUFPK0IsUUFDdEJDLEVBQVNsQixFQUFNZCxFQUFPZ0MsUUFDMUJuSSxPQUFPNEksT0FBTzNDLEVBQU9zQixXQUFZLENBQy9CVyxTQUNBQyxXQUVGRCxHQU
2FTLElBQUFWLEdBQWtCVSxHQUMzQkMsR0FBUyxJQUFBWCxHQUFrQlcsR0FDM0IsTUFBTVUsRUFBYSxDQUFDckMsRUFBSXNDLEtBQ2xCdEMsR0FDRkEsRUFBR3VDLGlCQUFpQixRQUFpQixTQUFSRCxFQUFpQkosRUFBY0gsSUFFekR0QyxFQUFPOEIsU0FBV3ZCLEdBQ3JCQSxFQUFHa0IsVUFBVXNCLE9BQU83QyxFQUFPOEIsVUFBVUwsTUFBTSxLQUM3QyxFQUVGTSxFQUFPcEUsU0FBUTBDLEdBQU1xQyxFQUFXckMsRUFBSSxVQUNwQzJCLEVBQU9yRSxTQUFRMEMsR0FBTXFDLEVBQVdyQyxFQUFJLFNBQ3RDLENBQ0EsU0FBU3lDLElBQ1AsSUFBSSxPQUNGZixFQUFNLE9BQ05DLEdBQ0VsQyxFQUFPc0IsV0FDWFcsR0FBUyxJQUFBVixHQUFrQlUsR0FDM0JDLEdBQVMsSUFBQVgsR0FBa0JXLEdBQzNCLE1BQU1lLEVBQWdCLENBQUMxQyxFQUFJc0MsS0FDekJ0QyxFQUFHMkMsb0JBQW9CLFFBQWlCLFNBQVJMLEVBQWlCSixFQUFjSCxHQUMvRC9CLEVBQUdrQixVQUFVakQsVUFBVXdCLEVBQU9FLE9BQU9vQixXQUFXSSxjQUFjQyxNQUFNLEtBQUssRUFFM0VNLEVBQU9wRSxTQUFRMEMsR0FBTTBDLEVBQWMxQyxFQUFJLFVBQ3ZDMkIsRUFBT3JFLFNBQVEwQyxHQUFNMEMsRUFBYzFDLEVBQUksU0FDekMsQ0EvR0FNLEVBQWEsQ0FDWFMsV0FBWSxDQUNWVyxPQUFRLEtBQ1JDLE9BQVEsS0FDUmlCLGFBQWEsRUFDYnpCLGNBQWUseUJBQ2YwQixZQUFhLHVCQUNicEIsVUFBVyxxQkFDWHFCLHdCQUF5QixnQ0FHN0JyRCxFQUFPc0IsV0FBYSxDQUNsQlcsT0FBUSxLQUNSQyxPQUFRLE1BbUdWcEIsRUFBRyxRQUFRLE1BQ2dDLElBQXJDZCxFQUFPRSxPQUFPb0IsV0FBV1EsUUFFM0J3QixLQUVBak4sSUFDQWdKLElBQ0YsSUFFRnlCLEVBQUcsK0JBQStCLEtBQ2hDekIsR0FBUSxJQUVWeUIsRUFBRyxXQUFXLEtBQ1prQyxHQUFTLElBRVhsQyxFQUFHLGtCQUFrQixLQUNuQixJQUFJLE9BQ0ZtQixFQUFNLE9BQ05DLEdBQ0VsQyxFQUFPc0IsV0FDWFcsR0FBUyxJQUFBVixHQUFrQlUsR0FDM0JDLEdBQVMsSUFBQVgsR0FBa0JXLEdBQ3ZCbEMsRUFBTzhCLFFBQ1R6QyxJQUdGLElBQUk0QyxLQUFXQyxHQUFRNUQsUUFBT2lDLEtBQVFBLElBQUkxQyxTQUFRMEMsR0FBTUEsRUFBR2tCLFVBQVVzQixJQUFJL0MsRUFBT0UsT0FBT29CLFdBQVdVLFlBQVcsSUFFL0dsQixFQUFHLFNBQVMsQ0FBQzlILEVBQUlxRCxLQUNmLElBQUksT0FDRjRGLEVBQU0sT0FDTkMsR0FDRWxDLEVBQU9zQixXQUNYVyxHQUFTLElBQUFWLEdBQWtCVSxHQUMzQkMsR0FBUyxJQUFBWCxHQUFrQlcsR0FDM0IsTUFBTXFCLEVBQVdsSCxFQUFFTCxPQUNuQixJQUFJd0gsRUFBaUJ0QixFQUFPdUIsU0FBU0YsSUFBYXRCLEVBQU93QixTQUFTRixHQUNsRSxHQUFJdkQsRUFBT2tCLFlBQWNzQyxFQUFnQixDQUN2QyxNQUFNRSxFQUFPckgsRUFBRXFILE1BQVFySCxFQUFFc0gsY0FBZ0J0SCxFQUFFc0gsZUFDdkNELElBQ0ZGLEVBQWlCRSxFQUFLRSxNQUFLQyxHQUFVNUIsRUFBT3dCLFNBQVNJLElBQVczQixFQUFPdUIsU0FBU0ksS0FFcEYsQ0FDQSxHQUFJN0QsRUFBT0UsT0FBT29CLFdBQVc2QixjQUFnQkssRUFBZ0IsQ0FDM0QsR0FBSXhELEVBQU84RCxZQUFjOUQsRUFBT0UsT0FBTzRELFlBQWM5RCxFQUFPRSxPQUFPNEQsV0FBV0MsWUFBYy9ELEVBQU84RCxXQUFXdkQsS0FBT2dELEdBQVl2RCxFQUFPOEQsV0FBV3ZELEdBQUd5RCxTQUFTVCxJQUFZLE9BQzNLLElBQUlVLEVBQ0FoQyxFQUFPdEwsT0FDVHNOLEVBQVdoQyxFQUFPLEdBQUdSLFVBQVV1QyxTQUFTaEUsRUFBT0UsT0FBT29CLFdBQVc4QixhQUN4RGxCLEVBQU92TCxTQUNoQnNOLEVBQVcvQixFQUFPLEdBQUdULFVBQVV1QyxTQUFTaEUsRUFBT0UsT0FBT29CLFdBQVc4QixjQUdqRXJDLEdBRGUsSUFBYmtELEVBQ0csaUJBRUEsa0JBRVAsSUFBSWhDLEtBQVdDLEdBQVE1RCxRQUFPaUMsS0FBUUEsSUFBSTFDLFNBQVEwQyxHQUFNQSxFQUFHa0IsVUFBVXlDLE9BQU9sRSxFQUFPRSxPQUFPb0IsV0FBVzhCLGNBQ3ZHLEtBRUYsTUFLTUUsRUFBVSxLQUNkdEQsRUFBT08sR0FBR2tCLFVBQVVzQixPQUFPL0MsRUFBT0UsT0FBT29CLFdBQVcrQix3QkFBd0IxQixNQUFNLE1BQ2xGcUIsR0FBUyxFQUVYakosT0FBTzRJLE9BQU8zQyxFQUFPc0IsV0FBWSxDQUMvQjZDLE9BVmEsS0FDYm5FLEVBQU9PLEdBQUdrQixVQUFVakQsVUFBVXdCLEVBQU9FLE9BQU9vQixXQUFXK0Isd0JBQXdCMUIsTUFBTSxNQUNyRnRMLElBQ0FnSixHQUFRLEVBUVJpRSxVQUNBakUsU0FDQWhKLE9BQ0EyTSxXQUVKLENDck1BLFNBQVMsRUFBa0JvQixHQUl6QixZQUhnQixJQUFaQSxJQUNGQSxFQUFVLElBRUwsSUFBSUEsRUFBUUMsT0FBT0MsUUFBUSxlQUFnQixRQUNqREEsUUFBUSxLQUFNLE1BQ2pCLENDRkEsU0FBU0MsRUFBVzNELEdBQ2xCLElBQUksT0FDRlosRUFBTSxhQUNOYSxFQUFZLEdBQ1pDLEVBQUUsS0FDRkMsR0FDRUgsRUFDSixNQUFNNEQsRUFBTSxvQkFxQ1osSUFBSUMsRUFwQ0o1RCxFQUFhLENBQ1hpRCxXQUFZLENBQ1Z2RCxHQUFJLEtBQ0ptRSxjQUFlLE9BQ2ZYLFdBQVcsRUFDWFosYUFBYSxFQUNid0IsYUFBYyxLQUNkQyxrQkFBbUIsS0FDbkJDLGVBQWdCLEtBQ2hCQyxhQUFjLEtBQ2RDLHFCQUFxQixFQUNyQkMsS0FBTSxVQUVOQyxnQkFBZ0IsRUFDaEJDLG1CQUFvQixFQUNwQkMsc0JBQXVCQyxHQUFVQSxFQUNqQ0Msb0JBQXFCRCxHQUFVQSxFQUMvQkUsWUFBYSxHQUFHZCxXQUNoQmUsa0JBQW1CLEdBQUdmLGtCQUN0QmdCLGNBQWUsR0FBR2hCLEtBQ2xCaUIsYUFBYyxHQUFHakIsWUFDakJrQixXQUFZLEdBQUdsQixVQUNmcEIsWUFBYSxHQUFHb0IsV0FDaEJtQixxQkFBc0IsR0FBR25CLHFCQUN6Qm9CLHlCQUEwQixHQUFHcEIseUJBQzdCcUIsZUFBZ0IsR0FBR3JCLGNBQ25CeEMsVUFBVyxHQUFHd0MsU0FDZHNCLGdCQUFpQixHQUFHdEIsZUFDcEJ1QixjQUFlLEdBQUd2QixhQUNsQndCLHdCQUF5QixHQUFHeEIsZ0JBR2hDeEUsRUFBTzhELFdBQWEsQ0FDbEJ2RCxHQUFJLEtBQ0owRixRQUFTLElBR1gsSUFBSUMsRUFBcUIsRUFDekIsU0FBU0MsSUFDUCxPQUFRbkcsRUFBT0UsT0FBTzRELFdBQVd2RCxLQUFPUCxFQUFPOEQsV0FBV3ZELElBQU01SCxNQUFNQyxRQUFRb0gsRUFBTzhELFdBQVd2RCxLQUF1QyxJQUF
2oQ1AsRUFBTzhELFdBQVd2RCxHQUFHNUosTUFDOUgsQ0FDQSxTQUFTeVAsRUFBZUMsRUFBVUMsR0FDaEMsTUFBTSxrQkFDSmYsR0FDRXZGLEVBQU9FLE9BQU80RCxXQUNidUMsSUFDTEEsRUFBV0EsR0FBeUIsU0FBYkMsRUFBc0IsV0FBYSxRQUF0QyxxQkFFbEJELEVBQVM1RSxVQUFVc0IsSUFBSSxHQUFHd0MsS0FBcUJlLE1BQy9DRCxFQUFXQSxHQUF5QixTQUFiQyxFQUFzQixXQUFhLFFBQXRDLG9CQUVsQkQsRUFBUzVFLFVBQVVzQixJQUFJLEdBQUd3QyxLQUFxQmUsS0FBWUEsS0FHakUsQ0FXQSxTQUFTQyxFQUFjbEssR0FDckIsTUFBTWdLLEVBQVdoSyxFQUFFTCxPQUFPd0ssUUFBUSxFQUFrQnhHLEVBQU9FLE9BQU80RCxXQUFXd0IsY0FDN0UsSUFBS2UsRUFDSCxPQUVGaEssRUFBRWtHLGlCQUNGLE1BQU14RixHQUFRLE9BQWFzSixHQUFZckcsRUFBT0UsT0FBT3VHLGVBQ3JELEdBQUl6RyxFQUFPRSxPQUFPaEosS0FBTSxDQUN0QixHQUFJOEksRUFBTzBHLFlBQWMzSixFQUFPLE9BQ2hDLE1BQU00SixHQW5CZ0JDLEVBbUJpQjVHLEVBQU8wRyxVQW5CYkcsRUFtQndCOUosRUFuQmJwRyxFQW1Cb0JxSixFQUFPOEcsT0FBT25RLFFBakJoRmtRLEdBQXdCbFEsSUFDTSxHQUY5QmlRLEdBQXdCalEsR0FHZixPQUNFa1EsSUFBY0QsRUFBWSxFQUM1QixnQkFERixHQWVpQixTQUFsQkQsRUFDRjNHLEVBQU8wQyxZQUNvQixhQUFsQmlFLEVBQ1QzRyxFQUFPd0MsWUFFUHhDLEVBQU8rRyxZQUFZaEssRUFFdkIsTUFDRWlELEVBQU9nSCxRQUFRakssR0E1Qm5CLElBQTBCNkosRUFBV0MsRUFBV2xRLENBOEJoRCxDQUNBLFNBQVMwSSxJQUVQLE1BQU00SCxFQUFNakgsRUFBT2lILElBQ2IvRyxFQUFTRixFQUFPRSxPQUFPNEQsV0FDN0IsR0FBSXFDLElBQXdCLE9BQzVCLElBR0llLEVBQ0FDLEVBSkE1RyxFQUFLUCxFQUFPOEQsV0FBV3ZELEdBQzNCQSxHQUFLLElBQUFnQixHQUFrQmhCLEdBSXZCLE1BQU02RyxFQUFlcEgsRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBQVU5QixFQUFPcUgsUUFBUVAsT0FBT25RLE9BQVNxSixFQUFPOEcsT0FBT25RLE9BQzlHMlEsRUFBUXRILEVBQU9FLE9BQU9oSixLQUFPcVEsS0FBS0MsS0FBS0osRUFBZXBILEVBQU9FLE9BQU91RyxnQkFBa0J6RyxFQUFPeUgsU0FBUzlRLE9BWTVHLEdBWElxSixFQUFPRSxPQUFPaEosTUFDaEJpUSxFQUFnQm5ILEVBQU8wSCxtQkFBcUIsRUFDNUNSLEVBQVVsSCxFQUFPRSxPQUFPdUcsZUFBaUIsRUFBSWMsS0FBS0ksTUFBTTNILEVBQU8wRyxVQUFZMUcsRUFBT0UsT0FBT3VHLGdCQUFrQnpHLEVBQU8wRyxnQkFDN0UsSUFBckIxRyxFQUFPNEgsV0FDdkJWLEVBQVVsSCxFQUFPNEgsVUFDakJULEVBQWdCbkgsRUFBTzZILG9CQUV2QlYsRUFBZ0JuSCxFQUFPbUgsZUFBaUIsRUFDeENELEVBQVVsSCxFQUFPOEgsYUFBZSxHQUdkLFlBQWhCNUgsRUFBTzhFLE1BQXNCaEYsRUFBTzhELFdBQVdtQyxTQUFXakcsRUFBTzhELFdBQVdtQyxRQUFRdFAsT0FBUyxFQUFHLENBQ2xHLE1BQU1zUCxFQUFVakcsRUFBTzhELFdBQVdtQyxRQUNsQyxJQUFJOEIsRUFDQUMsRUFDQUMsRUFzQkosR0FyQkkvSCxFQUFPK0UsaUJBQ1RSLEdBQWEsT0FBaUJ3QixFQUFRLEdBQUlqRyxFQUFPa0ksZUFBaUIsUUFBVSxVQUFVLEdBQ3RGM0gsRUFBRzFDLFNBQVEyRCxJQUNUQSxFQUFNaEUsTUFBTXdDLEVBQU9rSSxlQUFpQixRQUFVLFVBQWV6RCxHQUFjdkUsRUFBT2dGLG1CQUFxQixHQUE3QyxJQUFtRCxJQUUzR2hGLEVBQU9nRixtQkFBcUIsUUFBdUJpRCxJQUFsQmhCLElBQ25DakIsR0FBc0JnQixHQUFXQyxHQUFpQixHQUM5Q2pCLEVBQXFCaEcsRUFBT2dGLG1CQUFxQixFQUNuRGdCLEVBQXFCaEcsRUFBT2dGLG1CQUFxQixFQUN4Q2dCLEVBQXFCLElBQzlCQSxFQUFxQixJQUd6QjZCLEVBQWFSLEtBQUthLElBQUlsQixFQUFVaEIsRUFBb0IsR0FDcEQ4QixFQUFZRCxHQUFjUixLQUFLYyxJQUFJcEMsRUFBUXRQLE9BQVF1SixFQUFPZ0Ysb0JBQXNCLEdBQ2hGK0MsR0FBWUQsRUFBWUQsR0FBYyxHQUV4QzlCLEVBQVFwSSxTQUFRd0ksSUFDZCxNQUFNaUMsRUFBa0IsSUFBSSxDQUFDLEdBQUksUUFBUyxhQUFjLFFBQVMsYUFBYyxTQUFTdlEsS0FBSXdRLEdBQVUsR0FBR3JJLEVBQU9xRixvQkFBb0JnRCxPQUFXeFEsS0FBSXlRLEdBQWtCLGlCQUFOQSxHQUFrQkEsRUFBRS9FLFNBQVMsS0FBTytFLEVBQUU3RyxNQUFNLEtBQU82RyxJQUFHQyxPQUNyTnBDLEVBQVM1RSxVQUFVakQsVUFBVThKLEVBQWdCLElBRTNDL0gsRUFBRzVKLE9BQVMsRUFDZHNQLEVBQVFwSSxTQUFRNkssSUFDZCxNQUFNQyxHQUFjLE9BQWFELEdBQzdCQyxJQUFnQnpCLEVBQ2xCd0IsRUFBT2pILFVBQVVzQixPQUFPN0MsRUFBT3FGLGtCQUFrQjVELE1BQU0sTUFDOUMzQixFQUFPa0IsV0FDaEJ3SCxFQUFPM0ssYUFBYSxPQUFRLFVBRTFCbUMsRUFBTytFLGlCQUNMMEQsR0FBZVosR0FBY1ksR0FBZVgsR0FDOUNVLEVBQU9qSCxVQUFVc0IsT0FBTyxHQUFHN0MsRUFBT3FGLHlCQUF5QjVELE1BQU0sTUFFL0RnSCxJQUFnQlosR0FDbEIzQixFQUFlc0MsRUFBUSxRQUVyQkMsSUFBZ0JYLEdBQ2xCNUIsRUFBZXNDLEVBQVEsUUFFM0IsUUFFRyxDQUNMLE1BQU1BLEVBQVN6QyxFQUFRaUIsR0FTdkIsR0FSSXdCLEdBQ0ZBLEVBQU9qSCxVQUFVc0IsT0FBTzdDLEVBQU9xRixrQkFBa0I1RCxNQUFNLE1BRXJEM0IsRUFBT2tCLFdBQ1QrRSxFQUFRcEksU0FBUSxDQUFDd0ksRUFBVXNDLEtBQ3pCdEMsRUFBU3RJLGFBQWEsT0FBUTRLLElBQWdCekIsRUFBVSxnQkFBa0IsU0FBUyxJQUduRmhILEVBQU8rRSxlQUFnQixDQUN6QixNQUFNMkQsRUFBdUIzQyxFQUFROEIsR0FDL0JjLEVBQXNCNUMsRUFBUStCLEdBQ3BDLElBQUssSUFBSTVQLEVBQUkyUCxFQUFZM1AsR0FBSzRQLEVBQVc1UCxHQUFLLEVBQ3hDNk4sRUFBUTdOLElBQ1Y2TixFQUFRN04sR0FBR3FKLFVBQVVzQixPQUFPLEdBQUc3QyxFQUFPcUYseUJBQXlCNUQsTUFBTSxNQUd6RXlFLEVBQWV3QyxFQUFzQixRQUNyQ3hDLEVBQWV5QyxFQUFxQixPQUN0QyxDQUNGLENBQ0EsR0FBSTNJLEVBQU8rRSxlQUFnQixDQUN6QixNQUFNNkQsRUFBdUJ2QixLQUFLYyxJQUFJcEMsRUFBUXRQLE9BQVF1SixFQUFPZ0YsbUJBQXFCLEdBQzVFNkQsR0FBaUJ0RSxFQUFhcUUsRUFBdUJyRSxHQU
2FjLEVBQUl3RCxFQUFXeEQsRUFDbEZ1RSxFQUFhL0IsRUFBTSxRQUFVLE9BQ25DaEIsRUFBUXBJLFNBQVE2SyxJQUNkQSxFQUFPbEwsTUFBTXdDLEVBQU9rSSxlQUFpQmMsRUFBYSxPQUFTLEdBQUdELEtBQWlCLEdBRW5GLENBQ0YsQ0FDQXhJLEVBQUcxQyxTQUFRLENBQUMyRCxFQUFPeUgsS0FTakIsR0FSb0IsYUFBaEIvSSxFQUFPOEUsT0FDVHhELEVBQU05SyxpQkFBaUIsRUFBa0J3SixFQUFPdUYsZUFBZTVILFNBQVFxTCxJQUNyRUEsRUFBV0MsWUFBY2pKLEVBQU9pRixzQkFBc0IrQixFQUFVLEVBQUUsSUFFcEUxRixFQUFNOUssaUJBQWlCLEVBQWtCd0osRUFBT3dGLGFBQWE3SCxTQUFRdUwsSUFDbkVBLEVBQVFELFlBQWNqSixFQUFPbUYsb0JBQW9CaUMsRUFBTSxLQUd2QyxnQkFBaEJwSCxFQUFPOEUsS0FBd0IsQ0FDakMsSUFBSXFFLEVBRUZBLEVBREVuSixFQUFPNkUsb0JBQ2MvRSxFQUFPa0ksZUFBaUIsV0FBYSxhQUVyQ2xJLEVBQU9rSSxlQUFpQixhQUFlLFdBRWhFLE1BQU1vQixHQUFTcEMsRUFBVSxHQUFLSSxFQUM5QixJQUFJaUMsRUFBUyxFQUNUQyxFQUFTLEVBQ2dCLGVBQXpCSCxFQUNGRSxFQUFTRCxFQUVURSxFQUFTRixFQUVYOUgsRUFBTTlLLGlCQUFpQixFQUFrQndKLEVBQU95Rix1QkFBdUI5SCxTQUFRNEwsSUFDN0VBLEVBQVdqTSxNQUFNa00sVUFBWSw2QkFBNkJILGFBQWtCQyxLQUM1RUMsRUFBV2pNLE1BQU1tTSxtQkFBcUIsR0FBRzNKLEVBQU9FLE9BQU8vSSxTQUFTLEdBRXBFLENBQ29CLFdBQWhCK0ksRUFBTzhFLE1BQXFCOUUsRUFBTzRFLGNBQ3JDdEQsRUFBTW9JLFVBQVkxSixFQUFPNEUsYUFBYTlFLEVBQVFrSCxFQUFVLEVBQUdJLEdBQ3hDLElBQWYyQixHQUFrQmxJLEVBQUssbUJBQW9CUyxLQUU1QixJQUFmeUgsR0FBa0JsSSxFQUFLLG1CQUFvQlMsR0FDL0NULEVBQUssbUJBQW9CUyxJQUV2QnhCLEVBQU9FLE9BQU8yQixlQUFpQjdCLEVBQU84QixTQUN4Q04sRUFBTUMsVUFBVXpCLEVBQU8rQixTQUFXLE1BQVEsVUFBVTdCLEVBQU84QixVQUM3RCxHQUVKLENBQ0EsU0FBUzZILElBRVAsTUFBTTNKLEVBQVNGLEVBQU9FLE9BQU80RCxXQUM3QixHQUFJcUMsSUFBd0IsT0FDNUIsTUFBTWlCLEVBQWVwSCxFQUFPcUgsU0FBV3JILEVBQU9FLE9BQU9tSCxRQUFRdkYsUUFBVTlCLEVBQU9xSCxRQUFRUCxPQUFPblEsT0FBU3FKLEVBQU84SixNQUFROUosRUFBT0UsT0FBTzRKLEtBQUtDLEtBQU8sRUFBSS9KLEVBQU84RyxPQUFPblEsT0FBUzRRLEtBQUtDLEtBQUt4SCxFQUFPRSxPQUFPNEosS0FBS0MsTUFBUS9KLEVBQU84RyxPQUFPblEsT0FDN04sSUFBSTRKLEVBQUtQLEVBQU84RCxXQUFXdkQsR0FDM0JBLEdBQUssSUFBQWdCLEdBQWtCaEIsR0FDdkIsSUFBSXlKLEVBQWlCLEdBQ3JCLEdBQW9CLFlBQWhCOUosRUFBTzhFLEtBQW9CLENBQzdCLElBQUlpRixFQUFrQmpLLEVBQU9FLE9BQU9oSixLQUFPcVEsS0FBS0MsS0FBS0osRUFBZXBILEVBQU9FLE9BQU91RyxnQkFBa0J6RyxFQUFPeUgsU0FBUzlRLE9BQ2hIcUosRUFBT0UsT0FBT2dLLFVBQVlsSyxFQUFPRSxPQUFPZ0ssU0FBU3BJLFNBQVdtSSxFQUFrQjdDLElBQ2hGNkMsRUFBa0I3QyxHQUVwQixJQUFLLElBQUloUCxFQUFJLEVBQUdBLEVBQUk2UixFQUFpQjdSLEdBQUssRUFDcEM4SCxFQUFPeUUsYUFDVHFGLEdBQWtCOUosRUFBT3lFLGFBQWF0TCxLQUFLMkcsRUFBUTVILEVBQUc4SCxFQUFPb0YsYUFHN0QwRSxHQUFrQixJQUFJOUosRUFBT3dFLGlCQUFpQjFFLEVBQU9rQixVQUFZLGdCQUFrQixhQUFhaEIsRUFBT29GLGtCQUFrQnBGLEVBQU93RSxnQkFHdEksQ0FDb0IsYUFBaEJ4RSxFQUFPOEUsT0FFUGdGLEVBREU5SixFQUFPMkUsZUFDUTNFLEVBQU8yRSxlQUFleEwsS0FBSzJHLEVBQVFFLEVBQU91RixhQUFjdkYsRUFBT3dGLFlBRS9ELGdCQUFnQnhGLEVBQU91Rix3Q0FBa0R2RixFQUFPd0YsdUJBR2pGLGdCQUFoQnhGLEVBQU84RSxPQUVQZ0YsRUFERTlKLEVBQU8wRSxrQkFDUTFFLEVBQU8wRSxrQkFBa0J2TCxLQUFLMkcsRUFBUUUsRUFBT3lGLHNCQUU3QyxnQkFBZ0J6RixFQUFPeUYsaUNBRzVDM0YsRUFBTzhELFdBQVdtQyxRQUFVLEdBQzVCMUYsRUFBRzFDLFNBQVEyRCxJQUNXLFdBQWhCdEIsRUFBTzhFLE9BQ1R4RCxFQUFNb0ksVUFBWUksR0FBa0IsSUFFbEIsWUFBaEI5SixFQUFPOEUsTUFDVGhGLEVBQU84RCxXQUFXbUMsUUFBUTFPLFFBQVFpSyxFQUFNOUssaUJBQWlCLEVBQWtCd0osRUFBT29GLGNBQ3BGLElBRWtCLFdBQWhCcEYsRUFBTzhFLE1BQ1RqRSxFQUFLLG1CQUFvQlIsRUFBRyxHQUVoQyxDQUNBLFNBQVNsSyxJQUNQMkosRUFBT0UsT0FBTzRELFdBQWEsRUFBMEI5RCxFQUFRQSxFQUFPQyxlQUFlNkQsV0FBWTlELEVBQU9FLE9BQU80RCxXQUFZLENBQ3ZIdkQsR0FBSSxzQkFFTixNQUFNTCxFQUFTRixFQUFPRSxPQUFPNEQsV0FDN0IsSUFBSzVELEVBQU9LLEdBQUksT0FDaEIsSUFBSUEsRUFDcUIsaUJBQWRMLEVBQU9LLElBQW1CUCxFQUFPa0IsWUFDMUNYLEVBQUtQLEVBQU9PLEdBQUc5SixjQUFjeUosRUFBT0ssS0FFakNBLEdBQTJCLGlCQUFkTCxFQUFPSyxLQUN2QkEsRUFBSyxJQUFJL0osU0FBU0UsaUJBQWlCd0osRUFBT0ssTUFFdkNBLElBQ0hBLEVBQUtMLEVBQU9LLElBRVRBLEdBQW9CLElBQWRBLEVBQUc1SixTQUNWcUosRUFBT0UsT0FBT2lCLG1CQUEwQyxpQkFBZGpCLEVBQU9LLElBQW1CNUgsTUFBTUMsUUFBUTJILElBQU9BLEVBQUc1SixPQUFTLElBQ3ZHNEosRUFBSyxJQUFJUCxFQUFPTyxHQUFHN0osaUJBQWlCd0osRUFBT0ssS0FFdkNBLEVBQUc1SixPQUFTLElBQ2Q0SixFQUFLQSxFQUFHakMsUUFBT2tELElBQ1QsT0FBZUEsRUFBTyxXQUFXLEtBQU94QixFQUFPTyxLQUVsRCxLQUdINUgsTUFBTUMsUUFBUTJILElBQXFCLElBQWRBLEVBQUc1SixTQUFjNEosRUFBS0EsRUFBRyxJQUNsRHhHLE9BQU80SSxPQUFPM0MsRUFBTzhELFdBQVksQ0FDL0J2RCxPQUVGQSxHQUFLLElBQUFnQixHQUFrQmhCLEdBQ3ZCQSxFQUFHMUMsU0FBUTJELElBQ1csWUFBaEJ0QixFQUFPOEUsTUFBc0I5RSxFQUFPNkQsV0FDdEN2QyxFQUFNQyxVQUFVc0IsUUFBUTdDLEVBQU8yRixnQkFBa0IsSUFBSWxFLE1BQU0sTUFFN0RILEVBQU1DLFVBQVVzQixJQUFJN0MsRUFBT3NGLGNBQWdCdEYsRUFBTzhFLE1BQ2xEeEQsRUFBTUMsVUFBVXNCLElBQUkvQyxFQUFPa0ksZUFBaUJoSSxFQUFPNEYsZ0JBQWtCNUYsRUFBTzZGLGVBQ3hELFlBQWhCN0YsRUFBTzhFLE1BQXNCOUUsRUFBTytFLGlCQUN0Q3pELEVBQU1DLFVBQVVzQixJQUFJLEdBQUc3QyxFQUFPc0YsZ0JBQWdCdEYsRUFBTzhFLGdCQUNyRGtCLEVBQXFCLEVBQ2pCaEcsRUFBT2dGLG1CQUFxQixJQUM5QmhGLEVBQU9nRixtQkFBcUIsSUFHWixnQkFBaEJoRixFQUFPOEUsTUFBMEI5RSxFQUFPNkUscUJBQzFDdkQsRUFBTUMsVUFBVXNCLElBQUk3QyxFQUFPMEYsMEJBRXpCMUYsRUFBTzZELFdBQ1R2QyxFQUFNc0IsaUJBQWlCLFFBQVN5RCxHQUU3QnZHLEVBQU84QixTQUNWTixFQUFNQyxVQUFVc0IsSUFBSTdDLEVBQU84QixVQUM3QixJQUVKLENBQ0EsU0FBU2dCLElBQ1AsTUFBTTlDLEVBQVNGLEVBQU9FLE9BQU80RCxXQUM3QixHQUFJcUMsSUFBd0IsT0FDNUIsSUFBSTVGLEVBQUtQLEVBQU84RCxXQUFXdkQsR0FDdkJBLElBQ0ZBLEdBQUssSUFBQWdCLEdBQWtCaEIsR0FDdkJBLEVBQUcxQyxTQUFRMkQsSUFDVEEsRUFBTUMsVUFBVWpELE9BQU8wQixFQUFPa0QsYUFDOUI1QixFQUFNQyxVQUFVakQsT0FBTzBCLEVBQU9zRixjQUFnQnRGLEVBQU84RSxNQUNyRHhELEVBQU1DLFVBQVVqRCxPQUFPd0IsRUFBT2tJLGVBQWlCaEksRUFBTzRGLGdCQUFrQjVGLEVBQU82RixlQUMzRTdGLEVBQU82RCxZQUNUdkMsRUFBTUMsVUFBVWpELFdBQVcwQixFQUFPMkYsZ0JBQWtCLElBQUlsRSxNQUFNLE1BQzlESCxFQUFNMEIsb0JBQW9CLFFBQVNxRCxHQUNyQyxLQUdBdkcsRUFBTzhELFdBQVdtQyxTQUFTakcsRUFBTzhELFdBQVdtQyxRQUFRcEksU0FBUTJELEdBQVNBLEVBQU1DLFVBQVVqRCxVQUFVMEIsRUFBT3FGLGtCQU
2FrQjVELE1BQU0sT0FDckksQ0FDQWIsRUFBRyxtQkFBbUIsS0FDcEIsSUFBS2QsRUFBTzhELGFBQWU5RCxFQUFPOEQsV0FBV3ZELEdBQUksT0FDakQsTUFBTUwsRUFBU0YsRUFBT0UsT0FBTzRELFdBQzdCLElBQUksR0FDRnZELEdBQ0VQLEVBQU84RCxXQUNYdkQsR0FBSyxJQUFBZ0IsR0FBa0JoQixHQUN2QkEsRUFBRzFDLFNBQVEyRCxJQUNUQSxFQUFNQyxVQUFVakQsT0FBTzBCLEVBQU80RixnQkFBaUI1RixFQUFPNkYsZUFDdER2RSxFQUFNQyxVQUFVc0IsSUFBSS9DLEVBQU9rSSxlQUFpQmhJLEVBQU80RixnQkFBa0I1RixFQUFPNkYsY0FBYyxHQUMxRixJQUVKakYsRUFBRyxRQUFRLE1BQ2dDLElBQXJDZCxFQUFPRSxPQUFPNEQsV0FBV2hDLFFBRTNCd0IsS0FFQWpOLElBQ0F3VCxJQUNBeEssSUFDRixJQUVGeUIsRUFBRyxxQkFBcUIsVUFDVSxJQUFyQmQsRUFBTzRILFdBQ2hCdkksR0FDRixJQUVGeUIsRUFBRyxtQkFBbUIsS0FDcEJ6QixHQUFRLElBRVZ5QixFQUFHLHdCQUF3QixLQUN6QitJLElBQ0F4SyxHQUFRLElBRVZ5QixFQUFHLFdBQVcsS0FDWmtDLEdBQVMsSUFFWGxDLEVBQUcsa0JBQWtCLEtBQ25CLElBQUksR0FDRlAsR0FDRVAsRUFBTzhELFdBQ1B2RCxJQUNGQSxHQUFLLElBQUFnQixHQUFrQmhCLEdBQ3ZCQSxFQUFHMUMsU0FBUTJELEdBQVNBLEVBQU1DLFVBQVV6QixFQUFPOEIsUUFBVSxTQUFXLE9BQU85QixFQUFPRSxPQUFPNEQsV0FBVzlCLGFBQ2xHLElBRUZsQixFQUFHLGVBQWUsS0FDaEJ6QixHQUFRLElBRVZ5QixFQUFHLFNBQVMsQ0FBQzlILEVBQUlxRCxLQUNmLE1BQU1rSCxFQUFXbEgsRUFBRUwsT0FDYnVFLEdBQUssSUFBQWdCLEdBQWtCdkIsRUFBTzhELFdBQVd2RCxJQUMvQyxHQUFJUCxFQUFPRSxPQUFPNEQsV0FBV3ZELElBQU1QLEVBQU9FLE9BQU80RCxXQUFXWCxhQUFlNUMsR0FBTUEsRUFBRzVKLE9BQVMsSUFBTTRNLEVBQVM5QixVQUFVdUMsU0FBU2hFLEVBQU9FLE9BQU80RCxXQUFXd0IsYUFBYyxDQUNwSyxHQUFJdEYsRUFBT3NCLGFBQWV0QixFQUFPc0IsV0FBV1csUUFBVXNCLElBQWF2RCxFQUFPc0IsV0FBV1csUUFBVWpDLEVBQU9zQixXQUFXWSxRQUFVcUIsSUFBYXZELEVBQU9zQixXQUFXWSxRQUFTLE9BQ25LLE1BQU0rQixFQUFXMUQsRUFBRyxHQUFHa0IsVUFBVXVDLFNBQVNoRSxFQUFPRSxPQUFPNEQsV0FBV1YsYUFFakVyQyxHQURlLElBQWJrRCxFQUNHLGlCQUVBLGtCQUVQMUQsRUFBRzFDLFNBQVEyRCxHQUFTQSxFQUFNQyxVQUFVeUMsT0FBT2xFLEVBQU9FLE9BQU80RCxXQUFXVixjQUN0RSxLQUVGLE1BYU1FLEVBQVUsS0FDZHRELEVBQU9PLEdBQUdrQixVQUFVc0IsSUFBSS9DLEVBQU9FLE9BQU80RCxXQUFXa0MseUJBQ2pELElBQUksR0FDRnpGLEdBQ0VQLEVBQU84RCxXQUNQdkQsSUFDRkEsR0FBSyxJQUFBZ0IsR0FBa0JoQixHQUN2QkEsRUFBRzFDLFNBQVEyRCxHQUFTQSxFQUFNQyxVQUFVc0IsSUFBSS9DLEVBQU9FLE9BQU80RCxXQUFXa0MsNEJBRW5FaEQsR0FBUyxFQUVYakosT0FBTzRJLE9BQU8zQyxFQUFPOEQsV0FBWSxDQUMvQkssT0F6QmEsS0FDYm5FLEVBQU9PLEdBQUdrQixVQUFVakQsT0FBT3dCLEVBQU9FLE9BQU80RCxXQUFXa0MseUJBQ3BELElBQUksR0FDRnpGLEdBQ0VQLEVBQU84RCxXQUNQdkQsSUFDRkEsR0FBSyxJQUFBZ0IsR0FBa0JoQixHQUN2QkEsRUFBRzFDLFNBQVEyRCxHQUFTQSxFQUFNQyxVQUFVakQsT0FBT3dCLEVBQU9FLE9BQU80RCxXQUFXa0MsNEJBRXRFM1AsSUFDQXdULElBQ0F4SyxHQUFRLEVBZVJpRSxVQUNBdUcsU0FDQXhLLFNBQ0FoSixPQUNBMk0sV0FFSixDQ3JjQSxTQUFTak0sRUFBUzZKLEdBQ2hCLElBdUJJdUosRUFDQUMsR0F4QkEsT0FDRnBLLEVBQU0sYUFDTmEsRUFBWSxHQUNaQyxFQUFFLEtBQ0ZDLEVBQUksT0FDSmIsR0FDRVUsRUFDSlosRUFBT2hKLFNBQVcsQ0FDaEJxVCxTQUFTLEVBQ1RDLFFBQVEsRUFDUkMsU0FBVSxHQUVaMUosRUFBYSxDQUNYN0osU0FBVSxDQUNSOEssU0FBUyxFQUNUMEksTUFBTyxJQUNQQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLG1CQUFtQixLQUt2QixJQUVJQyxFQUVBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQVZBQyxFQUFxQnBMLEdBQVVBLEVBQU9sSixTQUFXa0osRUFBT2xKLFNBQVN3VCxNQUFRLElBQ3pFZSxFQUF1QnJMLEdBQVVBLEVBQU9sSixTQUFXa0osRUFBT2xKLFNBQVN3VCxNQUFRLElBRTNFZ0IsR0FBb0IsSUFBSUMsTUFBT0MsVUFRbkMsU0FBU0MsRUFBZ0J0UCxHQUNsQjJELElBQVVBLEVBQU80TCxXQUFjNUwsRUFBTzZMLFdBQ3ZDeFAsRUFBRUwsU0FBV2dFLEVBQU82TCxZQUN4QjdMLEVBQU82TCxVQUFVM0ksb0JBQW9CLGdCQUFpQnlJLEdBQ2xETixHQUF3QmhQLEVBQUV5UCxRQUFVelAsRUFBRXlQLE9BQU9DLG1CQUdqREMsSUFDRixDQUNBLE1BQU1DLEVBQWUsS0FDbkIsR0FBSWpNLEVBQU80TCxZQUFjNUwsRUFBT2hKLFNBQVNxVCxRQUFTLE9BQzlDckssRUFBT2hKLFNBQVNzVCxPQUNsQlMsR0FBWSxFQUNIQSxJQUNUUSxFQUF1QlQsRUFDdkJDLEdBQVksR0FFZCxNQUFNUixFQUFXdkssRUFBT2hKLFNBQVNzVCxPQUFTUSxFQUFtQlUsRUFBb0JELEdBQXVCLElBQUlFLE1BQU9DLFVBQ25IMUwsRUFBT2hKLFNBQVN1VCxTQUFXQSxFQUMzQnhKLEVBQUssbUJBQW9Cd0osRUFBVUEsRUFBV2UsR0FDOUNsQixFQUFNOEIsdUJBQXNCLEtBQzFCRCxHQUFjLEdBQ2QsRUFhRUUsRUFBTUMsSUFDVixHQUFJcE0sRUFBTzRMLFlBQWM1TCxFQUFPaEosU0FBU3FULFFBQVMsT0FDbERnQyxxQkFBcUJqQyxHQUNyQjZCLElBQ0EsSUFBSXpCLE9BQThCLElBQWY0QixFQUE2QnBNLEVBQU9FLE9BQU9sSixTQUFTd1QsTUFBUTRCLEVBQy9FZCxFQUFxQnRMLEVBQU9FLE9BQU9sSixTQUFTd1QsTUFDNUNlLEVBQXVCdkwsRUFBT0UsT0FBT2xKLFNBQVN3VCxNQUM5QyxNQUFNOEIsRUFsQmMsTUFDcEIsSUFBSUMsRUFNSixHQUpFQSxFQURFdk0sRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBQzFCOUIsRUFBTzhHLE9BQU94SSxRQUFPa08sR0FBV0EsRUFBUS9LLFVBQVV1QyxTQUFTLHlCQUF3QixHQUVuRmhFLEVBQU84RyxPQUFPOUcsRUFBTzhILGNBRWxDeUUsRUFBZSxPQUVwQixPQUQwQkUsU0FBU0YsRUFBY0csYUFBYSx3QkFBeUIsR0FDL0QsRUFTRUMsSUFDckJDLE9BQU9DLE1BQU1QLElBQXNCQSxFQUFvQixRQUEyQixJQUFmRixJQUN0RTVCLEVBQVE4QixFQUNSaEIsRUFBcUJnQixFQUNyQmYsRUFBdUJlLEdBRXpCeEIsRUFBbUJOLEVBQ25CLE1BQU1yVCxFQUFRNkksRUFBT0UsT0FBTy9JLE1BQ3RCMlYsRUFBVSxLQUNUOU0sSUFBVUEsRUFBTzRMLFlBQ2xCNUwsRUFBT0UsT0FBT2xKLFNBQVM0VCxrQkFDcEI1SyxFQUFPbUMsYUFBZW5DLEVBQU9FLE9BQU9oSixNQUFROEksRUFBT0UsT0FBT2tDLFFBQzdEcEMsRUFBT3dDLFVBQVVyTCxHQUFPLEdBQU0sR0FDOUI0SixFQUFLLGFBQ0tmLEVBQU9FLE9BQU9sSixTQUFTMlQsa0JBQ2pDM0ssRUFBT2dILFFBQVFoSCxFQUFPOEcsT0FBT25RLE9BQVMsRUFBR1EsR0FBTyxHQUFNLEdBQ3RENEosRUFBSyxjQUdGZixFQUFPcUMsT0FBU3JDLEVBQU9FLE9BQU9oSixNQUFROEksRUFBT0UsT0FBT2tDLFFBQ3ZEcEMsRUFBTzBDLFVBQVV2TCxHQUFPLEdBQU0sR0FDOUI0SixFQUFLLGFBQ0tmLEVBQU9FLE9BQU9sSixTQUFTMlQsa0JBQ2pDM0ssRUFBT2dILFFBQVEsRUFBRzdQLEdBQU8sR0FBTSxHQUMvQjRKLEVBQUssYUFHTGYsRUFBT0UsT0FBTzZNLFVBQ2hCdkIsR0FBb0IsSUFBSUMsTUFBT0MsVUFDL0JRLHVCQUFzQixLQUNwQkMsR0FBSyxLQUVULEVBY0YsT0FaSTNCLEVBQVEsR0FDVndDLGFBQWE3QyxHQUNiQSxFQUFVOEMsWUFBVyxLQUNuQkgsR0FBUyxHQUNSdEMsSUFFSDBCLHVCQUFzQixLQUNwQlksR0FBUyxJQUtOdEMsQ0FBSyxFQUVSMEMsRUFBUSxLQUNaMUIsR0FBb0IsSUFBSUMsTUFBT0MsVUFDL0IxTCxFQUFPaEosU0FBU3FULFNBQVUsRUFDMUI4QixJQUNBcEwsRUFBSyxnQkFBZ0IsRU
2FFakJvTSxFQUFPLEtBQ1huTixFQUFPaEosU0FBU3FULFNBQVUsRUFDMUIyQyxhQUFhN0MsR0FDYmtDLHFCQUFxQmpDLEdBQ3JCckosRUFBSyxlQUFlLEVBRWhCcU0sRUFBUSxDQUFDQyxFQUFVQyxLQUN2QixHQUFJdE4sRUFBTzRMLFlBQWM1TCxFQUFPaEosU0FBU3FULFFBQVMsT0FDbEQyQyxhQUFhN0MsR0FDUmtELElBQ0hqQyxHQUFzQixHQUV4QixNQUFNMEIsRUFBVSxLQUNkL0wsRUFBSyxpQkFDRGYsRUFBT0UsT0FBT2xKLFNBQVN5VCxrQkFDekJ6SyxFQUFPNkwsVUFBVS9JLGlCQUFpQixnQkFBaUI2SSxHQUVuREssR0FDRixFQUdGLEdBREFoTSxFQUFPaEosU0FBU3NULFFBQVMsRUFDckJnRCxFQU1GLE9BTEluQyxJQUNGTCxFQUFtQjlLLEVBQU9FLE9BQU9sSixTQUFTd1QsT0FFNUNXLEdBQWUsT0FDZjJCLElBR0YsTUFBTXRDLEVBQVFNLEdBQW9COUssRUFBT0UsT0FBT2xKLFNBQVN3VCxNQUN6RE0sRUFBbUJOLElBQVMsSUFBSWlCLE1BQU9DLFVBQVlGLEdBQy9DeEwsRUFBT3FDLE9BQVN5SSxFQUFtQixJQUFNOUssRUFBT0UsT0FBT2hKLE9BQ3ZENFQsRUFBbUIsSUFBR0EsRUFBbUIsR0FDN0NnQyxJQUFTLEVBRUxkLEVBQVMsS0FDVGhNLEVBQU9xQyxPQUFTeUksRUFBbUIsSUFBTTlLLEVBQU9FLE9BQU9oSixNQUFROEksRUFBTzRMLFlBQWM1TCxFQUFPaEosU0FBU3FULFVBQ3hHbUIsR0FBb0IsSUFBSUMsTUFBT0MsVUFDM0JOLEdBQ0ZBLEdBQXNCLEVBQ3RCZSxFQUFJckIsSUFFSnFCLElBRUZuTSxFQUFPaEosU0FBU3NULFFBQVMsRUFDekJ2SixFQUFLLGtCQUFpQixFQUVsQndNLEVBQXFCLEtBQ3pCLEdBQUl2TixFQUFPNEwsWUFBYzVMLEVBQU9oSixTQUFTcVQsUUFBUyxPQUNsRCxNQUFNN1QsR0FBVyxJQUFBZ1gsS0FDZ0IsV0FBN0JoWCxFQUFTaVgsa0JBQ1hyQyxHQUFzQixFQUN0QmdDLEdBQU0sSUFFeUIsWUFBN0I1VyxFQUFTaVgsaUJBQ1h6QixHQUNGLEVBRUkwQixFQUFpQnJSLElBQ0MsVUFBbEJBLEVBQUVzUixjQUNOdkMsR0FBc0IsRUFDdEJDLEdBQXVCLEVBQ25CckwsRUFBTzROLFdBQWE1TixFQUFPaEosU0FBU3NULFFBQ3hDOEMsR0FBTSxHQUFLLEVBRVBTLEVBQWlCeFIsSUFDQyxVQUFsQkEsRUFBRXNSLGNBQ050QyxHQUF1QixFQUNuQnJMLEVBQU9oSixTQUFTc1QsUUFDbEIwQixJQUNGLEVBc0JGbEwsRUFBRyxRQUFRLEtBQ0xkLEVBQU9FLE9BQU9sSixTQUFTOEssVUFwQnZCOUIsRUFBT0UsT0FBT2xKLFNBQVM2VCxvQkFDekI3SyxFQUFPTyxHQUFHdUMsaUJBQWlCLGVBQWdCNEssR0FDM0MxTixFQUFPTyxHQUFHdUMsaUJBQWlCLGVBQWdCK0ssS0FVNUIsSUFBQUwsS0FDUjFLLGlCQUFpQixtQkFBb0J5SyxHQVU1Q0wsSUFDRixJQUVGcE0sRUFBRyxXQUFXLEtBcEJSZCxFQUFPTyxJQUEyQixpQkFBZFAsRUFBT08sS0FDN0JQLEVBQU9PLEdBQUcyQyxvQkFBb0IsZUFBZ0J3SyxHQUM5QzFOLEVBQU9PLEdBQUcyQyxvQkFBb0IsZUFBZ0IySyxLQVEvQixJQUFBTCxLQUNSdEssb0JBQW9CLG1CQUFvQnFLLEdBWTdDdk4sRUFBT2hKLFNBQVNxVCxTQUNsQjhDLEdBQ0YsSUFFRnJNLEVBQUcsMEJBQTBCLE1BQ3ZCbUssR0FBaUJHLElBQ25CWSxHQUNGLElBRUZsTCxFQUFHLDhCQUE4QixLQUMxQmQsRUFBT0UsT0FBT2xKLFNBQVMwVCxxQkFHMUJ5QyxJQUZBQyxHQUFNLEdBQU0sRUFHZCxJQUVGdE0sRUFBRyx5QkFBeUIsQ0FBQzlILEVBQUk3QixFQUFPa1csTUFDbENyTixFQUFPNEwsV0FBYzVMLEVBQU9oSixTQUFTcVQsVUFDckNnRCxJQUFhck4sRUFBT0UsT0FBT2xKLFNBQVMwVCxxQkFDdEMwQyxHQUFNLEdBQU0sR0FFWkQsSUFDRixJQUVGck0sRUFBRyxtQkFBbUIsTUFDaEJkLEVBQU80TCxXQUFjNUwsRUFBT2hKLFNBQVNxVCxVQUNyQ3JLLEVBQU9FLE9BQU9sSixTQUFTMFQscUJBQ3pCeUMsS0FHRm5DLEdBQVksRUFDWkMsR0FBZ0IsRUFDaEJHLEdBQXNCLEVBQ3RCRixFQUFvQitCLFlBQVcsS0FDN0I3QixHQUFzQixFQUN0QkgsR0FBZ0IsRUFDaEJtQyxHQUFNLEVBQUssR0FDVixNQUFJLElBRVR0TSxFQUFHLFlBQVksS0FDYixJQUFJZCxFQUFPNEwsV0FBYzVMLEVBQU9oSixTQUFTcVQsU0FBWVcsRUFBckQsQ0FHQSxHQUZBZ0MsYUFBYTlCLEdBQ2I4QixhQUFhN0MsR0FDVG5LLEVBQU9FLE9BQU9sSixTQUFTMFQscUJBR3pCLE9BRkFPLEdBQWdCLE9BQ2hCRCxHQUFZLEdBR1ZDLEdBQWlCakwsRUFBT0UsT0FBTzZNLFNBQVNmLElBQzVDZixHQUFnQixFQUNoQkQsR0FBWSxDQVYwRCxDQVVyRCxJQUVuQmxLLEVBQUcsZUFBZSxNQUNaZCxFQUFPNEwsV0FBYzVMLEVBQU9oSixTQUFTcVQsVUFDekNjLEdBQWUsRUFBSSxJQUVyQnBSLE9BQU80SSxPQUFPM0MsRUFBT2hKLFNBQVUsQ0FDN0JrVyxRQUNBQyxPQUNBQyxRQUNBcEIsVUFFSixDQzNTQSxTQUFTLEVBQWE4QixFQUFjdEIsR0FDbEMsTUFBTXVCLEdBQWMsSUFBQVAsR0FBb0JoQixHQUt4QyxPQUpJdUIsSUFBZ0J2QixJQUNsQnVCLEVBQVl2USxNQUFNd1EsbUJBQXFCLFNBQ3ZDRCxFQUFZdlEsTUFBTSwrQkFBaUMsVUFFOUN1USxDQUNULENDUEEsU0FBUyxFQUEyQm5OLEdBQ2xDLElBQUksT0FDRlosRUFBTSxTQUNOaU8sRUFBUSxrQkFDUkMsRUFB
2aUIsVUFDakJDLEdBQ0V2TixFQUNKLE1BQU0sWUFDSmtILEdBQ0U5SCxFQVNKLEdBQUlBLEVBQU9FLE9BQU9rTyxrQkFBaUMsSUFBYkgsRUFBZ0IsQ0FDcEQsSUFDSUksRUFEQUMsR0FBaUIsRUFHbkJELEVBREVGLEVBQ29CRCxFQUVBQSxFQUFrQjVQLFFBQU95UCxJQUM3QyxNQUFNeE4sRUFBS3dOLEVBQVl0TSxVQUFVdUMsU0FBUywwQkFmL0J6RCxLQUNmLElBQUtBLEVBQUdnTyxjQUdOLE9BRGN2TyxFQUFPOEcsT0FBT3hJLFFBQU9rTyxHQUFXQSxFQUFRZ0MsWUFBY2hDLEVBQVFnQyxhQUFlak8sRUFBR2YsYUFBWSxHQUc1RyxPQUFPZSxFQUFHZ08sYUFBYSxFQVNtREUsQ0FBU1YsR0FBZUEsRUFDOUYsT0FBTy9OLEVBQU8wTyxjQUFjbk8sS0FBUXVILENBQVcsSUFHbkR1RyxFQUFvQnhRLFNBQVEwQyxLQUMxQixPQUFxQkEsR0FBSSxLQUN2QixHQUFJK04sRUFBZ0IsT0FDcEIsSUFBS3RPLEdBQVVBLEVBQU80TCxVQUFXLE9BQ2pDMEMsR0FBaUIsRUFDakJ0TyxFQUFPNE4sV0FBWSxFQUNuQixNQUFNZSxFQUFNLElBQUkvUyxPQUFPZ1QsWUFBWSxnQkFBaUIsQ0FDbERDLFNBQVMsRUFDVEMsWUFBWSxJQUVkOU8sRUFBTzZMLFVBQVVrRCxjQUFjSixFQUFJLEdBQ25DLEdBRU4sQ0FDRixDQ3hDQSxTQUFTN1gsRUFBVzhKLEdBQ2xCLElBQUksT0FDRlosRUFBTSxhQUNOYSxFQUFZLEdBQ1pDLEdBQ0VGLEVBQ0pDLEVBQWEsQ0FDWG1PLFdBQVksQ0FDVkMsV0FBVyxNQ2JqQixTQUFvQi9PLEdBQ2xCLE1BQU0sT0FDSmpKLEVBQU0sT0FDTitJLEVBQU0sR0FDTmMsRUFBRSxhQUNGb08sRUFBWSxjQUNaQyxFQUFhLGdCQUNiQyxFQUFlLFlBQ2ZDLEVBQVcsZ0JBQ1hDLEVBQWUsZ0JBQ2ZDLEdBQ0VyUCxFQStCSixJQUFJc1AsRUE5QkoxTyxFQUFHLGNBQWMsS0FDZixHQUFJZCxFQUFPRSxPQUFPakosU0FBV0EsRUFBUSxPQUNyQytJLEVBQU95UCxXQUFXbFksS0FBSyxHQUFHeUksRUFBT0UsT0FBT3dQLHlCQUF5QnpZLEtBQzdEb1ksR0FBZUEsS0FDakJyUCxFQUFPeVAsV0FBV2xZLEtBQUssR0FBR3lJLEVBQU9FLE9BQU93UCw0QkFFMUMsTUFBTUMsRUFBd0JQLEVBQWtCQSxJQUFvQixDQUFDLEVBQ3JFclYsT0FBTzRJLE9BQU8zQyxFQUFPRSxPQUFReVAsR0FDN0I1VixPQUFPNEksT0FBTzNDLEVBQU9DLGVBQWdCMFAsRUFBc0IsSUFFN0Q3TyxFQUFHLGdCQUFnQixLQUNiZCxFQUFPRSxPQUFPakosU0FBV0EsR0FDN0JpWSxHQUFjLElBRWhCcE8sRUFBRyxpQkFBaUIsQ0FBQzlILEVBQUlpVixLQUNuQmpPLEVBQU9FLE9BQU9qSixTQUFXQSxHQUM3QmtZLEVBQWNsQixFQUFTLElBRXpCbk4sRUFBRyxpQkFBaUIsS0FDbEIsR0FBSWQsRUFBT0UsT0FBT2pKLFNBQVdBLEdBQ3pCcVksRUFBaUIsQ0FDbkIsSUFBS0MsSUFBb0JBLElBQWtCSyxhQUFjLE9BRXpENVAsRUFBTzhHLE9BQU9qSixTQUFRMk8sSUFDcEJBLEVBQVE5VixpQkFBaUIsZ0hBQWdIbUgsU0FBUWdTLEdBQVlBLEVBQVNyUixVQUFTLElBR2pMOFEsR0FDRixLQUdGeE8sRUFBRyxpQkFBaUIsS0FDZGQsRUFBT0UsT0FBT2pKLFNBQVdBLElBQ3hCK0ksRUFBTzhHLE9BQU9uUSxTQUNqQjZZLEdBQXlCLEdBRTNCdEQsdUJBQXNCLEtBQ2hCc0QsR0FBMEJ4UCxFQUFPOEcsUUFBVTlHLEVBQU84RyxPQUFPblEsU0FDM0R1WSxJQUNBTSxHQUF5QixFQUMzQixJQUNBLEdBRU4sQ0RORSxDQUFXLENBQ1R2WSxPQUFRLE9BQ1IrSSxTQUNBYyxLQUNBb08sYUFyQ21CLEtBQ25CLE1BQU0sT0FDSnBJLEdBQ0U5RyxFQUNXQSxFQUFPRSxPQUFPOE8sV0FDN0IsSUFBSyxJQUFJNVcsRUFBSSxFQUFHQSxFQUFJME8sRUFBT25RLE9BQVF5QixHQUFLLEVBQUcsQ0FDekMsTUFBTW9VLEVBQVV4TSxFQUFPOEcsT0FBTzFPLEdBRTlCLElBQUkwWCxHQURXdEQsRUFBUXVELGtCQUVsQi9QLEVBQU9FLE9BQU9rTyxtQkFBa0IwQixHQUFNOVAsRUFBT2dRLFdBQ2xELElBQUlDLEVBQUssRUFDSmpRLEVBQU9rSSxpQkFDVitILEVBQUtILEVBQ0xBLEVBQUssR0FFUCxNQUFNSSxFQUFlbFEsRUFBT0UsT0FBTzhPLFdBQVdDLFVBQVkxSCxLQUFLYSxJQUFJLEVBQUliLEtBQUs0SSxJQUFJM0QsRUFBUTRELFVBQVcsR0FBSyxFQUFJN0ksS0FBS2MsSUFBSWQsS0FBS2EsSUFBSW9FLEVBQVE0RCxVQUFXLEdBQUksR0FDL0k3TSxFQUFXLEVBQWFyRCxFQUFRc00sR0FDdENqSixFQUFTL0YsTUFBTTZTLFFBQVVILEVBQ3pCM00sRUFBUy9GLE1BQU1rTSxVQUFZLGVBQWVvRyxRQUFTRyxXQUNyRCxHQW1CQWQsY0FqQm9CbEIsSUFDcEIsTUFBTUMsRUFBb0JsTyxFQUFPOEcsT0FBTy9PLEtBQUl5VSxJQUFXLElBQUFnQixHQUFvQmhCLEtBQzNFMEIsRUFBa0JyUSxTQUFRMEMsSUFDeEJBLEVBQUcvQyxNQUFNbU0sbUJBQXFCLEdBQUdzRSxLQUFZLElBRS9DLEVBQTJCLENBQ3pCak8sU0FDQWlPLFdBQ0FDLG9CQUNBQyxXQUFXLEdBQ1gsRUFRRmlCLGdCQUFpQixLQUFNLENBQ3JCaFksY0FBZSxFQUNmcVAsZUFBZ0IsRUFDaEI2SixxQkFBcUIsRUFDckJqWixhQUFjLEVBQ2QrVyxrQkFBbUJwTyxFQUFPRSxPQUFPNk0sV0FHdkMsQyxzQkVuREEsU0FBU3dELEVBQVN2VCxHQUNoQixPQUFlLE9BQVJBLEdBQStCLGlCQUFSQSxHQUFvQixnQkFBaUJBLEdBQU9BLEVBQUk5QyxjQUFnQkgsTUFDaEcsQ0FDQSxTQUFTeVcsRUFBT3hVLEVBQVF5VSxRQUNQLElBQVh6VSxJQUNGQSxFQUFTLENBQUMsUUFFQSxJQUFSeVUsSUFDRkEsRUFBTSxDQUFDLEdBRVQxVyxPQUFPNkQsS0FBSzZTLEdBQUs1UyxTQUFRQyxTQUNJLElBQWhCOUIsRUFBTzhCLEdBQXNCOUIsRUFBTzhCLEdBQU8yUyxFQUFJM1MsR0FBY3lTLEVBQVNFLEVBQUkzUyxLQUFTeVMsRUFBU3ZVLEVBQU84QixLQUFTL0QsT0FBTzZELEtBQUs2UyxFQUFJM1MsSUFBTW5ILE9BQVMsR0FDcEo2WixFQUFPeFUsRUFBTzhCLEdBQU0yUyxFQUFJM1MsR0FDMUIsR0FFSixDLHVEQUNBLE1BQU00UyxFQUFjLENBQ2xCQyxLQUFNLENBQUMsRUFDUCxnQkFBQTdOLEdBQW9CLEVBQ3BCLG1CQUFBSSxHQUF1QixFQUN2QjBOLGNBQWUsQ0FDYixJQUFBQyxHQUFRLEVBQ1JDLFNBQVUsSUFFWixhQUFBcmEsR0FDRSxPQUFPLElBQ1QsRUFDQSxnQkFBQUMsR0FDRSxNQUFPLEVBQ1QsRUFDQSxjQUFBcWEsR0FDRSxPQUFPLElBQ1QsRUFDQSxXQUFBQyxHQUNFLE1BQU8sQ0FDTCxTQUFBQyxHQUFhLEVBRWpCLEVBQ0EsYUFBQXhULEdBQ0UsTUFBTyxDQUNMeVQsU0FBVSxHQUNWclMsV0FBWSxHQUNackIsTUFBTyxDQUFDLEVBQ1IsWUFBQU8sR0FBZ0IsRU
2FDaEIsb0JBQUFvVCxHQUNFLE1BQU8sRUFDVCxFQUVKLEVBQ0EsZUFBQUMsR0FDRSxNQUFPLENBQUMsQ0FDVixFQUNBLFVBQUFDLEdBQ0UsT0FBTyxJQUNULEVBQ0FDLFNBQVUsQ0FDUkMsS0FBTSxHQUNOQyxLQUFNLEdBQ05DLFNBQVUsR0FDVkMsS0FBTSxHQUNOQyxPQUFRLEdBQ1JDLFNBQVUsR0FDVkMsU0FBVSxHQUNWQyxPQUFRLEtBR1osU0FBU0MsSUFDUCxNQUFNQyxFQUEwQixvQkFBYnhiLFNBQTJCQSxTQUFXLENBQUMsRUFFMUQsT0FEQWdhLEVBQU93QixFQUFLdEIsR0FDTHNCLENBQ1QsQ0FDQSxNQUFNQyxFQUFZLENBQ2hCemIsU0FBVWthLEVBQ1Z3QixVQUFXLENBQ1RDLFVBQVcsSUFFYmIsU0FBVSxDQUNSQyxLQUFNLEdBQ05DLEtBQU0sR0FDTkMsU0FBVSxHQUNWQyxLQUFNLEdBQ05DLE9BQVEsR0FDUkMsU0FBVSxHQUNWQyxTQUFVLEdBQ1ZDLE9BQVEsSUFFVk0sUUFBUyxDQUNQLFlBQUFDLEdBQWdCLEVBQ2hCLFNBQUFDLEdBQWEsRUFDYixFQUFBQyxHQUFNLEVBQ04sSUFBQUMsR0FBUSxHQUVWNUQsWUFBYSxXQUNYLE9BQU85VyxJQUNULEVBQ0EsZ0JBQUFnTCxHQUFvQixFQUNwQixtQkFBQUksR0FBdUIsRUFDdkIsZ0JBQUF1UCxHQUNFLE1BQU8sQ0FDTCxnQkFBQUMsR0FDRSxNQUFPLEVBQ1QsRUFFSixFQUNBLEtBQUFDLEdBQVMsRUFDVCxJQUFBbEgsR0FBUSxFQUNSbUgsT0FBUSxDQUFDLEVBQ1QsVUFBQTNGLEdBQWMsRUFDZCxZQUFBRCxHQUFnQixFQUNoQixVQUFBNkYsR0FDRSxNQUFPLENBQUMsQ0FDVixFQUNBLHFCQUFBM0csQ0FBc0I0RyxHQUNwQixNQUEwQixvQkFBZjdGLFlBQ1Q2RixJQUNPLE1BRUY3RixXQUFXNkYsRUFBVSxFQUM5QixFQUNBLG9CQUFBekcsQ0FBcUI1VSxHQUNPLG9CQUFmd1YsWUFHWEQsYUFBYXZWLEVBQ2YsR0FFRixTQUFTc2IsSUFDUCxNQUFNQyxFQUF3QixvQkFBWHBYLE9BQXlCQSxPQUFTLENBQUMsRUFFdEQsT0FEQTRVLEVBQU93QyxFQUFLZixHQUNMZSxDQUNULEMsdWZDcklBLFNBQVNDLEVBQVlqVyxHQUNuQixNQUFNa1csRUFBU2xXLEVBQ2ZqRCxPQUFPNkQsS0FBS3NWLEdBQVFyVixTQUFRQyxJQUMxQixJQUNFb1YsRUFBT3BWLEdBQU8sSUFDaEIsQ0FBRSxNQUFPekIsR0FFVCxDQUNBLFdBQ1M2VyxFQUFPcFYsRUFDaEIsQ0FBRSxNQUFPekIsR0FFVCxJQUVKLENBQ0EsU0FBUzhXLEVBQVNMLEVBQVV0SSxHQUkxQixZQUhjLElBQVZBLElBQ0ZBLEVBQVEsR0FFSHlDLFdBQVc2RixFQUFVdEksRUFDOUIsQ0FDQSxTQUFTNEksSUFDUCxPQUFPM0gsS0FBSzJILEtBQ2QsQ0FlQSxTQUFTQyxFQUFhOVMsRUFBSStTLFFBQ1gsSUFBVEEsSUFDRkEsRUFBTyxLQUVULE1BQU0xWCxHQUFTLFNBQ2YsSUFBSTJYLEVBQ0FDLEVBQ0FDLEVBQ0osTUFBTUMsRUF0QlIsU0FBMEJuVCxHQUN4QixNQUFNM0UsR0FBUyxTQUNmLElBQUk0QixFQVVKLE9BVEk1QixFQUFPNlcsbUJBQ1RqVixFQUFRNUIsRUFBTzZXLGlCQUFpQmxTLEVBQUksUUFFakMvQyxHQUFTK0MsRUFBR29ULGVBQ2ZuVyxFQUFRK0MsRUFBR29ULGNBRVJuVyxJQUNIQSxFQUFRK0MsRUFBRy9DLE9BRU5BLENBQ1QsQ0FTbUJpVixDQUFpQmxTLEdBNkJsQyxPQTVCSTNFLEVBQU9nWSxpQkFDVEosRUFBZUUsRUFBU2hLLFdBQWFnSyxFQUFTRyxnQkFDMUNMLEVBQWE3UixNQUFNLEtBQUtoTCxPQUFTLElBQ25DNmMsRUFBZUEsRUFBYTdSLE1BQU0sTUFBTTVKLEtBQUkrYixHQUFLQSxFQUFFeFAsUUFBUSxJQUFLLE9BQU1uTSxLQUFLLE9BSTdFc2IsRUFBa0IsSUFBSTdYLEVBQU9nWSxnQkFBaUMsU0FBakJKLEVBQTBCLEdBQUtBLEtBRTVFQyxFQUFrQkMsRUFBU0ssY0FBZ0JMLEVBQVNNLFlBQWNOLEVBQVNPLGFBQWVQLEVBQVNRLGFBQWVSLEVBQVNoSyxXQUFhZ0ssRUFBU2hCLGlCQUFpQixhQUFhcE8sUUFBUSxhQUFjLHNCQUNyTWlQLEVBQVNFLEVBQWdCNWIsV0FBVzhKLE1BQU0sTUFFL0IsTUFBVDJSLElBRTBCRSxFQUF4QjVYLEVBQU9nWSxnQkFBZ0NILEVBQWdCVSxJQUVoQyxLQUFsQlosRUFBTzVjLE9BQThCeWQsV0FBV2IsRUFBTyxLQUU1Q2EsV0FBV2IsRUFBTyxLQUUzQixNQUFURCxJQUUwQkUsRUFBeEI1WCxFQUFPZ1ksZ0JBQWdDSCxFQUFnQlksSUFFaEMsS0FBbEJkLEVBQU81YyxPQUE4QnlkLFdBQVdiLEVBQU8sS0FFNUNhLFdBQVdiLEVBQU8sS0FFakNDLEdBQWdCLENBQ3pCLENBQ0EsU0FBU2pELEVBQVM1VyxHQUNoQixNQUFvQixpQkFBTkEsR0FBd0IsT0FBTkEsR0FBY0EsRUFBRU8sYUFBa0UsV0FBbkRILE9BQU9DLFVBQVVuQyxTQUFTd0IsS0FBS00sR0FBR00sTUFBTSxHQUFJLEVBQzdHLENBUUEsU0FBU3VXLElBQ1AsTUFBTThELEVBQUt2YSxPQUFPd2EsVUFBVTVkLFFBQVUsT0FBSXdSLEVBQVlvTSxVQUFVLElBQzFEQyxFQUFXLENBQUMsWUFBYSxjQUFlLGFBQzlDLElBQUssSUFBSXBjLEVBQUksRUFBR0EsRUFBSW1jLFVBQVU1ZCxPQUFRe
2UIsR0FBSyxFQUFHLENBQzVDLE1BQU1xYyxFQUFhcmMsRUFBSSxHQUFLbWMsVUFBVTVkLFFBQVV5QixPQUFJK1AsRUFBWW9NLFVBQVVuYyxHQUMxRSxHQUFJcWMsVUFaUUMsRUFZbURELElBVjNDLG9CQUFYN1ksYUFBd0QsSUFBdkJBLE9BQU8rWSxZQUMxQ0QsYUFBZ0JDLFlBRWxCRCxJQUEyQixJQUFsQkEsRUFBS0UsVUFBb0MsS0FBbEJGLEVBQUtFLFlBT2tDLENBQzFFLE1BQU1DLEVBQVk5YSxPQUFPNkQsS0FBSzdELE9BQU8wYSxJQUFhblcsUUFBT1IsR0FBTzBXLEVBQVNNLFFBQVFoWCxHQUFPLElBQ3hGLElBQUssSUFBSStJLEVBQVksRUFBR3BNLEVBQU1vYSxFQUFVbGUsT0FBUWtRLEVBQVlwTSxFQUFLb00sR0FBYSxFQUFHLENBQy9FLE1BQU1rTyxFQUFVRixFQUFVaE8sR0FDcEJtTyxFQUFPamIsT0FBT2tiLHlCQUF5QlIsRUFBWU0sUUFDNUM1TSxJQUFUNk0sR0FBc0JBLEVBQUtFLGFBQ3pCM0UsRUFBUytELEVBQUdTLEtBQWF4RSxFQUFTa0UsRUFBV00sSUFDM0NOLEVBQVdNLEdBQVNJLFdBQ3RCYixFQUFHUyxHQUFXTixFQUFXTSxHQUV6QnZFLEVBQU84RCxFQUFHUyxHQUFVTixFQUFXTSxLQUV2QnhFLEVBQVMrRCxFQUFHUyxLQUFheEUsRUFBU2tFLEVBQVdNLEtBQ3ZEVCxFQUFHUyxHQUFXLENBQUMsRUFDWE4sRUFBV00sR0FBU0ksV0FDdEJiLEVBQUdTLEdBQVdOLEVBQVdNLEdBRXpCdkUsRUFBTzhELEVBQUdTLEdBQVVOLEVBQVdNLEtBR2pDVCxFQUFHUyxHQUFXTixFQUFXTSxHQUcvQixDQUNGLENBQ0YsQ0FyQ0YsSUFBZ0JMLEVBc0NkLE9BQU9KLENBQ1QsQ0FDQSxTQUFTYyxFQUFlN1UsRUFBSThVLEVBQVNDLEdBQ25DL1UsRUFBRy9DLE1BQU0rWCxZQUFZRixFQUFTQyxFQUNoQyxDQUNBLFNBQVNFLEVBQXFCNVUsR0FDNUIsSUFBSSxPQUNGWixFQUFNLGVBQ055VixFQUFjLEtBQ2RDLEdBQ0U5VSxFQUNKLE1BQU1oRixHQUFTLFNBQ1QrWixHQUFpQjNWLEVBQU9nUSxVQUM5QixJQUNJNEYsRUFEQUMsRUFBWSxLQUVoQixNQUFNNUgsRUFBV2pPLEVBQU9FLE9BQU8vSSxNQUMvQjZJLEVBQU82TCxVQUFVck8sTUFBTXNZLGVBQWlCLE9BQ3hDbGEsRUFBT3lRLHFCQUFxQnJNLEVBQU8rVixnQkFDbkMsTUFBTWxULEVBQU00UyxFQUFpQkUsRUFBZ0IsT0FBUyxPQUNoREssRUFBZSxDQUFDOU8sRUFBU2xMLElBQ2QsU0FBUjZHLEdBQWtCcUUsR0FBV2xMLEdBQWtCLFNBQVI2RyxHQUFrQnFFLEdBQVdsTCxFQUV2RWlhLEVBQVUsS0FDZEwsR0FBTyxJQUFJbkssTUFBT0MsVUFDQSxPQUFkbUssSUFDRkEsRUFBWUQsR0FFZCxNQUFNeEYsRUFBVzdJLEtBQUthLElBQUliLEtBQUtjLEtBQUt1TixFQUFPQyxHQUFhNUgsRUFBVSxHQUFJLEdBQ2hFaUksRUFBZSxHQUFNM08sS0FBSzRPLElBQUkvRixFQUFXN0ksS0FBSzZPLElBQU0sRUFDMUQsSUFBSUMsRUFBa0JWLEVBQWdCTyxHQUFnQlQsRUFBaUJFLEdBT3ZFLEdBTklLLEVBQWFLLEVBQWlCWixLQUNoQ1ksRUFBa0JaLEdBRXBCelYsRUFBTzZMLFVBQVV5SyxTQUFTLENBQ3hCLENBQUNaLEdBQU9XLElBRU5MLEVBQWFLLEVBQWlCWixHQVVoQyxPQVRBelYsRUFBTzZMLFVBQVVyTyxNQUFNK1ksU0FBVyxTQUNsQ3ZXLEVBQU82TCxVQUFVck8sTUFBTXNZLGVBQWlCLEdBQ3hDN0ksWUFBVyxLQUNUak4sRUFBTzZMLFVBQVVyTyxNQUFNK1ksU0FBVyxHQUNsQ3ZXLEVBQU82TCxVQUFVeUssU0FBUyxDQUN4QixDQUFDWixHQUFPVyxHQUNSLFNBRUp6YSxFQUFPeVEscUJBQXFCck0sRUFBTytWLGdCQUdyQy9WLEVBQU8rVixlQUFpQm5hLEVBQU9zUSxzQkFBc0IrSixFQUFRLEVBRS9EQSxHQUNGLENBQ0EsU0FBU08sRUFBb0JoSyxHQUMzQixPQUFPQSxFQUFRL1YsY0FBYyw0QkFBOEIrVixFQUFRZ0MsWUFBY2hDLEVBQVFnQyxXQUFXL1gsY0FBYyw0QkFBOEIrVixDQUNsSixDQUNBLFNBQVNpSyxFQUFnQm5XLEVBQVNvVyxRQUNmLElBQWJBLElBQ0ZBLEVBQVcsSUFFYixNQUFNeEYsRUFBVyxJQUFJNVEsRUFBUTRRLFVBSTdCLE9BSEk1USxhQUFtQnFXLGlCQUNyQnpGLEVBQVMzWixRQUFRK0ksRUFBUXNXLG9CQUV0QkYsRUFHRXhGLEVBQVM1UyxRQUFPaUMsR0FBTUEsRUFBR3NXLFFBQVFILEtBRi9CeEYsQ0FHWCxDQUNBLFNBQVM0RixFQUFpQnZXLEVBQUl3VyxHQUM1QixNQUFNQyxFQUFVRCxFQUFPL1MsU0FBU3pELEdBQ2hDLElBQUt5VyxHQUFXRCxhQUFrQkosZ0JBQWlCLENBRWpELE1BRGlCLElBQUlJLEVBQU9ILG9CQUNablQsU0FBU2xELEVBQzNCLENBQ0EsT0FBT3lXLENBQ1QsQ0FDQSxTQUFTQyxFQUFZQyxHQUNuQixJQUVFLFlBREFDLFFBQVFDLEtBQUtGLEVBRWYsQ0FBRSxNQUFPemQsR0FFVCxDQUNGLENBQ0EsU0FBU2dFLEVBQWM0WixFQUFLalQsUUFDVixJQUFaQSxJQUNGQSxFQUFVLElBRVosTUFBTTdELEVBQUsvSixTQUFTaUgsY0FBYzRaLEdBRWxDLE9BREE5VyxFQUFHa0IsVUFBVXNCLE9BQVFwSyxNQUFNQyxRQUFRd0wsR0FBV0EsRUF0TmhELFNBQXlCQSxHQUl2QixZQUhn
2QixJQUFaQSxJQUNGQSxFQUFVLElBRUxBLEVBQVFDLE9BQU8xQyxNQUFNLEtBQUtyRCxRQUFPa0MsS0FBT0EsRUFBRTZELFFBQ25ELENBaU4wRGlULENBQWdCbFQsSUFDakU3RCxDQUNULENBZUEsU0FBU2dYLEVBQWVoWCxFQUFJbVcsR0FDMUIsTUFBTWMsRUFBVSxHQUNoQixLQUFPalgsRUFBR2tYLHdCQUF3QixDQUNoQyxNQUFNQyxFQUFPblgsRUFBR2tYLHVCQUNaZixFQUNFZ0IsRUFBS2IsUUFBUUgsSUFBV2MsRUFBUWpnQixLQUFLbWdCLEdBQ3BDRixFQUFRamdCLEtBQUttZ0IsR0FDcEJuWCxFQUFLbVgsQ0FDUCxDQUNBLE9BQU9GLENBQ1QsQ0FDQSxTQUFTRyxFQUFlcFgsRUFBSW1XLEdBQzFCLE1BQU1rQixFQUFVLEdBQ2hCLEtBQU9yWCxFQUFHc1gsb0JBQW9CLENBQzVCLE1BQU12ZSxFQUFPaUgsRUFBR3NYLG1CQUNabkIsRUFDRXBkLEVBQUt1ZCxRQUFRSCxJQUFXa0IsRUFBUXJnQixLQUFLK0IsR0FDcENzZSxFQUFRcmdCLEtBQUsrQixHQUNwQmlILEVBQUtqSCxDQUNQLENBQ0EsT0FBT3NlLENBQ1QsQ0FDQSxTQUFTRSxFQUFhdlgsRUFBSXdYLEdBRXhCLE9BRGUsU0FDRHRGLGlCQUFpQmxTLEVBQUksTUFBTW1TLGlCQUFpQnFGLEVBQzVELENBQ0EsU0FBU0MsRUFBYXpYLEdBQ3BCLElBQ0luSSxFQURBNmYsRUFBUTFYLEVBRVosR0FBSTBYLEVBQU8sQ0FHVCxJQUZBN2YsRUFBSSxFQUV1QyxRQUFuQzZmLEVBQVFBLEVBQU1DLGtCQUNHLElBQW5CRCxFQUFNckQsV0FBZ0J4YyxHQUFLLEdBRWpDLE9BQU9BLENBQ1QsQ0FFRixDQUNBLFNBQVMrZixFQUFlNVgsRUFBSW1XLEdBQzFCLE1BQU0wQixFQUFVLEdBQ2hCLElBQUlyQixFQUFTeFcsRUFBR2dPLGNBQ2hCLEtBQU93SSxHQUNETCxFQUNFSyxFQUFPRixRQUFRSCxJQUFXMEIsRUFBUTdnQixLQUFLd2YsR0FFM0NxQixFQUFRN2dCLEtBQUt3ZixHQUVmQSxFQUFTQSxFQUFPeEksY0FFbEIsT0FBTzZKLENBQ1QsQ0FDQSxTQUFTQyxFQUFxQjlYLEVBQUl1UyxHQU01QkEsR0FDRnZTLEVBQUd1QyxpQkFBaUIsaUJBTnRCLFNBQVN3VixFQUFhamMsR0FDaEJBLEVBQUVMLFNBQVd1RSxJQUNqQnVTLEVBQVN6WixLQUFLa0gsRUFBSWxFLEdBQ2xCa0UsRUFBRzJDLG9CQUFvQixnQkFBaUJvVixHQUMxQyxHQUlGLENBQ0EsU0FBU0MsRUFBaUJoWSxFQUFJaVksRUFBTUMsR0FDbEMsTUFBTTdjLEdBQVMsU0FDZixPQUFJNmMsRUFDS2xZLEVBQVksVUFBVGlZLEVBQW1CLGNBQWdCLGdCQUFrQnBFLFdBQVd4WSxFQUFPNlcsaUJBQWlCbFMsRUFBSSxNQUFNbVMsaUJBQTBCLFVBQVQ4RixFQUFtQixlQUFpQixlQUFpQnBFLFdBQVd4WSxFQUFPNlcsaUJBQWlCbFMsRUFBSSxNQUFNbVMsaUJBQTBCLFVBQVQ4RixFQUFtQixjQUFnQixrQkFFOVFqWSxFQUFHbVksV0FDWixDQUNBLFNBQVNDLEVBQWtCcFksR0FDekIsT0FBUTVILE1BQU1DLFFBQVEySCxHQUFNQSxFQUFLLENBQUNBLElBQUtqQyxRQUFPakMsS0FBT0EsR0FDdkQsQywyRUM3U0EsSUFBSXVjLEVBZ0JBQyxFQXFEQUMsRUE1REosU0FBU0MsSUFJUCxPQUhLSCxJQUNIQSxFQVZKLFdBQ0UsTUFBTWhkLEdBQVMsU0FDVHBGLEdBQVcsSUFBQWdYLEtBQ2pCLE1BQU8sQ0FDTHdMLGFBQWN4aUIsRUFBU3lpQixpQkFBbUJ6aUIsRUFBU3lpQixnQkFBZ0J6YixPQUFTLG1CQUFvQmhILEVBQVN5aUIsZ0JBQWdCemIsTUFDekgwYixTQUFVLGlCQUFrQnRkLEdBQVVBLEVBQU91ZCxlQUFpQjNpQixhQUFvQm9GLEVBQU91ZCxlQUU3RixDQUdjQyxJQUVMUixDQUNULENBNkNBLFNBQVNTLEVBQVVDLEdBT2pCLFlBTmtCLElBQWRBLElBQ0ZBLEVBQVksQ0FBQyxHQUVWVCxJQUNIQSxFQS9DSixTQUFvQlUsR0FDbEIsSUFBSSxVQUNGcEgsUUFDWSxJQUFWb0gsRUFBbUIsQ0FBQyxFQUFJQSxFQUM1QixNQUFNWCxFQUFVRyxJQUNWbmQsR0FBUyxTQUNUNGQsRUFBVzVkLEVBQU9zVyxVQUFVc0gsU0FDNUJDLEVBQUt0SCxHQUFhdlcsRUFBT3NXLFVBQVVDLFVBQ25DdUgsRUFBUyxDQUNiQyxLQUFLLEVBQ0xDLFNBQVMsR0FFTEMsRUFBY2plLEVBQU9nWCxPQUFPa0gsTUFDNUJDLEVBQWVuZSxFQUFPZ1gsT0FBT29ILE9BQzdCSixFQUFVSCxFQUFHUSxNQUFNLCtCQUN6QixJQUFJQyxFQUFPVCxFQUFHUSxNQUFNLHdCQUNwQixNQUFNRSxFQUFPVixFQUFHUSxNQUFNLDJCQUNoQkcsR0FBVUYsR0FBUVQsRUFBR1EsTUFBTSw4QkFDM0JJLEVBQXVCLFVBQWJiLEVBQ2hCLElBQUljLEVBQXFCLGFBQWJkLEVBcUJaLE9BakJLVSxHQUFRSSxHQUFTMUIsRUFBUU0sT0FEVixDQUFDLFlBQWEsWUFBYSxXQUFZLFdBQVksV0FBWSxXQUFZLFdBQVksV0FBWSxXQUFZLFdBQVksV0FBWSxZQUN4R3BFLFFBQVEsR0FBRytFLEtBQWVFLE1BQW1CLElBQzlGRyxFQUFPVCxFQUFHUSxNQUFNLHVCQUNYQyxJQUFNQSxFQUFPLENBQUMsRUFBRyxFQUFHLFdBQ3pCSSxHQUFRLEdBSU5WLElBQVlTLElBQ2RYLEVBQU9hLEdBQUssVUFDWmIsRUFBT0UsU0FBVSxJQUVmTSxHQUFRRSxHQUFVRCxLQUNwQlQsRUFBT2EsR0FBSyxNQUNaYixFQUFPQyxLQUFNLEdBSVJELENBQ1QsQ0FNbUJjLENBQVdsQixJQUVyQlQsQ0FDVCxDQTRCQSxTQUFTNEIsSUFJUCxPQUhLM0IsSUFDSEEsRUEzQkosV0FDRSxNQUFNbGQsR0FBUyxTQUNUOGQsRUFBU0wsSUFDZixJQUFJcUIsR0FBcUIsRUFDekIsU0FBU0MsSUFDUCxNQUFNbEIsRUFBSzdkLEVBQU9zVyxVQUFVQyxVQUFVeUksY0FDdEMsT0FBT25CLEVBQUczRSxRQUFRLFdBQWEsR0FBSzJFLEVBQUczRSxRQUFRLFVBQVksR0FBSzJFLEVBQUczRSxRQUFRLFdBQWEsQ0FDMUYsQ0FDQSxHQUFJNkYsSUFBWSxDQUNkLE1BQU1sQixFQUFLb0IsT0FBT2pmLEVBQU9zVyxVQUFVQyxXQUNuQyxHQUFJc0gsRUFBR2hXLFNBQVMsWUFBYSxDQUMzQixNQUFPcVgsRUFBT0MsR0FBU3RCLEVBQUc5WCxNQUFNLFlBQVksR0FBR0EsTUFBTSxLQUFLLEdBQUdBLE1BQU0sS0FBSzVKLEtBQUlpakIsR0FBT3BPLE9BQU9vTyxLQUMxRk4sRUFBcUJJLEVBQVEsSUFBZ0IsS0FBVkEsR0FBZ0JDLEVBQVEsQ0FDN0QsQ0FDRixDQUNBLE1BQU1FLEVBQVksK0NBQStDNWdCLEtBQUt1QixFQUFPc1csVUFBVUMsV0FDakYrSSxFQUFrQlAsSUFFeEIsTUFBTyxDQUNMQSxTQUFVRCxHQUFzQlEsRUFDaENSLHFCQUNBUyxVQUpnQkQsR0FBbUJELEdBQWF2QixFQUFPQyxJQUt2RHNCLFlBRUosQ0FHY0csSUFFTHRDLENBQ1QsQ0FpSkEsSUFBSXVDLEVBQWdCLENBQ2xCLEVBQUF2YSxDQUFHd2EsRUFBUUMsRUFBU0MsR0FDbEIsTUFBTUMsRUFBTzNqQixLQUNiLElBQUsyakIsRUFBS0MsaUJBQW1CRCxFQUFLN1A
2sVUFBVyxPQUFPNlAsRUFDcEQsR0FBdUIsbUJBQVpGLEVBQXdCLE9BQU9FLEVBQzFDLE1BQU1FLEVBQVNILEVBQVcsVUFBWSxPQUt0QyxPQUpBRixFQUFPM1osTUFBTSxLQUFLOUQsU0FBUStkLElBQ25CSCxFQUFLQyxnQkFBZ0JFLEtBQVFILEVBQUtDLGdCQUFnQkUsR0FBUyxJQUNoRUgsRUFBS0MsZ0JBQWdCRSxHQUFPRCxHQUFRSixFQUFRLElBRXZDRSxDQUNULEVBQ0EsSUFBQUksQ0FBS1AsRUFBUUMsRUFBU0MsR0FDcEIsTUFBTUMsRUFBTzNqQixLQUNiLElBQUsyakIsRUFBS0MsaUJBQW1CRCxFQUFLN1AsVUFBVyxPQUFPNlAsRUFDcEQsR0FBdUIsbUJBQVpGLEVBQXdCLE9BQU9FLEVBQzFDLFNBQVNLLElBQ1BMLEVBQUtNLElBQUlULEVBQVFRLEdBQ2JBLEVBQVlFLHVCQUNQRixFQUFZRSxlQUVyQixJQUFLLElBQUlDLEVBQU8xSCxVQUFVNWQsT0FBUXVsQixFQUFPLElBQUl2akIsTUFBTXNqQixHQUFPRSxFQUFPLEVBQUdBLEVBQU9GLEVBQU1FLElBQy9FRCxFQUFLQyxHQUFRNUgsVUFBVTRILEdBRXpCWixFQUFRYSxNQUFNWCxFQUFNUyxFQUN0QixDQUVBLE9BREFKLEVBQVlFLGVBQWlCVCxFQUN0QkUsRUFBSzNhLEdBQUd3YSxFQUFRUSxFQUFhTixFQUN0QyxFQUNBLEtBQUFhLENBQU1kLEVBQVNDLEdBQ2IsTUFBTUMsRUFBTzNqQixLQUNiLElBQUsyakIsRUFBS0MsaUJBQW1CRCxFQUFLN1AsVUFBVyxPQUFPNlAsRUFDcEQsR0FBdUIsbUJBQVpGLEVBQXdCLE9BQU9FLEVBQzFDLE1BQU1FLEVBQVNILEVBQVcsVUFBWSxPQUl0QyxPQUhJQyxFQUFLYSxtQkFBbUJ4SCxRQUFReUcsR0FBVyxHQUM3Q0UsRUFBS2EsbUJBQW1CWCxHQUFRSixHQUUzQkUsQ0FDVCxFQUNBLE1BQUFjLENBQU9oQixHQUNMLE1BQU1FLEVBQU8zakIsS0FDYixJQUFLMmpCLEVBQUtDLGlCQUFtQkQsRUFBSzdQLFVBQVcsT0FBTzZQLEVBQ3BELElBQUtBLEVBQUthLG1CQUFvQixPQUFPYixFQUNyQyxNQUFNMWUsRUFBUTBlLEVBQUthLG1CQUFtQnhILFFBQVF5RyxHQUk5QyxPQUhJeGUsR0FBUyxHQUNYMGUsRUFBS2EsbUJBQW1CdmMsT0FBT2hELEVBQU8sR0FFakMwZSxDQUNULEVBQ0EsR0FBQU0sQ0FBSVQsRUFBUUMsR0FDVixNQUFNRSxFQUFPM2pCLEtBQ2IsT0FBSzJqQixFQUFLQyxpQkFBbUJELEVBQUs3UCxVQUFrQjZQLEVBQy9DQSxFQUFLQyxpQkFDVkosRUFBTzNaLE1BQU0sS0FBSzlELFNBQVErZCxTQUNELElBQVpMLEVBQ1RFLEVBQUtDLGdCQUFnQkUsR0FBUyxHQUNyQkgsRUFBS0MsZ0JBQWdCRSxJQUM5QkgsRUFBS0MsZ0JBQWdCRSxHQUFPL2QsU0FBUSxDQUFDMmUsRUFBY3pmLE1BQzdDeWYsSUFBaUJqQixHQUFXaUIsRUFBYVIsZ0JBQWtCUSxFQUFhUixpQkFBbUJULElBQzdGRSxFQUFLQyxnQkFBZ0JFLEdBQU83YixPQUFPaEQsRUFBTyxFQUM1QyxHQUVKLElBRUswZSxHQVoyQkEsQ0FhcEMsRUFDQSxJQUFBMWEsR0FDRSxNQUFNMGEsRUFBTzNqQixLQUNiLElBQUsyakIsRUFBS0MsaUJBQW1CRCxFQUFLN1AsVUFBVyxPQUFPNlAsRUFDcEQsSUFBS0EsRUFBS0MsZ0JBQWlCLE9BQU9ELEVBQ2xDLElBQUlILEVBQ0FuZ0IsRUFDQXNoQixFQUNKLElBQUssSUFBSUMsRUFBUW5JLFVBQVU1ZCxPQUFRdWxCLEVBQU8sSUFBSXZqQixNQUFNK2pCLEdBQVFDLEVBQVEsRUFBR0EsRUFBUUQsRUFBT0MsSUFDcEZULEVBQUtTLEdBQVNwSSxVQUFVb0ksR0FFSCxpQkFBWlQsRUFBSyxJQUFtQnZqQixNQUFNQyxRQUFRc2pCLEVBQUssS0FDcERaLEVBQVNZLEVBQUssR0FDZC9nQixFQUFPK2dCLEVBQUtqaUIsTUFBTSxFQUFHaWlCLEVBQUt2bEIsUUFDMUI4bEIsRUFBVWhCLElBRVZILEVBQVNZLEVBQUssR0FBR1osT0FDakJuZ0IsRUFBTytnQixFQUFLLEdBQUcvZ0IsS0FDZnNoQixFQUFVUCxFQUFLLEdBQUdPLFNBQVdoQixHQUUvQnRnQixFQUFLeWhCLFFBQVFILEdBY2IsT0Fib0I5akIsTUFBTUMsUUFBUTBpQixHQUFVQSxFQUFTQSxFQUFPM1osTUFBTSxNQUN0RDlELFNBQVErZCxJQUNkSCxFQUFLYSxvQkFBc0JiLEVBQUthLG1CQUFtQjNsQixRQUNyRDhrQixFQUFLYSxtQkFBbUJ6ZSxTQUFRMmUsSUFDOUJBLEVBQWFKLE1BQU1LLEVBQVMsQ0FBQ2IsS0FBVXpnQixHQUFNLElBRzdDc2dCLEVBQUtDLGlCQUFtQkQsRUFBS0MsZ0JBQWdCRSxJQUMvQ0gsRUFBS0MsZ0JBQWdCRSxHQUFPL2QsU0FBUTJlLElBQ2xDQSxFQUFhSixNQUFNSyxFQUFTdGhCLEVBQUssR0FFckMsSUFFS3NnQixDQUNULEdBNldGLE1BQU1vQixFQUF1QixDQUFDclEsRUFBU3NRLEVBQVdyYyxLQUM1Q3FjLElBQWN0USxFQUFRL0ssVUFBVXVDLFNBQVN2RCxHQUMzQytMLEVBQVEvSyxVQUFVc0IsSUFBSXRDLElBQ1pxYyxHQUFhdFEsRUFBUS9LLFVBQVV1QyxTQUFTdkQsSUFDbEQrTCxFQUFRL0ssVUFBVWpELE9BQU9pQyxFQUMzQixFQStHRixNQUFNc2MsRUFBcUIsQ0FBQ3ZRLEVBQVNzUSxFQUFXcmMsS0FDMUNxYyxJQUFjdFEsRUFBUS9LLFVBQVV1QyxTQUFTdkQsR0FDM0MrTCxFQUFRL0ssVUFBVXNCLElBQUl0QyxJQUNacWMsR0FBYXRRLEVBQVEvSyxVQUFVdUMsU0FBU3ZELElBQ2xEK0wsRUFBUS9LLFVBQVVqRCxPQUFPaUMsRUFDM0IsRUEyREYsTUFBTXVjLEVBQXVCLENBQUNoZCxFQUFRaWQsS0FDcEMsSUFBS2pkLEdBQVVBLEVBQU80TCxZQUFjNUwsRUFBT0UsT0FBUSxPQUNuRCxNQUNNc00sRUFBVXlRLEVBQVF6VyxRQURJeEcsRUFBT2tCLFVBQVksZUFBaUIsSUFBSWxCLEVBQU9FLE9BQU9nZCxjQUVsRixHQUFJMVEsRUFBUyxDQUNYLElBQUkyUSxFQUFTM1EsRUFBUS9WLGNBQWMsSUFBSXVKLEVBQU9FLE9BQU9rZCx1QkFDaERELEdBQVVuZCxFQUFPa0IsWUFDaEJzTCxFQUFRZ0MsV0FDVjJPLEVBQVMzUSxFQUFRZ0MsV0FBVy9YLGNBQWMsSUFBSXVKLEVBQU9FLE9BQU9rZCxzQkFHNURsUix1QkFBc0IsS0FDaEJNLEVBQVFnQyxhQUNWMk8sRUFBUzNRLEVBQVFn
2QyxXQUFXL1gsY0FBYyxJQUFJdUosRUFBT0UsT0FBT2tkLHNCQUN4REQsR0FBUUEsRUFBTzNlLFNBQ3JCLEtBSUYyZSxHQUFRQSxFQUFPM2UsUUFDckIsR0FFSTZlLEVBQVMsQ0FBQ3JkLEVBQVFqRCxLQUN0QixJQUFLaUQsRUFBTzhHLE9BQU8vSixHQUFRLE9BQzNCLE1BQU1rZ0IsRUFBVWpkLEVBQU84RyxPQUFPL0osR0FBT3RHLGNBQWMsb0JBQy9Dd21CLEdBQVNBLEVBQVFoZSxnQkFBZ0IsVUFBVSxFQUUzQ3FlLEVBQVV0ZCxJQUNkLElBQUtBLEdBQVVBLEVBQU80TCxZQUFjNUwsRUFBT0UsT0FBUSxPQUNuRCxJQUFJcWQsRUFBU3ZkLEVBQU9FLE9BQU9zZCxvQkFDM0IsTUFBTS9pQixFQUFNdUYsRUFBTzhHLE9BQU9uUSxPQUMxQixJQUFLOEQsSUFBUThpQixHQUFVQSxFQUFTLEVBQUcsT0FDbkNBLEVBQVNoVyxLQUFLYyxJQUFJa1YsRUFBUTlpQixHQUMxQixNQUFNckQsRUFBZ0QsU0FBaEM0SSxFQUFPRSxPQUFPOUksY0FBMkI0SSxFQUFPeWQsdUJBQXlCbFcsS0FBS0MsS0FBS3hILEVBQU9FLE9BQU85SSxlQUNqSDBRLEVBQWM5SCxFQUFPOEgsWUFDM0IsR0FBSTlILEVBQU9FLE9BQU80SixNQUFROUosRUFBT0UsT0FBTzRKLEtBQUtDLEtBQU8sRUFBRyxDQUNyRCxNQUFNMlQsRUFBZTVWLEVBQ2Y2VixFQUFpQixDQUFDRCxFQUFlSCxHQVN2QyxPQVJBSSxFQUFlcG1CLFFBQVFvQixNQUFNeUIsS0FBSyxDQUNoQ3pELE9BQVE0bUIsSUFDUHhsQixLQUFJLENBQUM2bEIsRUFBR3hsQixJQUNGc2xCLEVBQWV0bUIsRUFBZ0JnQixVQUV4QzRILEVBQU84RyxPQUFPakosU0FBUSxDQUFDMk8sRUFBU3BVLEtBQzFCdWxCLEVBQWVsYSxTQUFTK0ksRUFBUXFSLFNBQVNSLEVBQU9yZCxFQUFRNUgsRUFBRSxHQUdsRSxDQUNBLE1BQU0wbEIsRUFBdUJoVyxFQUFjMVEsRUFBZ0IsRUFDM0QsR0FBSTRJLEVBQU9FLE9BQU9rQyxRQUFVcEMsRUFBT0UsT0FBT2hKLEtBQ3hDLElBQUssSUFBSWtCLEVBQUkwUCxFQUFjeVYsRUFBUW5sQixHQUFLMGxCLEVBQXVCUCxFQUFRbmxCLEdBQUssRUFBRyxDQUM3RSxNQUFNc08sR0FBYXRPLEVBQUlxQyxFQUFNQSxHQUFPQSxHQUNoQ2lNLEVBQVlvQixHQUFlcEIsRUFBWW9YLElBQXNCVCxFQUFPcmQsRUFBUTBHLEVBQ2xGLE1BRUEsSUFBSyxJQUFJdE8sRUFBSW1QLEtBQUthLElBQUlOLEVBQWN5VixFQUFRLEdBQUlubEIsR0FBS21QLEtBQUtjLElBQUl5VixFQUF1QlAsRUFBUTlpQixFQUFNLEdBQUlyQyxHQUFLLEVBQ3RHQSxJQUFNMFAsSUFBZ0IxUCxFQUFJMGxCLEdBQXdCMWxCLEVBQUkwUCxJQUN4RHVWLEVBQU9yZCxFQUFRNUgsRUFHckIsRUF5SkYsSUFBSWlILEVBQVMsQ0FDWDBlLFdBcHZCRixXQUNFLE1BQU0vZCxFQUFTbEksS0FDZixJQUFJZ2lCLEVBQ0FFLEVBQ0osTUFBTXpaLEVBQUtQLEVBQU9PLEdBRWhCdVosT0FEaUMsSUFBeEI5WixFQUFPRSxPQUFPNFosT0FBaUQsT0FBeEI5WixFQUFPRSxPQUFPNFosTUFDdEQ5WixFQUFPRSxPQUFPNFosTUFFZHZaLEVBQUd5ZCxZQUdYaEUsT0FEa0MsSUFBekJoYSxFQUFPRSxPQUFPOFosUUFBbUQsT0FBekJoYSxFQUFPRSxPQUFPOFosT0FDdERoYSxFQUFPRSxPQUFPOFosT0FFZHpaLEVBQUcwZCxhQUVBLElBQVZuRSxHQUFlOVosRUFBT2tJLGdCQUE2QixJQUFYOFIsR0FBZ0JoYSxFQUFPa2UsZUFLbkVwRSxFQUFRQSxFQUFRck4sVUFBUyxPQUFhbE0sRUFBSSxpQkFBbUIsRUFBRyxJQUFNa00sVUFBUyxPQUFhbE0sRUFBSSxrQkFBb0IsRUFBRyxJQUN2SHlaLEVBQVNBLEVBQVN2TixVQUFTLE9BQWFsTSxFQUFJLGdCQUFrQixFQUFHLElBQU1rTSxVQUFTLE9BQWFsTSxFQUFJLG1CQUFxQixFQUFHLElBQ3JIcU0sT0FBT0MsTUFBTWlOLEtBQVFBLEVBQVEsR0FDN0JsTixPQUFPQyxNQUFNbU4sS0FBU0EsRUFBUyxHQUNuQ2pnQixPQUFPNEksT0FBTzNDLEVBQVEsQ0FDcEI4WixRQUNBRSxTQUNBeEIsS0FBTXhZLEVBQU9rSSxlQUFpQjRSLEVBQVFFLElBRTFDLEVBd3RCRW1FLGFBdHRCRixXQUNFLE1BQU1uZSxFQUFTbEksS0FDZixTQUFTc21CLEVBQTBCMUosRUFBTTJKLEdBQ3ZDLE9BQU9qSyxXQUFXTSxFQUFLaEMsaUJBQWlCMVMsRUFBT3NlLGtCQUFrQkQsS0FBVyxFQUM5RSxDQUNBLE1BQU1uZSxFQUFTRixFQUFPRSxRQUNoQixVQUNKMkwsRUFBUyxTQUNUMFMsRUFDQS9GLEtBQU1nRyxFQUNOQyxhQUFjeFgsRUFBRyxTQUNqQnlYLEdBQ0UxZSxFQUNFMmUsRUFBWTNlLEVBQU9xSCxTQUFXbkgsRUFBT21ILFFBQVF2RixRQUM3QzhjLEVBQXVCRCxFQUFZM2UsRUFBT3FILFFBQVFQLE9BQU9uUSxPQUFTcUosRUFBTzhHLE9BQU9uUSxPQUNoRm1RLEdBQVMsSUFBQXpLLEdBQWdCa2lCLEVBQVUsSUFBSXZlLEVBQU9FLE9BQU9nZCw0QkFDckQ5VixFQUFldVgsRUFBWTNlLEVBQU9xSCxRQUFRUCxPQUFPblEsT0FBU21RLEVBQU9uUSxPQUN2RSxJQUFJOFEsRUFBVyxHQUNmLE1BQU1vWCxFQUFhLEdBQ2JDLEVBQWtCLEdBQ3hCLElBQUlDLEVBQWU3ZSxFQUFPOGUsbUJBQ0UsbUJBQWpCRCxJQUNUQSxFQUFlN2UsRUFBTzhlLG1CQUFtQjNsQixLQUFLMkcsSUFFaEQsSUFBSWlmLEVBQWMvZSxFQUFPZ2Ysa0JBQ0UsbUJBQWhCRCxJQUNUQSxFQUFjL2UsRUFBT2dmLGtCQUFrQjdsQixLQUFLMkcsSUFFOUMsTUFBTW1mLEVBQXlCbmYsRUFBT3lILFNBQVM5USxPQUN6Q3lvQixFQUEyQnBmLEVBQU82ZSxXQUFXbG9CLE9BQ25ELElBQUlVLEVBQWU2SSxFQUFPN0ksYUFDdEJnb0IsR0FBaUJOLEVBQ2pCTyxFQUFnQixFQUNoQnZpQixFQUFRLEVBQ1osUUFBMEIsSUFBZnloQixFQUNULE9BRTBCLGlCQUFqQm5uQixHQUE2QkEsRUFBYXlkLFFBQVEsTUFBUSxFQUNuRXpkLEVBQWUrYyxXQUFXL2MsRUFBYWlOLFFBQVEsSUFBSyxLQUFPLElBQU1rYSxFQUNoQyxpQkFBakJubkIsSUFDaEJBLEVBQWUrYyxXQUFXL2MsSUFFNUIySSxFQUFPdWYsYUFBZWxvQixFQUd0QnlQLEVBQU9qSixTQUFRMk8sSUFDVHZGLEVBQ0Z1RixFQUFRaFAsTUFBTWdpQixXQUFhLEdBRTNCaFQsRUFBUWhQLE1BQU1paUIsWUFBYyxHQUU5QmpULEVBQVFoUCxNQUFNa2lCLGFBQWUsR0FDN0JsVCxFQUFRaFAsTUFBTW1pQixVQUFZLEVBQUUsSUFJMUJ6ZixFQUFPMGYsZ0JBQWtCMWYsRUFBTzZNLFdBQ2xDLElBQUF2RSxHQUFlcUQsRUFBVyxrQ0FBbUMsS0FDN0QsSUFBQXJELEdBQWVxRCxFQUFXLGlDQUFrQyxLQUU5RCxNQUFNZ1UsRUFBYzNmLEVBQU80SixNQUFRNUosRUFBTzRKLEtBQUtDLEtBQU8sR0FBSy9KLEVBQU84SixLQVFsRSxJQUFJZ1csRUFQQUQsRUFDRjdmLEVBQU84SixLQUFLaVcsV0
2FBV2paLEdBQ2Q5RyxFQUFPOEosTUFDaEI5SixFQUFPOEosS0FBS2tXLGNBS2QsTUFBTUMsRUFBZ0QsU0FBekIvZixFQUFPOUksZUFBNEI4SSxFQUFPZ2dCLGFBQWVubUIsT0FBTzZELEtBQUtzQyxFQUFPZ2dCLGFBQWE1aEIsUUFBT1IsUUFDbkUsSUFBMUNvQyxFQUFPZ2dCLFlBQVlwaUIsR0FBSzFHLGdCQUNyQ1QsT0FBUyxFQUNaLElBQUssSUFBSXlCLEVBQUksRUFBR0EsRUFBSWdQLEVBQWNoUCxHQUFLLEVBQUcsQ0FFeEMsSUFBSStuQixFQUtKLEdBTkFMLEVBQVksRUFFUmhaLEVBQU8xTyxLQUFJK25CLEVBQVFyWixFQUFPMU8sSUFDMUJ5bkIsR0FDRjdmLEVBQU84SixLQUFLc1csWUFBWWhvQixFQUFHK25CLEVBQU9yWixJQUVoQ0EsRUFBTzFPLElBQXlDLFVBQW5DLE9BQWErbkIsRUFBTyxXQUFyQyxDQUVBLEdBQTZCLFNBQXpCamdCLEVBQU85SSxjQUEwQixDQUMvQjZvQixJQUNGblosRUFBTzFPLEdBQUdvRixNQUFNd0MsRUFBT3NlLGtCQUFrQixVQUFZLElBRXZELE1BQU0rQixFQUFjNU4saUJBQWlCME4sR0FDL0JHLEVBQW1CSCxFQUFNM2lCLE1BQU1rTSxVQUMvQjZXLEVBQXlCSixFQUFNM2lCLE1BQU1xVyxnQkFPM0MsR0FOSXlNLElBQ0ZILEVBQU0zaUIsTUFBTWtNLFVBQVksUUFFdEI2VyxJQUNGSixFQUFNM2lCLE1BQU1xVyxnQkFBa0IsUUFFNUIzVCxFQUFPc2dCLGFBQ1RWLEVBQVk5ZixFQUFPa0ksZ0JBQWlCLE9BQWlCaVksRUFBTyxTQUFTLElBQVEsT0FBaUJBLEVBQU8sVUFBVSxPQUMxRyxDQUVMLE1BQU1yRyxFQUFRc0UsRUFBMEJpQyxFQUFhLFNBQy9DSSxFQUFjckMsRUFBMEJpQyxFQUFhLGdCQUNyREssRUFBZXRDLEVBQTBCaUMsRUFBYSxpQkFDdERiLEVBQWFwQixFQUEwQmlDLEVBQWEsZUFDcERaLEVBQWNyQixFQUEwQmlDLEVBQWEsZ0JBQ3JETSxFQUFZTixFQUFZM04saUJBQWlCLGNBQy9DLEdBQUlpTyxHQUEyQixlQUFkQSxFQUNmYixFQUFZaEcsRUFBUTBGLEVBQWFDLE1BQzVCLENBQ0wsTUFBTSxZQUNKekIsRUFBVyxZQUNYdEYsR0FDRXlILEVBQ0pMLEVBQVloRyxFQUFRMkcsRUFBY0MsRUFBZWxCLEVBQWFDLEdBQWUvRyxFQUFjc0YsRUFDN0YsQ0FDRixDQUNJc0MsSUFDRkgsRUFBTTNpQixNQUFNa00sVUFBWTRXLEdBRXRCQyxJQUNGSixFQUFNM2lCLE1BQU1xVyxnQkFBa0IwTSxHQUU1QnJnQixFQUFPc2dCLGVBQWNWLEVBQVl2WSxLQUFLSSxNQUFNbVksR0FDbEQsTUFDRUEsR0FBYXRCLEdBQWN0ZSxFQUFPOUksY0FBZ0IsR0FBS0MsR0FBZ0I2SSxFQUFPOUksY0FDMUU4SSxFQUFPc2dCLGVBQWNWLEVBQVl2WSxLQUFLSSxNQUFNbVksSUFDNUNoWixFQUFPMU8sS0FDVDBPLEVBQU8xTyxHQUFHb0YsTUFBTXdDLEVBQU9zZSxrQkFBa0IsVUFBWSxHQUFHd0IsT0FHeERoWixFQUFPMU8sS0FDVDBPLEVBQU8xTyxHQUFHd29CLGdCQUFrQmQsR0FFOUJoQixFQUFnQnZuQixLQUFLdW9CLEdBQ2pCNWYsRUFBTzBmLGdCQUNUUCxFQUFnQkEsRUFBZ0JTLEVBQVksRUFBSVIsRUFBZ0IsRUFBSWpvQixFQUM5QyxJQUFsQmlvQixHQUE2QixJQUFObG5CLElBQVNpbkIsRUFBZ0JBLEVBQWdCYixFQUFhLEVBQUlubkIsR0FDM0UsSUFBTmUsSUFBU2luQixFQUFnQkEsRUFBZ0JiLEVBQWEsRUFBSW5uQixHQUMxRGtRLEtBQUs0SSxJQUFJa1AsR0FBaUIsT0FBVUEsRUFBZ0IsR0FDcERuZixFQUFPc2dCLGVBQWNuQixFQUFnQjlYLEtBQUtJLE1BQU0wWCxJQUNoRHRpQixFQUFRbUQsRUFBT3VHLGdCQUFtQixHQUFHZ0IsRUFBU2xRLEtBQUs4bkIsR0FDdkRSLEVBQVd0bkIsS0FBSzhuQixLQUVabmYsRUFBT3NnQixlQUFjbkIsRUFBZ0I5WCxLQUFLSSxNQUFNMFgsS0FDL0N0aUIsRUFBUXdLLEtBQUtjLElBQUlySSxFQUFPRSxPQUFPMmdCLG1CQUFvQjlqQixJQUFVaUQsRUFBT0UsT0FBT3VHLGdCQUFtQixHQUFHZ0IsRUFBU2xRLEtBQUs4bkIsR0FDcEhSLEVBQVd0bkIsS0FBSzhuQixHQUNoQkEsRUFBZ0JBLEVBQWdCUyxFQUFZem9CLEdBRTlDMkksRUFBT3VmLGFBQWVPLEVBQVl6b0IsRUFDbENpb0IsRUFBZ0JRLEVBQ2hCL2lCLEdBQVMsQ0FyRTJELENBc0V0RSxDQWFBLEdBWkFpRCxFQUFPdWYsWUFBY2hZLEtBQUthLElBQUlwSSxFQUFPdWYsWUFBYWYsR0FBY1MsRUFDNURoWSxHQUFPeVgsSUFBK0IsVUFBbEJ4ZSxFQUFPakosUUFBd0MsY0FBbEJpSixFQUFPakosVUFDMUQ0VSxFQUFVck8sTUFBTXNjLE1BQVEsR0FBRzlaLEVBQU91ZixZQUFjbG9CLE9BRTlDNkksRUFBTzRnQixpQkFDVGpWLEVBQVVyTyxNQUFNd0MsRUFBT3NlLGtCQUFrQixVQUFZLEdBQUd0ZSxFQUFPdWYsWUFBY2xvQixPQUUzRXdvQixHQUNGN2YsRUFBTzhKLEtBQUtpWCxrQkFBa0JqQixFQUFXclksSUFJdEN2SCxFQUFPMGYsZUFBZ0IsQ0FDMUIsTUFBTW9CLEVBQWdCLEdBQ3RCLElBQUssSUFBSTVvQixFQUFJLEVBQUdBLEVBQUlxUCxFQUFTOVEsT0FBUXlCLEdBQUssRUFBRyxDQUMzQyxJQUFJNm9CLEVBQWlCeFosRUFBU3JQLEdBQzFCOEgsRUFBT3NnQixlQUFjUyxFQUFpQjFaLEtBQUtJLE1BQU1zWixJQUNqRHhaLEVBQVNyUCxJQUFNNEgsRUFBT3VmLFlBQWNmLEdBQ3RDd0MsRUFBY3pwQixLQUFLMHBCLEVBRXZCLENBQ0F4WixFQUFXdVosRUFDUHpaLEtBQUtJLE1BQU0zSCxFQUFPdWYsWUFBY2YsR0FBY2pYLEtBQUtJLE1BQU1GLEVBQVNBLEVBQVM5USxPQUFTLElBQU0sR0FDNUY4USxFQUFTbFEsS0FBS3lJLEVBQU91ZixZQUFjZixFQUV2QyxDQUNBLEdBQUlHLEdBQWF6ZSxFQUFPaEosS0FBTSxDQUM1QixNQUFNc2hCLEVBQU9zRyxFQUFnQixHQUFLem5CLEVBQ2xDLEdBQUk2SSxFQUFPdUcsZUFBaUIsRUFBRyxDQUM3QixNQUFNeWEsRUFBUzNaLEtBQUtDLE1BQU14SCxFQUFPcUgsUUFBUThaLGFBQWVuaEIsRUFBT3FILFFBQVErWixhQUFlbGhCLEVBQU91RyxnQkFDdkY0YSxFQUFZN0ksRUFBT3RZLEVBQU91RyxlQUNoQyxJQUFLLElBQUlyTyxFQUFJLEVBQUdBLEVBQUk4b0IsRUFBUTlvQixHQUFLLEVBQy9CcVAsRUFBU2xRLEtBQUtrUSxFQUFTQSxFQUFTOVEsT0FBUyxHQUFLMHFCLEVBRWxELENBQ0EsSUFBSyxJQUFJanBCLEVBQUksRUFBR0EsRUFBSTRILEVBQU9xSCxRQUFROFosYUFBZW5oQixFQUFPcUgsUUFBUStaLFlBQWFocEIsR0FBSyxFQUNuRCxJQUExQjhILEVBQU91RyxnQkFDVGdCLEVBQVNsUSxLQUFLa1EsRUFBU0EsRUFBUzlRLE9BQVMsR0FBSzZoQixHQUVoRHFHLEVBQVd0bkIsS0FBS3NuQixFQUFXQSxFQUFXbG9CLE9BQVMsR0FBSzZoQixHQUNwRHhZLEVBQU91ZixhQUFlL0csQ0FFMUIsQ0FFQSxHQUR3QixJQUFwQi9RLEVBQVM5USxTQUFjOFEsRUFBVyxDQUFDLElBQ2xCLElBQWpCcFEsRUFBb0IsQ0FDdEIsTUFBTXlHLEVBQU1rQyxFQUFPa0ksZ0JBQWtCakIsRU
2FBTSxhQUFlakgsRUFBT3NlLGtCQUFrQixlQUNuRnhYLEVBQU94SSxRQUFPLENBQUNzZixFQUFHMEQsTUFDWHBoQixFQUFPNk0sVUFBVzdNLEVBQU9oSixPQUMxQm9xQixJQUFleGEsRUFBT25RLE9BQVMsSUFJbENrSCxTQUFRMk8sSUFDVEEsRUFBUWhQLE1BQU1NLEdBQU8sR0FBR3pHLEtBQWdCLEdBRTVDLENBQ0EsR0FBSTZJLEVBQU8wZixnQkFBa0IxZixFQUFPcWhCLHFCQUFzQixDQUN4RCxJQUFJQyxFQUFnQixFQUNwQjFDLEVBQWdCamhCLFNBQVE0akIsSUFDdEJELEdBQWlCQyxHQUFrQnBxQixHQUFnQixFQUFFLElBRXZEbXFCLEdBQWlCbnFCLEVBQ2pCLE1BQU1xcUIsRUFBVUYsRUFBZ0JoRCxFQUNoQy9XLEVBQVdBLEVBQVMxUCxLQUFJNHBCLEdBQ2xCQSxHQUFRLEdBQVc1QyxFQUNuQjRDLEVBQU9ELEVBQWdCQSxFQUFVekMsRUFDOUIwQyxHQUVYLENBQ0EsR0FBSXpoQixFQUFPMGhCLHlCQUEwQixDQUNuQyxJQUFJSixFQUFnQixFQUNwQjFDLEVBQWdCamhCLFNBQVE0akIsSUFDdEJELEdBQWlCQyxHQUFrQnBxQixHQUFnQixFQUFFLElBRXZEbXFCLEdBQWlCbnFCLEVBQ2pCLE1BQU13cUIsR0FBYzNoQixFQUFPOGUsb0JBQXNCLElBQU05ZSxFQUFPZ2YsbUJBQXFCLEdBQ25GLEdBQUlzQyxFQUFnQkssRUFBYXJELEVBQVksQ0FDM0MsTUFBTXNELEdBQW1CdEQsRUFBYWdELEVBQWdCSyxHQUFjLEVBQ3BFcGEsRUFBUzVKLFNBQVEsQ0FBQzhqQixFQUFNL1osS0FDdEJILEVBQVNHLEdBQWErWixFQUFPRyxDQUFlLElBRTlDakQsRUFBV2hoQixTQUFRLENBQUM4akIsRUFBTS9aLEtBQ3hCaVgsRUFBV2pYLEdBQWErWixFQUFPRyxDQUFlLEdBRWxELENBQ0YsQ0FPQSxHQU5BL25CLE9BQU80SSxPQUFPM0MsRUFBUSxDQUNwQjhHLFNBQ0FXLFdBQ0FvWCxhQUNBQyxvQkFFRTVlLEVBQU8wZixnQkFBa0IxZixFQUFPNk0sVUFBWTdNLEVBQU9xaEIscUJBQXNCLEVBQzNFLElBQUEvWSxHQUFlcUQsRUFBVyxtQ0FBdUNwRSxFQUFTLEdBQWIsT0FDN0QsSUFBQWUsR0FBZXFELEVBQVcsaUNBQXFDN0wsRUFBT3dZLEtBQU8sRUFBSXNHLEVBQWdCQSxFQUFnQm5vQixPQUFTLEdBQUssRUFBbkUsTUFDNUQsTUFBTW9yQixHQUFpQi9oQixFQUFPeUgsU0FBUyxHQUNqQ3VhLEdBQW1CaGlCLEVBQU82ZSxXQUFXLEdBQzNDN2UsRU
2FBT3lILFNBQVd6SCxFQUFPeUgsU0FBUzFQLEtBQUlrcUIsR0FBS0EsRUFBSUYsSUFDL0MvaEIsRUFBTzZlLFdBQWE3ZSxFQUFPNmUsV0FBVzltQixLQUFJa3FCLEdBQUtBLEVBQUlELEdBQ3JELENBZUEsR0FkSTVhLElBQWlCd1gsR0FDbkI1ZSxFQUFPZSxLQUFLLHNCQUVWMEcsRUFBUzlRLFNBQVd3b0IsSUFDbEJuZixFQUFPRSxPQUFPMkIsZUFBZTdCLEVBQU9raUIsZ0JBQ3hDbGlCLEVBQU9lLEtBQUsseUJBRVY4ZCxFQUFXbG9CLFNBQVd5b0IsR0FDeEJwZixFQUFPZSxLQUFLLDBCQUVWYixFQUFPb1EscUJBQ1R0USxFQUFPbWlCLHFCQUVUbmlCLEVBQU9lLEtBQUssbUJBQ1A0ZCxHQUFjemUsRUFBTzZNLFNBQThCLFVBQWxCN00sRUFBT2pKLFFBQXdDLFNBQWxCaUosRUFBT2pKLFFBQW9CLENBQzVGLE1BQU1tckIsRUFBc0IsR0FBR2xpQixFQUFPd1Asd0NBQ2hDMlMsRUFBNkJyaUIsRUFBT08sR0FBR2tCLFVBQVV1QyxTQUFTb2UsR0FDNURoYixHQUFnQmxILEVBQU9vaUIsd0JBQ3BCRCxHQUE0QnJpQixFQUFPTyxHQUFHa0IsVUFBVXNCLElBQUlxZixHQUNoREMsR0FDVHJpQixFQUFPTyxHQUFHa0IsVUFBVWpELE9BQU80akIsRUFFL0IsQ0FDRixFQXNjRUcsaUJBcGNGLFNBQTBCcHJCLEdBQ3hCLE1BQU02SSxFQUFTbEksS0FDVDBxQixFQUFlLEdBQ2Y3RCxFQUFZM2UsRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBQzFELElBQ0kxSixFQURBcXFCLEVBQVksRUFFSyxpQkFBVnRyQixFQUNUNkksRUFBT21QLGNBQWNoWSxJQUNGLElBQVZBLEdBQ1Q2SSxFQUFPbVAsY0FBY25QLEVBQU9FLE9BQU8vSSxPQUVyQyxNQUFNdXJCLEVBQWtCM2xCLEdBQ2xCNGhCLEVBQ0szZSxFQUFPOEcsT0FBTzlHLEVBQU8yaUIsb0JBQW9CNWxCLElBRTNDaUQsRUFBTzhHLE9BQU8vSixHQUd2QixHQUFvQyxTQUFoQ2lELEVBQU9FLE9BQU85SSxlQUE0QjRJLEVBQU9FLE9BQU85SSxjQUFnQixFQUMxRSxHQUFJNEksRUFBT0UsT0FBTzBmLGdCQUNmNWYsRUFBTzRpQixlQUFpQixJQUFJL2tCLFNBQVFzaUIsSUFDbkNxQyxFQUFhanJCLEtBQUs0b0IsRUFBTSxTQUcxQixJQUFLL25CLEVBQUksRUFBR0EsRUFBSW1QLEtBQUtDLEtBQUt4SCxFQUFPRSxPQUFPOUksZUFBZ0JnQixHQUFLLEVBQUcsQ0FDOUQsTUFBTTJFLEVBQVFpRCxFQUFPOEgsWUFBYzFQLEVBQ25DLEdBQUkyRSxFQUFRaUQsRUFBTzhHLE9BQU9uUSxTQUFXZ29CLEVBQVcsTUFDaEQ2RCxFQUFhanJCLEtBQUttckIsRUFBZ0IzbEIsR0FDcEMsTUFHRnlsQixFQUFhanJCLEtBQUttckIsRUFBZ0IxaUIsRUFBTzhILGNBSTNDLElBQUsxUCxFQUFJLEVBQUdBLEVBQUlvcUIsRUFBYTdyQixPQUFReUIsR0FBSyxFQUN4QyxRQUErQixJQUFwQm9xQixFQUFhcHFCLEdBQW9CLENBQzFDLE1BQU00aEIsRUFBU3dJLEVBQWFwcUIsR0FBR3lxQixhQUMvQkosRUFBWXpJLEVBQVN5SSxFQUFZekksRUFBU3lJLENBQzVDLEVBSUVBLEdBQTJCLElBQWRBLEtBQWlCemlCLEVBQU82TCxVQUFVck8sTUFBTXdjLE9BQVMsR0FBR3lJLE1BQ3ZFLEVBeVpFTixtQkF2WkYsV0FDRSxNQUFNbmlCLEVBQVNsSSxLQUNUZ1AsRUFBUzlHLEVBQU84RyxPQUVoQmdjLEVBQWM5aUIsRUFBT2tCLFVBQVlsQixFQUFPa0ksZUFBaUJsSSxFQUFPNkwsVUFBVWtYLFdBQWEvaUIsRUFBTzZMLFVBQVVtWCxVQUFZLEVBQzFILElBQUssSUFBSTVxQixFQUFJLEVBQUdBLEVBQUkwTyxFQUFPblEsT0FBUXlCLEdBQUssRUFDdEMwTyxFQUFPMU8sR0FBRzJYLG1CQUFxQi9QLEVBQU9rSSxlQUFpQnBCLEVBQU8xTyxHQUFHMnFCLFdBQWFqYyxFQUFPMU8sR0FBRzRxQixXQUFhRixFQUFjOWlCLEVBQU9pakIsdUJBRTlILEVBZ1pFQyxxQkF2WUYsU0FBOEJsVCxRQUNWLElBQWRBLElBQ0ZBLEVBQVlsWSxNQUFRQSxLQUFLa1ksV0FBYSxHQUV4QyxNQUFNaFEsRUFBU2xJLEtBQ1RvSSxFQUFTRixFQUFPRSxRQUNoQixPQUNKNEcsRUFDQTJYLGFBQWN4WCxFQUFHLFNBQ2pCUSxHQUNFekgsRUFDSixHQUFzQixJQUFsQjhHLEVBQU9uUSxPQUFjLFlBQ2tCLElBQWhDbVEsRUFBTyxHQUFHaUosbUJBQW1DL1AsRUFBT21pQixxQkFDL0QsSUFBSWdCLEdBQWdCblQsRUFDaEIvSSxJQUFLa2MsRUFBZW5ULEdBQ3hCaFEsRUFBT29qQixxQkFBdUIsR0FDOUJwakIsRUFBTzRpQixjQUFnQixHQUN2QixJQUFJdnJCLEVBQWU2SSxFQUFPN0ksYUFDRSxpQkFBakJBLEdBQTZCQSxFQUFheWQsUUFBUSxNQUFRLEVBQ25FemQsRUFBZStjLFdBQVcvYyxFQUFhaU4sUUFBUSxJQUFLLEtBQU8sSUFBTXRFLEVBQU93WSxLQUN2QyxpQkFBakJuaEIsSUFDaEJBLEVBQWUrYyxXQUFXL2MsSUFFNUIsSUFBSyxJQUFJZSxFQUFJLEVBQUdBLEVBQUkwTyxFQUFPblEsT0FBUXlCLEdBQUssRUFBRyxDQUN6QyxNQUFNK25CLEVBQVFyWixFQUFPMU8sR0FDckIsSUFBSWlyQixFQUFjbEQsRU
2FBTXBRLGtCQUNwQjdQLEVBQU82TSxTQUFXN00sRUFBTzBmLGlCQUMzQnlELEdBQWV2YyxFQUFPLEdBQUdpSixtQkFFM0IsTUFBTXVULEdBQWlCSCxHQUFnQmpqQixFQUFPMGYsZUFBaUI1ZixFQUFPdWpCLGVBQWlCLEdBQUtGLElBQWdCbEQsRUFBTVMsZ0JBQWtCdnBCLEdBQzlIbXNCLEdBQXlCTCxFQUFlMWIsRUFBUyxJQUFNdkgsRUFBTzBmLGVBQWlCNWYsRUFBT3VqQixlQUFpQixHQUFLRixJQUFnQmxELEVBQU1TLGdCQUFrQnZwQixHQUNwSm9zQixJQUFnQk4sRUFBZUUsR0FDL0JLLEVBQWFELEVBQWN6akIsRUFBTzhlLGdCQUFnQjFtQixHQUNsRHVyQixFQUFpQkYsR0FBZSxHQUFLQSxHQUFlempCLEVBQU93WSxLQUFPeFksRUFBTzhlLGdCQUFnQjFtQixHQUN6RndyQixFQUFZSCxHQUFlLEdBQUtBLEVBQWN6akIsRUFBT3dZLEtBQU8sR0FBS2tMLEVBQWEsR0FBS0EsR0FBYzFqQixFQUFPd1ksTUFBUWlMLEdBQWUsR0FBS0MsR0FBYzFqQixFQUFPd1ksS0FDM0pvTCxJQUNGNWpCLEVBQU80aUIsY0FBY3JyQixLQUFLNG9CLEdBQzFCbmdCLEVBQU9vakIscUJBQXFCN3JCLEtBQUthLElBRW5DeWtCLEVBQXFCc0QsRUFBT3lELEVBQVcxakIsRUFBTzJqQixtQkFDOUNoSCxFQUFxQnNELEVBQU93RCxFQUFnQnpqQixFQUFPNGpCLHdCQUNuRDNELEVBQU0vUCxTQUFXbkosR0FBT3FjLEVBQWdCQSxFQUN4Q25ELEVBQU00RCxpQkFBbUI5YyxHQUFPdWMsRUFBd0JBLENBQzFELENBQ0YsRUE0VkVRLGVBMVZGLFNBQXdCaFUsR0FDdEIsTUFBTWhRLEVBQVNsSSxLQUNmLFFBQXlCLElBQWRrWSxFQUEyQixDQUNwQyxNQUFNaVUsRUFBYWprQixFQUFPeWUsY0FBZ0IsRUFBSSxFQUU5Q3pPLEVBQVloUSxHQUFVQSxFQUFPZ1EsV0FBYWhRLEVBQU9nUSxVQUFZaVUsR0FBYyxDQUM3RSxDQUNBLE1BQU0vakIsRUFBU0YsRUFBT0UsT0FDaEJna0IsRUFBaUJsa0IsRUFBT21rQixlQUFpQm5rQixFQUFPdWpCLGVBQ3RELElBQUksU0FDRm5ULEVBQVEsWUFDUmpPLEVBQVcsTUFDWEUsRUFBSyxhQUNMK2hCLEdBQ0Vwa0IsRUFDSixNQUFNcWtCLEVBQWVsaUIsRUFDZm1pQixFQUFTamlCLEVBQ2YsR0FBdUIsSUFBbkI2aEIsRUFDRjlULEVBQVcsRUFDWGpPLEdBQWMsRUFDZEUsR0FBUSxNQUNILENBQ0wrTixHQUFZSixFQUFZaFEsRUFBT3VqQixnQkFBa0JXLEVBQ2pELE1BQU1LLEVBQXFCaGQsS0FBSzRJLElBQUlILEVBQVloUSxFQUFPdWpCLGdCQUFrQixFQUNuRWlCLEVBQWVqZCxLQUFLNEksSUFBSUgsRUFBWWhRLEVBQU9ta0IsZ0JBQWtCLEVBQ25FaGlCLEVBQWNvaUIsR0FBc0JuVSxHQUFZLEVBQ2hEL04sRUFBUW1pQixHQUFnQnBVLEdBQVksRUFDaENtVSxJQUFvQm5VLEVBQVcsR0FDL0JvVSxJQUFjcFUsRUFBVyxFQUMvQixDQUNBLEdBQUlsUSxFQUFPaEosS0FBTSxDQUNmLE1BQU11dEIsRUFBa0J6a0IsRUFBTzJpQixvQkFBb0IsR0FDN0MrQixFQUFpQjFrQixFQUFPMmlCLG9CQUFvQjNpQixFQUFPOEcsT0FBT25RLE9BQVMsR0FDbkVndUIsRUFBc0Iza0IsRUFBTzZlLFdBQVc0RixHQUN4Q0csRUFBcUI1a0IsRUFBTzZlLFdBQVc2RixHQUN2Q0csRUFBZTdrQixFQUFPNmUsV0FBVzdlLEVBQU82ZSxXQUFXbG9CLE9BQVMsR0FDNURtdUIsRUFBZXZkLEtBQUs0SSxJQUFJSCxHQUU1Qm9VLEVBREVVLEdBQWdCSCxHQUNGRyxFQUFlSCxHQUF1QkUsR0FFdENDLEVBQWVELEVBQWVELEdBQXNCQyxFQUVsRVQsRUFBZSxJQUFHQSxHQUFnQixFQUN4QyxDQUNBcnFCLE9BQU80SSxPQUFPM0MsRUFBUSxDQUNwQm9RLFdBQ0FnVSxlQUNBamlCLGNBQ0FFLFdBRUVuQyxFQUFPb1EscUJBQXVCcFEsRUFBTzBmLGdCQUFrQjFmLEVBQU82a0IsYUFBWS9rQixFQUFPa2pCLHFCQUFxQmxULEdBQ3RHN04sSUFBZ0JraUIsR0FDbEJya0IsRUFBT2UsS0FBSyx5QkFFVnNCLElBQVVpaUIsR0FDWnRrQixFQUFPZSxLQUFLLG9CQUVWc2pCLElBQWlCbGlCLEdBQWVtaUIsSUFBV2ppQixJQUM3Q3JDLEVBQU9lLEtBQUssWUFFZGYsRUFBT2UsS0FBSyxXQUFZcVAsRUFDMUIsRUE4UkU0VSxvQkFyUkYsV0FDRSxNQUFNaGxCLEVBQVNsSSxNQUNULE9BQ0pnUCxFQUFNLE9BQ041RyxFQUFNLFNBQ05xZSxFQUFRLFlBQ1J6VyxHQUNFOUgsRUFDRTJlLEVBQVkzZSxFQUFPcUgsU0FBV25ILEVBQU9tSCxRQUFRdkYsUUFDN0MrZCxFQUFjN2YsRUFBTzhKLE1BQVE1SixFQUFPNEosTUFBUTVKLEVBQU80SixLQUFLQyxLQUFPLEVBQy9Ea2IsRUFBbUJ2TyxJQUNoQixJQUFBcmEsR0FBZ0JraUIsRUFBVSxJQUFJcmUsRUFBT2dkLGFBQWF4RyxrQkFBeUJBLEtBQVksR0FFaEcsSUFBSXdPLEVBQ0FDLEVBQ0FDLEVBQ0osR0FBSXpHLEVBQ0YsR0FBSXplLEVBQU9oSixLQUFNLENBQ2YsSUFBSW9xQixFQUFheFosRUFBYzlILEVBQU9xSCxRQUFROFosYUFDMUNHLEVBQWEsSUFBR0EsRUFBYXRoQixFQUFPcUgsUUFBUVAsT0FBT25RLE9BQVMycUIsR0FDNURBLEdBQWN0aEIsRUFBT3FILFFBQVFQLE9BQU9uUSxTQUFRMnFCLEdBQWN0aEIsRUFBT3FILFFBQVFQLE9BQU9uUSxRQUNwRnV1QixFQUFjRCxFQUFpQiw2QkFBNkIzRCxNQUM5RCxNQUNFNEQsRUFBY0QsRUFBaUIsNkJBQTZCbmQsWUFHMUQrWCxHQUNGcUYsRUFBY3BlLEVBQU94SSxRQUFPa08sR0FBV0EsRUFBUXFSLFNBQVcvVixJQUFhLEdBQ3ZFc2QsRUFBWXRlLEVBQU94SSxRQUFPa08sR0FBV0EsRUFBUXFSLFNBQVcvVixFQUFjLElBQUcsR0FDekVxZCxFQUFZcmUsRUFBT3hJLFFBQU9rTyxHQUFXQSxFQUFRcVIsU0FBVy9WLEVBQWMsSUFBRyxJQUV6RW9kLEVBQWNwZSxFQUFPZ0IsR0FHckJvZCxJQUNHckYsSUFFSHVGLEdBQVksT0FBZUYsRUFBYSxJQUFJaGxCLEVBQU9nZCw0QkFBNEIsR0FDM0VoZCxFQUFPaEosT0FBU2t1QixJQUNsQkEsRUFBWXRlLEVBQU8sSUFJckJxZSxHQU
2FZLE9BQWVELEVBQWEsSUFBSWhsQixFQUFPZ2QsNEJBQTRCLEdBQzNFaGQsRUFBT2hKLE1BQXVCLEtBQWRpdUIsSUFDbEJBLEVBQVlyZSxFQUFPQSxFQUFPblEsT0FBUyxNQUl6Q21RLEVBQU9qSixTQUFRMk8sSUFDYnVRLEVBQW1CdlEsRUFBU0EsSUFBWTBZLEVBQWFobEIsRUFBT21sQixrQkFDNUR0SSxFQUFtQnZRLEVBQVNBLElBQVk0WSxFQUFXbGxCLEVBQU9vbEIsZ0JBQzFEdkksRUFBbUJ2USxFQUFTQSxJQUFZMlksRUFBV2psQixFQUFPcWxCLGVBQWUsSUFFM0V2bEIsRUFBT3dsQixtQkFDVCxFQStORUMsa0JBdElGLFNBQTJCQyxHQUN6QixNQUFNMWxCLEVBQVNsSSxLQUNUa1ksRUFBWWhRLEVBQU95ZSxhQUFlemUsRUFBT2dRLFdBQWFoUSxFQUFPZ1EsV0FDN0QsU0FDSnZJLEVBQVEsT0FDUnZILEVBQ0E0SCxZQUFhWCxFQUNiVCxVQUFXZ0IsRUFDWEUsVUFBV0MsR0FDVDdILEVBQ0osSUFDSTRILEVBREFFLEVBQWM0ZCxFQUVsQixNQUFNQyxFQUFzQkMsSUFDMUIsSUFBSWxmLEVBQVlrZixFQUFTNWxCLEVBQU9xSCxRQUFROFosYUFPeEMsT0FOSXphLEVBQVksSUFDZEEsRUFBWTFHLEVBQU9xSCxRQUFRUCxPQUFPblEsT0FBUytQLEdBRXpDQSxHQUFhMUcsRUFBT3FILFFBQVFQLE9BQU9uUSxTQUNyQytQLEdBQWExRyxFQUFPcUgsUUFBUVAsT0FBT25RLFFBRTlCK1AsQ0FBUyxFQUtsQixRQUgyQixJQUFoQm9CLElBQ1RBLEVBL0NKLFNBQW1DOUgsR0FDakMsTUFBTSxXQUNKNmUsRUFBVSxPQUNWM2UsR0FDRUYsRUFDRWdRLEVBQVloUSxFQUFPeWUsYUFBZXplLEVBQU9nUSxXQUFhaFEsRUFBT2dRLFVBQ25FLElBQUlsSSxFQUNKLElBQUssSUFBSTFQLEVBQUksRUFBR0EsRUFBSXltQixFQUFXbG9CLE9BQVF5QixHQUFLLE9BQ1QsSUFBdEJ5bUIsRUFBV3ptQixFQUFJLEdBQ3BCNFgsR0FBYTZPLEVBQVd6bUIsSUFBTTRYLEVBQVk2TyxFQUFXem1CLEVBQUksSUFBTXltQixFQUFXem1CLEVBQUksR0FBS3ltQixFQUFXem1CLElBQU0sRUFDdEcwUCxFQUFjMVAsRUFDTDRYLEdBQWE2TyxFQUFXem1CLElBQU00WCxFQUFZNk8sRUFBV3ptQixFQUFJLEtBQ2xFMFAsRUFBYzFQLEVBQUksR0FFWDRYLEdBQWE2TyxFQUFXem1CLEtBQ2pDMFAsRUFBYzFQLEdBT2xCLE9BSEk4SCxFQUFPMmxCLHNCQUNML2QsRUFBYyxRQUE0QixJQUFoQkEsS0FBNkJBLEVBQWMsR0FFcEVBLENBQ1QsQ0F3QmtCZ2UsQ0FBMEI5bEIsSUFFdEN5SCxFQUFTcU4sUUFBUTlFLElBQWMsRUFDakNwSSxFQUFZSCxFQUFTcU4sUUFBUTlFLE9BQ3hCLENBQ0wsTUFBTStWLEVBQU94ZSxLQUFLYyxJQUFJbkksRUFBTzJnQixtQkFBb0IvWSxHQUNqREYsRUFBWW1lLEVBQU94ZSxLQUFLSSxPQUFPRyxFQUFjaWUsR0FBUTdsQixFQUFPdUcsZUFDOUQsQ0FFQSxHQURJbUIsR0FBYUgsRUFBUzlRLFNBQVFpUixFQUFZSCxFQUFTOVEsT0FBUyxHQUM1RG1SLElBQWdCWCxJQUFrQm5ILEVBQU9FLE9BQU9oSixLQUtsRCxZQUpJMFEsSUFBY0MsSUFDaEI3SCxFQUFPNEgsVUFBWUEsRUFDbkI1SCxFQUFPZSxLQUFLLHFCQUloQixHQUFJK0csSUFBZ0JYLEdBQWlCbkgsRUFBT0UsT0FBT2hKLE1BQVE4SSxFQUFPcUgsU0FBV3JILEVBQU9FLE9BQU9tSCxRQUFRdkYsUUFFakcsWUFEQTlCLEVBQU8wRyxVQUFZaWYsRUFBb0I3ZCxJQUd6QyxNQUFNK1gsRUFBYzdmLEVBQU84SixNQUFRNUosRUFBTzRKLE1BQVE1SixFQUFPNEosS0FBS0MsS0FBTyxFQUdyRSxJQUFJckQsRUFDSixHQUFJMUcsRUFBT3FILFNBQVduSCxFQUFPbUgsUUFBUXZGLFNBQVc1QixFQUFPaEosS0FDckR3UCxFQUFZaWYsRUFBb0I3ZCxRQUMzQixHQUFJK1gsRUFBYSxDQUN0QixNQUFNbUcsRUFBcUJobUIsRUFBTzhHLE9BQU94SSxRQUFPa08sR0FBV0EsRUFBUXFSLFNBQVcvVixJQUFhLEdBQzNGLElBQUltZSxFQUFtQnhaLFNBQVN1WixFQUFtQnRaLGFBQWEsMkJBQTRCLElBQ3hGRSxPQUFPQyxNQUFNb1osS0FDZkEsRUFBbUIxZSxLQUFLYSxJQUFJcEksRUFBTzhHLE9BQU9nTyxRQUFRa1IsR0FBcUIsSUFFekV0ZixFQUFZYSxLQUFLSSxNQUFNc2UsRUFBbUIvbEIsRUFBTzRKLEtBQUtDLEtBQ3hELE1BQU8sR0FBSS9KLEVBQU84RyxPQUFPZ0IsR0FBYyxDQUNyQyxNQUFNd1osRUFBYXRoQixFQUFPOEcsT0FBT2dCLEdBQWE0RSxhQUFhLDJCQUV6RGhHLEVBREU0YSxFQUNVN1UsU0FBUzZVLEVBQVksSUFFckJ4WixDQUVoQixNQUNFcEIsRUFBWW9CLEVBRWQvTixPQUFPNEksT0FBTzNDLEVBQVEsQ0FDcEI2SCxvQkFDQUQsWUFDQUYsb0JBQ0FoQixZQUNBUyxnQkFDQVcsZ0JBRUU5SCxFQUFPa21CLGFBQ1Q1SSxFQUFRdGQsR0FFVkEsRUFBT2UsS0FBSyxxQkFDWmYsRUFBT2UsS0FBSyxvQkFDUmYsRUFBT2ttQixhQUFlbG1CLEVBQU9FLE9BQU9pbUIsc0JBQ2xDemUsSUFBc0JoQixHQUN4QjFHLEVBQU9lLEtBQUssbUJBRWRmLEVBQU9lLEtBQUssZUFFaEIsRUFrREVxbEIsbUJBaERGLFNBQTRCN2xCLEVBQUltRCxHQUM5QixNQUFNMUQsRUFBU2xJLEtBQ1RvSSxFQUFTRixFQUFPRSxPQUN0QixJQUFJaWdCLEVBQVE1ZixFQUFHaUcsUUFBUSxJQUFJdEcsRUFBT2dkLDZCQUM3QmlELEdBQVNuZ0IsRUFBT2tCLFdBQWF3QyxHQUFRQSxFQUFLL00sT0FBUyxHQUFLK00sRUFBS0QsU0FBU2xELElBQ3pFLElBQUltRCxFQUFLekosTUFBTXlKLEVBQUtvUixRQUFRdlUsR0FBTSxFQUFHbUQsRUFBSy9NLFNBQVNrSCxTQUFRZ0csS0FDcERzYyxHQUFTdGMsRUFBT2dULFNBQVdoVCxFQUFPZ1QsUUFBUSxJQUFJM1csRUFBT2dkLDhCQUN4RGlELEVBQVF0YyxFQUNWLElBR0osSUFDSXlkLEVBREErRSxHQUFhLEVBRWpCLEdBQUlsRyxFQUNGLElBQUssSUFBSS9uQixFQUFJLEVBQUdBLEVBQUk0SCxFQUFPOEcsT0FBT25RLE9BQVF5QixHQUFLLEVBQzdDLEdBQUk0SCxFQUFPOEcsT0FBTzFPLEtBQU8rbkIsRUFBTyxDQUM5QmtHLEdBQWEsRUFDYi9FLEVBQWFscEIsRUFDYixLQUNGLENBR0osSUFBSStuQixJQUFTa0csRUFVWCxPQUZBcm1CLEVBQU9zbUIsa0JBQWVuZSxPQUN0Qm5JLEVBQU91bUIsa0JBQWVwZSxHQVJ0Qm5JLEVBQU9zbUIsYUFBZW5HLEVBQ2xCbmdCLEVBQU9xSCxTQUFXckgsRUFBT0UsT0FBT21ILFFBQVF2RixRQUMxQzlCLEVBQU91bUIsYUFBZTlaLFNBQVMwVCxFQUFNelQsYUFBYSwyQkFBNEIsSUFFOUUxTSxFQUFPdW1CLGFBQWVqRixFQU90QnBoQixFQUFPc21CLDBCQUErQ3JlLElBQXhCbkksRUFBT3VtQixjQUE4QnZtQixFQUFPdW1CLGVBQWlCdm1CLEVBQU84SCxhQUNwRzlILEVBQU93bUIscUJBRVgsR0ErS0EsSUFBSXhXLEVBQVksQ0FDZHFELGFBbEtGLFNBQTRCQyxRQUNiLElBQVRBLElBQ0ZBLEVBQU94YixLQUFLb1EsZUFBaUIsSUFBTSxLQUVyQyxNQUNNLE9BQ0
2poSSxFQUNBdWUsYUFBY3hYLEVBQUcsVUFDakIrSSxFQUFTLFVBQ1RuRSxHQUxhL1QsS0FPZixHQUFJb0ksRUFBT2tPLGlCQUNULE9BQU9uSCxHQUFPK0ksRUFBWUEsRUFFNUIsR0FBSTlQLEVBQU82TSxRQUNULE9BQU9pRCxFQUVULElBQUl5VyxHQUFtQixPQUFhNWEsRUFBV3lILEdBRy9DLE9BRkFtVCxHQWRlM3VCLEtBY1ltckIsd0JBQ3ZCaGMsSUFBS3dmLEdBQW9CQSxHQUN0QkEsR0FBb0IsQ0FDN0IsRUE4SUV2WCxhQTVJRixTQUFzQmMsRUFBVzBXLEdBQy9CLE1BQU0xbUIsRUFBU2xJLE1BRWIybUIsYUFBY3hYLEVBQUcsT0FDakIvRyxFQUFNLFVBQ04yTCxFQUFTLFNBQ1R1RSxHQUNFcFEsRUFDSixJQTBCSTJtQixFQTFCQUMsRUFBSSxFQUNKQyxFQUFJLEVBRUo3bUIsRUFBT2tJLGVBQ1QwZSxFQUFJM2YsR0FBTytJLEVBQVlBLEVBRXZCNlcsRUFBSTdXLEVBRUY5UCxFQUFPc2dCLGVBQ1RvRyxFQUFJcmYsS0FBS0ksTUFBTWlmLEdBQ2ZDLEVBQUl0ZixLQUFLSSxNQUFNa2YsSUFFakI3bUIsRUFBTzhtQixrQkFBb0I5bUIsRUFBT2dRLFVBQ2xDaFEsRUFBT2dRLFVBQVloUSxFQUFPa0ksZUFBaUIwZSxFQUFJQyxFQUMzQzNtQixFQUFPNk0sUUFDVGxCLEVBQVU3TCxFQUFPa0ksZUFBaUIsYUFBZSxhQUFlbEksRUFBT2tJLGdCQUFrQjBlLEdBQUtDLEVBQ3BGM21CLEVBQU9rTyxtQkFDYnBPLEVBQU9rSSxlQUNUMGUsR0FBSzVtQixFQUFPaWpCLHdCQUVaNEQsR0FBSzdtQixFQUFPaWpCLHdCQUVkcFgsRUFBVXJPLE1BQU1rTSxVQUFZLGVBQWVrZCxRQUFRQyxhQUtyRCxNQUFNM0MsRUFBaUJsa0IsRUFBT21rQixlQUFpQm5rQixFQUFPdWpCLGVBRXBEb0QsRUFEcUIsSUFBbkJ6QyxFQUNZLEdBRUNsVSxFQUFZaFEsRUFBT3VqQixnQkFBa0JXLEVBRWxEeUMsSUFBZ0J2VyxHQUNsQnBRLEVBQU9na0IsZUFBZWhVLEdBRXhCaFEsRUFBT2UsS0FBSyxlQUFnQmYsRUFBT2dRLFVBQVcwVyxFQUNoRCxFQWdHRW5ELGFBOUZGLFdBQ0UsT0FBUXpyQixLQUFLMlAsU0FBUyxFQUN4QixFQTZGRTBjLGFBM0ZGLFdBQ0UsT0FBUXJzQixLQUFLMlAsU0FBUzNQLEtBQUsyUCxTQUFTOVEsT0FBUyxFQUMvQyxFQTBGRW93QixZQXhGRixTQUFxQi9XLEVBQVc3WSxFQUFPNnZCLEVBQWNDLEVBQWlCNVosUUFDbEQsSUFBZDJDLElBQ0ZBLEVBQVksUUFFQSxJQUFWN1ksSUFDRkEsRUFBUVcsS0FBS29JLE9BQU8vSSxZQUVELElBQWpCNnZCLElBQ0ZBLEdBQWUsUUFFTyxJQUFwQkMsSUFDRkEsR0FBa0IsR0FFcEIsTUFBTWpuQixFQUFTbEksTUFDVCxPQUNKb0ksRUFBTSxVQUNOMkwsR0FDRTdMLEVBQ0osR0FBSUEsRUFBTzROLFdBQWExTixFQUFPZ25CLCtCQUM3QixPQUFPLEVBRVQsTUFBTTNELEVBQWV2akIsRUFBT3VqQixlQUN0QlksRUFBZW5rQixFQUFPbWtCLGVBQzVCLElBQUlnRCxFQUtKLEdBSmlEQSxFQUE3Q0YsR0FBbUJqWCxFQUFZdVQsRUFBNkJBLEVBQXNCMEQsR0FBbUJqWCxFQUFZbVUsRUFBNkJBLEVBQWlDblUsRUFHbkxoUSxFQUFPZ2tCLGVBQWVtRCxHQUNsQmpuQixFQUFPNk0sUUFBUyxDQUNsQixNQUFNcWEsRUFBTXBuQixFQUFPa0ksZUFDbkIsR0FBYyxJQUFWL1EsRUFDRjBVLEVBQVV1YixFQUFNLGFBQWUsY0FBZ0JELE1BQzFDLENBQ0wsSUFBS25uQixFQUFPNFksUUFBUUksYUFNbEIsT0FMQSxPQUFxQixDQUNuQmhaLFNBQ0F5VixnQkFBaUIwUixFQUNqQnpSLEtBQU0wUixFQUFNLE9BQVMsU0FFaEIsRUFFVHZiLEVBQVV5SyxTQUFTLENBQ2pCLENBQUM4USxFQUFNLE9BQVMsUUFBU0QsRUFDekJFLFNBQVUsVUFFZCxDQUNBLE9BQU8sQ0FDVCxDQWlDQSxPQWhDYyxJQUFWbHdCLEdBQ0Y2SSxFQUFPbVAsY0FBYyxHQUNyQm5QLEVBQU9rUCxhQUFhaVksR0FDaEJILElBQ0ZobkIsRUFBT2UsS0FBSyx3QkFBeUI1SixFQUFPa1csR0FDNUNyTixFQUFPZSxLQUFLLG9CQUdkZixFQUFPbVAsY0FBY2hZLEdBQ3JCNkksRUFBT2tQLGFBQWFpWSxHQUNoQkgsSUFDRmhuQixFQUFPZSxLQUFLLHdCQUF5QjVKLEVBQU9rVyxHQUM1Q3JOLEVBQU9lLEtBQUssb0JBRVRmLEVBQU80TixZQUNWNU4sRUFBTzROLFdBQVksRUFDZDVOLEVBQU9zbkIsb0NBQ1Z0bkIsRUFBT3NuQixrQ0FBb0MsU0FBdUJqckIsR0FDM0QyRCxJQUFVQSxFQUFPNEwsV0FDbEJ2UCxFQUFFTCxTQUFXbEUsT0FDakJrSSxFQUFPNkwsVUFBVTNJLG9CQUFvQixnQkFBaUJsRCxFQUFPc25CLG1DQUM3RHRuQixFQUFPc25CLGtDQUFvQyxZQUNwQ3RuQixFQUFPc25CLGtDQUNkdG5CLEVBQU80TixXQUFZLEVBQ2ZvWixHQUNGaG5CLEVBQU9lLEtBQUssaUJBRWhCLEdBRUZmLEVBQU82TCxVQUFVL0ksaUJBQWlCLGdCQUFpQjlDLEVBQU9zbkIsc0NBR3ZELENBQ1QsR0FtQkEsU0FBU0MsRUFBZTNtQixHQUN0QixJQUFJLE9BQ0ZaLEVBQU0sYUFDTmduQixFQUFZLFVBQ1pRLEVBQVMsS0FDVEMsR0FDRTdtQixFQUNKLE1BQU0sWUFDSmtILEVBQVcsY0FDWFgsR0FDRW5ILEVBQ0osSUFBSTZDLEVBQU0ya0IsRUFLVixHQUpLM2tCLElBQzhCQSxFQUE3QmlGLEVBQWNYLEVBQXFCLE9BQWdCVyxFQUFjWCxFQUFxQixPQUFrQixTQUU5R25ILEVBQU9lLEtBQUssYUFBYTBtQixLQUNyQlQsR0FBZ0JsZixJQUFnQlgsRUFBZSxDQUNqRCxHQUFZLFVBQVJ0RSxFQUVGLFlBREE3QyxFQUFPZSxLQUFLLHVCQUF1QjBtQixLQUdyQ3puQixFQUFPZSxLQUFLLHdCQUF3QjBtQixLQUN4QixTQUFSNWtCLEVBQ0Y3QyxFQUFPZSxLQUFLLHNCQUFzQjBtQixLQUVsQ3puQixFQUFPZSxLQUFLLHNCQUFzQjBtQixJQUV0QyxDQUNGLENBc2RBLElBQUl0SCxFQUFRLENBQ1ZuW
2ixRQXhhRixTQUFpQmpLLEVBQU81RixFQUFPNnZCLEVBQWMzWixFQUFVcWEsUUFDdkMsSUFBVjNxQixJQUNGQSxFQUFRLFFBRVcsSUFBakJpcUIsSUFDRkEsR0FBZSxHQUVJLGlCQUFWanFCLElBQ1RBLEVBQVEwUCxTQUFTMVAsRUFBTyxLQUUxQixNQUFNaUQsRUFBU2xJLEtBQ2YsSUFBSXdwQixFQUFhdmtCLEVBQ2J1a0IsRUFBYSxJQUFHQSxFQUFhLEdBQ2pDLE1BQU0sT0FDSnBoQixFQUFNLFNBQ051SCxFQUFRLFdBQ1JvWCxFQUFVLGNBQ1YxWCxFQUFhLFlBQ2JXLEVBQ0EyVyxhQUFjeFgsRUFBRyxVQUNqQjRFLEVBQVMsUUFDVC9KLEdBQ0U5QixFQUNKLElBQUs4QixJQUFZdUwsSUFBYXFhLEdBQVcxbkIsRUFBTzRMLFdBQWE1TCxFQUFPNE4sV0FBYTFOLEVBQU9nbkIsK0JBQ3RGLE9BQU8sT0FFWSxJQUFWL3ZCLElBQ1RBLEVBQVE2SSxFQUFPRSxPQUFPL0ksT0FFeEIsTUFBTTR1QixFQUFPeGUsS0FBS2MsSUFBSXJJLEVBQU9FLE9BQU8yZ0IsbUJBQW9CUyxHQUN4RCxJQUFJMVosRUFBWW1lLEVBQU94ZSxLQUFLSSxPQUFPMlosRUFBYXlFLEdBQVEvbEIsRUFBT0UsT0FBT3VHLGdCQUNsRW1CLEdBQWFILEVBQVM5USxTQUFRaVIsRUFBWUgsRUFBUzlRLE9BQVMsR0FDaEUsTUFBTXFaLEdBQWF2SSxFQUFTRyxHQUU1QixHQUFJMUgsRUFBTzJsQixvQkFDVCxJQUFLLElBQUl6dEIsRUFBSSxFQUFHQSxFQUFJeW1CLEVBQVdsb0IsT0FBUXlCLEdBQUssRUFBRyxDQUM3QyxNQUFNdXZCLEdBQXVCcGdCLEtBQUtJLE1BQWtCLElBQVpxSSxHQUNsQzRYLEVBQWlCcmdCLEtBQUtJLE1BQXNCLElBQWhCa1gsRUFBV3ptQixJQUN2Q3l2QixFQUFxQnRnQixLQUFLSSxNQUEwQixJQUFwQmtYLEVBQVd6bUIsRUFBSSxTQUNwQixJQUF0QnltQixFQUFXem1CLEVBQUksR0FDcEJ1dkIsR0FBdUJDLEdBQWtCRCxFQUFzQkUsR0FBc0JBLEVBQXFCRCxHQUFrQixFQUM5SHRHLEVBQWFscEIsRUFDSnV2QixHQUF1QkMsR0FBa0JELEVBQXNCRSxJQUN4RXZHLEVBQWFscEIsRUFBSSxHQUVWdXZCLEdBQXVCQyxJQUNoQ3RHLEVBQWFscEIsRUFFakIsQ0FHRixHQUFJNEgsRUFBT2ttQixhQUFlNUUsSUFBZXhaLEVBQWEsQ0FDcEQsSUFBSzlILEVBQU84bkIsaUJBQW1CN2dCLEVBQU0rSSxFQUFZaFEsRUFBT2dRLFdBQWFBLEVBQVloUSxFQUFPdWpCLGVBQWlCdlQsRUFBWWhRLEVBQU9nUSxXQUFhQSxFQUFZaFEsRUFBT3VqQixnQkFDMUosT0FBTyxFQUVULElBQUt2akIsRUFBTytuQixnQkFBa0IvWCxFQUFZaFEsRUFBT2dRLFdBQWFBLEVBQVloUSxFQUFPbWtCLGlCQUMxRXJjLEdBQWUsS0FBT3daLEVBQ3pCLE9BQU8sQ0FHYixDQU9BLElBQUlrRyxFQUlKLEdBVklsRyxLQUFnQm5hLEdBQWlCLElBQU02ZixHQUN6Q2huQixFQUFPZSxLQUFLLDBCQUlkZixFQUFPZ2tCLGVBQWVoVSxHQUVRd1gsRUFBMUJsRyxFQUFheFosRUFBeUIsT0FBZ0J3WixFQUFheFosRUFBeUIsT0FBd0IsUUFHcEhiLElBQVErSSxJQUFjaFEsRUFBT2dRLFlBQWMvSSxHQUFPK0ksSUFBY2hRLEVBQU9nUSxVQWN6RSxPQWJBaFEsRUFBT3lsQixrQkFBa0JuRSxHQUVyQnBoQixFQUFPNmtCLFlBQ1Qva0IsRUFBT3VpQixtQkFFVHZpQixFQUFPZ2xCLHNCQUNlLFVBQWxCOWtCLEVBQU9qSixRQUNUK0ksRUFBT2tQLGFBQWFjLEdBRUosVUFBZHdYLElBQ0Z4bkIsRUFBT2dvQixnQkFBZ0JoQixFQUFjUSxHQUNyQ3huQixFQUFPaW9CLGNBQWNqQixFQUFjUSxLQUU5QixFQUVULEdBQUl0bkIsRUFBTzZNLFFBQVMsQ0FDbEIsTUFBTXFhLEVBQU1wbkIsRUFBT2tJLGVBQ2JnZ0IsRUFBSWpoQixFQUFNK0ksR0FBYUEsRUFDN0IsR0FBYyxJQUFWN1ksRUFBYSxDQUNmLE1BQU13bkIsRUFBWTNlLEVBQU9xSCxTQUFXckgsRUFBT0UsT0FBT21ILFFBQVF2RixRQUN0RDZjLElBQ0YzZSxFQUFPNkwsVUFBVXJPLE1BQU1zWSxlQUFpQixPQUN4QzlWLEVBQU9tb0IsbUJBQW9CLEdBRXpCeEosSUFBYzNlLEVBQU9vb0IsMkJBQTZCcG9CLEVBQU9FLE9BQU9tb0IsYUFBZSxHQUNqRnJvQixFQUFPb29CLDJCQUE0QixFQUNuQ2xjLHVCQUFzQixLQUNwQkwsRUFBVXViLEVBQU0sYUFBZSxhQUFlYyxDQUFDLEtBR2pEcmMsRUFBVXViLEVBQU0sYUFBZSxhQUFlYyxFQUU1Q3ZKLEdBQ0Z6Uyx1QkFBc0IsS0FDcEJsTSxFQUFPNkwsVUFBVXJPLE1BQU1zWSxlQUFpQixHQUN4QzlWLEVBQU9tb0IsbUJBQW9CLENBQUssR0FHdEMsS0FBTyxDQUNMLElBQUtub0IsRUFBTzRZLFFBQVFJLGFBTWxCLE9BTEEsT0FBcUIsQ0FDbkJoWixTQUNBeVYsZUFBZ0J5UyxFQUNoQnhTLEtBQU0wUixFQUFNLE9BQVMsU0FFaEIsRUFFVHZiLEVBQVV5SyxTQUFTLENBQ2pCLENBQUM4USxFQUFNLE9BQVMsT0FBUWMsRUFDeEJiLFNBQVUsVUFFZCxDQUNBLE9BQU8sQ0FDVCxDQXVCQSxPQXRCQXJuQixFQUFPbVAsY0FBY2hZLEdBQ3JCNkksRUFBT2tQLGFBQWFjLEdBQ3BCaFEsRUFBT3lsQixrQkFBa0JuRSxHQUN6QnRoQixFQUFPZ2xCLHNCQUNQaGxCLEVBQU9lLEtBQUssd0JBQXlCNUosRUFBT2tXLEdBQzVDck4sRUFBT2dvQixnQkFBZ0JoQixFQUFjUSxHQUN2QixJQUFWcndCLEVBQ0Y2SSxFQUFPaW9CLGNBQWNqQixFQUFjUSxHQUN6QnhuQixFQUFPNE4sWUFDakI1TixFQUFPNE4sV0FBWSxFQUNkNU4sRUFBT3NvQixnQ0FDVnRvQixFQUFPc29CLDhCQUFnQyxTQUF1QmpzQixHQUN2RDJELElBQVVBLEVBQU80TCxXQUNsQnZQLEVBQUVMLFNBQVdsRSxPQUNqQmtJLEVBQU82TCxVQUFVM0ksb0JBQW9CLGdCQUFpQmxELEVBQU9zb0IsK0JBQzdEdG9CLEVBQU9zb0IsOEJBQWdDLFlBQ2hDdG9CLEVBQU9zb0IsOEJBQ2R0b0IsRUFBT2lvQixjQUFjakIsRUFBY1EsR0FDckMsR0FFRnhuQixFQUFPNkwsVUFBVS9JLGlCQUFpQixnQkFBaUI5QyxFQUFPc29CLGlDQUVyRCxDQUNULEVBb1JFdmhCLFlBbFJGLFNBQXFCaEssRUFBTzVGLEVBQU82dkIsRUFBYzNaLEdBTy9DLFFBTmMsSUFBVnRRLElBQ0ZBLEVBQVEsUUFFVyxJQUFqQmlxQixJQUNGQSxHQUFlLEdBRUksaUJBQVZqcUIsRUFBb0IsQ0FFN0JBLEVBRHNCMFAsU0FBUzFQLEVBQU8sR0FFeEMsQ0FDQSxNQUFNaUQsRUFBU2xJLEtBQ2YsR0FBSWtJLEVBQU80TCxVQUFXLFlBQ0QsSUFBVnpVLElBQ1RBLEVBQVE2SSxFQUFPRSxPQUFPL0ksT0FFeEIsTUFBTTBvQixFQUFjN2YsRUFBTzhKLE1BQVE5SixFQUFPRSxPQUFPNEosTUFBUTlKLEVBQU9FLE9BQU80SixLQUFLQyxLQUFPLEVBQ25GLElBQUl3ZSxFQUFXeHJCLEVBQ2YsR0FBSWlELEVBQU9FLE9BQU9oSixLQUNoQixHQUFJOEksRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBRTFDeW1CLEdBQXNCdm9CLEVBQU9xSCxRQUFROFosaUJBQ2hDLENBQ0wsSUFBSXFILEVBQ0osR0FBSTNJLEVBQWEsQ0FDZixNQUFNeUIsRUFBYWlILEVBQVd2b0IsRUFBT0UsT0FBTzRKLEtBQUtDLEtBQ2pEeWUsRUFBbUJ4b0IsRUFBTzhHLE9BQU94SSxRQUFPa08sR0FBNkQsRUFBbERBLEVBQVFFLGFBQWEsNkJBQW1DNFUsSUFBWSxHQUFHekQsTUFDNUgsTUFDRTJLLEVBQW1CeG9CLEVBQU8yaUIsb0JBQW9CNEYsR0FFaEQsTUFBTUUsRUFBTzVJLEVBQWN0WSxLQUFLQyxLQUFLeEgsRUFBTzhHLE9BQU9uUSxPQUFTcUosRU
2FBT0UsT0FBTzRKLEtBQUtDLE1BQVEvSixFQUFPOEcsT0FBT25RLFFBQy9GLGVBQ0ppcEIsR0FDRTVmLEVBQU9FLE9BQ1gsSUFBSTlJLEVBQWdCNEksRUFBT0UsT0FBTzlJLGNBQ1osU0FBbEJBLEVBQ0ZBLEVBQWdCNEksRUFBT3lkLHdCQUV2QnJtQixFQUFnQm1RLEtBQUtDLEtBQUs0TSxXQUFXcFUsRUFBT0UsT0FBTzlJLGNBQWUsS0FDOUR3b0IsR0FBa0J4b0IsRUFBZ0IsR0FBTSxJQUMxQ0EsR0FBZ0MsSUFHcEMsSUFBSXN4QixFQUFjRCxFQUFPRCxFQUFtQnB4QixFQU81QyxHQU5Jd29CLElBQ0Y4SSxFQUFjQSxHQUFlRixFQUFtQmpoQixLQUFLQyxLQUFLcFEsRUFBZ0IsSUFFeEVpVyxHQUFZdVMsR0FBa0QsU0FBaEM1ZixFQUFPRSxPQUFPOUksZ0JBQTZCeW9CLElBQzNFNkksR0FBYyxHQUVaQSxFQUFhLENBQ2YsTUFBTWxCLEVBQVk1SCxFQUFpQjRJLEVBQW1CeG9CLEVBQU84SCxZQUFjLE9BQVMsT0FBUzBnQixFQUFtQnhvQixFQUFPOEgsWUFBYyxFQUFJOUgsRUFBT0UsT0FBTzlJLGNBQWdCLE9BQVMsT0FDaEw0SSxFQUFPMm9CLFFBQVEsQ0FDYm5CLFlBQ0F4Z0IsU0FBUyxFQUNUaWYsaUJBQWdDLFNBQWR1QixFQUF1QmdCLEVBQW1CLEVBQUlBLEVBQW1CQyxFQUFPLEVBQzFGRyxlQUE4QixTQUFkcEIsRUFBdUJ4bkIsRUFBTzBHLGVBQVl5QixHQUU5RCxDQUNBLEdBQUkwWCxFQUFhLENBQ2YsTUFBTXlCLEVBQWFpSCxFQUFXdm9CLEVBQU9FLE9BQU80SixLQUFLQyxLQUNqRHdlLEVBQVd2b0IsRUFBTzhHLE9BQU94SSxRQUFPa08sR0FBNkQsRUFBbERBLEVBQVFFLGFBQWEsNkJBQW1DNFUsSUFBWSxHQUFHekQsTUFDcEgsTUFDRTBLLEVBQVd2b0IsRUFBTzJpQixvQkFBb0I0RixFQUUxQyxDQUtGLE9BSEFyYyx1QkFBc0IsS0FDcEJsTSxFQUFPZ0gsUUFBUXVoQixFQUFVcHhCLEVBQU82dkIsRUFBYzNaLEVBQVMsSUFFbERyTixDQUNULEVBNE1FMEMsVUF6TUYsU0FBbUJ2TCxFQUFPNnZCLEVBQWMzWixRQUNqQixJQUFqQjJaLElBQ0ZBLEdBQWUsR0FFakIsTUFBTWhuQixFQUFTbEksTUFDVCxRQUNKZ0ssRUFBTyxPQUNQNUIsRUFBTSxVQUNOME4sR0FDRTVOLEVBQ0osSUFBSzhCLEdBQVc5QixFQUFPNEwsVUFBVyxPQUFPNUwsT0FDcEIsSUFBVjdJLElBQ1RBLEVBQVE2SSxFQUFPRSxPQUFPL0ksT0FFeEIsSUFBSTB4QixFQUFXM29CLEVBQU91RyxlQUNPLFNBQXpCdkcsRUFBTzlJLGVBQXNELElBQTFCOEksRUFBT3VHLGdCQUF3QnZHLEVBQU80b0IscUJBQzNFRCxFQUFXdGhCLEtBQUthLElBQUlwSSxFQUFPeWQscUJBQXFCLFdBQVcsR0FBTyxJQUVwRSxNQUFNc0wsRUFBWS9vQixFQUFPOEgsWUFBYzVILEVBQU8yZ0IsbUJBQXFCLEVBQUlnSSxFQUNqRWxLLEVBQVkzZSxFQUFPcUgsU0FBV25ILEVBQU9tSCxRQUFRdkYsUUFDbkQsR0FBSTVCLEVBQU9oSixLQUFNLENBQ2YsR0FBSTBXLElBQWMrUSxHQUFhemUsRUFBTzhvQixvQkFBcUIsT0FBTyxFQU1sRSxHQUxBaHBCLEVBQU8yb0IsUUFBUSxDQUNibkIsVUFBVyxTQUdieG5CLEVBQU9pcEIsWUFBY2pwQixFQUFPNkwsVUFBVXFkLFdBQ2xDbHBCLEVBQU84SCxjQUFnQjlILEVBQU84RyxPQUFPblEsT0FBUyxHQUFLdUosRUFBTzZNLFFBSTVELE9BSEFiLHVCQUFzQixLQUNwQmxNLEVBQU9nSCxRQUFRaEgsRUFBTzhILFlBQWNpaEIsRUFBVzV4QixFQUFPNnZCLEVBQWMzWixFQUFTLEtBRXhFLENBRVgsQ0FDQSxPQUFJbk4sRUFBT2tDLFFBQVVwQyxFQUFPcUMsTUFDbkJyQyxFQUFPZ0gsUUFBUSxFQUFHN1AsRUFBTzZ2QixFQUFjM1osR0FFekNyTixFQUFPZ0gsUUFBUWhILEVBQU84SCxZQUFjaWhCLEVBQVc1eEIsRUFBTzZ2QixFQUFjM1osRUFDN0UsRUFvS0U3SyxVQWpLRixTQUFtQnJMLEVBQU82dkIsRUFBYzNaLFFBQ2pCLElBQWpCMlosSUFDRkEsR0FBZSxHQUVqQixNQUFNaG5CLEVBQVNsSSxNQUNULE9BQ0pvSSxFQUFNLFNBQ051SCxFQUFRLFdBQ1JvWCxFQUFVLGFBQ1ZKLEVBQVksUUFDWjNjLEVBQU8sVUFDUDhMLEdBQ0U1TixFQUNKLElBQUs4QixHQUFXOUIsRUFBTzRMLFVBQVcsT0FBTzVMLE9BQ3BCLElBQVY3SSxJQUNUQSxFQUFRNkksRUFBT0UsT0FBTy9JLE9BRXhCLE1BQU13bkIsRUFBWTNlLEVBQU9xSCxTQUFXbkgsRUFBT21ILFFBQVF2RixRQUNuRCxHQUFJNUIsRUFBT2hKLEtBQU0sQ0FDZixHQUFJMFcsSUFBYytRLEdBQWF6ZSxFQUFPOG9CLG9CQUFxQixPQUFPLEVBQ2xFaHBCLEVBQU8yb0IsUUFBUSxDQUNibkIsVUFBVyxTQUdieG5CLEVBQU9pcEIsWUFBY2pwQixFQUFPNkwsVUFBVXFkLFVBQ3hDLENBRUEsU0FBU0MsRUFBVUMsR0FDakIsT0FBSUEsRUFBTSxHQUFXN2hCLEtBQUtJLE1BQU1KLEtBQUs0SSxJQUFJaVosSUFDbEM3aEIsS0FBS0ksTUFBTXloQixFQUNwQixDQUNBLE1BQU16QixFQUFzQndCLEVBTFYxSyxFQUFlemUsRUFBT2dRLFdBQWFoUSxFQUFPZ1EsV0FNdERxWixFQUFxQjVoQixFQUFTMVAsS0FBSXF4QixHQUFPRCxFQUFVQyxLQUN6RCxJQUFJRSxFQUFXN2hCLEVBQVM0aEIsRUFBbUJ2VSxRQUFRNlMsR0FBdUIsR0FDMUUsUUFBd0IsSUFBYjJCLEdBQTRCcHBCLEVBQU82TSxRQUFTLENBQ3JELElBQUl3YyxFQUNKOWhCLEVBQVM1SixTQUFRLENBQUM4akIsRUFBTS9aLEtBQ2xCK2YsR0FBdUJoRyxJQUV6QjRILEVBQWdCM2hCLEVBQ2xCLFNBRTJCLElBQWxCMmhCLElBQ1RELEVBQVc3aEIsRUFBUzhoQixFQUFnQixFQUFJQSxFQUFnQixFQUFJQSxHQUVoRSxDQUNBLElBQUkzaUIsRUFBWSxFQVNoQixRQVJ3QixJQUFiMGlCLElBQ1QxaUIsRUFBWWlZLEVBQVcvSixRQUFRd1UsR0FDM0IxaUIsRUFBWSxJQUFHQSxFQUFZNUcsRUFBTzhILFlBQWMsR0FDdkIsU0FBekI1SCxFQUFPOUksZUFBc0QsSUFBMUI4SSxFQUFPdUcsZ0JBQXdCdkcsRUFBTzRvQixxQkFDM0VsaUIsRUFBWUEsRUFBWTVHLEVBQU95ZCxxQkFBcUIsWUFBWSxHQUFRLEVBQ3hFN1csRUFBWVcsS0FBS2EsSUFBSXhCLEVBQVcsS0FHaEMxRyxFQUFPa0MsUUFBVXBDLEVBQU9tQyxZQUFhLENBQ3ZDLE1BQU02RixFQUFZaEksRUFBT0UsT0FBT21ILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFNBQVc5QixFQUFPcUgsUUFBVXJILEVBQU9xSCxRQUFRUCxPQUFPblEsT0FBUyxFQUFJcUosRU
2FBTzhHLE9BQU9uUSxPQUFTLEVBQ3ZKLE9BQU9xSixFQUFPZ0gsUUFBUWdCLEVBQVc3USxFQUFPNnZCLEVBQWMzWixFQUN4RCxDQUFPLE9BQUluTixFQUFPaEosTUFBK0IsSUFBdkI4SSxFQUFPOEgsYUFBcUI1SCxFQUFPNk0sU0FDM0RiLHVCQUFzQixLQUNwQmxNLEVBQU9nSCxRQUFRSixFQUFXelAsRUFBTzZ2QixFQUFjM1osRUFBUyxLQUVuRCxHQUVGck4sRUFBT2dILFFBQVFKLEVBQVd6UCxFQUFPNnZCLEVBQWMzWixFQUN4RCxFQWlHRW1jLFdBOUZGLFNBQW9CcnlCLEVBQU82dkIsRUFBYzNaLFFBQ2xCLElBQWpCMlosSUFDRkEsR0FBZSxHQUVqQixNQUFNaG5CLEVBQVNsSSxLQUNmLElBQUlrSSxFQUFPNEwsVUFJWCxZQUhxQixJQUFWelUsSUFDVEEsRUFBUTZJLEVBQU9FLE9BQU8vSSxPQUVqQjZJLEVBQU9nSCxRQUFRaEgsRUFBTzhILFlBQWEzUSxFQUFPNnZCLEVBQWMzWixFQUNqRSxFQXFGRW9jLGVBbEZGLFNBQXdCdHlCLEVBQU82dkIsRUFBYzNaLEVBQVVxYyxRQUNoQyxJQUFqQjFDLElBQ0ZBLEdBQWUsUUFFQyxJQUFkMEMsSUFDRkEsRUFBWSxJQUVkLE1BQU0xcEIsRUFBU2xJLEtBQ2YsR0FBSWtJLEVBQU80TCxVQUFXLFlBQ0QsSUFBVnpVLElBQ1RBLEVBQVE2SSxFQUFPRSxPQUFPL0ksT0FFeEIsSUFBSTRGLEVBQVFpRCxFQUFPOEgsWUFDbkIsTUFBTWllLEVBQU94ZSxLQUFLYyxJQUFJckksRUFBT0UsT0FBTzJnQixtQkFBb0I5akIsR0FDbEQ2SyxFQUFZbWUsRUFBT3hlLEtBQUtJLE9BQU81SyxFQUFRZ3BCLEdBQVEvbEIsRUFBT0UsT0FBT3VHLGdCQUM3RHVKLEVBQVloUSxFQUFPeWUsYUFBZXplLEVBQU9nUSxXQUFhaFEsRUFBT2dRLFVBQ25FLEdBQUlBLEdBQWFoUSxFQUFPeUgsU0FBU0csR0FBWSxDQUczQyxNQUFNK2hCLEVBQWMzcEIsRUFBT3lILFNBQVNHLEdBRWhDb0ksRUFBWTJaLEdBREMzcEIsRUFBT3lILFNBQVNHLEVBQVksR0FDSCtoQixHQUFlRCxJQUN2RDNzQixHQUFTaUQsRUFBT0UsT0FBT3VHLGVBRTNCLEtBQU8sQ0FHTCxNQUFNNmlCLEVBQVd0cEIsRUFBT3lILFNBQVNHLEVBQVksR0FFekNvSSxFQUFZc1osSUFESXRwQixFQUFPeUgsU0FBU0csR0FDTzBoQixHQUFZSSxJQUNyRDNzQixHQUFTaUQsRUFBT0UsT0FBT3VHLGVBRTNCLENBR0EsT0FGQTFKLEVBQVF3SyxLQUFLYSxJQUFJckwsRUFBTyxHQUN4QkEsRUFBUXdLLEtBQUtjLElBQUl0TCxFQUFPaUQsRUFBTzZlLFdBQVdsb0IsT0FBUyxHQUM1Q3FKLEVBQU9nSCxRQUFRakssRUFBTzVGLEVBQU82dkIsRUFBYzNaLEVBQ3BELEVBK0NFbVosb0JBN0NGLFdBQ0UsTUFBTXhtQixFQUFTbEksS0FDZixHQUFJa0ksRUFBTzRMLFVBQVcsT0FDdEIsTUFBTSxPQUNKMUwsRUFBTSxTQUNOcWUsR0FDRXZlLEVBQ0U1SSxFQUF5QyxTQUF6QjhJLEVBQU85SSxjQUEyQjRJLEVBQU95ZCx1QkFBeUJ2ZCxFQUFPOUksY0FDL0YsSUFDSXNQLEVBREFrakIsRUFBZTVwQixFQUFPdW1CLGFBRTFCLE1BQU1zRCxFQUFnQjdwQixFQUFPa0IsVUFBWSxlQUFpQixJQUFJaEIsRUFBT2dkLGFBQ3JFLEdBQUloZCxFQUFPaEosS0FBTSxDQUNmLEdBQUk4SSxFQUFPNE4sVUFBVyxPQUN0QmxILEVBQVkrRixTQUFTek0sRUFBT3NtQixhQUFhNVosYUFBYSwyQkFBNEIsSUFDOUV4TSxFQUFPMGYsZUFDTGdLLEVBQWU1cEIsRUFBTzhwQixhQUFlMXlCLEVBQWdCLEdBQUt3eUIsRUFBZTVwQixFQUFPOEcsT0FBT25RLE9BQVNxSixFQUFPOHBCLGFBQWUxeUIsRUFBZ0IsR0FDeEk0SSxFQUFPMm9CLFVBQ1BpQixFQUFlNXBCLEVBQU8wTyxlQUFjLElBQUFyUyxHQUFnQmtpQixFQUFVLEdBQUdzTCw4QkFBMENuakIsT0FBZSxLQUMxSCxJQUFBNU0sSUFBUyxLQUNQa0csRUFBT2dILFFBQVE0aUIsRUFBYSxLQUc5QjVwQixFQUFPZ0gsUUFBUTRpQixHQUVSQSxFQUFlNXBCLEVBQU84RyxPQUFPblEsT0FBU1MsR0FDL0M0SSxFQUFPMm9CLFVBQ1BpQixFQUFlNXBCLEVBQU8wTyxlQUFjLElBQUFyUyxHQUFnQmtpQixFQUFVLEdBQUdzTCw4QkFBMENuakIsT0FBZSxLQUMxSCxJQUFBNU0sSUFBUyxLQUNQa0csRUFBT2dILFFBQVE0aUIsRUFBYSxLQUc5QjVwQixFQUFPZ0gsUUFBUTRpQixFQUVuQixNQUNFNXBCLEVBQU9nSCxRQUFRNGlCLEVBRW5CLEdBb1NBLElBQUkxeUIsRUFBTyxDQUNUNnlCLFdBelJGLFNBQW9CbkIsR0FDbEIsTUFBTTVvQixFQUFTbEksTUFDVCxPQUNKb0ksRUFBTSxTQUNOcWUsR0FDRXZlLEVBQ0osSUFBS0UsRUFBT2hKLE1BQVE4SSxFQUFPcUgsU0FBV3JILEVBQU9FLE9BQU9tSCxRQUFRdkYsUUFBUyxPQUNyRSxNQUFNaWUsRUFBYSxNQUNGLElBQUExakIsR0FBZ0JraUIsRUFBVSxJQUFJcmUsRUFBT2dkLDRCQUM3Q3JmLFNBQVEsQ0FBQzBDLEVBQUl4RCxLQUNsQndELEVBQUd4QyxhQUFhLDBCQUEyQmhCLEVBQU0sR0FDakQsRUFFRThpQixFQUFjN2YsRUFBTzhKLE1BQVE1SixFQUFPNEosTUFBUTVKLEVBQU80SixLQUFLQyxLQUFPLEVBQy9EdEQsRUFBaUJ2RyxFQUFPdUcsZ0JBQWtCb1osRUFBYzNmLEVBQU80SixLQUFLQyxLQUFPLEdBQzNFaWdCLEVBQWtCaHFCLEVBQU84RyxPQUFPblEsT0FBUzhQLEdBQW1CLEVBQzVEd2pCLEVBQWlCcEssR0FBZTdmLEVBQU84RyxPQUFPblEsT0FBU3VKLEVBQU80SixLQUFLQyxNQUFTLEVBQzVFbWdCLEVBQWlCQyxJQUNyQixJQUFLLElBQUkveEIsRUFBSSxFQUFHQSxFQUFJK3hCLEVBQWdCL3hCLEdBQUssRUFBRyxDQUMxQyxNQUFNb1UsRUFBVXhNLEVBQU9rQixXQUFZLElBQUFWLEdBQWMsZUFBZ0IsQ0FBQ04sRUFBT2txQixtQkFBb0IsSUFBQTVwQixHQUFjLE1BQU8sQ0FBQ04sRUFBT2dkLFdBQVloZCxFQUFPa3FCLGtCQUM3SXBxQixFQUFPdWUsU0FBUzdkLE9BQU84TCxFQUN6QixHQUVGLEdBQUl3ZCxFQUFpQixDQUNuQixHQUFJOXBCLEVBQU9tcUIsbUJBQW9CLENBRTdCSCxFQURvQnpqQixFQUFpQnpHLEVBQU84RyxPQUFPblEsT0FBUzhQLEdBRTVEekcsRUFBT3NxQixlQUNQdHFCLEVBQU9tZSxjQUNULE1BQ0UsT0FBWSxtTEFFZDRCLEdBQ0YsTUFBTyxHQUFJa0ssRUFBZ0IsQ0FDekIsR0FBSS9wQixFQUFPbXFCLG1CQUFvQixDQUU3QkgsRUFEb0JocUIsRUFBTzRKLEtBQUtDLEtBQU8vSixFQUFPOEcsT0FBT25RLE9BQVN1SixFQUFPNEosS0FBS0MsTUFFMUUvSixFQUFPc3FCLGVBQ1B0cUIsRUFBT21lLGNBQ1QsTUFDRSxPQUFZLDhLQUVkNEIsR0FDRixNQUNFQSxJQUVGL2YsRUFBTzJvQixRQUFRLENBQ2JDLGlCQUNBcEIsVUFBV3RuQixFQUFPMGYsb0JBQWlCelgsRUFBWSxRQUVuRCxFQXdPRXdnQixRQXRPRixTQUFpQnBQLEdBQ2YsSUFBSSxlQUNGcVAs
2RUFBYyxRQUNkNWhCLEdBQVUsRUFBSSxVQUNkd2dCLEVBQVMsYUFDVHRZLEVBQVksaUJBQ1orVyxFQUFnQixhQUNoQlMsRUFBWSxhQUNaNkQsUUFDWSxJQUFWaFIsRUFBbUIsQ0FBQyxFQUFJQSxFQUM1QixNQUFNdlosRUFBU2xJLEtBQ2YsSUFBS2tJLEVBQU9FLE9BQU9oSixLQUFNLE9BQ3pCOEksRUFBT2UsS0FBSyxpQkFDWixNQUFNLE9BQ0orRixFQUFNLGVBQ05paEIsRUFBYyxlQUNkRCxFQUFjLFNBQ2R2SixFQUFRLE9BQ1JyZSxHQUNFRixHQUNFLGVBQ0o0ZixHQUNFMWYsRUFHSixHQUZBRixFQUFPK25CLGdCQUFpQixFQUN4Qi9uQixFQUFPOG5CLGdCQUFpQixFQUNwQjluQixFQUFPcUgsU0FBV25ILEVBQU9tSCxRQUFRdkYsUUFhbkMsT0FaSWtGLElBQ0c5RyxFQUFPMGYsZ0JBQXVDLElBQXJCNWYsRUFBTzRILFVBRTFCMUgsRUFBTzBmLGdCQUFrQjVmLEVBQU80SCxVQUFZMUgsRUFBTzlJLGNBQzVENEksRUFBT2dILFFBQVFoSCxFQUFPcUgsUUFBUVAsT0FBT25RLE9BQVNxSixFQUFPNEgsVUFBVyxHQUFHLEdBQU8sR0FDakU1SCxFQUFPNEgsWUFBYzVILEVBQU95SCxTQUFTOVEsT0FBUyxHQUN2RHFKLEVBQU9nSCxRQUFRaEgsRUFBT3FILFFBQVE4WixhQUFjLEdBQUcsR0FBTyxHQUp0RG5oQixFQUFPZ0gsUUFBUWhILEVBQU9xSCxRQUFRUCxPQUFPblEsT0FBUSxHQUFHLEdBQU8sSUFPM0RxSixFQUFPK25CLGVBQWlCQSxFQUN4Qi9uQixFQUFPOG5CLGVBQWlCQSxPQUN4QjluQixFQUFPZSxLQUFLLFdBR2QsSUFBSTNKLEVBQWdCOEksRUFBTzlJLGNBQ0wsU0FBbEJBLEVBQ0ZBLEVBQWdCNEksRUFBT3lkLHdCQUV2QnJtQixFQUFnQm1RLEtBQUtDLEtBQUs0TSxXQUFXbFUsRUFBTzlJLGNBQWUsS0FDdkR3b0IsR0FBa0J4b0IsRUFBZ0IsR0FBTSxJQUMxQ0EsR0FBZ0MsSUFHcEMsTUFBTXFQLEVBQWlCdkcsRUFBTzRvQixtQkFBcUIxeEIsRUFBZ0I4SSxFQUFPdUcsZUFDMUUsSUFBSXFqQixFQUFlcmpCLEVBQ2ZxakIsRUFBZXJqQixHQUFtQixJQUNwQ3FqQixHQUFnQnJqQixFQUFpQnFqQixFQUFlcmpCLEdBRWxEcWpCLEdBQWdCNXBCLEVBQU9zcUIscUJBQ3ZCeHFCLEVBQU84cEIsYUFBZUEsRUFDdEIsTUFBTWpLLEVBQWM3ZixFQUFPOEosTUFBUTVKLEVBQU80SixNQUFRNUosRUFBTzRKLEtBQUtDLEtBQU8sRUFDakVqRCxFQUFPblEsT0FBU1MsRUFBZ0IweUIsR0FDbEMsT0FBWSw2T0FDSGpLLEdBQW9DLFFBQXJCM2YsRUFBTzRKLEtBQUsyZ0IsT0FDcEMsT0FBWSwyRUFFZCxNQUFNQyxFQUF1QixHQUN2QkMsRUFBc0IsR0FDNUIsSUFBSTdpQixFQUFjOUgsRUFBTzhILGlCQUNPLElBQXJCbWUsRUFDVEEsRUFBbUJqbUIsRUFBTzBPLGNBQWM1SCxFQUFPeEksUUFBT2lDLEdBQU1BLEVBQUdrQixVQUFVdUMsU0FBUzlELEVBQU9tbEIsb0JBQW1CLElBRTVHdmQsRUFBY21lLEVBRWhCLE1BQU0yRSxFQUF1QixTQUFkcEQsSUFBeUJBLEVBQ2xDcUQsRUFBdUIsU0FBZHJELElBQXlCQSxFQUN4QyxJQUFJc0QsRUFBa0IsRUFDbEJDLEVBQWlCLEVBQ3JCLE1BQU10QyxFQUFPNUksRUFBY3RZLEtBQUtDLEtBQUtWLEVBQU9uUSxPQUFTdUosRUFBTzRKLEtBQUtDLE1BQVFqRCxFQUFPblEsT0FFMUVxMEIsR0FEaUJuTCxFQUFjL1ksRUFBT21mLEdBQWtCcEksT0FBU29JLElBQ3JCckcsUUFBMEMsSUFBakIxUSxHQUFnQzlYLEVBQWdCLEVBQUksR0FBTSxHQUVySSxHQUFJNHpCLEVBQTBCbEIsRUFBYyxDQUMxQ2dCLEVBQWtCdmpCLEtBQUthLElBQUkwaEIsRUFBZWtCLEVBQXlCdmtCLEdBQ25FLElBQUssSUFBSXJPLEVBQUksRUFBR0EsRUFBSTB4QixFQUFla0IsRUFBeUI1eUIsR0FBSyxFQUFHLENBQ2xFLE1BQU0yRSxFQUFRM0UsRUFBSW1QLEtBQUtJLE1BQU12UCxFQUFJcXdCLEdBQVFBLEVBQ3pDLEdBQUk1SSxFQUFhLENBQ2YsTUFBTW9MLEVBQW9CeEMsRUFBTzFyQixFQUFRLEVBQ3pDLElBQUssSUFBSTNFLEVBQUkwTyxFQUFPblEsT0FBUyxFQUFHeUIsR0FBSyxFQUFHQSxHQUFLLEVBQ3ZDME8sRUFBTzFPLEdBQUd5bEIsU0FBV29OLEdBQW1CUCxFQUFxQm56QixLQUFLYSxFQUsxRSxNQUNFc3lCLEVBQXFCbnpCLEtBQUtreEIsRUFBTzFyQixFQUFRLEVBRTdDLENBQ0YsTUFBTyxHQUFJaXVCLEVBQTBCNXpCLEVBQWdCcXhCLEVBQU9xQixFQUFjLENBQ3hFaUIsRUFB
2aUJ4akIsS0FBS2EsSUFBSTRpQixHQUEyQnZDLEVBQXNCLEVBQWZxQixHQUFtQnJqQixHQUMvRSxJQUFLLElBQUlyTyxFQUFJLEVBQUdBLEVBQUkyeUIsRUFBZ0IzeUIsR0FBSyxFQUFHLENBQzFDLE1BQU0yRSxFQUFRM0UsRUFBSW1QLEtBQUtJLE1BQU12UCxFQUFJcXdCLEdBQVFBLEVBQ3JDNUksRUFDRi9ZLEVBQU9qSixTQUFRLENBQUNzaUIsRUFBT21CLEtBQ2pCbkIsRUFBTXRDLFNBQVc5Z0IsR0FBTzR0QixFQUFvQnB6QixLQUFLK3BCLEVBQVcsSUFHbEVxSixFQUFvQnB6QixLQUFLd0YsRUFFN0IsQ0FDRixDQThCQSxHQTdCQWlELEVBQU9rckIscUJBQXNCLEVBQzdCaGYsdUJBQXNCLEtBQ3BCbE0sRUFBT2tyQixxQkFBc0IsQ0FBSyxJQUVoQ0wsR0FDRkgsRUFBcUI3c0IsU0FBUWQsSUFDM0IrSixFQUFPL0osR0FBT291QixtQkFBb0IsRUFDbEM1TSxFQUFTNk0sUUFBUXRrQixFQUFPL0osSUFDeEIrSixFQUFPL0osR0FBT291QixtQkFBb0IsQ0FBSyxJQUd2Q1AsR0FDRkQsRUFBb0I5c0IsU0FBUWQsSUFDMUIrSixFQUFPL0osR0FBT291QixtQkFBb0IsRUFDbEM1TSxFQUFTN2QsT0FBT29HLEVBQU8vSixJQUN2QitKLEVBQU8vSixHQUFPb3VCLG1CQUFvQixDQUFLLElBRzNDbnJCLEVBQU9zcUIsZUFDc0IsU0FBekJwcUIsRUFBTzlJLGNBQ1Q0SSxFQUFPbWUsZUFDRTBCLElBQWdCNkssRUFBcUIvekIsT0FBUyxHQUFLazBCLEdBQVVGLEVBQW9CaDBCLE9BQVMsR0FBS2kwQixJQUN4RzVxQixFQUFPOEcsT0FBT2pKLFNBQVEsQ0FBQ3NpQixFQUFPbUIsS0FDNUJ0aEIsRUFBTzhKLEtBQUtzVyxZQUFZa0IsRUFBWW5CLEVBQU9uZ0IsRUFBTzhHLE9BQU8sSUFHekQ1RyxFQUFPb1EscUJBQ1R0USxFQUFPbWlCLHFCQUVMbmIsRUFDRixHQUFJMGpCLEVBQXFCL3pCLE9BQVMsR0FBS2swQixHQUNyQyxRQUE4QixJQUFuQmpDLEVBQWdDLENBQ3pDLE1BQU15QyxFQUF3QnJyQixFQUFPNmUsV0FBVy9XLEdBRTFDd2pCLEVBRG9CdHJCLEVBQU82ZSxXQUFXL1csRUFBY2dqQixHQUN6Qk8sRUFDN0JkLEVBQ0Z2cUIsRUFBT2tQLGFBQWFsUCxFQUFPZ1EsVUFBWXNiLElBRXZDdHJCLEVBQU9nSCxRQUFRYyxFQUFjUCxLQUFLQyxLQUFLc2pCLEdBQWtCLEdBQUcsR0FBTyxHQUMvRDViLElBQ0ZsUCxFQUFPdXJCLGdCQUFnQkMsZUFBaUJ4ckIsRUFBT3VyQixnQkFBZ0JDLGVBQWlCRixFQUNoRnRyQixFQUFPdXJCLGdCQUFnQjlFLGlCQUFtQnptQixFQUFPdXJCLGdCQUFnQjlFLGlCQUFtQjZFLEdBRzFGLE1BQ0UsR0FBSXBjLEVBQWMsQ0FDaEIsTUFBTXVjLEVBQVE1TCxFQUFjNkssRUFBcUIvekIsT0FBU3VKLEVBQU80SixLQUFLQyxLQUFPMmdCLEVBQXFCL3pCLE9BQ2xHcUosRUFBT2dILFFBQVFoSCxFQUFPOEgsWUFBYzJqQixFQUFPLEdBQUcsR0FBTyxHQUNyRHpyQixFQUFPdXJCLGdCQUFnQjlFLGlCQUFtQnptQixFQUFPZ1EsU0FDbkQsT0FFRyxHQUFJMmEsRUFBb0JoMEIsT0FBUyxHQUFLaTBCLEVBQzNDLFFBQThCLElBQW5CaEMsRUFBZ0MsQ0FDekMsTUFBTXlDLEVBQXdCcnJCLEVBQU82ZSxXQUFXL1csR0FFMUN3akIsRUFEb0J0ckIsRUFBTzZlLFdBQVcvVyxFQUFjaWpCLEdBQ3pCTSxFQUM3QmQsRUFDRnZxQixFQUFPa1AsYUFBYWxQLEVBQU9nUSxVQUFZc2IsSUFFdkN0ckIsRUFBT2dILFFBQVFjLEVBQWNpakIsRUFBZ0IsR0FBRyxHQUFPLEdBQ25EN2IsSUFDRmxQLEVBQU91ckIsZ0JBQWdCQyxlQUFpQnhyQixFQUFPdXJCLGdCQUFnQkMsZUFBaUJGLEVBQ2hGdHJCLEVBQU91ckIsZ0JBQWdCOUUsaUJBQW1Cem1CLEVBQU91ckIsZ0JBQWdCOUUsaUJBQW1CNkUsR0FHMUYsS0FBTyxDQUNMLE1BQU1HLEVBQVE1TCxFQUFjOEssRUFBb0JoMEIsT0FBU3VKLEVBQU80SixLQUFLQyxLQUFPNGdCLEVBQW9CaDBCLE9BQ2hHcUosRUFBT2dILFFBQVFoSCxFQUFPOEgsWUFBYzJqQixFQUFPLEdBQUcsR0FBTyxFQUN2RCxDQUtKLEdBRkF6ckIsRUFBTytuQixlQUFpQkEsRUFDeEIvbkIsRUFBTzhuQixlQUFpQkEsRUFDcEI5bkIsRUFBTzByQixZQUFjMXJCLEVBQU8wckIsV0FBV0MsVUFBWWpGLEVBQWMsQ0FDbkUsTUFBTWtGLEVBQWEsQ0FDakJoRCxpQkFDQXBCLFlBQ0F0WSxlQUNBK1csbUJBQ0FTLGNBQWMsR0FFWi90QixNQUFNQyxRQUFRb0gsRUFBTzByQixXQUFXQyxTQUNsQzNyQixFQUFPMHJCLFdBQVdDLFFBQVE5dEIsU0FBUTJDLEtBQzNCQSxFQUFFb0wsV0FBYXBMLEVBQUVOLE9BQU9oSixNQUFNc0osRUFBRW1vQixRQUFRLElBQ3hDaUQsRUFDSDVrQixRQUFTeEcsRUFBRU4sT0FBTzlJLGdCQUFrQjhJLEVBQU85SSxlQUFnQjRQLEdBQzNELElBRUtoSCxFQUFPMHJCLFdBQVdDLG1CQUFtQjNyQixFQUFPOUYsYUFBZThGLEVBQU8wckIsV0FBV0MsUUFBUXpyQixPQUFPaEosTUFDckc4SSxFQUFPMHJCLFdBQVdDLFFBQVFoRCxRQUFRLElBQzdCaUQsRUFDSDVrQixRQUFTaEgsRUFBTzByQixXQUFXQyxRQUFRenJCLE9BQU85SSxnQkFBa0I4SSxFQUFPOUksZUFBZ0I0UCxHQUd6RixDQUNBaEgsRUFBT2UsS0FBSyxVQUNkLEVBNEJFOHFCLFlBMUJGLFdBQ0UsTUFBTTdyQixFQUFTbEksTUFDVCxPQUNKb0ksRUFBTSxTQUNOcWUsR0FDRXZlLEVBQ0osSUFBS0UsRUFBT2hKLE1BQVE4SSxFQUFPcUgsU0FBV3JILEVBQU9FLE9BQU9tSCxRQUFRdkYsUUFBUyxPQUNyRTlCLEVBQU9zcUIsZUFDUCxNQUFNd0IsRUFBaUIsR0FDdkI5ckIsRUFBTzhHLE9BQU9qSixTQUFRMk8sSUFDcEIsTUFBTXpQLE9BQTRDLElBQTdCeVAsRUFBUXVmLGlCQUFxRixFQUFsRHZmLEVBQVFFLGFBQWEsMkJBQWlDRixFQUFRdWYsaUJBQzlIRCxFQUFlL3VCLEdBQVN5UCxDQUFPLElBRWpDeE0sRUFBTzhHLE9BQU9qSixTQUFRMk8sSUFDcEJBLEVBQVF2TixnQkFBZ0IsMEJBQTBCLElBRXBENnNCLEVBQWVqdUIsU0FBUTJPLElBQ3JCK1IsRUFBUzdkLE9BQU84TCxFQUFRLElBRTFCeE0sRUFBT3NxQixlQUNQdHFCLEVBQU9nSCxRQUFRaEgsRUFBTzBHLFVBQVcsRUFDbkMsR0E2REEsU0FBU3NsQixFQUFpQmhzQixFQUFRNGIsRUFBT3FRLEdBQ3ZDLE1BQU1yd0IsR0FBUyxVQUNULE9BQ0pzRSxHQUNFRixFQUNFa3NCLEVBQXFCaHNCLEVBQU9nc0IsbUJBQzVCQyxFQUFxQmpzQixFQUFPaXNCLG1CQUNsQyxPQUFJRCxLQUF1QkQsR0FBVUUsR0FBc0JGLEdBQVVyd0IsRUFBT3d3QixXQUFhRCxJQUM1RCxZQUF2QkQsSUFDRnRRLEVBQU1yWixrQkFDQyxFQUtiLENBQ0EsU0FBUzhwQixFQUFhelEsR0FDcEIsTUFBTTViLEVBQVNsSSxLQUNUdEIsR0FBVyxJQUFBZ1gsS0FDakIsSUFBSW5SLEVBQUl1ZixFQUNKdmYsRUFBRWl3QixnQkFBZWp3QixFQUFJQSxFQUFFaXdCLGVBQzNCLE1BQU1ueEIsRUFBTzZFLEVBQU91ckIsZ0JBQ3BCLEdBQWUsZ0JBQVhsdkIsRUFBRTJJLEtBQXdCLENBQzVCLEdBQXVCLE9BQW5CN0osRUFBS294QixXQUFzQnB4QixFQUFLb3hCLFlBQWNsd0IsRU
2FBRWt3QixVQUNsRCxPQUVGcHhCLEVBQUtveEIsVUFBWWx3QixFQUFFa3dCLFNBQ3JCLEtBQXNCLGVBQVhsd0IsRUFBRTJJLE1BQW9ELElBQTNCM0ksRUFBRW13QixjQUFjNzFCLFNBQ3BEd0UsRUFBS3N4QixRQUFVcHdCLEVBQUVtd0IsY0FBYyxHQUFHaHdCLFlBRXBDLEdBQWUsZUFBWEgsRUFBRTJJLEtBR0osWUFEQWduQixFQUFpQmhzQixFQUFRM0QsRUFBR0EsRUFBRW13QixjQUFjLEdBQUdFLE9BR2pELE1BQU0sT0FDSnhzQixFQUFNLFFBQ055c0IsRUFBTyxRQUNQN3FCLEdBQ0U5QixFQUNKLElBQUs4QixFQUFTLE9BQ2QsSUFBSzVCLEVBQU8wc0IsZUFBbUMsVUFBbEJ2d0IsRUFBRXNSLFlBQXlCLE9BQ3hELEdBQUkzTixFQUFPNE4sV0FBYTFOLEVBQU9nbkIsK0JBQzdCLFFBRUdsbkIsRUFBTzROLFdBQWExTixFQUFPNk0sU0FBVzdNLEVBQU9oSixNQUNoRDhJLEVBQU8yb0IsVUFFVCxJQUFJcGxCLEVBQVdsSCxFQUFFTCxPQUNqQixHQUFpQyxZQUE3QmtFLEVBQU8yc0IscUJBQ0osT0FBaUJ0cEIsRUFBVXZELEVBQU82TCxXQUFZLE9BRXJELEdBQUksVUFBV3hQLEdBQWlCLElBQVpBLEVBQUV5d0IsTUFBYSxPQUNuQyxHQUFJLFdBQVl6d0IsR0FBS0EsRUFBRTB3QixPQUFTLEVBQUcsT0FDbkMsR0FBSTV4QixFQUFLNlAsV0FBYTdQLEVBQUs2eEIsUUFBUyxPQUdwQyxNQUFNQyxJQUF5Qi9zQixFQUFPZ3RCLGdCQUE0QyxLQUExQmh0QixFQUFPZ3RCLGVBRXpEQyxFQUFZOXdCLEVBQUVzSCxhQUFldEgsRUFBRXNILGVBQWlCdEgsRUFBRXFILEtBQ3BEdXBCLEdBQXdCNXdCLEVBQUVMLFFBQVVLLEVBQUVMLE9BQU93UyxZQUFjMmUsSUFDN0Q1cEIsRUFBVzRwQixFQUFVLElBRXZCLE1BQU1DLEVBQW9CbHRCLEVBQU9rdEIsa0JBQW9CbHRCLEVBQU9rdEIsa0JBQW9CLElBQUlsdEIsRUFBT2d0QixpQkFDckZHLEtBQW9CaHhCLEVBQUVMLFNBQVVLLEVBQUVMLE9BQU93UyxZQUcvQyxHQUFJdE8sRUFBT290QixZQUFjRCxFQWxGM0IsU0FBd0IzVyxFQUFVN1osR0FhaEMsWUFaYSxJQUFUQSxJQUNGQSxFQUFPL0UsTUFFVCxTQUFTeTFCLEVBQWNodEIsR0FDckIsSUFBS0EsR0FBTUEsS0FBTyxJQUFBaU4sTUFBaUJqTixLQUFPLFNBQWEsT0FBTyxLQUMxREEsRUFBR2l0QixlQUFjanRCLEVBQUtBLEVBQUdpdEIsY0FDN0IsTUFBTUMsRUFBUWx0QixFQUFHaUcsUUFBUWtRLEdBQ3pCLE9BQUsrVyxHQUFVbHRCLEVBQUdtdEIsWUFHWEQsR0FBU0YsRUFBY2h0QixFQUFHbXRCLGNBQWNsYyxNQUZ0QyxJQUdYLENBQ08rYixDQUFjMXdCLEVBQ3ZCLENBb0U0Qzh3QixDQUFlUCxFQUFtQjdwQixHQUFZQSxFQUFTaUQsUUFBUTRtQixJQUV2RyxZQURBcHRCLEVBQU80dEIsWUFBYSxHQUd0QixHQUFJMXRCLEVBQU8ydEIsZUFDSnRxQixFQUFTaUQsUUFBUXRHLEVBQU8ydEIsY0FBZSxPQUU5Q2xCLEVBQVFtQixTQUFXenhCLEVBQUVxd0IsTUFDckJDLEVBQVFvQixTQUFXMXhCLEVBQUUyeEIsTUFDckIsTUFBTS9CLEVBQVNVLEVBQVFtQixTQUNqQkcsRUFBU3RCLEVBQVFvQixTQUl2QixJQUFLL0IsRUFBaUJoc0IsRUFBUTNELEVBQUc0dkIsR0FDL0IsT0FFRmx5QixPQUFPNEksT0FBT3hILEVBQU0sQ0FDbEI2UCxXQUFXLEVBQ1hnaUIsU0FBUyxFQUNUa0IscUJBQXFCLEVBQ3JCQyxpQkFBYWhtQixFQUNiaW1CLGlCQUFham1CLElBRWZ3a0IsRUFBUVYsT0FBU0EsRUFDakJVLEVBQVFzQixPQUFTQSxFQUNqQjl5QixFQUFLa3pCLGdCQUFpQixTQUN0QnJ1QixFQUFPNHRCLFlBQWEsRUFDcEI1dEIsRUFBTytkLGFBQ1AvZCxFQUFPc3VCLG9CQUFpQm5tQixFQUNwQmpJLEVBQU93cEIsVUFBWSxJQUFHdnVCLEVBQUtvekIsb0JBQXFCLEdBQ3BELElBQUloc0IsR0FBaUIsRUFDakJnQixFQUFTc1QsUUFBUTFiLEVBQUtxekIscUJBQ3hCanNCLEdBQWlCLEVBQ1MsV0FBdEJnQixFQUFTdU4sV0FDWDNWLEVBQUs2UCxXQUFZLElBR2pCeFUsRUFBU29hLGVBQWlCcGEsRUFBU29hLGNBQWNpRyxRQUFRMWIsRUFBS3F6QixvQkFBc0JoNEIsRUFBU29hLGdCQUFrQnJOLEdBQ2pIL00sRUFBU29hLGNBQWNDLE9BRXpCLE1BQU00ZCxFQUF1QmxzQixHQUFrQnZDLEVBQU8wdUIsZ0JBQWtCeHVCLEVBQU95dUIsMEJBQzFFenVCLEVBQU8wdUIsZ0NBQWlDSCxHQUEwQmxyQixFQUFTc3JCLG1CQUM5RXh5QixFQUFFa0csaUJBRUFyQyxFQUFPZ0ssVUFBWWhLLEVBQU9nSyxTQUFTcEksU0FBVzlCLEVBQU9rSyxVQUFZbEssRUFBTzROLFlBQWMxTixFQUFPNk0sU0FDL0YvTSxFQUFPa0ssU0FBU21pQixlQUVsQnJzQixFQUFPZSxLQUFLLGFBQWMxRSxFQUM1QixDQUVBLFNBQVN5eUIsRUFBWWxULEdBQ25CLE1BQU1wbEIsR0FBVyxJQUFBZ1gsS0FDWHhOLEVBQVNsSSxLQUNUcUQsRUFBTzZFLEVBQU91ckIsaUJBQ2QsT0FDSnJyQixFQUFNLFFBQ055c0IsRUFDQWxPLGFBQWN4WCxFQUFHLFFBQ2pCbkYsR0FDRTlCLEVBQ0osSUFBSzhCLEVBQVMsT0FDZCxJQUFLNUIsRUFBTzBzQixlQUF1QyxVQUF0QmhSLEVBQU1qTyxZQUF5QixPQUM1RCxJQU9Jb2hCLEVBUEExeUIsRUFBSXVmLEVBRVIsR0FESXZmLEVBQUVpd0IsZ0JBQWVqd0IsRUFBSUEsRUFBRWl3QixlQUNaLGdCQUFYandCLEVBQUUySSxLQUF3QixDQUM1QixHQUFxQixPQUFqQjdKLEVBQUtzeEIsUUFBa0IsT0FFM0IsR0FEV3B3QixFQUFFa3dCLFlBQ0ZweEIsRUFBS294QixVQUFXLE1BQzdCLENBRUEsR0FBZSxjQUFYbHdCLEVBQUUySSxNQUVKLEdBREErcEIsRUFBYyxJQUFJMXlCLEVBQUUyeUIsZ0JBQWdCMXdCLFFBQU80cEIsR0FBS0EsRUFBRTFyQixhQUFlckIsRUFBS3N4QixVQUFTLElBQzFFc0MsR0FBZUEsRUFBWXZ5QixhQUFlckIsRUFBS3N4QixRQUFTLFlBRTdEc0MsRUFBYzF5QixFQUVoQixJQUFLbEIsRUFBSzZQLFVBSVIsWUFISTdQLEVBQUtpekIsYUFBZWp6QixFQUFLZ3pCLGFBQzNCbnVCLEVBQU9lLEtBQUssb0JBQXFCMUUsSUFJckMsTUFBTXF3QixFQUFRcUMsRUFBWXJDLE1BQ3BCc0IsRUFBUWUsRUFBWWYsTUFDMUIsR0FBSTN4QixFQUFFNHlCLHdCQUdKLE9BRkF0QyxFQUFRVixPQUFTUyxPQUNqQkMsRUFBUXNCLE9BQVNELEdBR25CLElBQUtodUIsRUFBTzB1QixlQWFWLE9BWktyeUIsRUFBRUwsT0FBTzZhLFFBQVExYixFQUFLcXpCLHFCQUN6Qnh1QixFQUFPNHRCLFlBQWEsUUFFbEJ6eUIsRUFBSzZQLFlBQ1BqUixPQUFPNEksT0FBT2dxQixFQUFTLENBQ3JCVixPQUFRUyxFQUNSdUIsT0FBUUQsRUFDUkYsU0FBVXBCLEVBQ1ZxQixTQUFVQyxJQUVaN3lCLEVBQUtrekIsZ0JBQWlCLFdBSTFCLEdBQUludUIsRUFBT2d2QixzQkFBd0JodkIsRUFBT2hKLEtBQ3hDLEdBQUk4SSxFQUFPa2UsY0FFVCxHQUFJOFAsRUFBUXJCLEVBQVFzQixRQUFVanVCLEVBQU9nUSxXQUFhaFEsRUFBT21rQixnQkFBa0I2SixFQUFRckIsRUFBUXNCLFFBQVVqdUIsRUFBT2dRLFdBQWFoUSxFQUFPdWpCLGVBRzlILE9BRkFwb0IsRUFBSzZQLFdBQVksT0FDakI3UCxFQUFLNnhCLFNBQVUsUUFHWixHQUFJTixFQUFRQyxFQUFRVixRQUFVanNCLEVBQU9nUSxXQUFhaFEsRUFBT21rQixnQkFBa0J1SSxFQUFRQyxFQUFRVixRQUFVanNCLEVBQU9nUSxXQUFhaFEsRUFBT3VqQixlQUNySSxPQUdKLEdBQUkvc0IsRUFBU29hLGVBQ1B2VSxFQUFFTCxTQUFXeEYsRUFBU29hLGVBQWlCdlUsRUFBRUwsT0FBTzZhLFFBQVExYixFQUFLcXpCLG1CQUcvRCxPQUZBcnpCLEVBQUs2eEIsU0FBVSxPQUNmaHRCLEVBQU80dEIsWUFBYSxHQUlwQnp5QixFQUFLK3lCLHFCQUNQbHVCLEVBQU9lLEtBQUssWUFBYTFFLEdBRTNCc3dCLEVBQVF3QyxVQUFZeEMsRUFBUW1CLFNBQzVCbkIsRUFBUXlDLFVBQVl6QyxFQUFRb0IsU0FDNUJwQixFQUFRbUIsU0FBV3BCLEVBQ25CQyxFQUFRb0IsU0FBV0MsRUFDbkIsTUFBTXFCLEVBQVExQyxFQUFRbUIsU0FBV25CLEVBQVFWLE9BQ25DcUQsRUFBUTNDLEVBQVFvQixTQUFXcEIsRUFBUXNCLE9BQ3pDLEdBQUlqdUIsRUFBT0UsT0FBT3dwQixXQUFhbmlCLEtBQUtnb0IsS0FBS0YsR0FBUyxFQUFJQyxHQUFTLEdBQUt0dkIsRUFBT0UsT0FBT3dwQixVQUFXLE9BQzdGLFFBQWdDLElBQXJCdnVCLEVBQUtnekIsWUFBNkIsQ0FDM0MsSUFBSXFCLEVBQ0F4dkIsRUFBT2tJLGdCQUFrQnlrQixFQUFRb0IsV0FBYXBCLEVBQVFzQixRQUFVanVCLEVBQU9rZSxjQUFnQnlPLEVBQVFtQixXQUFhbkIsRUFBUVYsT0FDdEg5d0IsRUFBS2d6
2QixhQUFjLEVBR2ZrQixFQUFRQSxFQUFRQyxFQUFRQSxHQUFTLEtBQ25DRSxFQUE0RCxJQUEvQ2pvQixLQUFLa29CLE1BQU1sb0IsS0FBSzRJLElBQUltZixHQUFRL25CLEtBQUs0SSxJQUFJa2YsSUFBZ0I5bkIsS0FBSzZPLEdBQ3ZFamIsRUFBS2d6QixZQUFjbnVCLEVBQU9rSSxlQUFpQnNuQixFQUFhdHZCLEVBQU9zdkIsV0FBYSxHQUFLQSxFQUFhdHZCLEVBQU9zdkIsV0FHM0csQ0FTQSxHQVJJcjBCLEVBQUtnekIsYUFDUG51QixFQUFPZSxLQUFLLG9CQUFxQjFFLFFBRUgsSUFBckJsQixFQUFLaXpCLGNBQ1Z6QixFQUFRbUIsV0FBYW5CLEVBQVFWLFFBQVVVLEVBQVFvQixXQUFhcEIsRUFBUXNCLFNBQ3RFOXlCLEVBQUtpekIsYUFBYyxJQUduQmp6QixFQUFLZ3pCLGFBQTBCLGNBQVg5eEIsRUFBRTJJLE1BQXdCN0osRUFBS3UwQixnQ0FFckQsWUFEQXYwQixFQUFLNlAsV0FBWSxHQUduQixJQUFLN1AsRUFBS2l6QixZQUNSLE9BRUZwdUIsRUFBTzR0QixZQUFhLEdBQ2YxdEIsRUFBTzZNLFNBQVcxUSxFQUFFeVMsWUFDdkJ6UyxFQUFFa0csaUJBRUFyQyxFQUFPeXZCLDJCQUE2Qnp2QixFQUFPMHZCLFFBQzdDdnpCLEVBQUV3ekIsa0JBRUosSUFBSXZFLEVBQU90ckIsRUFBT2tJLGVBQWlCbW5CLEVBQVFDLEVBQ3ZDUSxFQUFjOXZCLEVBQU9rSSxlQUFpQnlrQixFQUFRbUIsU0FBV25CLEVBQVF3QyxVQUFZeEMsRUFBUW9CLFNBQVdwQixFQUFReUMsVUFDeEdsdkIsRUFBTzZ2QixpQkFDVHpFLEVBQU8vakIsS0FBSzRJLElBQUltYixJQUFTcmtCLEVBQU0sR0FBSyxHQUNwQzZvQixFQUFjdm9CLEtBQUs0SSxJQUFJMmYsSUFBZ0I3b0IsRUFBTSxHQUFLLElBRXBEMGxCLEVBQVFyQixLQUFPQSxFQUNmQSxHQUFRcHJCLEVBQU84dkIsV0FDWC9vQixJQUNGcWtCLEdBQVFBLEVBQ1J3RSxHQUFlQSxHQUVqQixNQUFNRyxFQUF1Qmp3QixFQUFPa3dCLGlCQUNwQ2x3QixFQUFPc3VCLGVBQWlCaEQsRUFBTyxFQUFJLE9BQVMsT0FDNUN0ckIsRUFBT2t3QixpQkFBbUJKLEVBQWMsRUFBSSxPQUFTLE9BQ3JELE1BQU1LLEVBQVNud0IsRUFBT0UsT0FBT2hKLE9BQVNnSixFQUFPNk0sUUFDdkNxakIsRUFBMkMsU0FBNUJwd0IsRUFBT2t3QixrQkFBK0Jsd0IsRUFBTzhuQixnQkFBOEMsU0FBNUI5bkIsRUFBT2t3QixrQkFBK0Jsd0IsRUFBTytuQixlQUNqSSxJQUFLNXNCLEVBQUs2eEIsUUFBUyxDQVFqQixHQVBJbUQsR0FBVUMsR0FDWnB3QixFQUFPMm9CLFFBQVEsQ0FDYm5CLFVBQVd4bkIsRUFBT3N1QixpQkFHdEJuekIsRUFBS3F3QixlQUFpQnhyQixFQUFPcVQsZUFDN0JyVCxFQUFPbVAsY0FBYyxHQUNqQm5QLEVBQU80TixVQUFXLENBQ3BCLE1BQU1lLEVBQU0sSUFBSS9TLE9BQU9nVCxZQUFZLGdCQUFpQixDQUNsREMsU0FBUyxFQUNUQyxZQUFZLEVBQ1poRCxPQUFRLENBQ05DLG1CQUFtQixLQUd2Qi9MLEVBQU82TCxVQUFVa0QsY0FBY0osRUFDakMsQ0FDQXhULEVBQUtrMUIscUJBQXNCLEdBRXZCbndCLEVBQU9vd0IsYUFBeUMsSUFBMUJ0d0IsRUFBTzhuQixpQkFBcUQsSUFBMUI5bkIsRUFBTytuQixnQkFDakUvbkIsRUFBT3V3QixlQUFjLEdBRXZCdndCLEVBQU9lLEtBQUssa0JBQW1CMUUsRUFDakMsQ0FHQSxJQURBLElBQUlvUCxNQUFPQyxVQUNQdlEsRUFBSzZ4QixTQUFXN3hCLEVBQUtvekIsb0JBQXNCMEIsSUFBeUJqd0IsRUFBT2t3QixrQkFBb0JDLEdBQVVDLEdBQWdCN29CLEtBQUs0SSxJQUFJbWIsSUFBUyxFQVU3SSxPQVRBdnhCLE9BQU80SSxPQUFPZ3FCLEVBQVMsQ0FDckJWLE9BQVFTLEVBQ1J1QixPQUFRRCxFQUNSRixTQUFVcEIsRUFDVnFCLFNBQVVDLEVBQ1Z4QyxlQUFnQnJ3QixFQUFLc3JCLG1CQUV2QnRyQixFQUFLcTFCLGVBQWdCLE9BQ3JCcjFCLEVBQUtxd0IsZUFBaUJyd0IsRUFBS3NyQixrQkFHN0J6bUIsRUFBT2UsS0FBSyxhQUFjMUUsR0FDMUJsQixFQUFLNnhCLFNBQVUsRUFDZjd4QixFQUFLc3JCLGlCQUFtQjZFLEVBQU9ud0IsRUFBS3F3QixlQUNwQyxJQUFJaUYsR0FBc0IsRUFDdEJDLEVBQWtCeHdCLEVBQU93d0IsZ0JBaUQ3QixHQWhESXh3QixFQUFPZ3ZCLHNCQUNUd0IsRUFBa0IsR0FFaEJwRixFQUFPLEdBQ0w2RSxHQUFVQyxHQUE4QmoxQixFQUFLb3pCLG9CQUFzQnB6QixFQUFLc3JCLGtCQUFvQnZtQixFQUFPMGYsZUFBaUI1ZixFQUFPdWpCLGVBQWlCdmpCLEVBQU84ZSxnQkFBZ0I5ZSxFQUFPOEgsWUFBYyxJQUErQixTQUF6QjVILEVBQU85SSxlQUE0QjRJLEVBQU84RyxPQUFPblEsT0FBU3VKLEVBQU85SSxlQUFpQixFQUFJNEksRUFBTzhlLGdCQUFnQjllLEVBQU84SCxZQUFjLEdBQUs5SCxFQUFPRSxPQUFPN0ksYUFBZSxHQUFLMkksRUFBT0UsT0FBTzdJLGFBQWUySSxFQUFPdWpCLGlCQUM3WXZqQixFQUFPMm9CLFFBQVEsQ0FDYm5CLFVBQVcsT0FDWHRZLGNBQWMsRUFDZCtXLGlCQUFrQixJQUdsQjlxQixFQUFLc3JCLGlCQUFtQnptQixFQUFPdWpCLGlCQUNqQ2tOLEdBQXNCLEVBQ2xCdndCLEVBQU95d0IsYUFDVHgxQixFQUFLc3JCLGlCQUFtQnptQixFQUFPdWpCLGVBQWlCLElBQU12akIsRUFBT3VqQixlQUFpQnBvQixFQUFLcXdCLGVBQWlCRixJQUFTb0YsS0FHeEdwRixFQUFPLElBQ1o2RSxHQUFVQyxHQUE4QmoxQixFQUFLb3pCLG9CQUFzQnB6QixFQUFLc3JCLGtCQUFvQnZtQixFQUFPMGYsZUFBaUI1ZixFQUFPbWtCLGVBQWlCbmtCLEVBQU84ZSxnQkFBZ0I5ZSxFQUFPOGUsZ0JBQWdCbm9CLE9BQVMsR0FBS3FKLEVBQU9FLE9BQU83SSxjQUF5QyxTQUF6QjZJLEVBQU85SSxlQUE0QjRJLEVBQU84RyxPQUFPblEsT0FBU3VKLEVBQU85SSxlQUFpQixFQUFJNEksRUFBTzhlLGdCQUFnQjllLEVBQU84ZSxnQkFBZ0Jub0IsT0FBUyxHQUFLcUosRUFBT0UsT0FBTzdJLGFBQWUsR0FBSzJJLEVBQU9ta0IsaUJBQ25hbmtCLEVBQU8yb0IsUUFBUSxDQUNibkIsVUFBVyxPQUNYdFksY0FBYyxFQUNkK1csaUJBQWtCam1CLEVBQU84RyxPQUFPblEsUUFBbUMsU0FBekJ1SixFQUFPOUksY0FBMkI0SSxFQUFPeWQsdUJBQXlCbFcsS0FBS0MsS0FBSzRNLFdBQVdsVSxFQUFPOUksY0FBZSxRQUd2SitELEVBQUtzckIsaUJBQW1Cem1CLEVBQU9ta0IsaUJBQ2pDc00sR0FBc0IsRUFDbEJ2d0IsRUFBT3l3QixhQUNUeDFCLEVBQUtzckIsaUJBQW1Cem1CLEVBQU9ta0IsZUFBaUIsR0FBS25rQixFQUFPbWtCLGVBQWl
2CaHBCLEVBQUtxd0IsZUFBaUJGLElBQVNvRixLQUk5R0QsSUFDRnAwQixFQUFFNHlCLHlCQUEwQixJQUl6Qmp2QixFQUFPOG5CLGdCQUE0QyxTQUExQjluQixFQUFPc3VCLGdCQUE2Qm56QixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGlCQUM3RnJ3QixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGlCQUUxQnhyQixFQUFPK25CLGdCQUE0QyxTQUExQi9uQixFQUFPc3VCLGdCQUE2Qm56QixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGlCQUM3RnJ3QixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGdCQUUxQnhyQixFQUFPK25CLGdCQUFtQi9uQixFQUFPOG5CLGlCQUNwQzNzQixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGdCQUkzQnRyQixFQUFPd3BCLFVBQVksRUFBRyxDQUN4QixLQUFJbmlCLEtBQUs0SSxJQUFJbWIsR0FBUXByQixFQUFPd3BCLFdBQWF2dUIsRUFBS296QixvQkFXNUMsWUFEQXB6QixFQUFLc3JCLGlCQUFtQnRyQixFQUFLcXdCLGdCQVQ3QixJQUFLcndCLEVBQUtvekIsbUJBTVIsT0FMQXB6QixFQUFLb3pCLG9CQUFxQixFQUMxQjVCLEVBQVFWLE9BQVNVLEVBQVFtQixTQUN6Qm5CLEVBQVFzQixPQUFTdEIsRUFBUW9CLFNBQ3pCNXlCLEVBQUtzckIsaUJBQW1CdHJCLEVBQUtxd0Isb0JBQzdCbUIsRUFBUXJCLEtBQU90ckIsRUFBT2tJLGVBQWlCeWtCLEVBQVFtQixTQUFXbkIsRUFBUVYsT0FBU1UsRUFBUW9CLFNBQVdwQixFQUFRc0IsT0FPNUcsQ0FDSy90QixFQUFPMHdCLGVBQWdCMXdCLEVBQU82TSxXQUcvQjdNLEVBQU9nSyxVQUFZaEssRUFBT2dLLFNBQVNwSSxTQUFXOUIsRUFBT2tLLFVBQVloSyxFQUFPb1EsdUJBQzFFdFEsRUFBT3lsQixvQkFDUHpsQixFQUFPZ2xCLHVCQUVMOWtCLEVBQU9nSyxVQUFZaEssRUFBT2dLLFNBQVNwSSxTQUFXOUIsRUFBT2tLLFVBQ3ZEbEssRUFBT2tLLFNBQVM0a0IsY0FHbEI5dUIsRUFBT2drQixlQUFlN29CLEVBQUtzckIsa0JBRTNCem1CLEVBQU9rUCxhQUFhL1QsRUFBS3NyQixrQkFDM0IsQ0FFQSxTQUFTb0ssRUFBV2pWLEdBQ2xCLE1BQU01YixFQUFTbEksS0FDVHFELEVBQU82RSxFQUFPdXJCLGdCQUNwQixJQUVJd0QsRUFGQTF5QixFQUFJdWYsRUFDSnZmLEVBQUVpd0IsZ0JBQWVqd0IsRUFBSUEsRUFBRWl3QixlQUczQixHQURnQyxhQUFYandCLEVBQUUySSxNQUFrQyxnQkFBWDNJLEVBQUUySSxNQU85QyxHQURBK3BCLEVBQWMsSUFBSTF5QixFQUFFMnlCLGdCQUFnQjF3QixRQUFPNHBCLEdBQUtBLEVBQUUxckIsYUFBZXJCLEVBQUtzeEIsVUFBUyxJQUMxRXNDLEdBQWVBLEVBQVl2eUIsYUFBZXJCLEVBQUtzeEIsUUFBUyxXQU41QyxDQUNqQixHQUFxQixPQUFqQnR4QixFQUFLc3hCLFFBQWtCLE9BQzNCLEdBQUlwd0IsRUFBRWt3QixZQUFjcHhCLEVBQUtveEIsVUFBVyxPQUNwQ3dDLEVBQWMxeUIsQ0FDaEIsQ0FJQSxHQUFJLENBQUMsZ0JBQWlCLGFBQWMsZUFBZ0IsZUFBZW9ILFNBQVNwSCxFQUFFMkksTUFBTyxDQUVuRixLQURnQixDQUFDLGdCQUFpQixlQUFldkIsU0FBU3BILEVBQUUySSxRQUFVaEYsRUFBTzhZLFFBQVE2QixVQUFZM2EsRUFBTzhZLFFBQVFtQyxZQUU5RyxNQUVKLENBQ0E5ZixFQUFLb3hCLFVBQVksS0FDakJweEIsRUFBS3N4QixRQUFVLEtBQ2YsTUFBTSxPQUNKdnNCLEVBQU0sUUFDTnlzQixFQUNBbE8sYUFBY3hYLEVBQUcsV0FDakI0WCxFQUFVLFFBQ1YvYyxHQUNFOUIsRUFDSixJQUFLOEIsRUFBUyxPQUNkLElBQUs1QixFQUFPMHNCLGVBQW1DLFVBQWxCdndCLEVBQUVzUixZQUF5QixPQUt4RCxHQUpJeFMsRUFBSyt5QixxQkFDUGx1QixFQUFPZSxLQUFLLFdBQVkxRSxHQUUxQmxCLEVBQUsreUIscUJBQXNCLEdBQ3RCL3lCLEVBQUs2UCxVQU1SLE9BTEk3UCxFQUFLNnhCLFNBQVc5c0IsRUFBT293QixZQUN6QnR3QixFQUFPdXdCLGVBQWMsR0FFdkJwMUIsRUFBSzZ4QixTQUFVLE9BQ2Y3eEIsRUFBS2l6QixhQUFjLEdBS2pCbHVCLEVBQU9vd0IsWUFBY24xQixFQUFLNnhCLFNBQVc3eEIsRUFBSzZQLGFBQXdDLElBQTFCaEwsRUFBTzhuQixpQkFBcUQsSUFBMUI5bkIsRUFBTytuQixpQkFDbkcvbkIsRUFBT3V3QixlQUFjLEdBSXZCLE1BQU1PLEdBQWUsU0FDZkMsRUFBV0QsRUFBZTMxQixFQUFLa3pCLGVBR3JDLEdBQUlydUIsRUFBTzR0QixXQUFZLENBQ3JCLE1BQU1vRCxFQUFXMzBCLEVBQUVxSCxNQUFRckgsRUFBRXNILGNBQWdCdEgsRUFBRXNILGVBQy9DM0QsRUFBT29tQixtQkFBbUI0SyxHQUFZQSxFQUFTLElBQU0zMEIsRUFBRUwsT0FBUWcxQixHQUMvRGh4QixFQUFPZSxLQUFLLFlBQWExRSxHQUNyQjAwQixFQUFXLEtBQU9ELEVBQWUzMUIsRUFBSzgxQixjQUFnQixLQUN4RGp4QixFQUFPZSxLQUFLLHdCQUF5QjFFLEVBRXpDLENBS0EsR0FKQWxCLEVBQUs4MUIsZUFBZ0IsVUFDckIsSUFBQW4zQixJQUFTLEtBQ0ZrRyxFQUFPNEwsWUFBVzVMLEVBQU80dEIsWUFBYSxFQUFJLEtBRTVDenlCLEVBQUs2UCxZQUFjN1AsRUFBSzZ4QixVQUFZaHRCLEVBQU9zdUIsZ0JBQW1DLElBQWpCM0IsRUFBUXJCLE9BQWVud0IsRUFBS3ExQixlQUFpQnIxQixFQUFLc3JCLG1CQUFxQnRyQixFQUFLcXdCLGlCQUFtQnJ3QixFQUFLcTFCLGNBSXBLLE9BSEFyMUIsRUFBSzZQLFdBQVksRUFDakI3UCxFQUFLNnhCLFNBQVUsT0FDZjd4QixFQUFLaXpCLGFBQWMsR0FNckIsSUFBSThDLEVBTUosR0FUQS8xQixFQUFLNlAsV0FBWSxFQUNqQjdQLEVBQUs2eEIsU0FBVSxFQUNmN3hCLEVBQUtpekIsYUFBYyxFQUdqQjhDLEVBREVoeEIsRUFBTzB3QixhQUNJM3BCLEVBQU1qSCxFQUFPZ1EsV0FBYWhRLEVBQU9nUSxXQUVoQzdVLEVBQUtzckIsaUJBRWpCdm1CLEVBQU82TSxRQUNULE9BRUYsR0FBSTdNLEVBQU9nSyxVQUFZaEssRUFBT2dLLFNBQVNwSSxRQUlyQyxZQUhBOUIsRUFBT2tLLFNBQVMybUIsV0FBVyxDQUN6QkssZUFNSixNQUFNQyxFQUFjRCxJQUFlbHhCLEVBQU9ta0IsaUJBQW1CbmtCLEVBQU9FLE9BQU9oSixLQUMzRSxJQUFJazZCLEVBQVksRUFDWi9QLEVBQVlyaEIsRUFBTzhlLGdCQUFnQixHQUN2QyxJQUFLLElBQUkxbUIsRUFBSSxFQUFHQSxFQUFJeW1CLEVBQVdsb0IsT0FBUXlCLEdBQUtBLEVBQUk4SCxFQUFPMmdCLG1CQUFxQixFQUFJM2dCLEVBQU91RyxlQUFnQixDQUNyRyxNQUFNc2lCLEVBQVkzd0IsRUFBSThILEVBQU8yZ0IsbUJBQXFCLEVBQUksRUFBSTNnQixFQUFPdUcsb0JBQ3hCLElBQTlCb1ksRUFBV3ptQixFQUFJMndCLElBQ3BCb0ksR0FBZUQsR0FBY3JTLEVBQVd6bUIsSUFBTTg0QixFQUFhclMsRUFBV3ptQixFQUFJMndCLE1BQzVFcUksRUFBWWg1QixFQUNaaXBCLEVBQVl4QyxFQUFXem1CLEVBQUkyd0IsR0FBYWxLLEVBQVd6bUIsS0FFNUMrNEIsR0FBZUQsR0FBY3JTLEVBQVd6bUIsTUFDakRnNUIsRU
2FBWWg1QixFQUNaaXBCLEVBQVl4QyxFQUFXQSxFQUFXbG9CLE9BQVMsR0FBS2tvQixFQUFXQSxFQUFXbG9CLE9BQVMsR0FFbkYsQ0FDQSxJQUFJMDZCLEVBQW1CLEtBQ25CQyxFQUFrQixLQUNsQnB4QixFQUFPa0MsU0FDTHBDLEVBQU9tQyxZQUNUbXZCLEVBQWtCcHhCLEVBQU9tSCxTQUFXbkgsRUFBT21ILFFBQVF2RixTQUFXOUIsRUFBT3FILFFBQVVySCxFQUFPcUgsUUFBUVAsT0FBT25RLE9BQVMsRUFBSXFKLEVBQU84RyxPQUFPblEsT0FBUyxFQUNoSXFKLEVBQU9xQyxRQUNoQmd2QixFQUFtQixJQUl2QixNQUFNRSxHQUFTTCxFQUFhclMsRUFBV3VTLElBQWMvUCxFQUMvQzBILEVBQVlxSSxFQUFZbHhCLEVBQU8yZ0IsbUJBQXFCLEVBQUksRUFBSTNnQixFQUFPdUcsZUFDekUsR0FBSXNxQixFQUFXN3dCLEVBQU9zeEIsYUFBYyxDQUVsQyxJQUFLdHhCLEVBQU91eEIsV0FFVixZQURBenhCLEVBQU9nSCxRQUFRaEgsRUFBTzhILGFBR00sU0FBMUI5SCxFQUFPc3VCLGlCQUNMaUQsR0FBU3J4QixFQUFPd3hCLGdCQUFpQjF4QixFQUFPZ0gsUUFBUTlHLEVBQU9rQyxRQUFVcEMsRUFBT3FDLE1BQVFndkIsRUFBbUJELEVBQVlySSxHQUFnQi9vQixFQUFPZ0gsUUFBUW9xQixJQUV0SCxTQUExQnB4QixFQUFPc3VCLGlCQUNMaUQsRUFBUSxFQUFJcnhCLEVBQU93eEIsZ0JBQ3JCMXhCLEVBQU9nSCxRQUFRb3FCLEVBQVlySSxHQUNFLE9BQXBCdUksR0FBNEJDLEVBQVEsR0FBS2hxQixLQUFLNEksSUFBSW9oQixHQUFTcnhCLEVBQU93eEIsZ0JBQzNFMXhCLEVBQU9nSCxRQUFRc3FCLEdBRWZ0eEIsRUFBT2dILFFBQVFvcUIsR0FHckIsS0FBTyxDQUVMLElBQUtseEIsRUFBT3l4QixZQUVWLFlBREEzeEIsRUFBT2dILFFBQVFoSCxFQUFPOEgsYUFHRTlILEVBQU9zQixhQUFlakYsRUFBRUwsU0FBV2dFLEVBQU9zQixXQUFXVyxRQUFVNUYsRUFBRUwsU0FBV2dFLEVBQU9zQixXQUFXWSxRQVE3RzdGLEVBQUVMLFNBQVdnRSxFQUFPc0IsV0FBV1csT0FDeENqQyxFQUFPZ0gsUUFBUW9xQixFQUFZckksR0FFM0Ivb0IsRUFBT2dILFFBQVFvcUIsSUFUZSxTQUExQnB4QixFQUFPc3VCLGdCQUNUdHVCLEVBQU9nSCxRQUE2QixPQUFyQnFxQixFQUE0QkEsRUFBbUJELEVBQVlySSxHQUU5QyxTQUExQi9vQixFQUFPc3VCLGdCQUNUdHVCLEVBQU9nSCxRQUE0QixPQUFwQnNxQixFQUEyQkEsRUFBa0JGLEdBT2xFLENBQ0YsQ0FFQSxTQUFTUSxJQUNQLE1BQU01eEIsRUFBU2xJLE1BQ1QsT0FDSm9JLEVBQU0sR0FDTkssR0FDRVAsRUFDSixHQUFJTyxHQUF5QixJQUFuQkEsRUFBR21ZLFlBQW1CLE9BRzVCeFksRUFBT2dnQixhQUNUbGdCLEVBQU82eEIsZ0JBSVQsTUFBTSxlQUNKL0osRUFBYyxlQUNkQyxFQUFjLFNBQ2R0Z0IsR0FDRXpILEVBQ0UyZSxFQUFZM2UsRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBRzFEOUIsRUFBTzhuQixnQkFBaUIsRUFDeEI5bkIsRUFBTytuQixnQkFBaUIsRUFDeEIvbkIsRUFBTytkLGFBQ1AvZCxFQUFPbWUsZUFDUG5lLEVBQU9nbEIsc0JBQ1AsTUFBTThNLEVBQWdCblQsR0FBYXplLEVBQU9oSixPQUNaLFNBQXpCZ0osRUFBTzlJLGVBQTRCOEksRUFBTzlJLGNBQWdCLEtBQU00SSxFQUFPcUMsT0FBVXJDLEVBQU9tQyxhQUFnQm5DLEVBQU9FLE9BQU8wZixnQkFBbUJrUyxFQUd4STl4QixFQUFPRSxPQUFPaEosT0FBU3luQixFQUN6QjNlLEVBQU8rRyxZQUFZL0csRUFBTzBHLFVBQVcsR0FBRyxHQUFPLEdBRS9DMUcsRUFBT2dILFFBQVFoSCxFQUFPOEgsWUFBYSxHQUFHLEdBQU8sR0FML0M5SCxFQUFPZ0gsUUFBUWhILEVBQU84RyxPQUFPblEsT0FBUyxFQUFHLEdBQUcsR0FBTyxHQVFqRHFKLEVBQU9oSixVQUFZZ0osRUFBT2hKLFNBQVNxVCxTQUFXckssRUFBT2hKLFNBQVNzVCxTQUNoRTBDLGFBQWFoTixFQUFPaEosU0FBUys2QixlQUM3Qi94QixFQUFPaEosU0FBUys2QixjQUFnQjlrQixZQUFXLEtBQ3JDak4sRUFBT2hKLFVBQVlnSixFQUFPaEosU0FBU3FULFNBQVdySyxFQUFPaEosU0FBU3NULFFBQ2hFdEssRUFBT2hKLFNBQVNnVixRQUNsQixHQUNDLE1BR0xoTSxFQUFPK25CLGVBQWlCQSxFQUN4Qi9uQixFQUFPOG5CLGVBQWlCQSxFQUNwQjluQixFQUFPRSxPQUFPMkIsZUFBaUI0RixJQUFhekgsRUFBT3lILFVBQ3JEekgsRUFBT2tpQixlQUVYLENBRUEsU0FBUzhQLEVBQVEzMUIsR0FDZixNQUFNMkQsRUFBU2xJLEtBQ1ZrSSxFQUFPOEIsVUFDUDlCLEVBQU80dEIsYUFDTjV0QixFQUFPRSxPQUFPK3hCLGVBQWU1MUIsRUFBRWtHLGlCQUMvQnZDLEVBQU9FLE9BQU9neUIsMEJBQTRCbHlCLEVBQU80TixZQUNuRHZSLEVBQUV3ekIsa0JBQ0Z4ekIsRUFBRTgxQiw2QkFHUixDQUVBLFNBQVNDLElBQ1AsTUFBTXB5QixFQUFTbEksTUFDVCxVQUNKK1QsRUFBUyxhQUNUNFMsRUFBWSxRQUNaM2MsR0FDRTlCLEVBQ0osSUFBSzhCLEVBQVMsT0FXZCxJQUFJNmtCLEVBVkozbUIsRUFBTzhtQixrQkFBb0I5bUIsRUFBT2dRLFVBQzlCaFEsRUFBT2tJLGVBQ1RsSSxFQUFPZ1EsV0FBYW5FLEVBQVV3bUIsV0FFOUJyeUIsRUFBT2dRLFdBQWFuRSxFQUFVeW1CLFVBR1AsSUFBckJ0eUIsRUFBT2dRLFlBQWlCaFEsRUFBT2dRLFVBQVksR0FDL0NoUSxFQUFPeWxCLG9CQUNQemxCLEVBQU9nbEIsc0JBRVAsTUFBTWQsRUFBaUJsa0IsRUFBT21rQixlQUFpQm5rQixFQUFPdWpCLGVBRXBEb0QsRUFEcUIsSUFBbkJ6QyxFQUNZLEdBRUNsa0IsRUFBT2dRLFVBQVloUSxFQUFPdWpCLGdCQUFrQlcsRUFFekR5QyxJQUFnQjNtQixFQUFPb1EsVUFDekJwUSxFQUFPZ2tCLGVBQWV2RixHQUFnQnplLEVBQU9nUSxVQUFZaFEsRUFBT2dRLFdBRWxFaFEsRUFBT2UsS0FBSyxlQUFnQmYsRUFBT2dRLFdBQVcsRUFDaEQsQ0FFQSxTQUFTdWlCLEVBQU9sMkIsR0FDZCxNQUFNMkQsRUFBU2xJLEtBQ2ZrbEIsRUFBcUJoZCxFQUFRM0QsRUFBRUwsUUFDM0JnRSxFQUFPRSxPQUFPNk0sU0FBMkMsU0FBaEMvTSxFQUFPRSxPQUFPOUksZ0JBQTZCNEksRUFBT0UsT0FBTzZrQixZQUd0Ri9rQixFQUFPWCxRQUNULENBRUEsU0FBU216QixJQUNQLE1BQU14eUIsRUFBU2xJLEtBQ1hrSSxFQUFPeXlCLGdDQUNYenlCLEVBQU95eUIsK0JBQWdDLEVBQ25DenlCLEVBQU9FLE9BQU9ndkIsc0JBQ2hCbHZCLEVBQU9PLEdBQUcvQyxNQUFNazFCLFlBQWMsUUFFbEMsQ0FFQSxNQUFNcFgsRUFBUyxDQUFDdGIsRUFBUTJiLEtB
2Q3RCLE1BQU1ubEIsR0FBVyxJQUFBZ1gsTUFDWCxPQUNKdE4sRUFBTSxHQUNOSyxFQUFFLFVBQ0ZzTCxFQUFTLE9BQ1Q2TixHQUNFMVosRUFDRTJ5QixJQUFZenlCLEVBQU8wdkIsT0FDbkJnRCxFQUF1QixPQUFYalgsRUFBa0IsbUJBQXFCLHNCQUNuRGtYLEVBQWVsWCxFQUNoQnBiLEdBQW9CLGlCQUFQQSxJQUdsQi9KLEVBQVNvOEIsR0FBVyxhQUFjNXlCLEVBQU93eUIscUJBQXNCLENBQzdETSxTQUFTLEVBQ1RILFlBRUZweUIsRUFBR3F5QixHQUFXLGFBQWM1eUIsRUFBT3FzQixhQUFjLENBQy9DeUcsU0FBUyxJQUVYdnlCLEVBQUdxeUIsR0FBVyxjQUFlNXlCLEVBQU9xc0IsYUFBYyxDQUNoRHlHLFNBQVMsSUFFWHQ4QixFQUFTbzhCLEdBQVcsWUFBYTV5QixFQUFPOHVCLFlBQWEsQ0FDbkRnRSxTQUFTLEVBQ1RILFlBRUZuOEIsRUFBU284QixHQUFXLGNBQWU1eUIsRUFBTzh1QixZQUFhLENBQ3JEZ0UsU0FBUyxFQUNUSCxZQUVGbjhCLEVBQVNvOEIsR0FBVyxXQUFZNXlCLEVBQU82d0IsV0FBWSxDQUNqRGlDLFNBQVMsSUFFWHQ4QixFQUFTbzhCLEdBQVcsWUFBYTV5QixFQUFPNndCLFdBQVksQ0FDbERpQyxTQUFTLElBRVh0OEIsRUFBU284QixHQUFXLGdCQUFpQjV5QixFQUFPNndCLFdBQVksQ0FDdERpQyxTQUFTLElBRVh0OEIsRUFBU284QixHQUFXLGNBQWU1eUIsRUFBTzZ3QixXQUFZLENBQ3BEaUMsU0FBUyxJQUVYdDhCLEVBQVNvOEIsR0FBVyxhQUFjNXlCLEVBQU82d0IsV0FBWSxDQUNuRGlDLFNBQVMsSUFFWHQ4QixFQUFTbzhCLEdBQVcsZUFBZ0I1eUIsRUFBTzZ3QixXQUFZLENBQ3JEaUMsU0FBUyxJQUVYdDhCLEVBQVNvOEIsR0FBVyxjQUFlNXlCLEVBQU82d0IsV0FBWSxDQUNwRGlDLFNBQVMsS0FJUDV5QixFQUFPK3hCLGVBQWlCL3hCLEVBQU9neUIsMkJBQ2pDM3hCLEVBQUdxeUIsR0FBVyxRQUFTNXlCLEVBQU9neUIsU0FBUyxHQUVyQzl4QixFQUFPNk0sU0FDVGxCLEVBQVUrbUIsR0FBVyxTQUFVNXlCLEVBQU9veUIsVUFJcENseUIsRUFBTzZ5QixxQkFDVC95QixFQUFPNnlCLEdBQWNuWixFQUFPQyxLQUFPRCxFQUFPRSxRQUFVLDBDQUE0Qyx3QkFBeUJnWSxHQUFVLEdBRW5JNXhCLEVBQU82eUIsR0FBYyxpQkFBa0JqQixHQUFVLEdBSW5EcnhCLEVBQUdxeUIsR0FBVyxPQUFRNXlCLEVBQU91eUIsT0FBUSxDQUNuQ0ksU0FBUyxJQUNULEVBMkJKLE1BQU1LLEVBQWdCLENBQUNoekIsRUFBUUUsSUFDdEJGLEVBQU84SixNQUFRNUosRUFBTzRKLE1BQVE1SixFQUFPNEosS0FBS0MsS0FBTyxFQW1PMUQsSUFJSWtwQixFQUFXLENBQ2I1OEIsTUFBTSxFQUNObXhCLFVBQVcsYUFDWHVJLGdCQUFnQixFQUNoQm1ELHNCQUF1QixtQkFDdkJyRyxrQkFBbUIsVUFDbkJ4RSxhQUFjLEVBQ2RseEIsTUFBTyxJQUNQNFYsU0FBUyxFQUNUZ21CLHNCQUFzQixFQUN0QkksZ0JBQWdCLEVBQ2hCdkQsUUFBUSxFQUNSeHZCLGdCQUFnQixFQUNoQmd6QixhQUFjLFNBQ2R0eEIsU0FBUyxFQUNUMHNCLGtCQUFtQix3REFFbkIxVSxNQUFPLEtBQ1BFLE9BQVEsS0FFUmtOLGdDQUFnQyxFQUVoQy9VLFVBQVcsS0FDWGtoQixJQUFLLEtBRUxuSCxvQkFBb0IsRUFDcEJDLG1CQUFvQixHQUVwQnBILFlBQVksRUFFWmpFLGdCQUFnQixFQUVoQjFTLGtCQUFrQixFQUVsQm5YLE9BQVEsUUFJUmlwQixpQkFBYS9YLEVBQ2JtckIsZ0JBQWlCLFNBRWpCajhCLGFBQWMsRUFDZEQsY0FBZSxFQUNmcVAsZUFBZ0IsRUFDaEJvYSxtQkFBb0IsRUFDcEJpSSxvQkFBb0IsRUFDcEJsSixnQkFBZ0IsRUFDaEIyQixzQkFBc0IsRUFDdEJ2QyxtQkFBb0IsRUFFcEJFLGtCQUFtQixFQUVuQjJHLHFCQUFxQixFQUNyQmpFLDBCQUEwQixFQUUxQi9mLGVBQWUsRUFFZjJlLGNBQWMsRUFFZHdQLFdBQVksRUFDWlIsV0FBWSxHQUNaNUMsZUFBZSxFQUNmK0UsYUFBYSxFQUNiRixZQUFZLEVBQ1pDLGdCQUFpQixHQUNqQkYsYUFBYyxJQUNkWixjQUFjLEVBQ2RsQyxnQkFBZ0IsRUFDaEJoRixVQUFXLEVBQ1hpRywwQkFBMEIsRUFDMUJoQiwwQkFBMEIsRUFDMUJDLCtCQUErQixFQUMvQk0scUJBQXFCLEVBRXJCL3RCLG1CQUFtQixFQUVuQnd2QixZQUFZLEVBQ1pELGdCQUFpQixJQUVqQnBnQixxQkFBcUIsRUFFckJnZ0IsWUFBWSxFQUVaMkIsZUFBZSxFQUNmQywwQkFBMEIsRUFDMUIxTCxxQkFBcUIsRUFFckJ0dkIsTUFBTSxFQUNObXpCLG9CQUFvQixFQUNwQkcscUJBQXNCLEVBQ3RCeEIscUJBQXFCLEVBRXJCNW1CLFFBQVEsRUFFUjJsQixnQkFBZ0IsRUFDaEJELGdCQUFnQixFQUNoQitGLGFBQWMsS0FFZFAsV0FBVyxFQUNYSixlQUFnQixvQkFDaEJFLGtCQUFtQixLQUVuQm1HLGtCQUFrQixFQUNsQmpSLHdCQUF5QixHQUV6QjVTLHVCQUF3QixVQUV4QndOLFdBQVksZUFDWmtOLGdCQUFpQixxQkFDakIvRSxpQkFBa0Isc0JBQ2xCeEIsa0JBQW1CLHVCQUNuQkMsdUJBQXdCLDZCQUN4QndCLGVBQWdCLG9CQUNoQkMsZUFBZ0Isb0JBQ2hCaU8sYUFBYyxpQkFDZHBXLG1CQUFvQix3QkFDcEJJLG9CQUFxQixFQUVyQjJJLG9CQUFvQixFQUVwQnNOLGNBQWMsR0FHaEIsU0FBU0MsRUFBbUJ4ekIsRUFBUXl6QixHQUNsQyxPQUFPLFNBQXNCMzJCLFFBQ2YsSUFBUkEsSUFDRkEsRUFBTSxDQUFDLEdBRVQsTUFBTTQyQixFQUFrQjc1QixPQUFPNkQsS0FBS1osR0FBSyxHQUNuQzYyQixFQUFlNzJCLEVBQUk0MkIsR0FDRyxpQkFBakJDLEdBQThDLE9BQWpCQSxJQUlSLElBQTVCM3pCLEVBQU8wekIsS0FDVDF6QixFQUFPMHpCLEdBQW1CLENBQ3hCOXhCLFNBQVMsSUFHVyxlQUFwQjh4QixHQUFvQzF6QixFQUFPMHpCLElBQW9CMXpCLEVBQU8wekIsR0FBaUI5eEIsVUFBWTVCLEVBQU8wekIsR0FBaUIxeEIsU0FBV2hDLEVBQU8wekIsR0FBaUIzeEIsU0FDaEsvQixFQUFPMHpCLEdBQWlCdnpCLE1BQU8sR0FFN0IsQ0FBQyxhQUFjLGFBQWF5VSxRQUFROGUsSUFBb0IsR0FBSzF6QixFQUFPMHpCLElBQW9CMXpCLEVBQU8wekIsR0FBaUI5eEIsVUFBWTVCLEVBQU8wekIsR0FBaUJyekIsS0FDdEpMLEVBQU8wekIsR0FBaUJ2ekIsTUFBTyxHQUUzQnV6QixLQUFtQjF6QixHQUFVLFlBQWEyekIsR0FJVCxpQkFBNUIzekIsRUFBTzB6QixJQUFtQyxZQU
2FhMXpCLEVBQU8wekIsS0FDdkUxekIsRUFBTzB6QixHQUFpQjl4QixTQUFVLEdBRS9CNUIsRUFBTzB6QixLQUFrQjF6QixFQUFPMHpCLEdBQW1CLENBQ3REOXhCLFNBQVMsS0FFWCxPQUFPNnhCLEVBQWtCMzJCLEtBVHZCLE9BQU8yMkIsRUFBa0IzMkIsS0FmekIsT0FBTzIyQixFQUFrQjMyQixFQXlCN0IsQ0FDRixDQUdBLE1BQU04MkIsRUFBYSxDQUNqQnpZLGdCQUNBaGMsU0FDQTJRLFlBQ0ErakIsV0FsNERlLENBQ2Y1a0IsY0EvRUYsU0FBdUJsQixFQUFVeVksR0FDL0IsTUFBTTFtQixFQUFTbEksS0FDVmtJLEVBQU9FLE9BQU82TSxVQUNqQi9NLEVBQU82TCxVQUFVck8sTUFBTW1NLG1CQUFxQixHQUFHc0UsTUFDL0NqTyxFQUFPNkwsVUFBVXJPLE1BQU13MkIsZ0JBQStCLElBQWIvbEIsRUFBaUIsTUFBUSxJQUVwRWpPLEVBQU9lLEtBQUssZ0JBQWlCa04sRUFBVXlZLEVBQ3pDLEVBeUVFc0IsZ0JBekNGLFNBQXlCaEIsRUFBY1EsUUFDaEIsSUFBakJSLElBQ0ZBLEdBQWUsR0FFakIsTUFBTWhuQixFQUFTbEksTUFDVCxPQUNKb0ksR0FDRUYsRUFDQUUsRUFBTzZNLFVBQ1A3TSxFQUFPNmtCLFlBQ1Qva0IsRUFBT3VpQixtQkFFVGdGLEVBQWUsQ0FDYnZuQixTQUNBZ25CLGVBQ0FRLFlBQ0FDLEtBQU0sVUFFVixFQXdCRVEsY0F0QkYsU0FBdUJqQixFQUFjUSxRQUNkLElBQWpCUixJQUNGQSxHQUFlLEdBRWpCLE1BQU1obkIsRUFBU2xJLE1BQ1QsT0FDSm9JLEdBQ0VGLEVBQ0pBLEVBQU80TixXQUFZLEVBQ2YxTixFQUFPNk0sVUFDWC9NLEVBQU9tUCxjQUFjLEdBQ3JCb1ksRUFBZSxDQUNidm5CLFNBQ0FnbkIsZUFDQVEsWUFDQUMsS0FBTSxRQUVWLEdBcTRERXRILFFBQ0FqcEIsT0FDQW81QixXQWhwQ2UsQ0FDZkMsY0FqQ0YsU0FBdUIwRCxHQUNyQixNQUFNajBCLEVBQVNsSSxLQUNmLElBQUtrSSxFQUFPRSxPQUFPMHNCLGVBQWlCNXNCLEVBQU9FLE9BQU8yQixlQUFpQjdCLEVBQU8rQixVQUFZL0IsRUFBT0UsT0FBTzZNLFFBQVMsT0FDN0csTUFBTXhNLEVBQXlDLGNBQXBDUCxFQUFPRSxPQUFPMnNCLGtCQUFvQzdzQixFQUFPTyxHQUFLUCxFQUFPNkwsVUFDNUU3TCxFQUFPa0IsWUFDVGxCLEVBQU9rckIscUJBQXNCLEdBRS9CM3FCLEVBQUcvQyxNQUFNMDJCLE9BQVMsT0FDbEIzekIsRUFBRy9DLE1BQU0wMkIsT0FBU0QsRUFBUyxXQUFhLE9BQ3BDajBCLEVBQU9rQixXQUNUZ0wsdUJBQXNCLEtBQ3BCbE0sRUFBT2tyQixxQkFBc0IsQ0FBSyxHQUd4QyxFQW9CRWlKLGdCQWxCRixXQUNFLE1BQU1uMEIsRUFBU2xJLEtBQ1hrSSxFQUFPRSxPQUFPMkIsZUFBaUI3QixFQUFPK0IsVUFBWS9CLEVBQU9FLE9BQU82TSxVQUdoRS9NLEVBQU9rQixZQUNUbEIsRUFBT2tyQixxQkFBc0IsR0FFL0JsckIsRUFBMkMsY0FBcENBLEVBQU9FLE9BQU8yc0Isa0JBQW9DLEtBQU8sYUFBYXJ2QixNQUFNMDJCLE9BQVMsR0FDeEZsMEIsRUFBT2tCLFdBQ1RnTCx1QkFBc0IsS0FDcEJsTSxFQUFPa3JCLHFCQUFzQixDQUFLLElBR3hDLEdBbXBDRTVQLE9BclphLENBQ2I4WSxhQXJCRixXQUNFLE1BQU1wMEIsRUFBU2xJLE1BQ1QsT0FDSm9JLEdBQ0VGLEVBQ0pBLEVBQU9xc0IsYUFBZUEsRUFBYTlzQixLQUFLUyxHQUN4Q0EsRUFBTzh1QixZQUFjQSxFQUFZdnZCLEtBQUtTLEdBQ3RDQSxFQUFPNndCLFdBQWFBLEVBQVd0eEIsS0FBS1MsR0FDcENBLEVBQU93eUIscUJBQXVCQSxFQUFxQmp6QixLQUFLUyxHQUNwREUsRUFBTzZNLFVBQ1QvTSxFQUFPb3lCLFNBQVdBLEVBQVM3eUIsS0FBS1MsSUFFbENBLEVBQU9neUIsUUFBVUEsRUFBUXp5QixLQUFLUyxHQUM5QkEsRUFBT3V5QixPQUFTQSxFQUFPaHpCLEtBQUtTLEdBQzVCc2IsRUFBT3RiLEVBQVEsS0FDakIsRUFPRXEwQixhQU5GLFdBRUUvWSxFQURleGpCLEtBQ0EsTUFDakIsR0F1WkVvb0IsWUFsUmdCLENBQ2hCMlIsY0E3SEYsV0FDRSxNQUFNN3hCLEVBQVNsSSxNQUNULFVBQ0o0TyxFQUFTLFlBQ1R3ZixFQUFXLE9BQ1hobUIsRUFBTSxHQUNOSyxHQUNFUCxFQUNFa2dCLEVBQWNoZ0IsRUFBT2dnQixZQUMzQixJQUFLQSxHQUFlQSxHQUFtRCxJQUFwQ25tQixPQUFPNkQsS0FBS3NpQixHQUFhdnBCLE9BQWMsT0FHMUUsTUFBTTI5QixFQUFhdDBCLEVBQU91MEIsY0FBY3JVLEVBQWFsZ0IsRUFBT0UsT0FBT296QixnQkFBaUJ0ekIsRUFBT08sSUFDM0YsSUFBSyt6QixHQUFjdDBCLEVBQU93MEIsb0JBQXNCRixFQUFZLE9BQzVELE1BQ01HLEdBRHVCSCxLQUFjcFUsRUFBY0EsRUFBWW9VLFFBQWNuc0IsSUFDbENuSSxFQUFPQyxlQUNsRHkwQixFQUFjMUIsRUFBY2h6QixFQUFRRSxHQUNwQ3kwQixFQUFhM0IsRUFBY2h6QixFQUFReTBCLEdBQ25DRyxFQUFnQjUwQixFQUFPRSxPQUFPb3dCLFdBQzlCdUUsRUFBZUosRUFBaUJuRSxXQUNoQ3dFLEVBQWE1MEIsRUFBTzRCLFFBQ3RCNHlCLElBQWdCQyxHQUNsQnAwQixFQUFHa0IsVUFBVWpELE9BQU8sR0FBRzBCLEVBQU93UCw2QkFBOEIsR0FBR3hQLEVBQU93UCxxQ0FDdEUxUCxFQUFPKzBCLHlCQUNHTCxHQUFlQyxJQUN6QnAwQixFQUFHa0IsVUFBVXNCLElBQUksR0FBRzdDLEVBQU93UCwrQkFDdkIra0IsRUFBaUIzcUIsS0FBSzJnQixNQUF1QyxXQUEvQmdLLEVBQWlCM3FCLEtBQUsyZ0IsT0FBc0JnSyxFQUFpQjNxQixLQUFLMmdCLE1BQTZCLFdBQXJCdnFCLEVBQU80SixLQUFLMmdCLE9BQ3RIbHFCLEVBQUdrQixVQUFVc0IsSUFBSSxHQUFHN0MsRUFBT3d
2QLHFDQUU3QjFQLEVBQU8rMEIsd0JBRUxILElBQWtCQyxFQUNwQjcwQixFQUFPbTBCLG1CQUNHUyxHQUFpQkMsR0FDM0I3MEIsRUFBT3V3QixnQkFJVCxDQUFDLGFBQWMsYUFBYyxhQUFhMXlCLFNBQVFrYSxJQUNoRCxRQUFzQyxJQUEzQjBjLEVBQWlCMWMsR0FBdUIsT0FDbkQsTUFBTWlkLEVBQW1COTBCLEVBQU82WCxJQUFTN1gsRUFBTzZYLEdBQU1qVyxRQUNoRG16QixFQUFrQlIsRUFBaUIxYyxJQUFTMGMsRUFBaUIxYyxHQUFNalcsUUFDckVrekIsSUFBcUJDLEdBQ3ZCajFCLEVBQU8rWCxHQUFNelUsV0FFVjB4QixHQUFvQkMsR0FDdkJqMUIsRUFBTytYLEdBQU01VCxRQUNmLElBRUYsTUFBTSt3QixFQUFtQlQsRUFBaUJqTixXQUFhaU4sRUFBaUJqTixZQUFjdG5CLEVBQU9zbkIsVUFDdkYyTixFQUFjajFCLEVBQU9oSixPQUFTdTlCLEVBQWlCcjlCLGdCQUFrQjhJLEVBQU85SSxlQUFpQjg5QixHQUN6RkUsRUFBVWwxQixFQUFPaEosS0FDbkJnK0IsR0FBb0JoUCxHQUN0QmxtQixFQUFPcTFCLG1CQUVULE9BQU9yMUIsRUFBT0UsT0FBUXUwQixHQUN0QixNQUFNYSxFQUFZdDFCLEVBQU9FLE9BQU80QixRQUMxQnl6QixFQUFVdjFCLEVBQU9FLE9BQU9oSixLQUM5QjZDLE9BQU80SSxPQUFPM0MsRUFBUSxDQUNwQjB1QixlQUFnQjF1QixFQUFPRSxPQUFPd3VCLGVBQzlCNUcsZUFBZ0I5bkIsRUFBT0UsT0FBTzRuQixlQUM5QkMsZUFBZ0IvbkIsRUFBT0UsT0FBTzZuQixpQkFFNUIrTSxJQUFlUSxFQUNqQnQxQixFQUFPc0QsV0FDR3d4QixHQUFjUSxHQUN4QnQxQixFQUFPbUUsU0FFVG5FLEVBQU93MEIsa0JBQW9CRixFQUMzQnQwQixFQUFPZSxLQUFLLG9CQUFxQjB6QixHQUM3QnZPLElBQ0VpUCxHQUNGbjFCLEVBQU82ckIsY0FDUDdyQixFQUFPK3BCLFdBQVdyakIsR0FDbEIxRyxFQUFPbWUsaUJBQ0dpWCxHQUFXRyxHQUNyQnYxQixFQUFPK3BCLFdBQVdyakIsR0FDbEIxRyxFQUFPbWUsZ0JBQ0VpWCxJQUFZRyxHQUNyQnYxQixFQUFPNnJCLGVBR1g3ckIsRUFBT2UsS0FBSyxhQUFjMHpCLEVBQzVCLEVBMkNFRixjQXpDRixTQUF1QnJVLEVBQWFyakIsRUFBTTI0QixHQUl4QyxRQUhhLElBQVQzNEIsSUFDRkEsRUFBTyxXQUVKcWpCLEdBQXdCLGNBQVRyakIsSUFBeUIyNEIsRUFBYSxPQUMxRCxJQUFJbEIsR0FBYSxFQUNqQixNQUFNMTRCLEdBQVMsU0FDVDY1QixFQUF5QixXQUFUNTRCLEVBQW9CakIsRUFBTzg1QixZQUFjRixFQUFZdlgsYUFDckUwWCxFQUFTNTdCLE9BQU82RCxLQUFLc2lCLEdBQWFub0IsS0FBSTY5QixJQUMxQyxHQUFxQixpQkFBVkEsR0FBNkMsSUFBdkJBLEVBQU05Z0IsUUFBUSxLQUFZLENBQ3pELE1BQU0rZ0IsRUFBV3poQixXQUFXd2hCLEVBQU1FLE9BQU8sSUFFekMsTUFBTyxDQUNMdDhCLE1BRllpOEIsRUFBZ0JJLEVBRzVCRCxRQUVKLENBQ0EsTUFBTyxDQUNMcDhCLE1BQU9vOEIsRUFDUEEsUUFDRCxJQUVIRCxFQUFPSSxNQUFLLENBQUNqaUIsRUFBR2tpQixJQUFNdnBCLFNBQVNxSCxFQUFFdGEsTUFBTyxJQUFNaVQsU0FBU3VwQixFQUFFeDhCLE1BQU8sTUFDaEUsSUFBSyxJQUFJcEIsRUFBSSxFQUFHQSxFQUFJdTlCLEVBQU9oL0IsT0FBUXlCLEdBQUssRUFBRyxDQUN6QyxNQUFNLE1BQ0p3OUIsRUFBSyxNQUNMcDhCLEdBQ0VtOEIsRUFBT3Y5QixHQUNFLFdBQVR5RSxFQUNFakIsRUFBT2lYLFdBQVcsZUFBZXJaLFFBQVlxZCxVQUMvQ3lkLEVBQWFzQixHQUVOcDhCLEdBQVNnOEIsRUFBWXhYLGNBQzlCc1csRUFBYXNCLEVBRWpCLENBQ0EsT0FBT3RCLEdBQWMsS0FDdkIsR0FxUkVwUyxjQTlLb0IsQ0FDcEJBLGNBOUJGLFdBQ0UsTUFBTWxpQixFQUFTbEksTUFFYmlLLFNBQVVrMEIsRUFBUyxPQUNuQi8xQixHQUNFRixHQUNFLG1CQUNKZ2YsR0FDRTllLEVBQ0osR0FBSThlLEVBQW9CLENBQ3RCLE1BQU0wRixFQUFpQjFrQixFQUFPOEcsT0FBT25RLE9BQVMsRUFDeEN1L0IsRUFBcUJsMkIsRUFBTzZlLFdBQVc2RixHQUFrQjFrQixFQUFPOGUsZ0JBQWdCNEYsR0FBdUMsRUFBckIxRixFQUN4R2hmLEVBQU8rQixTQUFXL0IsRUFBT3dZLEtBQU8wZCxDQUNsQyxNQUNFbDJCLEVBQU8rQixTQUFzQyxJQUEzQi9CLEVBQU95SCxTQUFTOVEsUUFFTixJQUExQnVKLEVBQU80bkIsaUJBQ1Q5bkIsRUFBTzhuQixnQkFBa0I5bkIsRUFBTytCLFdBRUosSUFBMUI3QixFQUFPNm5CLGlCQUNUL25CLEVBQU8rbkIsZ0JBQWtCL25CLEVBQU8rQixVQUU5QmswQixHQUFhQSxJQUFjajJCLEVBQU8rQixXQUNwQy9CLEVBQU9xQyxPQUFRLEdBRWI0ekIsSUFBY2oyQixFQUFPK0IsVUFDdkIvQixFQUFPZSxLQUFLZixFQUFPK0IsU0FBVyxPQUFTLFNBRTNDLEdBZ0xFcUMsUUFqTlksQ0FDWit4QixXQWhERixXQUNFLE1BQU1uMkIsRUFBU2xJLE1BQ1QsV0FDSjJYLEVBQVUsT0FDVnZQLEVBQU0sSUFDTitHLEVBQUcsR0FDSDFHLEVBQUUsT0FDRm1aLEdBQ0UxWixFQUVFbzJCLEVBekJSLFNBQXdCQyxFQUFTQyxHQUMvQixNQUFNQyxFQUFnQixHQVl0QixPQVhBRixFQUFReDRCLFNBQVE3RixJQUNNLGlCQUFUQSxFQUNUK0IsT0FBTzZELEtBQUs1RixHQUFNNkYsU0FBUTRSLElBQ3BCelgsRUFBS3lYLElBQ1A4bUIsRUFBY2gvQixLQUFLKytCLEVBQVM3bUIsRUFDOUIsSUFFdUIsaUJBQVR6WCxHQUNoQnUrQixFQUFjaC9CLEtBQUsrK0IsRUFBU3QrQixFQUM5QixJQUVLdStCLENBQ1QsQ0FXbUJDLENBQWUsQ0FBQyxjQUFldDJCLEVBQU9zbkIsVUFBVyxDQUNoRSxZQUFheG5CLEVBQU9FLE9BQU9nSyxVQUFZaEssRUFBT2dLLFNBQVNwSSxTQUN0RCxDQUNELFdBQWM1QixFQUFPNmtCLFlBQ3BCLENBQ0QsSUFBTzlkLEdBQ04sQ0FDRCxLQUFRL0csRUFBTzRKLE1BQVE1SixFQUFPNEosS0FBS0MsS0FBTyxHQUN6QyxDQUNELGNBQWU3SixFQUFPNEosTUFBUTVKLEVBQU80SixLQUFLQyxLQUFPLEdBQTBCLFdBQXJCN0osRUFBTzRKLEtBQUsyZ0IsTUFDakUsQ0FDRCxRQUFXL1EsRUFBT0UsU0FDakIsQ0FDRCxJQUFPRixFQUFPQyxLQUNiLENBQ0QsV0FBWXpaLEVBQU82TSxTQUNsQixDQUNELFNBQVk3TSxFQUFPNk0sU0FBVzdNLEVBQU8wZixnQkFDcEMsQ0FDRCxpQkFBa0IxZixFQUFPb1Esc0JBQ3ZCcFEsRUFBT3dQLHdCQUNYRCxFQUFXbFksUUFBUTYrQixHQUNuQjcxQixFQUFHa0IsVUFBVXNCLE9BQU8wTSxHQUNwQnpQLEVBQU8rMEIsc0JBQ1QsRUFlRTBCLGNBYkYsV0FDRSxNQUNNLEdBQ0psMkIsRUFBRSxXQUNGa1AsR0FIYTNYLEtBS1Z5SSxHQUFvQixpQkFBUEEsSUFDbEJBLEVBQUdrQixVQUFVakQsVUFBVWlSLEd
2BTlIzWCxLQU9SaTlCLHVCQUNULElBcU5NMkIsRUFBbUIsQ0FBQyxFQUMxQixNQUFNOS9CLEVBQ0osV0FBQXNELEdBQ0UsSUFBSXFHLEVBQ0FMLEVBQ0osSUFBSyxJQUFJK2IsRUFBTzFILFVBQVU1ZCxPQUFRdWxCLEVBQU8sSUFBSXZqQixNQUFNc2pCLEdBQU9FLEVBQU8sRUFBR0EsRUFBT0YsRUFBTUUsSUFDL0VELEVBQUtDLEdBQVE1SCxVQUFVNEgsR0FFTCxJQUFoQkQsRUFBS3ZsQixRQUFnQnVsQixFQUFLLEdBQUdoaUIsYUFBd0UsV0FBekRILE9BQU9DLFVBQVVuQyxTQUFTd0IsS0FBSzZpQixFQUFLLElBQUlqaUIsTUFBTSxHQUFJLEdBQ2hHaUcsRUFBU2djLEVBQUssSUFFYjNiLEVBQUlMLEdBQVVnYyxFQUVaaGMsSUFBUUEsRUFBUyxDQUFDLEdBQ3ZCQSxHQUFTLE9BQU8sQ0FBQyxFQUFHQSxHQUNoQkssSUFBT0wsRUFBT0ssS0FBSUwsRUFBT0ssR0FBS0EsR0FDbEMsTUFBTS9KLEdBQVcsSUFBQWdYLEtBQ2pCLEdBQUl0TixFQUFPSyxJQUEyQixpQkFBZEwsRUFBT0ssSUFBbUIvSixFQUFTRSxpQkFBaUJ3SixFQUFPSyxJQUFJNUosT0FBUyxFQUFHLENBQ2pHLE1BQU1nZ0MsRUFBVSxHQVFoQixPQVBBbmdDLEVBQVNFLGlCQUFpQndKLEVBQU9LLElBQUkxQyxTQUFRMjNCLElBQzNDLE1BQU1vQixHQUFZLE9BQU8sQ0FBQyxFQUFHMTJCLEVBQVEsQ0FDbkNLLEdBQUlpMUIsSUFFTm1CLEVBQVFwL0IsS0FBSyxJQUFJWCxFQUFPZ2dDLEdBQVcsSUFHOUJELENBQ1QsQ0FHQSxNQUFNMzJCLEVBQVNsSSxLQUNma0ksRUFBT21WLFlBQWEsRUFDcEJuVixFQUFPNFksUUFBVUcsSUFDakIvWSxFQUFPMFosT0FBU0wsRUFBVSxDQUN4QmxILFVBQVdqUyxFQUFPaVMsWUFFcEJuUyxFQUFPOFksUUFBVTJCLElBQ2pCemEsRUFBTzBiLGdCQUFrQixDQUFDLEVBQzFCMWIsRUFBT3NjLG1CQUFxQixHQUM1QnRjLEVBQU9uSixRQUFVLElBQUltSixFQUFPNjJCLGFBQ3hCMzJCLEVBQU9ySixTQUFXOEIsTUFBTUMsUUFBUXNILEVBQU9ySixVQUN6Q21KLEVBQU9uSixRQUFRVSxRQUFRMkksRUFBT3JKLFNBRWhDLE1BQU04OEIsRUFBbUIsQ0FBQyxFQUMxQjN6QixFQUFPbkosUUFBUWdILFNBQVFpNUIsSUFDckJBLEVBQUksQ0FDRjUyQixTQUNBRixTQUNBYSxhQUFjNnlCLEVBQW1CeHpCLEVBQVF5ekIsR0FDekM3eUIsR0FBSWQsRUFBT2MsR0FBR3ZCLEtBQUtTLEdBQ25CNmIsS0FBTTdiLEVBQU82YixLQUFLdGMsS0FBS1MsR0FDdkIrYixJQUFLL2IsRUFBTytiLElBQUl4YyxLQUFLUyxHQUNyQmUsS0FBTWYsRUFBT2UsS0FBS3hCLEtBQUtTLElBQ3ZCLElBSUosTUFBTSsyQixHQUFlLE9BQU8sQ0FBQyxFQUFHOUQsRUFBVVUsR0FxRzFDLE9BbEdBM3pCLEVBQU9FLFFBQVMsT0FBTyxDQUFDLEVBQUc2MkIsRUFBY0wsRUFBa0J4MkIsR0FDM0RGLEVBQU9DLGdCQUFpQixPQUFPLENBQUMsRUFBR0QsRUFBT0UsUUFDMUNGLEVBQU9nM0IsY0FBZSxPQUFPLENBQUMsRUFBRzkyQixHQUc3QkYsRUFBT0UsUUFBVUYsRUFBT0UsT0FBT1ksSUFDakMvRyxPQUFPNkQsS0FBS29DLEVBQU9FLE9BQU9ZLElBQUlqRCxTQUFRbzVCLElBQ3BDajNCLEVBQU9jLEdBQUdtMkIsRUFBV2ozQixFQUFPRSxPQUFPWSxHQUFHbTJCLEdBQVcsSUFHakRqM0IsRUFBT0UsUUFBVUYsRUFBT0UsT0FBT21jLE9BQ2pDcmMsRUFBT3FjLE1BQU1yYyxFQUFPRSxPQUFPbWMsT0FJN0J0aUIsT0FBTzRJLE9BQU8zQyxFQUFRLENBQ3BCOEIsUUFBUzlCLEVBQU9FLE9BQU80QixRQUN2QnZCLEtBRUFrUCxXQUFZLEdBRVozSSxPQUFRLEdBQ1IrWCxXQUFZLEdBQ1pwWCxTQUFVLEdBQ1ZxWCxnQkFBaUIsR0FFakIsWUFBQTVXLEdBQ0UsTUFBbUMsZUFBNUJsSSxFQUFPRSxPQUFPc25CLFNBQ3ZCLEVBQ0EsVUFBQXRKLEdBQ0UsTUFBbUMsYUFBNUJsZSxFQUFPRSxPQUFPc25CLFNBQ3ZCLEVBRUExZixZQUFhLEVBQ2JwQixVQUFXLEVBRVh2RSxhQUFhLEVBQ2JFLE9BQU8sRUFFUDJOLFVBQVcsRUFDWDhXLGtCQUFtQixFQUNuQjFXLFNBQVUsRUFDVjhtQixTQUFVLEVBQ1Z0cEIsV0FBVyxFQUNYLHFCQUFBcVYsR0FHRSxPQUFPMWIsS0FBSzR2QixNQUFNci9CLEtBQUtrWSxVQUFZLEdBQUssSUFBTSxHQUFLLEVBQ3JELEVBRUE4WCxlQUFnQjluQixFQUFPRSxPQUFPNG5CLGVBQzlCQyxlQUFnQi9uQixFQUFPRSxPQUFPNm5CLGVBRTlCd0QsZ0JBQWlCLENBQ2Z2Z0IsZUFBVzdDLEVBQ1g2a0IsYUFBUzdrQixFQUNUK2xCLHlCQUFxQi9sQixFQUNyQmttQixvQkFBZ0JsbUIsRUFDaEJnbUIsaUJBQWFobUIsRUFDYnNlLHNCQUFrQnRlLEVBQ2xCcWpCLG9CQUFnQnJqQixFQUNoQm9tQix3QkFBb0JwbUIsRUFFcEJxbUIsa0JBQW1CeHVCLEVBQU9FLE9BQU9zdUIsa0JBRWpDeUMsY0FBZSxFQUNmbUcsa0JBQWNqdkIsRUFFZGt2QixXQUFZLEdBQ1poSCx5QkFBcUJsb0IsRUFDckJpbUIsaUJBQWFqbUIsRUFDYm9rQixVQUFXLEtBQ1hFLFFBQVMsTUFHWG1CLFlBQVksRUFFWmMsZUFBZ0IxdUIsRUFBT0UsT0FBT3d1QixlQUM5Qi9CLFFBQVMsQ0FDUFYsT0FBUSxFQUNSZ0MsT0FBUSxFQUNSSCxTQUFVLEVBQ1ZDLFNBQVUsRUFDVnpDLEtBQU0sR0FHUmdNLGFBQWMsR0FDZEMsYUFBYyxJQUVoQnYzQixFQUFPZSxLQUFLLFdBR1JmLEVBQU9FLE9BQU83SixNQUNoQjJKLEVBQU8zSixPQUtGMkosQ0FDVCxDQUNBLGlCQUFBc2UsQ0FBa0JrWixHQUNoQixPQUFJMS9CLEtBQUtvUSxlQUNBc3ZCLEVBR0YsQ0FDTCxNQUFTLFNBQ1QsYUFBYyxjQUNkLGlCQUFrQixlQUNsQixjQUFlLGFBQ2YsZUFBZ0IsZ0JBQ2hCLGVBQWdCLGNBQ2hCLGdCQUFpQixpQkFDakIsWUFBZSxnQkFDZkEsRUFDSixDQUNBLGFBQUE5b0IsQ0FBY2xDLEdBQ1osTUFBTSxTQUNKK1IsRUFBUSxPQUNScmUsR0FDRXBJLEtBQ0VnUCxHQUFTLElBQUF6SyxHQUFnQmtpQixFQUFVLElBQUlyZSxFQUFPZ2QsNEJBQzlDdUgsR0FBa0IsT0FBYTNkLEVBQU8sSUFDNUMsT0FBTyxPQUFhMEYsR0FBV2lZLENBQ2pDLENBQ0EsbUJBQUE5QixDQUFvQjVsQixHQUNsQixPQUFPakYsS0FBSzRXLGNBQWM1VyxLQUFLZ1AsT0FBT3hJLFFBQU9rTyxHQUE2RCxFQUFsREEsRUFBUUUsYUFBYSw2QkFBbUMzUCxJQUFPLEdBQ3pILENBQ0EsWUFBQXV0QixHQUNFLE1BQ00sU0FDSi9MLEVBQVEsT0FDUnJlLEdBSGFwSSxVQUtSZ1AsUUFBUyxJQUFBekssR0FBZ0JraUIsRUFBVSxJQUFJcmUsRUFBT2dkLDJCQUN2RCxDQUNBLE1BQUEvWSxHQUNFLE1BQU1uRSxFQUFTbEksS0FDWGtJLEVBQU84QixVQUNYOUIsRUFBTzhCLFNBQVUsRUFDYjlCLEVBQU9FLE9BQU9vd0IsWUFDaEJ0d0IsRUFBT3V3QixnQkFFVHZ3QixFQUFPZSxLQUFLLFVBQ2QsQ0FDQSxPQUFBdUMsR0FDRSxNQUFNdEQsRUFBU2xJLEtBQ1ZrSSxFQUFPOEIsVUFDWjlCLEVBQU84QixTQUFVLEVBQ2I5QixFQUFPRSxPQUFPb3dCLFlBQ2hCdHdCLEVBQU9tMEIsa0JBRVRuMEIsRUFBT2UsS0FBSyxXQUNkLENBQ0EsV0FBQTAyQixDQUFZcm5CLEVBQVVqWixHQUNwQixNQUFNNkksRUFBU2xJLEtBQ2ZzWSxFQUFXN0ksS0FBS2MsSUFBSWQsS0FBS2EsSUFBSWdJLEVBQVUsR0FBSSxHQUMzQyxNQUFNL0gsRUFBTXJJLEVBQU91akIsZUFFYnJjLEdBRE1sSCxFQUFPbWtCLGVBQ0k5YixHQUFPK0gsRUFBVy9ILEVBQ3pDckksRUFBTyttQixZQUFZN2YsT0FBMEIsSUFBVi9QLEVBQXdCLEVBQUlBLEdBQy9ENkksRUFBT3lsQixvQkFDUHpsQixFQUFPZ2xCLHFCQUNULENBQ0Esb0JBQUErUCxHQUNFLE1BQU0vMEIsRUFBU2xJLEtBQ2YsSUFBS2tJLEVBQU9FLE9BQU91ekIsZUFBaUJ6ekIsRUFBT08sR0FBSSxPQUMvQyxNQUFNbTNCLEVBQU0xM0IsRUFBT08sR0FBR0UsVUFBVWtCLE1BQU0sS0FBS3JELFFBQU9tQyxHQUNULElBQWhDQSxFQUFVcVUsUUFBUSxXQUErRSxJQUE1RHJVLEVBQVVxVSxRQUFROVUsRUFBT0UsT0FBT3dQLDBCQUU5RTFQLEVBQU9lLEtBQUssb0JBQXFCMjJCLEVBQUl2L0IsS0FBSyxLQUM1QyxDQUNBLGVBQUF3L0IsQ0FBZ0JuckIsR0FDZCxNQUFNeE0sRUFBU2xJLEtBQ2YsT0FBSWtJLEVBQU80TCxVQUFrQixHQUN0QlksRUFBUS9MLFVBQVVrQixNQUFNLEtBQUtyRCxRQUFPbUMsR0FDSSxJQUF0Q0EsRUFBVXFVLFFBQVEsaUJBQXlFLElBQWhEclUsRUFBVXFVLFFBQVE5VSxFQUFPRSxPQUFPZ2QsY0FDakYva0IsS0FBSyxJQUNWLENBQ0EsaUJBQUFxdEIsR0FDRSxNQUFNeGxCLEVBQVNsSSxLQUNmLElBQUtrSSxFQUFPRSxPQUFPdXpCLGVBQWlCenpCLEVBQU9PLEdBQUksT0FDL0MsTUFBTXEzQixFQUFVLEdBQ2hCNTNCLEVBQU84RyxPQUFPakosU0FBUTJPLElBQ3BCLE1BQU1pRCxFQUFhelAsRUFBTzIzQixnQkFBZ0JuckIsR0FDMUNvckIsRUFBUXJnQyxLQUFLLENBQ1hpVixVQUNBaUQsZUFFRnpQLEVBQU9lLEtBQUssY0FBZXlMLEVBQVNpRCxFQUFXLElBRWpEelAsRUFBT2UsS0FBSyxnQkFBaUI2MkIsRUFDL0IsQ0FDQSxvQkFBQW5hLENBQXFCb2EsRUFBTUMsUUFDWixJQUFURCxJQUNGQSxFQUFPLGdCQUVLLElBQVZDLElBQ0ZBLEdBQVEsR0FFVixNQUNNLE9BQ0o1M0IsRU
2FBTSxPQUNONEcsRUFBTSxXQUNOK1gsRUFBVSxnQkFDVkMsRUFDQXRHLEtBQU1nRyxFQUFVLFlBQ2hCMVcsR0FQYWhRLEtBU2YsSUFBSWlnQyxFQUFNLEVBQ1YsR0FBb0MsaUJBQXpCNzNCLEVBQU85SSxjQUE0QixPQUFPOEksRUFBTzlJLGNBQzVELEdBQUk4SSxFQUFPMGYsZUFBZ0IsQ0FDekIsSUFDSW9ZLEVBREFsWSxFQUFZaFosRUFBT2dCLEdBQWVQLEtBQUtDLEtBQUtWLEVBQU9nQixHQUFhOFksaUJBQW1CLEVBRXZGLElBQUssSUFBSXhvQixFQUFJMFAsRUFBYyxFQUFHMVAsRUFBSTBPLEVBQU9uUSxPQUFReUIsR0FBSyxFQUNoRDBPLEVBQU8xTyxLQUFPNC9CLElBQ2hCbFksR0FBYXZZLEtBQUtDLEtBQUtWLEVBQU8xTyxHQUFHd29CLGlCQUNqQ21YLEdBQU8sRUFDSGpZLEVBQVl0QixJQUFZd1osR0FBWSxJQUc1QyxJQUFLLElBQUk1L0IsRUFBSTBQLEVBQWMsRUFBRzFQLEdBQUssRUFBR0EsR0FBSyxFQUNyQzBPLEVBQU8xTyxLQUFPNC9CLElBQ2hCbFksR0FBYWhaLEVBQU8xTyxHQUFHd29CLGdCQUN2Qm1YLEdBQU8sRUFDSGpZLEVBQVl0QixJQUFZd1osR0FBWSxHQUc5QyxNQUVFLEdBQWEsWUFBVEgsRUFDRixJQUFLLElBQUl6L0IsRUFBSTBQLEVBQWMsRUFBRzFQLEVBQUkwTyxFQUFPblEsT0FBUXlCLEdBQUssRUFBRyxFQUNuQzAvQixFQUFRalosRUFBV3ptQixHQUFLMG1CLEVBQWdCMW1CLEdBQUt5bUIsRUFBVy9XLEdBQWUwVyxFQUFhSyxFQUFXem1CLEdBQUt5bUIsRUFBVy9XLEdBQWUwVyxLQUVoSnVaLEdBQU8sRUFFWCxNQUdBLElBQUssSUFBSTMvQixFQUFJMFAsRUFBYyxFQUFHMVAsR0FBSyxFQUFHQSxHQUFLLEVBQUcsQ0FDeEJ5bUIsRUFBVy9XLEdBQWUrVyxFQUFXem1CLEdBQUtvbUIsSUFFNUR1WixHQUFPLEVBRVgsQ0FHSixPQUFPQSxDQUNULENBQ0EsTUFBQTE0QixHQUNFLE1BQU1XLEVBQVNsSSxLQUNmLElBQUtrSSxHQUFVQSxFQUFPNEwsVUFBVyxPQUNqQyxNQUFNLFNBQ0puRSxFQUFRLE9BQ1J2SCxHQUNFRixFQWNKLFNBQVNrUCxJQUNQLE1BQU0rb0IsRUFBaUJqNEIsRUFBT3llLGNBQW1DLEVBQXBCemUsRUFBT2dRLFVBQWlCaFEsRUFBT2dRLFVBQ3RFbVgsRUFBZTVmLEtBQUtjLElBQUlkLEtBQUthLElBQUk2dkIsRUFBZ0JqNEIsRUFBT21rQixnQkFBaUJua0IsRUFBT3VqQixnQkFDdEZ2akIsRUFBT2tQLGFBQWFpWSxHQUNwQm5uQixFQUFPeWxCLG9CQUNQemxCLEVBQU9nbEIscUJBQ1QsQ0FDQSxJQUFJa1QsRUFDSixHQXBCSWg0QixFQUFPZ2dCLGFBQ1RsZ0IsRUFBTzZ4QixnQkFFVCxJQUFJN3hCLEVBQU9PLEdBQUc3SixpQkFBaUIscUJBQXFCbUgsU0FBUW9mLElBQ3REQSxFQUFRa2IsVUFDVm5iLEVBQXFCaGQsRUFBUWlkLEVBQy9CLElBRUZqZCxFQUFPK2QsYUFDUC9kLEVBQU9tZSxlQUNQbmUsRUFBT2drQixpQkFDUGhrQixFQUFPZ2xCLHNCQVNIOWtCLEVBQU9nSyxVQUFZaEssRUFBT2dLLFNBQVNwSSxVQUFZNUIsRUFBTzZNLFFBQ3hEbUMsSUFDSWhQLEVBQU82a0IsWUFDVC9rQixFQUFPdWlCLHVCQUVKLENBQ0wsSUFBOEIsU0FBekJyaUIsRUFBTzlJLGVBQTRCOEksRUFBTzlJLGNBQWdCLElBQU00SSxFQUFPcUMsUUFBVW5DLEVBQU8wZixlQUFnQixDQUMzRyxNQUFNOVksRUFBUzlHLEVBQU9xSCxTQUFXbkgsRUFBT21ILFFBQVF2RixRQUFVOUIsRUFBT3FILFFBQVFQLE9BQVM5RyxFQUFPOEcsT0FDekZveEIsRUFBYWw0QixFQUFPZ0gsUUFBUUYsRUFBT25RLE9BQVMsRUFBRyxHQUFHLEdBQU8sRUFDM0QsTUFDRXVoQyxFQUFhbDRCLEVBQU9nSCxRQUFRaEgsRUFBTzhILFlBQWEsR0FBRyxHQUFPLEdBRXZEb3dCLEdBQ0hocEIsR0FFSixDQUNJaFAsRUFBTzJCLGVBQWlCNEYsSUFBYXpILEVBQU95SCxVQUM5Q3pILEVBQU9raUIsZ0JBRVRsaUIsRUFBT2UsS0FBSyxTQUNkLENBQ0EsZUFBQXMwQixDQUFnQitDLEVBQWNDLFFBQ1QsSUFBZkEsSUFDRkEsR0FBYSxHQUVmLE1BQU1yNEIsRUFBU2xJLEtBQ1R3Z0MsRUFBbUJ0NEIsRUFBT0UsT0FBT3NuQixVQUt2QyxPQUpLNFEsSUFFSEEsRUFBb0MsZUFBckJFLEVBQW9DLFdBQWEsY0FFOURGLElBQWlCRSxHQUFxQyxlQUFqQkYsR0FBa0QsYUFBakJBLElBRzFFcDRCLEVBQU9PLEdBQUdrQixVQUFVakQsT0FBTyxHQUFHd0IsRUFBT0UsT0FBT3dQLHlCQUF5QjRvQixLQUNyRXQ0QixFQUFPTyxHQUFHa0IsVUFBVXNCLElBQUksR0FBRy9DLEVBQU9FLE9BQU93UCx5QkFBeUIwb0IsS0FDbEVwNEIsRUFBTyswQix1QkFDUC8wQixFQUFPRSxPQUFPc25CLFVBQVk0USxFQUMxQnA0QixFQUFPOEcsT0FBT2pKLFNBQVEyTyxJQUNDLGFBQWpCNHJCLEVBQ0Y1ckIsRUFBUWhQLE1BQU1zYyxNQUFRLEdBRXRCdE4sRUFBUWhQLE1BQU13YyxPQUFTLEVBQ3pCLElBRUZoYSxFQUFPZSxLQUFLLG1CQUNSczNCLEdBQVlyNEIsRUFBT1gsVUFkZFcsQ0FnQlgsQ0FDQSx1QkFBQXU0QixDQUF3Qi9RLEdBQ3RCLE1BQU14bkIsRUFBU2xJLEtBQ1hrSSxFQUFPaUgsS0FBcUIsUUFBZHVnQixJQUF3QnhuQixFQUFPaUgsS0FBcUIsUUFBZHVnQixJQUN4RHhuQixFQUFPaUgsSUFBb0IsUUFBZHVnQixFQUNieG5CLEVBQU95ZSxhQUEyQyxlQUE1QnplLEVBQU9FLE9BQU9zbkIsV0FBOEJ4bkIsRUFBT2lILElBQ3JFakgsRUFBT2lILEtBQ1RqSCxFQUFPTyxHQUFHa0IsVUFBVXNCLElBQUksR0FBRy9DLEVBQU9FLE9BQU93UCw2QkFDekMxUCxFQUFPTyxHQUFHc0MsSUFBTSxRQUVoQjdDLEVBQU9PLEdBQUdrQixVQUFVakQsT0FBTyxHQUFHd0IsRUFBT0UsT0FBT3dQLDZCQUM1QzFQLEVBQU9PLEdBQUdzQyxJQUFNLE9BRWxCN0MsRUFBT1gsU0FDVCxDQUNBLEtBQUFtNUIsQ0FBTWw0QixHQUNKLE1BQU1OLEVBQVNsSSxLQUNmLEdBQUlrSSxFQUFPeTRCLFFBQVMsT0FBTyxFQUczQixJQUFJbDRCLEVBQUtELEdBQVdOLEVBQU9FLE9BQU9LLEdBSWxDLEdBSGtCLGlCQUFQQSxJQUNUQSxFQUFLL0osU0FBU0MsY0FBYzhKLEtBRXpCQSxFQUNILE9BQU8sRUFFVEEsRUFBR1AsT0FBU0EsRUFDUk8sRUFBR2YsWUFBY2UsRUFBR2YsV0FBV2dTLE1BQVFqUixFQUFHZixXQUFXZ1MsS0FBS1YsV0FBYTlRLEVBQU9FLE9BQU9nekIsc0JBQXNCd0YsZ0JBQzdHMTRCLEVBQU9rQixXQUFZLEdBRXJCLE1BQU15M0IsRUFBcUIsSUFDbEIsS0FBSzM0QixFQUFPRSxPQUFPc3pCLGNBQWdCLElBQUludkIsT0FBTzFDLE1BQU0sS0FBS3hKLEtBQUssT0FXdkUsSUFBSTBULEVBVGUsTUFDakIsR0FBSXRMLEdBQU1BLEVBQUdpTyxZQUFjak8sRUFBR2lPLFdBQVcvWCxjQUFlLENBR3RELE9BRlk4SixFQUFHaU8sV0FBVy9YLGNBQWNraUMsSUFHMUMsQ0FDQSxPQUFPLElBQUF0OEIsR0FBZ0JrRSxFQUFJbzRCLEtBQXNCLEVBQUUsRUFHckNDLEdBbUJoQixPQWxCSy9zQixHQUFhN0wsRUFBT0UsT0FBT0UsaUJBQzlCeUwsR0FBWSxJQUFBckwsR0FBYyxNQUFPUixFQUFPRSxPQUFPc3pCLGNBQy9DanpCLEVBQUdHLE9BQU9tTCxJQUNWLElBQUF4UCxHQUFnQmtFLEVBQUksSUFBSVAsRUFBT0UsT0FBT2dkLGNBQWNyZixTQUFRMk8sSUFDMURYLEVBQVVuTCxPQUFPOEwsRUFBUSxLQUc3QnpTLE9BQU80SSxPQUFPM0MsRUFBUSxDQUNwQk8sS0FDQXNMLFlBQ0EwUyxTQUFVdmUsRUFBT2tCLFlBQWNYLEVBQUdmLFdBQVdnUyxLQUFLcW5CLFdBQWF0NEIsRUFBR2YsV0FBV2dTLEtBQU8zRixFQUNwRml0QixPQUFROTRCLEVBQU9rQixVQUFZWCxFQU
2FHZixXQUFXZ1MsS0FBT2pSLEVBQ2hEazRCLFNBQVMsRUFFVHh4QixJQUE4QixRQUF6QjFHLEVBQUdzQyxJQUFJK1gsZUFBNkQsU0FBbEMsT0FBYXJhLEVBQUksYUFDeERrZSxhQUEwQyxlQUE1QnplLEVBQU9FLE9BQU9zbkIsWUFBd0QsUUFBekJqbkIsRUFBR3NDLElBQUkrWCxlQUE2RCxTQUFsQyxPQUFhcmEsRUFBSSxjQUM5R21lLFNBQWlELGlCQUF2QyxPQUFhN1MsRUFBVyxjQUU3QixDQUNULENBQ0EsSUFBQXhWLENBQUtrSyxHQUNILE1BQU1QLEVBQVNsSSxLQUNmLEdBQUlrSSxFQUFPa21CLFlBQWEsT0FBT2xtQixFQUUvQixJQUFnQixJQURBQSxFQUFPdzRCLE1BQU1qNEIsR0FDTixPQUFPUCxFQUM5QkEsRUFBT2UsS0FBSyxjQUdSZixFQUFPRSxPQUFPZ2dCLGFBQ2hCbGdCLEVBQU82eEIsZ0JBSVQ3eEIsRUFBT20yQixhQUdQbjJCLEVBQU8rZCxhQUdQL2QsRUFBT21lLGVBQ0huZSxFQUFPRSxPQUFPMkIsZUFDaEI3QixFQUFPa2lCLGdCQUlMbGlCLEVBQU9FLE9BQU9vd0IsWUFBY3R3QixFQUFPOEIsU0FDckM5QixFQUFPdXdCLGdCQUlMdndCLEVBQU9FLE9BQU9oSixNQUFROEksRUFBT3FILFNBQVdySCxFQUFPRSxPQUFPbUgsUUFBUXZGLFFBQ2hFOUIsRUFBT2dILFFBQVFoSCxFQUFPRSxPQUFPbW9CLGFBQWVyb0IsRUFBT3FILFFBQVE4WixhQUFjLEVBQUduaEIsRUFBT0UsT0FBT2ltQixvQkFBb0IsR0FBTyxHQUVySG5tQixFQUFPZ0gsUUFBUWhILEVBQU9FLE9BQU9tb0IsYUFBYyxFQUFHcm9CLEVBQU9FLE9BQU9pbUIsb0JBQW9CLEdBQU8sR0FJckZubUIsRUFBT0UsT0FBT2hKLE1BQ2hCOEksRUFBTytwQixhQUlUL3BCLEVBQU9vMEIsZUFDUCxNQUFNMkUsRUFBZSxJQUFJLzRCLEVBQU9PLEdBQUc3SixpQkFBaUIscUJBc0JwRCxPQXJCSXNKLEVBQU9rQixXQUNUNjNCLEVBQWF4aEMsUUFBUXlJLEVBQU84NEIsT0FBT3BpQyxpQkFBaUIscUJBRXREcWlDLEVBQWFsN0IsU0FBUW9mLElBQ2ZBLEVBQVFrYixTQUNWbmIsRUFBcUJoZCxFQUFRaWQsR0FFN0JBLEVBQVFuYSxpQkFBaUIsUUFBUXpHLElBQy9CMmdCLEVBQXFCaGQsRUFBUTNELEVBQUVMLE9BQU8sR0FFMUMsSUFFRnNoQixFQUFRdGQsR0FHUkEsRUFBT2ttQixhQUFjLEVBQ3JCNUksRUFBUXRkLEdBR1JBLEVBQU9lLEtBQUssUUFDWmYsRUFBT2UsS0FBSyxhQUNMZixDQUNULENBQ0EsT0FBQWdELENBQVFnMkIsRUFBZ0JDLFFBQ0MsSUFBbkJELElBQ0ZBLEdBQWlCLFFBRUMsSUFBaEJDLElBQ0ZBLEdBQWMsR0FFaEIsTUFBTWo1QixFQUFTbEksTUFDVCxPQUNKb0ksRUFBTSxHQUNOSyxFQUFFLFVBQ0ZzTCxFQUFTLE9BQ1QvRSxHQUNFOUcsRUFDSixZQUE2QixJQUFsQkEsRUFBT0UsUUFBMEJGLEVBQU80TCxZQUduRDVMLEVBQU9lLEtBQUssaUJBR1pmLEVBQU9rbUIsYUFBYyxFQUdyQmxtQixFQUFPcTBCLGVBR0huMEIsRUFBT2hKLE1BQ1Q4SSxFQUFPNnJCLGNBSUxvTixJQUNGajVCLEVBQU95MkIsZ0JBQ0hsMkIsR0FBb0IsaUJBQVBBLEdBQ2ZBLEVBQUd0QixnQkFBZ0IsU0FFakI0TSxHQUNGQSxFQUFVNU0sZ0JBQWdCLFNBRXhCNkgsR0FBVUEsRUFBT25RLFFBQ25CbVEsRUFBT2pKLFNBQVEyTyxJQUNiQSxFQUFRL0ssVUFBVWpELE9BQU8wQixFQUFPMmpCLGtCQUFtQjNqQixFQUFPNGpCLHVCQUF3QjVqQixFQUFPbWxCLGlCQUFrQm5sQixFQUFPb2xCLGVBQWdCcGxCLEVBQU9xbEIsZ0JBQ3pJL1ksRUFBUXZOLGdCQUFnQixTQUN4QnVOLEVBQVF2TixnQkFBZ0IsMEJBQTBCLEtBSXhEZSxFQUFPZSxLQUFLLFdBR1poSCxPQUFPNkQsS0FBS29DLEVBQU8wYixpQkFBaUI3ZCxTQUFRbzVCLElBQzFDajNCLEVBQU8rYixJQUFJa2IsRUFBVSxLQUVBLElBQW5CK0IsSUFDRWg1QixFQUFPTyxJQUEyQixpQkFBZFAsRUFBT08sS0FDN0JQLEVBQU9PLEdBQUdQLE9BQVMsT0FFckIsT0FBWUEsSUFFZEEsRUFBTzRMLFdBQVksR0E1Q1YsSUE4Q1gsQ0FDQSxxQkFBT3N0QixDQUFlQyxJQUNwQixPQUFPekMsRUFBa0J5QyxFQUMzQixDQUNBLDJCQUFXekMsR0FDVCxPQUFPQSxDQUNULENBQ0EsbUJBQVd6RCxHQUNULE9BQU9BLENBQ1QsQ0FDQSxvQkFBT21HLENBQWN0QyxHQUNkbGdDLEVBQU9vRCxVQUFVNjhCLGNBQWFqZ0MsRUFBT29ELFVBQVU2OEIsWUFBYyxJQUNsRSxNQUFNaGdDLEVBQVVELEVBQU9vRCxVQUFVNjhCLFlBQ2QsbUJBQVJDLEdBQXNCamdDLEVBQVFpZSxRQUFRZ2lCLEdBQU8sR0FDdERqZ0MsRUFBUVUsS0FBS3UvQixFQUVqQixDQUNBLFVBQU91QyxDQUFJN2hDLEdBQ1QsT0FBSW1CLE1BQU1DLFFBQVFwQixJQUNoQkEsRUFBT3FHLFNBQVEwRCxHQUFLM0ssRUFBT3dpQyxjQUFjNzNCLEtBQ2xDM0ssSUFFVEEsRUFBT3dpQyxjQUFjNWhDLEdBQ2RaLEVBQ1QsRUFFRm1ELE9BQU82RCxLQUFLazJCLEdBQVlqMkIsU0FBUXk3QixJQUM5QnYvQixPQUFPNkQsS0FBS2syQixFQUFXd0YsSUFBaUJ6N0IsU0FBUTA3QixJQUM5QzNpQyxFQUFPb0QsVUFBVXUvQixHQUFlekYsRUFBV3dGLEdBQWdCQyxFQUFZLEdBQ3ZFLElBRUozaUMsRUFBT3lpQyxJQUFJLENBdnRIWCxTQUFnQno0QixHQUNkLElBQUksT0FDRlosRUFBTSxHQUNOYyxFQUFFLEtBQ0ZDLEdBQ0VILEVBQ0osTUFBTWhGLEdBQVMsU0FDZixJQUFJNDlCLEVBQVcsS0FDWEMsRUFBaUIsS0FDckIsTUFBTUMsRUFBZ0IsS0FDZjE1QixJQUFVQSxFQUFPNEwsV0FBYzVMLEVBQU9rbUIsY0FDM0NubEIsRUFBSyxnQkFDTEEsRUFBSyxVQUFTLEVBc0NWNDRCLEVBQTJCLEtBQzFCMzVCLElBQVVBLEVBQU80TCxXQUFjNUwsRUFBT2ttQixhQUMzQ25sQixFQUFLLG9CQUFvQixFQUUzQkQsRUFBRyxRQUFRLEtBQ0xkLEVBQU9FLE9BQU9pekIscUJBQW1ELElBQTFCdjNCLEVBQU9nK0IsZUF4QzdDNTVCLElBQVVBLEVBQU80TCxXQUFjNUwsRUFBT2ttQixjQUMzQ3NULEVBQVcsSUFBSUksZ0JBQWV2RCxJQUM1Qm9ELEVBQWlCNzlCLEVBQU9zUSx1QkFBc0IsS0FDNUMsTUFBTSxNQUNKNE4sRUFBSyxPQUNMRSxHQUNFaGEsRUFDSixJQUFJNjVCLEVBQVcvZixFQUNYMkksRUFBWXpJLEVBQ2hCcWMsRUFBUXg0QixTQUFRaThCLElBQ2QsSUFBSSxlQUNGQyxFQUFjLFlBQ2RDLEVBQVcsT0FDWGgrQixHQUNFODlCLEVBQ0E5OUIsR0FBVUEsSUFBV2dFLEVBQU9PLEtBQ2hDczVCLEVBQVdHLEVBQWN
2BLEVBQVlsZ0IsT0FBU2lnQixFQUFlLElBQU1BLEdBQWdCRSxXQUNuRnhYLEVBQVl1WCxFQUFjQSxFQUFZaGdCLFFBQVUrZixFQUFlLElBQU1BLEdBQWdCRyxVQUFTLElBRTVGTCxJQUFhL2YsR0FBUzJJLElBQWN6SSxHQUN0QzBmLEdBQ0YsR0FDQSxJQUVKRixFQUFTVyxRQUFRbjZCLEVBQU9PLE1Bb0J4QjNFLEVBQU9rSCxpQkFBaUIsU0FBVTQyQixHQUNsQzk5QixFQUFPa0gsaUJBQWlCLG9CQUFxQjYyQixHQUF5QixJQUV4RTc0QixFQUFHLFdBQVcsS0FwQlIyNEIsR0FDRjc5QixFQUFPeVEscUJBQXFCb3RCLEdBRTFCRCxHQUFZQSxFQUFTWSxXQUFhcDZCLEVBQU9PLEtBQzNDaTVCLEVBQVNZLFVBQVVwNkIsRUFBT08sSUFDMUJpNUIsRUFBVyxNQWlCYjU5QixFQUFPc0gsb0JBQW9CLFNBQVV3MkIsR0FDckM5OUIsRUFBT3NILG9CQUFvQixvQkFBcUJ5MkIsRUFBeUIsR0FFN0UsRUFFQSxTQUFrQi80QixHQUNoQixJQUFJLE9BQ0ZaLEVBQU0sYUFDTmEsRUFBWSxHQUNaQyxFQUFFLEtBQ0ZDLEdBQ0VILEVBQ0osTUFBTXk1QixFQUFZLEdBQ1p6K0IsR0FBUyxTQUNUMCtCLEVBQVMsU0FBVXQrQixFQUFRNUYsUUFDZixJQUFaQSxJQUNGQSxFQUFVLENBQUMsR0FFYixNQUNNb2pDLEVBQVcsSUFESTU5QixFQUFPMitCLGtCQUFvQjMrQixFQUFPNCtCLHlCQUNyQkMsSUFJaEMsR0FBSXo2QixFQUFPa3JCLG9CQUFxQixPQUNoQyxHQUF5QixJQUFyQnVQLEVBQVU5akMsT0FFWixZQURBb0ssRUFBSyxpQkFBa0IwNUIsRUFBVSxJQUduQyxNQUFNQyxFQUFpQixXQUNyQjM1QixFQUFLLGlCQUFrQjA1QixFQUFVLEdBQ25DLEVBQ0k3K0IsRUFBT3NRLHNCQUNUdFEsRUFBT3NRLHNCQUFzQnd1QixHQUU3QjkrQixFQUFPcVIsV0FBV3l0QixFQUFnQixFQUNwQyxJQUVGbEIsRUFBU1csUUFBUW4rQixFQUFRLENBQ3ZCMEIsZ0JBQTBDLElBQXZCdEgsRUFBUXNILFlBQW9DdEgsRUFBUXNILFdBQ3ZFaTlCLFVBQVczNkIsRUFBT2tCLGlCQUEyQyxJQUF0QjlLLEVBQVF1a0MsV0FBbUN2a0MsR0FBU3VrQyxVQUMzRkMsbUJBQWdELElBQTFCeGtDLEVBQVF3a0MsZUFBdUN4a0MsRUFBUXdrQyxnQkFFL0VQLEVBQVU5aUMsS0FBS2lpQyxFQUNqQixFQXlCQTM0QixFQUFhLENBQ1gyNEIsVUFBVSxFQUNWcUIsZ0JBQWdCLEVBQ2hCQyxzQkFBc0IsSUFFeEJoNkIsRUFBRyxRQTdCVSxLQUNYLEdBQUtkLEVBQU9FLE9BQU9zNUIsU0FBbkIsQ0FDQSxHQUFJeDVCLEVBQU9FLE9BQU8yNkIsZUFBZ0IsQ0FDaEMsTUFBTUUsR0FBbUIsT0FBZS82QixFQUFPODRCLFFBQy9DLElBQUssSUFBSTFnQyxFQUFJLEVBQUdBLEVBQUkyaUMsRUFBaUJwa0MsT0FBUXlCLEdBQUssRUFDaERraUMsRUFBT1MsRUFBaUIzaUMsR0FFNUIsQ0FFQWtpQyxFQUFPdDZCLEVBQU84NEIsT0FBUSxDQUNwQjZCLFVBQVczNkIsRUFBT0UsT0FBTzQ2Qix1QkFJM0JSLEVBQU90NkIsRUFBTzZMLFVBQVcsQ0FDdkJuTyxZQUFZLEd
2BZHFCLENBZWpDLElBY0pvRCxFQUFHLFdBWmEsS0FDZHU1QixFQUFVeDhCLFNBQVEyN0IsSUFDaEJBLEVBQVN3QixZQUFZLElBRXZCWCxFQUFVdDZCLE9BQU8sRUFBR3M2QixFQUFVMWpDLE9BQU8sR0FTekMsRyIsInNvdXJjZXMiOlsid2VicGFjazovL2NpcHJpYW5pLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1mYWRlLmNzcz82M2E5Iiwid2VicGFjazovL2NpcHJpYW5pLy4vcGFja2FnZXMvcGFsbGluby1zdGFydGVyLXRoZW1lL3NyYy9qcy9wYWdlcy9wYWdlLWhvbWUuanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvZWZmZWN0LWZhZGUuY3NzIiwid2VicGFjazovL2NpcHJpYW5pLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9zd2lwZXIuY3NzIiwid2VicGFjazovL2NpcHJpYW5pLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9jaXByaWFuaS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovL2NpcHJpYW5pLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9zd2lwZXIuY3NzPzcwOTEiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9jcmVhdGUtZWxlbWVudC1pZi1ub3QtZGVmaW5lZC5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvbmF2aWdhdGlvbi5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9jbGFzc2VzLXRvLXNlbGVjdG9yLm1qcyIsIndlYnBhY2s6Ly9jaXByaWFuaS8uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9wYWdpbmF0aW9uLm1qcyIsIndlYnBhY2s6Ly9jaXByaWFuaS8uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9hdXRvcGxheS5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9lZmZlY3QtdGFyZ2V0Lm1qcyIsIndlYnBhY2s6Ly9jaXByaWFuaS8uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2VmZmVjdC12aXJ0dWFsLXRyYW5zaXRpb24tZW5kLm1qcyIsIndlYnBhY2s6Ly9jaXByaWFuaS8uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9lZmZlY3QtZmFkZS5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC91dGlscy5tanMiLCJ3ZWJwYWNrOi8vY2lwcmlhbmkvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9zd2lwZXItY29yZS5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzZdLm9uZU9mWzFdLnVzZVsxXSEuLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1s2XS5vbmVPZlsxXS51c2VbMl0hLi9lZmZlY3QtZmFkZS5jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgU3dpcGVyIGZyb20gJ3N3aXBlcidcbmltcG9ydCB7QXV0b3BsYXl9IGZyb20gJ3N3aXBlci9tb2R1bGVzJ1xuaW1wb3J0IHtFZmZlY3RGYWRlfSBmcm9tICdzd2lwZXIvbW9kdWxlcydcbmltcG9ydCAnc3dpcGVyL2NzcydcbmltcG9ydCAnc3dpcGVyL2Nzcy9lZmZlY3QtZmFkZSdcblxuZXhwb3J0IGNvbnN0IGluaXQgPSAoKSA9PiB7XG4gICAgY29uc3QgaG9tZUNhcm91c2VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2hvbWUtY2Fyb3VzZWwgLnN3aXBlcicpXG5cbiAgICAvLyBJbml0aWFsaXplIG1vYmlsZSBzbGlkZXIgaWYgYXZhaWxhYmxlXG4gICAgaWYgKGhvbWVDYXJvdXNlbCkge1xuICAgICAgICBjb25zdCBzbGlkZXMgPSBob21lQ2Fyb3VzZWwucXVlcnlTZWxlY3RvckFsbCgnLnN3aXBlci1zbGlkZScpXG5cbiAgICAgICAgaWYgKHNsaWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBuZXcgU3dpcGVyKGhvbWVDYXJvdXNlbCwge1xuICAgICAgICAgICAgICAgIG1vZHVsZXM6IFtFZmZlY3RGYWRlLCBBdXRvcGxheV0sXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6IHRydWUsXG4gICAgICAgICAgICAgICAgZWZmZWN0OiAnZmFkZScsXG4gICAgICAgICAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzcGVlZDogNzAwLFxuICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsXG4gICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiAwLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5zd2lwZXItZmFkZS5zd2lwZXItZnJlZS1tb2RlIC5zd2lwZXItc2xpZGV7LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dH0uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZXtwb2ludGVyLWV2ZW50czpub25lOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eX0uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRle3BvaW50ZXItZXZlbnRzOm5vbmV9LnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLC5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZXtwb2ludGVyLWV2ZW50czphdXRvfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9lZmZlY3QtZmFkZS5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsNENBQ0UsMkNBQW9DLENBQXBDLG1DQUNGLENBQ0EsMkJBQ0UsbUJBQW9CLENBQ3BCLG1DQUE0QixDQUE1QiwyQkFDRixDQUNBLHlDQUNFLG1CQUNGLENBSUEseUZBQ0UsbUJBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnN3aXBlci1mYWRlLnN3aXBlci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZSB7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XFxufVxcbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcXG59XFxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xcbn1cXG4uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUge1xcbiAgcG9pbnRlci1ldmVud
2HM6IGF1dG87XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAZm9udC1mYWNle2ZvbnQtZmFtaWx5OnN3aXBlci1pY29ucztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChcXFwiZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsIGQwOUdSZ0FCQUFBQUFBWmdBQkFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFHUkFBQUFCb0FBQUFjaTZxSGtVZEVSVVlBQUFXZ0FBQUFJd0FBQUNRQVlBQlhSMUJQVXdBQUJoUUFBQUF1QUFBQU51QVk3K3hIVTFWQ0FBQUZ4QUFBQUZBQUFBQm0yZlBjelU5VEx6SUFBQUhjQUFBQVNnQUFBR0JQOVY1UlkyMWhjQUFBQWtRQUFBQ0lBQUFCWXQ2RjBjQmpkblFnQUFBQ3pBQUFBQVFBQUFBRUFCRUJSR2RoYzNBQUFBV1lBQUFBQ0FBQUFBai8vd0FEWjJ4NVpnQUFBeXdBQUFETUFBQUQyTUh0cnlWb1pXRmtBQUFCYkFBQUFEQUFBQUEyRTIrZW9XaG9aV0VBQUFHY0FBQUFId0FBQUNRQzlnRHphRzEwZUFBQUFpZ0FBQUFaQUFBQXJnSmtBQkZzYjJOaEFBQUMwQUFBQUZvQUFBQmFGUUFVR0cxaGVIQUFBQUc4QUFBQUh3QUFBQ0FBY0FCQWJtRnRaUUFBQS9nQUFBRTVBQUFDWHZGZEJ3bHdiM04wQUFBRk5BQUFBR0lBQUFDRTVzNzRoWGphWTJCa1lHQUFZcGY1SHUvaitXMitNbkF6TVlEQXphWDZRakQ2LzQvL0J4ajVHQThBdVJ3TVlHa0FQeXdMMTNqYVkyQmtZR0E4OFA4QWd4NGorLzhmUURZZkExQUVCV2dEQUlCMkJPb0FlTnBqWUdSZ1lOQmg0R2RnWWdBQkVNbklBQkp6WU5BRENRQUFDV2dBc1FCNDJtTmdZZnpDT0lHQmxZR0IwWWN4allHQndSMUtmMldRWkdoaFlHQmlZR1ZtZ0FGR0JpUVFrT2Fhd3REQW9NQlF4WGpnL3dFR1BjWUREQTR3TlVBMkNDZ3dzQUFBTzRFTDZnQUFlTnBqMk0wZ3lBQUNxeGdHTldCa1oyRDQvd01BK3hrRGRnQUFBSGphWTJCZ1lHYUFZQmtHUmdZUWlBSHlHTUY4RmdZSElNM0R3TUhBQkdRck1PZ3lXRExFTTFUOS93OFVCZkVNZ0x6RS8vLy9QLzUvL2YvVi94dityNGVhQUFlTWJBeHdJVVltSU1IRWdLWUFZalVjc0RBd3NMS3hjM0J5Y2ZQdzhqRVFBL2daQkFTRmhFVkV4Y1FsSktXa1pXVGw1QlVVbFpSVlZOWFVOVFFaQmdNQUFNUitFK2dBRVFGRUFBQUFLZ0FxQUNvQU5BQStBRWdBVWdCY0FHWUFjQUI2QUlRQWpnQ1lBS0lBckFDMkFNQUF5Z0RVQU40QTZBRHlBUHdCQmdFUUFSb0JKQUV1QVRnQlFnRk1BVllCWUFGcUFYUUJmZ0dJQVpJQm5BR21BYklCemdIc0FBQjQydTJOTVE2Q1VBeUdXNTY4eDlBbmVZWWdtNE1KYmhLRmFFeElPQVZYOEFwZXdTdDRCaWM0QWZlQWlkM1ZPQml4RHhmUFlFemE1TytYZmkwNFlBRGdnaVVJVUxDdUVKSzhWaE80YlN2cGRua3RISTVRQ1l0ZGkyc2w4Wm5YYUhscVVyTkt6ZEtjVDhjamxxK3J3WlN2SVZjek5pZXpzZm5QL3V6bm1mUEZCTk9ETTJLN01UUTQ1WUVBWnFHUDgxQW1HR2NGM2lQcU9vcDByMVNQVGFUYlZrZlVlNEhYajk3d1lFK3lOd1dZeHdXdTR2MXVnV0hnbzNTMVhkWkVWcVdNN0VUMGNmbkxHeFdma2dSNDJvMlB2V3JETUJTRmovSUhMYUYwektqUmdkaVZNd1NjTlJBb1dVb0g3OFkyaWNCL3lJWTA5QW42QUgyQmR1L1VCK3l4b3BZc2hRaUV2bnZ1MGRVUmdEdDhRZUM4UER3N0ZwamkzZkVBNHovUEVKNllPQjVoS2g0ZGozRXZYaHhQcUgvU0tVWTNySjdzclo0RlpuaDFQTUF0UGh3UDZmbDJQTUpNUERnZVE0clk4WVQ2R3phbzBlQUVBNDA5RHVnZ21UbkZuT2NTQ2lFaUxNZ3hDaVRJNkNxNURaVWQzUW1wMTB2TzBMYUxUZDJjak40Zk91bWxjN2xVWWJTUWNaRmt1dFJHN2c2SktaS3kwUm1kTFk2ODBDRG5FSitVTWtwRkZlMVJON254ZFZwWHJDNGFUdG5hdXJPblllcmNaZzJZVm1MTi9kL2djemZFaW1yRS9mcy9iT3VxMjlabW44dGxvT1JhWGdaZ0dhNzh5TzkvY25YbTJCcGFHdnEyNUR2OVM0RTkrNVNJYzlQcXVwSktoWUZTU2w0NytRY3IxbVlOQUFBQWVOcHR3MGNLd2tBQUFNRFpKQThRN09VSnZrTHNQZlo2ekZWRVJQeThxSGgyWUVSKzNpL0JQODN2SUJMTHlTc29LaW1ycUtxcGEyaHA2K2pxNlJzWUdobWJtSnFaU3kwc3JheHRiTzNzSFJ5ZG5FTVU0dVI2eXg3SkpYdmVQN1dyRHljQUFBQUFBQUgvL3dBQ2VOcGpZR1JnWU9BQlloa2daZ0pDWmdaTkJrWUdMUVp0SUpzRkxNWUFBQXczQUxnQWVOb2xpekVLZ0RBUUJDY2hSYkMyc0ZFUjBZRDZxVlFpQkN2L0g5ZXpHSTZaNVhCQXc4Q0JLL201aVFRVmF1VmJYTG5Pck1adjJvTGRLRmE4UGp1cnUyaEp6R2FibU9TTHpOTXp2dXRwQjNONDJtTmdaR0JnNEdLUVl6QmhZTXhKTE1sajRHQmdBWW93L1AvUEFKSmhMTTZzU29XS2ZXQ0FBd0RBamdiUkFBQjQybU5nWUdCa0FJSWJDWm81SVBybVVuMGhHQTBBTzhFRlRRQUFcXFwiKX06cm9vdHstLXN3aXBlci10aGVtZS1jb2xvcjojMDA3YWZmfTpob3N0e2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnN3aXBlcntkaXNwbGF5OmJsb2NrO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS5zd2lwZXItdmVydGljYWw+LnN3aXBlci13cmFwcGVyey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5zd2lwZXItd3JhcHBlcnstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTotd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Oi13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLC13ZWJraXQtdHJhbnNmb3JtOy13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24saW5pdGlhbCk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24saW5pdGlhbCk7d2lkdGg6MTAwJTt6LWluZGV4OjF9LnN3aXBlci1hbmRyb2lkIC5zd2lwZXItc2xpZGUsLnN3aXBlci1pb3MgLnN3aXBlci1zbGlkZSwuc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0uc3dpcGVyLWhvcml6b250YWx7LW1zLXRvdWNoLWFjdGlvbjpwYW4teTt0b3VjaC1hY3Rpb246cGFuLXl9LnN3aXBlci12ZXJ0aWNhbHstbXMtdG91Y2gtYWN0aW9uOnBhbi14O3RvdWNoLWFjdGlvbjpwYW4teH0uc3dpcGVyLXNsaWRley1tcy1mbGV4LW5lZ2F0aXZlOjA7ZGlzcGxheTpibG9jaztmbGV4LXNocmluazowO2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTotd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Oi13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLC13ZWJraXQtdHJhbnNmb3JtO3dpZHRoOjEwMCV9LnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmt7dmlzaWJpbGl0eTpoaWRkZW59LnN3aXBlci1hdXRvaGVpZ2h0LC5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXNsaWRle2hlaWdodDphdXRvfS5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6aGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6aGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLGhlaWdodDt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxoZWlnaHQsLXdlYmtpdC10cmFuc2Zvcm19LnN3aXBlci1iYWNrZmFjZS1oaWRkZW4gLnN3aXBlci1zbGlkZXstd2Via2l0LWJhY2tmYWNlLX
2Zpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9LnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyey13ZWJraXQtcGVyc3BlY3RpdmU6MTIwMHB4O3BlcnNwZWN0aXZlOjEyMDBweH0uc3dpcGVyLTNkIC5zd2lwZXItd3JhcHBlcnstd2Via2l0LXRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZDt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2R9LnN3aXBlci0zZHstd2Via2l0LXBlcnNwZWN0aXZlOjEyMDBweDtwZXJzcGVjdGl2ZToxMjAwcHh9LnN3aXBlci0zZCAuc3dpcGVyLWN1YmUtc2hhZG93LC5zd2lwZXItM2QgLnN3aXBlci1zbGlkZXstd2Via2l0LXRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZDt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2R9LnN3aXBlci1jc3MtbW9kZT4uc3dpcGVyLXdyYXBwZXJ7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7b3ZlcmZsb3c6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZX0uc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfS5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGV7c2Nyb2xsLXNuYXAtYWxpZ246c3RhcnQgc3RhcnR9LnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXdyYXBwZXJ7LW1zLXNjcm9sbC1zbmFwLXR5cGU6eCBtYW5kYXRvcnk7c2Nyb2xsLXNuYXAtdHlwZTp4IG1hbmRhdG9yeX0uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXJ7LW1zLXNjcm9sbC1zbmFwLXR5cGU6eSBtYW5kYXRvcnk7c2Nyb2xsLXNuYXAtdHlwZTp5IG1hbmRhdG9yeX0uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1mcmVlLW1vZGU+LnN3aXBlci13cmFwcGVyey1tcy1zY3JvbGwtc25hcC10eXBlOm5vbmU7c2Nyb2xsLXNuYXAtdHlwZTpub25lfS5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWZyZWUtbW9kZT4uc3dpcGVyLXdyYXBwZXI+LnN3aXBlci1zbGlkZXtzY3JvbGwtc25hcC1hbGlnbjpub25lfS5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcjpiZWZvcmV7LW1zLWZsZXgtbmVnYXRpdmU6MDstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwMDAwOy1tcy1mbGV4LW9yZGVyOjk5OTk7Y29udGVudDpcXFwiXFxcIjtmbGV4LXNocmluazowO29yZGVyOjk5OTl9LnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQ+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGV7c2Nyb2xsLXNuYXAtYWxpZ246Y2VudGVyIGNlbnRlcjtzY3JvbGwtc25hcC1zdG9wOmFsd2F5c30uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXdyYXBwZXI+LnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZHstd2Via2l0LW1hcmdpbi1zdGFydDp2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSk7bWFyZ2luLWlubGluZS1zdGFydDp2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSl9LnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci13cmFwcGVyOmJlZm9yZXtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjFweDt3aWR0aDp2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKX0uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItdmVydGljYWw+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGR7LXdlYmtpdC1tYXJnaW4tYmVmb3JlOnZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTttYXJnaW4tYmxvY2stc3RhcnQ6dmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUpfS5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXI6YmVmb3Jle2hlaWdodDp2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKTttaW4td2lkdGg6MXB4O3dpZHRoOjEwMCV9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdywuc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwuc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwuc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcHtoZWlnaHQ6MTAwJTtsZWZ0OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlO3otaW5kZXg6MTB9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvd3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjE1KX0uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnR7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixyaWdodCB0b3AsbGVmdCB0b3AsZnJvbShyZ2JhKDAsMCwwLC41KSksdG8odHJhbnNwYXJlbnQpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgyNzBkZWcscmdiYSgwLDAsMCwuNSksdHJhbnNwYXJlbnQpfS5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHR7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbShyZ2JhKDAsMCwwLC41KSksdG8odHJhbnNwYXJlbnQpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyxyZ2JhKDAsMCwwLC41KSx0cmFuc3BhcmVudCl9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IGJvdHRvbSxsZWZ0IHRvcCxmcm9tKHJnYmEoMCwwLDAsLjUpKSx0byh0cmFuc3BhcmVudCkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSgwLDAsMCwuNSksdHJhbnNwYXJlbnQpfS5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9te2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sZnJvbShyZ2JhKDAsMCwwLC41KSksdG8odHJhbnNwYXJlbnQpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcscmdiYSgwLDAsMCwuNSksdHJhbnNwYXJlbnQpfS5zd2lwZXItbGF6eS1wcmVsb2FkZXJ7Ym9yZGVyOjRweCBzb2xpZCB2YXIoLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yLHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlci10b3A6NHB4IHNvbGlkIHRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6NDJweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMjFweDttYXJnaW4tdG9wOi0yMXB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt3aWR0aDo0MnB4O3otaW5kZXg6MTB9LnN3aXBlci13YXRjaC1wcm9ncmVzcyAu
2c3dpcGVyLXNsaWRlLXZpc2libGUgLnN3aXBlci1sYXp5LXByZWxvYWRlciwuc3dpcGVyOm5vdCguc3dpcGVyLXdhdGNoLXByb2dyZXNzKSAuc3dpcGVyLWxhenktcHJlbG9hZGVyey13ZWJraXQtYW5pbWF0aW9uOnN3aXBlci1wcmVsb2FkZXItc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YW5pbWF0aW9uOnN3aXBlci1wcmVsb2FkZXItc3BpbiAxcyBsaW5lYXIgaW5maW5pdGV9LnN3aXBlci1sYXp5LXByZWxvYWRlci13aGl0ZXstLXN3aXBlci1wcmVsb2FkZXItY29sb3I6I2ZmZn0uc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrey0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjojMDAwfUAtd2Via2l0LWtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19QGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9zd2lwZXIuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQWFBLFdBQ0Usd0JBQTJCLENBRzNCLGlCQUFrQixDQURsQixlQUFnQixDQURoQiw0ckVBR0YsQ0FFQSxNQUNFLDRCQUtGLENBQ0EsTUFFRSxhQUFjLENBQ2QsZ0JBQWlCLENBQ2pCLGlCQUFrQixDQUhsQixpQkFBa0IsQ0FJbEIsU0FDRixDQUNBLFFBU0UsYUF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DQUNFLEdBQ0UsOEJBQXVCLENBQXZCLHNCQUNGLENBQ0EsR0FDRSwrQkFBeUIsQ0FBekIsdUJBQ0YsQ0FDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKipcXG4gKiBTd2lwZXIgMTEuMS4xMFxcbiAqIE1vc3QgbW9kZXJuIG1vYmlsZSB0b3VjaCBzbGlkZXIgYW5kIGZyYW1ld29yayB3aXRoIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHRyYW5zaXRpb25zXFxuICogaHR0cHM6Ly9zd2lwZXJqcy5jb21cXG4gKlxcbiAqIENvcHlyaWdodCAyMDE0LTIwMjQgVmxhZGltaXIgS2hhcmxhbXBpZGlcXG4gKlxcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxcbiAqXFxuICogUmVsZWFzZWQgb246IEF1Z3VzdCAyMSwgMjAyNFxcbiAqL1xcblxcbi8qIEZPTlRfU1RBUlQgKi9cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiAnc3dpcGVyLWljb25zJztcXG4gIHNyYzogdXJsKCdkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwgZDA5R1JnQUJBQUFBQUFaZ0FCQUFBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUdSQUFBQUJvQUFBQWNpNnFIa1VkRVJVWUFBQVdnQUFBQUl3QUFBQ1FBWUFCWFIxQlBVd0FBQmhRQUFBQXVBQUFBTnVBWTcreEhVMVZDQUFBRnhBQUFBRkFBQUFCbTJmUGN6VTlUTHpJQUFBSGNBQUFBU2dBQUFHQlA5VjVSWTIxaGNBQUFBa1FBQUFDSUFBQUJZdDZGMGNCamRuUWdBQUFDekFBQUFBUUFBQUFFQUJFQlJHZGhjM0FBQUFXWUFBQUFDQUFBQUFqLy93QURaMng1WmdBQUF5d0FBQURNQUFBRDJNSHRyeVZvWldGa0FBQUJiQUFBQURBQUFBQTJFMitlb1dob1pXRUFBQUdjQUFBQUh3QUFBQ1FDOWdEemFHMTBlQUFBQWlnQU
2FBQVpBQUFBcmdKa0FCRnNiMk5oQUFBQzBBQUFBRm9BQUFCYUZRQVVHRzFoZUhBQUFBRzhBQUFBSHdBQUFDQUFjQUJBYm1GdFpRQUFBL2dBQUFFNUFBQUNYdkZkQndsd2IzTjBBQUFGTkFBQUFHSUFBQUNFNXM3NGhYamFZMkJrWUdBQVlwZjVIdS9qK1cyK01uQXpNWURBemFYNlFqRDYvNC8vQnhqNUdBOEF1UndNWUdrQVB5d0wxM2phWTJCa1lHQTg4UDhBZ3g0aisvOGZRRFlmQTFBRUJXZ0RBSUIyQk9vQWVOcGpZR1JnWU5CaDRHZGdZZ0FCRU1uSUFCSnpZTkFEQ1FBQUNXZ0FzUUI0Mm1OZ1lmekNPSUdCbFlHQjBZY3hqWUdCd1IxS2YyV1FaR2hoWUdCaVlHVm1nQUZHQmlRUWtPYWF3dERBb01CUXhYamcvd0VHUGNZRERBNHdOVUEyQ0Nnd3NBQUFPNEVMNmdBQWVOcGoyTTBneUFBQ3F4Z0dOV0JrWjJENC93TUEreGtEZGdBQUFIamFZMkJnWUdhQVlCa0dSZ1lRaUFIeUdNRjhGZ1lISU0zRHdNSEFCR1FyTU9neVdETEVNMVQ5L3c4VUJmRU1nTHpFLy8vL1AvNS8vZi9WL3h2K3I0ZWFBQWVNYkF4d0lVWW1JTUhFZ0tZQVlqVWNzREF3c0xLeGMzQnljZlB3OGpFUUEvZ1pCQVNGaEVWRXhjUWxKS1drWldUbDVCVVVsWlJWVk5YVU5UUVpCZ01BQU1SK0UrZ0FFUUZFQUFBQUtnQXFBQ29BTkFBK0FFZ0FVZ0JjQUdZQWNBQjZBSVFBamdDWUFLSUFyQUMyQU1BQXlnRFVBTjRBNkFEeUFQd0JCZ0VRQVJvQkpBRXVBVGdCUWdGTUFWWUJZQUZxQVhRQmZnR0lBWklCbkFHbUFiSUJ6Z0hzQUFCNDJ1Mk5NUTZDVUF5R1c1Njh4OUFuZVlZZ200TUpiaEtGYUV4SU9BVlg4QXBld1N0NEJpYzRBZmVBaWQzVk9CaXhEeGZQWUV6YTVPK1hmaTA0WUFEZ2dpVUlVTEN1RUpLOFZoTzRiU3ZwZG5rdEhJNVFDWXRkaTJzbDhablhhSGxxVXJOS3pkS2NUOGNqbHErcndaU3ZJVm
2N6TmllenNmblAvdXpubWZQRkJOT0RNMks3TVRRNDVZRUFacUdQODFBbUdHY0YzaVBxT29wMHIxU1BUYVRiVmtmVWU0SFhqOTd3WUUreU53V1l4d1d1NHYxdWdXSGdvM1MxWGRaRVZxV003RVQwY2ZuTEd4V2ZrZ1I0Mm8yUHZXckRNQlNGai9JSExhRjB6S2pSZ2RpVk13U2NOUkFvV1VvSDc4WTJpY0IveUlZMDlBbjZBSDJCZHUvVUIreXhvcFlzaFFpRXZudnUwZFVSZ0R0OFFlQzhQRHc3RnBqaTNmRUE0ei9QRUo2WU9CNWhLaDRkajNFdlhoeFBxSC9TS1VZM3JKN3NyWjRGWm5oMVBNQXRQaHdQNmZsMlBNSk1QRGdlUTRyWThZVDZHemFvMGVBRUE0MDlEdWdnbVRuRm5PY1NDaUVpTE1neENpVEk2Q3E1RFpVZDNRbXAxMHZPMExhTFRkMmNqTjRmT3VtbGM3bFVZYlNRY1pGa3V0Ukc3ZzZKS1pLeTBSbWRMWTY4MENEbkVKK1VNa3BGRmUxUk43bnhkVnBYckM0YVR0bmF1ck9uWWVyY1pnMllWbUxOL2QvZ2N6ZkVpbXJFL2ZzL2JPdXEyOVptbjh0bG9PUmFYZ1pnR2E3OHlPOS9jblhtMkJwYUd2cTI1RHY5UzRFOSs1U0ljOVBxdXBKS2hZRlNTbDQ3K1FjcjFtWU5BQUFBZU5wdHcwY0t3a0FBQU1EWkpBOFE3T1VKdmtMc1BmWjZ6RlZFUlB5OHFIaDJZRVIrM2kvQlA4M3ZJQkxMeVNzb0tpbXJxS3FwYTJocDYranE2UnNZR2htYm1KcVpTeTBzcmF4dGJPM3NIUnlkbkVNVTR1UjZ5eDdKSlh2ZVA3V3JEeWNBQUFBQUFBSC8vd0FDZU5wallHUmdZT0FCWWhrZ1pnSkNaZ1pOQmtZR0xRWnRJSnNGTE1ZQUFBdzNBTGdBZU5vbGl6RUtnREFRQkNjaFJiQzJzRkVSMFlENnFWUWlCQ3YvSDllekdJNlo1WEJBdzhDQksvbTVpUVFWYXVWYlhMbk9yTVp2Mm9MZEtGYThQanVydTJoSnpHYWJtT1NMek5NenZ1dHBCM040Mm1OZ1pHQmc0R0tRWXpCaFlNeEpMTWxqNEdCZ0FZb3cvUC9QQUpKaExNNnNTb1dLZldDQUF3REFqZ2JSQUFCNDJtTmdZR0JrQUlJYkNabzVJUHJtVW4waEdBMEFPOEVGVFFBQScpO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG59XFxuLyogRk9OVF9FTkQgKi9cXG46cm9vdCB7XFxuICAtLXN3aXBlci10aGVtZS1jb2xvcjogIzAwN2FmZjtcXG4gIC8qXFxuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6IHZhcigtLXN3aXBlci10aGVtZS1jb2xvcik7XFxuICAtLXN3aXBlci13cmFwcGVyLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBpbml0aWFsO1xcbiAgKi9cXG59XFxuOmhvc3Qge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5zd2lwZXIge1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIHBhZGRpbmc6IDA7XFxuICAvKiBGaXggb2YgV2Via2l0IGZsaWNrZXJpbmcgKi9cXG4gIHotaW5kZXg6IDE7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciB7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uc3dpcGVyLXdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB6LWluZGV4OiAxO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zd2lwZXItd3JhcHBlci10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgaW5pdGlhbCk7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG59XFxuLnN3aXBlci1hbmRyb2lkIC5zd2lwZXItc2xpZGUsXFxuLnN3aXBlci1pb3MgLnN3aXBlci1zbGlkZSxcXG4uc3dpcGVyLXdyYXBwZXIge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDAsIDApO1xcbn1cXG4uc3dpcGVyLWhvcml6b250YWwge1xcbiAgdG91Y2gtYWN0aW9uOiBwYW4teTtcXG59XFxuLnN3aXBlci12ZXJ0aWNhbCB7XFxuICB0b3VjaC1hY3Rpb246IHBhbi14O1xcbn1cXG4uc3dpcGVyLXNsaWRlIHtcXG4gIGZsZXgtc2hyaW5rOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmsge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4vKiBBdXRvIEhlaWdodCAqL1xcbi5zd2lwZXItYXV0b2hlaWdodCxcXG4uc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci1zbGlkZSB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXIge1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGhlaWdodDtcXG59XFxuLnN3aXBlci1iYWNrZmFjZS1oaWRkZW4gLnN3aXBlci1zbGlkZSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XFxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4vKiAzRCBFZmZlY3RzICovXFxuLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyIHtcXG4gIHBlcnNwZWN0aXZlOiAxMjAwcHg7XFxufVxcbi5zd2lwZXItM2QgLnN3aXBlci13cmFwcGVyIHtcXG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XFxufVxcbi5zd2lwZXItM2Qge1xcbiAgcGVyc3BlY3RpdmU6IDEyMDBweDtcXG59XFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLFxcbi5zd2lwZXItM2QgLnN3aXBlci1jdWJlLXNoYWRvdyB7XFxuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xcbn1cXG4vKiBDU1MgTW9kZSAqL1xcbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIge1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XFxuICAvKiBGb3IgRmlyZWZveCAqL1xcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xcbiAgLyogRm9yIEludGVybmV0IEV4cGxvcmVyIGFuZCBFZGdlICovXFxufVxcbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcXG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydCBzdGFydDtcXG59XFxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbn
2RhbCA+IC5zd2lwZXItd3JhcHBlciB7XFxuICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTtcXG59XFxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXIge1xcbiAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XFxufVxcbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWZyZWUtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7XFxuICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xcbn1cXG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcXG4gIHNjcm9sbC1zbmFwLWFsaWduOiBub25lO1xcbn1cXG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICBvcmRlcjogOTk5OTtcXG59XFxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcXG4gIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXIgY2VudGVyO1xcbiAgc2Nyb2xsLXNuYXAtc3RvcDogYWx3YXlzO1xcbn1cXG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGQge1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUpO1xcbn1cXG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1pbi1oZWlnaHQ6IDFweDtcXG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKTtcXG59XFxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZCB7XFxuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTtcXG59XFxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyOjpiZWZvcmUge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtaW4td2lkdGg6IDFweDtcXG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcik7XFxufVxcbi8qIFNsaWRlIHN0eWxlcyBzdGFydCAqL1xcbi8qIDNEIFNoYWRvd3MgKi9cXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LFxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCxcXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LFxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csXFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsXFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsXFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB6LWluZGV4OiAxMDtcXG59XFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbn1cXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XFxufVxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xcbn1cXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xcbn1cXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xcbn1cXG4uc3dpcGVyLWxhenktcHJlbG9hZGVyIHtcXG4gIHdpZHRoOiA0MnB4O1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgdG9wOiA1MCU7XFxuICBtYXJnaW4tbGVmdDogLTIxcHg7XFxuICBtYXJnaW4tdG9wOiAtMjFweDtcXG4gIHotaW5kZXg6IDEwO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLXN3aXBlci1wcmVsb2FkZXItY29sb3IsIHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5zd2lwZXI6bm90KC5zd2lwZXItd2F0Y2gtcHJvZ3Jlc3MpIC5zd2lwZXItbGF6eS1wcmVsb2FkZXIsXFxuLnN3aXBlci13YXRjaC1wcm9ncmVzcyAuc3dpcGVyLXNsaWRlLXZpc2libGUgLnN3aXBlci1sYXp5LXByZWxvYWRlciB7XFxuICBhbmltYXRpb246IHN3aXBlci1wcmVsb2FkZXItc3BpbiAxcyBpbmZpbml0ZSBsaW5lYXI7XFxufVxcbi5zd2lwZXItbGF6eS1wcmVsb2FkZXItd2hpdGUge1xcbiAgLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yOiAjZmZmO1xcbn1cXG4uc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrIHtcXG4gIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogIzAwMDtcXG59XFxuQGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW4ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG4vKiBTbGlkZSBzdHlsZXMgZW5kICovXFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybi
2B0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gKG1vZHVsZXMsIG1lZGlhUXVlcnksIGRlZHVwZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGh
2pc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfaSA9IGFyciAmJiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhcnJbU3ltYm9sLml0ZXJhdG9yXSB8fCBhcnJbXCJAQGl0ZXJhdG9yXCJdKTsgaWYgKF9pID09IG51bGwpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfcywgX2U7IHRyeSB7IGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pIHtcbiAgdmFyIF9pdGVtID0gX3NsaWNlZFRvQXJyYXkoaXRlbSwgNCksXG4gICAgICBjb250ZW50ID0gX2l0ZW1bMV0sXG4gICAgICBjc3NNYXBwaW5nID0gX2l0ZW1bM107XG5cbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIh
2IS4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbNl0ub25lT2ZbMV0udXNlWzFdIS4uL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzZdLm9uZU9mWzFdLnVzZVsyXSEuL3N3aXBlci5jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2Y
2XIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGh
2hdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGUuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXIgc2luZ2xldG9uQ291bnRlciA9IDA7XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgc3R5bGU7XG4gIHZhciB1cGRhdGU7XG4gIHZhciByZW1vdmU7XG5cbiAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgc3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlKG9iaik7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZShuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4gIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcblxuICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gIH1cblxuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgI
2HZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRG9tW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRvbVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRvbS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsImltcG9ydCB7IGUgYXMgZWxlbWVudENoaWxkcmVuLCBjIGFzIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoc3dpcGVyLCBvcmlnaW5hbFBhcmFtcywgcGFyYW1zLCBjaGVja1Byb3BzKSB7XG4gIGlmIChzd2lwZXIucGFyYW1zLmNyZWF0ZUVsZW1lbnRzKSB7XG4gICAgT2JqZWN0LmtleXMoY2hlY2tQcm9wcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXNba2V5XSAmJiBwYXJhbXMuYXV0byA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgZWxlbWVudCA9IGVsZW1lbnRDaGlsZHJlbihzd2lwZXIuZWwsIGAuJHtjaGVja1Byb3BzW2tleV19YClbMF07XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCBjaGVja1Byb3BzW2tleV0pO1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2hlY2tQcm9wc1trZXldO1xuICAgICAgICAgIHN3aXBlci5lbC5hcHBlbmQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyYW1zW2tleV0gPSBlbGVtZW50O1xuICAgICAgICBvcmlnaW5hbFBhcmFtc1trZXldID0gZWxlbWVudDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgeyBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkIGFzIGMgfTtcbiIsImltcG9ydCB7IGMgYXMgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9IGZyb20gJy4uL3NoYXJlZC9jcmVhdGUtZWxlbWVudC1pZi1ub3QtZGVmaW5lZC5tanMnO1xuaW1wb3J0IHsgbSBhcyBtYWtlRWxlbWVudHNBcnJheSB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBOYXZpZ2F0aW9uKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uLFxuICAgIGVtaXRcbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgbmF2aWdhdGlvbjoge1xuICAgICAgbmV4dEVsOiBudWxsLFxuICAgICAgcHJldkVsOiBudWxsLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgZGlzYWJsZWRDbGFzczogJ3N3aXBlci1idXR0b24tZGlzYWJsZWQnLFxuICAgICAgaGlkZGVuQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWhpZGRlbicsXG4gICAgICBsb2NrQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWxvY2snLFxuICAgICAgbmF2aWdhdGlvbkRpc2FibGVkQ2xhc3M6ICdzd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCdcbiAgICB9XG4gIH0pO1xuICBzd2lwZXIubmF2aWdhdGlvbiA9IHtcbiAgICBuZXh0RWw6IG51bGwsXG4gICAgcHJldkVsOiBudWxsXG4gIH07XG4gIGZ1bmN0aW9uIGdldEVsKGVsKSB7XG4gICAgbGV0IHJlcztcbiAgICBpZiAoZWwgJiYgdHlwZW9mIGVsID09PSAnc3RyaW5nJyAmJiBzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICByZXMgPSBzd2lwZXIuZWwucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBpZiAoZWwpIHtcbiAgICAgIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSByZXMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlbCldO1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgdHlwZW9mIGVsID09PSAnc3RyaW5nJyAmJiByZXMgJiYgcmVzLmxlbmd0aCA+IDEgJiYgc3dpcGVyLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoZWwpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXMgPSBzd2lwZXIuZWwucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJlcyA9IHJlc1swXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVsICYmICFyZXMpIHJldHVybiBlbDtcbiAgICAvLyBpZiAoQXJyYXkuaXNBcnJheShyZXMpICYmIHJlcy5sZW5ndGggPT09IDEpIHJlcyA9IHJlc1swXTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGZ1bmN0aW9uIHRvZ2dsZUVsKGVsLCBkaXNhYmxlZCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbjtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIGlmIChzdWJFbCkge1xuICAgICAgICBzdWJFbC5jbGFzc0xpc3RbZGlzYWJsZWQgPyAnYWRkJyA6ICdyZW1vdmUnXSguLi5wYXJhbXMuZGlzYWJsZWRDbGFzcy5zcGxpdCgnICcpKTtcbiAgICAgICAgaWYgKHN1YkVsLnRhZ05hbWUgPT09ICdCVVRUT04nKSBzdWJFbC5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICAgICAgc3ViRWwuY2xhc3NMaXN0W3N3aXBlci5pc0xvY2tlZCA/ICdhZGQnIDogJ3JlbW92ZSddKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIC8vIFVwZGF0ZSBOYXZpZ2F0aW9uIEJ1dHRvbnNcbiAgICBjb25zdCB7XG4gICAgICBuZXh0RWwsXG4gICAgICBwcmV2RWxcbiAgICB9ID0gc3dpcGVyLm5hdmlnYXRpb247XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgdG9nZ2xlRWwocHJldkVsLCBmYWxzZSk7XG4gICAgICB0b2dnbGVFbChuZXh0RWwsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdG9nZ2xlRWwocHJldkVsLCBzd2lwZXIuaXNCZWdpbm5pbmcgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKTtcbiAgICB0b2dnbGVFbChuZXh0RWwsIHN3aXBlci5pc0VuZCAmJiAhc3dpcGVyLnBhcmFtcy5yZXdpbmQpO1xuICB9XG4gIGZ1bmN0aW9uIG9uUHJldkNsaWNrKGUpIHtcbiAgICBlLnByZXZlbn
2REZWZhdWx0KCk7XG4gICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5sb29wICYmICFzd2lwZXIucGFyYW1zLnJld2luZCkgcmV0dXJuO1xuICAgIHN3aXBlci5zbGlkZVByZXYoKTtcbiAgICBlbWl0KCduYXZpZ2F0aW9uUHJldicpO1xuICB9XG4gIGZ1bmN0aW9uIG9uTmV4dENsaWNrKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHN3aXBlci5pc0VuZCAmJiAhc3dpcGVyLnBhcmFtcy5sb29wICYmICFzd2lwZXIucGFyYW1zLnJld2luZCkgcmV0dXJuO1xuICAgIHN3aXBlci5zbGlkZU5leHQoKTtcbiAgICBlbWl0KCduYXZpZ2F0aW9uTmV4dCcpO1xuICB9XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uO1xuICAgIHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbiA9IGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoc3dpcGVyLCBzd2lwZXIub3JpZ2luYWxQYXJhbXMubmF2aWdhdGlvbiwgc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLCB7XG4gICAgICBuZXh0RWw6ICdzd2lwZXItYnV0dG9uLW5leHQnLFxuICAgICAgcHJldkVsOiAnc3dpcGVyLWJ1dHRvbi1wcmV2J1xuICAgIH0pO1xuICAgIGlmICghKHBhcmFtcy5uZXh0RWwgfHwgcGFyYW1zLnByZXZFbCkpIHJldHVybjtcbiAgICBsZXQgbmV4dEVsID0gZ2V0RWwocGFyYW1zLm5leHRFbCk7XG4gICAgbGV0IHByZXZFbCA9IGdldEVsKHBhcmFtcy5wcmV2RWwpO1xuICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLm5hdmlnYXRpb24sIHtcbiAgICAgIG5leHRFbCxcbiAgICAgIHByZXZFbFxuICAgIH0pO1xuICAgIG5leHRFbCA9IG1ha2VFbGVtZW50c0FycmF5KG5leHRFbCk7XG4gICAgcHJldkVsID0gbWFrZUVsZW1lbnRzQXJyYXkocHJldkVsKTtcbiAgICBjb25zdCBpbml0QnV0dG9uID0gKGVsLCBkaXIpID0+IHtcbiAgICAgIGlmIChlbCkge1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGRpciA9PT0gJ25leHQnID8gb25OZXh0Q2xpY2sgOiBvblByZXZDbGljayk7XG4gICAgICB9XG4gICAgICBpZiAoIXN3aXBlci5lbmFibGVkICYmIGVsKSB7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoLi4ucGFyYW1zLmxvY2tDbGFzcy5zcGxpdCgnICcpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG5leHRFbC5mb3JFYWNoKGVsID0+IGluaXRCdXR0b24oZWwsICduZXh0JykpO1xuICAgIHByZXZFbC5mb3JFYWNoKGVsID0+IGluaXRCdXR0b24oZWwsICdwcmV2JykpO1xuICB9XG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGV0IHtcbiAgICAgIG5leHRFbCxcbiAgICAgIHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICBuZXh0RWwgPSBtYWtlRWxlbWVudHNBcnJheShuZXh0RWwpO1xuICAgIHByZXZFbCA9IG1ha2VFbGVtZW50c0FycmF5KHByZXZFbCk7XG4gICAgY29uc3QgZGVzdHJveUJ1dHRvbiA9IChlbCwgZGlyKSA9PiB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGRpciA9PT0gJ25leHQnID8gb25OZXh0Q2xpY2sgOiBvblByZXZDbGljayk7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLnN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5kaXNhYmxlZENsYXNzLnNwbGl0KCcgJykpO1xuICAgIH07XG4gICAgbmV4dEVsLmZvckVhY2goZWwgPT4gZGVzdHJveUJ1dHRvbihlbCwgJ25leHQnKSk7XG4gICAgcHJldkVsLmZvckVhY2goZWwgPT4gZGVzdHJveUJ1dHRvbihlbCwgJ3ByZXYnKSk7XG4gIH1cbiAgb24oJ2luaXQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBkaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQoKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCd0b0VkZ2UgZnJvbUVkZ2UgbG9jayB1bmxvY2snLCAoKSA9PiB7XG4gICAgdXBkYXRlKCk7XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkZXN0cm95KCk7XG4gIH0pO1xuICBvbignZW5hYmxlIGRpc2FibGUnLCAoKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIG5leHRFbCxcbiAgICAgIHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICBuZXh0RWwgPSBtYWtlRWxlbWVudHNBcnJheShuZXh0RWwpO1xuICAgIHByZXZFbCA9IG1ha2VFbGVtZW50c0FycmF5KHByZXZFbCk7XG4gICAgaWYgKHN3aXBlci5lbmFibGVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgWy4uLm5leHRFbCwgLi4ucHJldkVsXS5maWx0ZXIoZWwgPT4gISFlbCkuZm9yRWFjaChlbCA9PiBlbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5sb2NrQ2xhc3MpKTtcbiAgfSk7XG4gIG9uKCdjbGljaycsIChfcywgZSkgPT4ge1xuICAgIGxldCB7XG4gICAgICBuZXh0RWwsXG4gICAgICBwcmV2RWxcbiAgICB9ID0gc3dpcGVyLm5hdmlnYXRpb247XG4gICAgbmV4dEVsID0gbWFrZUVsZW1lbnRzQXJyYXkobmV4dEVsKTtcbiAgICBwcmV2RWwgPSBtYWtlRWxlbWVudHNBcnJheShwcmV2RWwpO1xuICAgIGNvbnN0IHRhcmdldEVsID0gZS50YXJnZXQ7XG4gICAgbGV0IHRhcmdldElzQnV0dG9uID0gcHJldkVsLmluY2x1ZGVzKHRhcmdldEVsKSB8fCBuZXh0RWwuaW5jbHVkZXModGFyZ2V0RWwpO1xuICAgIGlmIChzd2lwZXIuaXNFbGVtZW50ICYmICF0YXJnZXRJc0J1dHRvbikge1xuICAgICAgY29uc3QgcGF0aCA9IGUucGF0aCB8fCBlLmNvbXBvc2VkUGF0aCAmJiBlLmNvbXBvc2VkUGF0aCgpO1xuICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgdGFyZ2V0SXNCdXR0b24gPSBwYXRoLmZpbmQocGF0aEVsID0+IG5leHRFbC5pbmNsdWRlcyhwYXRoRWwpIHx8IHByZXZFbC5pbmNsdWRlcyhwYXRoRWwpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRlT25DbGljayAmJiAhdGFyZ2V0SXNCdXR0b24pIHtcbiAgICAgIGlmIChzd2lwZXIucGFnaW5hdGlvbiAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24gJiYgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLm
2NsaWNrYWJsZSAmJiAoc3dpcGVyLnBhZ2luYXRpb24uZWwgPT09IHRhcmdldEVsIHx8IHN3aXBlci5wYWdpbmF0aW9uLmVsLmNvbnRhaW5zKHRhcmdldEVsKSkpIHJldHVybjtcbiAgICAgIGxldCBpc0hpZGRlbjtcbiAgICAgIGlmIChuZXh0RWwubGVuZ3RoKSB7XG4gICAgICAgIGlzSGlkZGVuID0gbmV4dEVsWzBdLmNsYXNzTGlzdC5jb250YWlucyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgfSBlbHNlIGlmIChwcmV2RWwubGVuZ3RoKSB7XG4gICAgICAgIGlzSGlkZGVuID0gcHJldkVsWzBdLmNsYXNzTGlzdC5jb250YWlucyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgfVxuICAgICAgaWYgKGlzSGlkZGVuID09PSB0cnVlKSB7XG4gICAgICAgIGVtaXQoJ25hdmlnYXRpb25TaG93Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0KCduYXZpZ2F0aW9uSGlkZScpO1xuICAgICAgfVxuICAgICAgWy4uLm5leHRFbCwgLi4ucHJldkVsXS5maWx0ZXIoZWwgPT4gISFlbCkuZm9yRWFjaChlbCA9PiBlbC5jbGFzc0xpc3QudG9nZ2xlKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcykpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGVuYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5zd2lwZXIucGFyYW1zLm5hdmlnYXRpb24ubmF2aWdhdGlvbkRpc2FibGVkQ2xhc3Muc3BsaXQoJyAnKSk7XG4gICAgaW5pdCgpO1xuICAgIHVwZGF0ZSgpO1xuICB9O1xuICBjb25zdCBkaXNhYmxlID0gKCkgPT4ge1xuICAgIHN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKC4uLnN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5uYXZpZ2F0aW9uRGlzYWJsZWRDbGFzcy5zcGxpdCgnICcpKTtcbiAgICBkZXN0cm95KCk7XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLm5hdmlnYXRpb24sIHtcbiAgICBlbmFibGUsXG4gICAgZGlzYWJsZSxcbiAgICB1cGRhdGUsXG4gICAgaW5pdCxcbiAgICBkZXN0cm95XG4gIH0pO1xufVxuXG5leHBvcnQgeyBOYXZpZ2F0aW9uIGFzIGRlZmF1bHQgfTtcbiIsImZ1bmN0aW9uIGNsYXNzZXNUb1NlbGVjdG9yKGNsYXNzZXMpIHtcbiAgaWYgKGNsYXNzZXMgPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXMgPSAnJztcbiAgfVxuICByZXR1cm4gYC4ke2NsYXNzZXMudHJpbSgpLnJlcGxhY2UoLyhbXFwuOiErXFwvXSkvZywgJ1xcXFwkMScpIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgLnJlcGxhY2UoLyAvZywgJy4nKX1gO1xufVxuXG5leHBvcnQgeyBjbGFzc2VzVG9TZWxlY3RvciBhcyBjIH07XG4iLCJpbXBvcnQgeyBjIGFzIGNsYXNzZXNUb1NlbGVjdG9yIH0gZnJvbSAnLi4vc2hhcmVkL2NsYXNzZXMtdG8tc2VsZWN0b3IubWpzJztcbmltcG9ydCB7IGMgYXMgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9IGZyb20gJy4uL3NoYXJlZC9jcmVhdGUtZWxlbWVudC1pZi1ub3QtZGVmaW5lZC5tanMnO1xuaW1wb3J0IHsgbSBhcyBtYWtlRWxlbWVudHNBcnJheSwgZiBhcyBlbGVtZW50T3V0ZXJTaXplLCBoIGFzIGVsZW1lbnRJbmRleCwgYSBhcyBlbGVtZW50UGFyZW50cyB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBQYWdpbmF0aW9uKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uLFxuICAgIGVtaXRcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHBmeCA9ICdzd2lwZXItcGFnaW5hdGlvbic7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgZWw6IG51bGwsXG4gICAgICBidWxsZXRFbGVtZW50OiAnc3BhbicsXG4gICAgICBjbGlja2FibGU6IGZhbHNlLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgcmVuZGVyQnVsbGV0OiBudWxsLFxuICAgICAgcmVuZGVyUHJvZ3Jlc3NiYXI6IG51bGwsXG4gICAgICByZW5kZXJGcmFjdGlvbjogbnVsbCxcbiAgICAgIHJlbmRlckN1c3RvbTogbnVsbCxcbiAgICAgIHByb2dyZXNzYmFyT3Bwb3NpdGU6IGZhbHNlLFxuICAgICAgdHlwZTogJ2J1bGxldHMnLFxuICAgICAgLy8gJ2J1bGxldHMnIG9yICdwcm9ncmVzc2Jhcicgb3IgJ2ZyYWN0aW9uJyBvciAnY3VzdG9tJ1xuICAgICAgZHluYW1pY0J1bGxldHM6IGZhbHNlLFxuICAgICAgZHluYW1pY01haW5CdWxsZXRzOiAxLFxuICAgICAgZm9ybWF0RnJhY3Rpb25DdXJyZW50OiBudW1iZXIgPT4gbnVtYmVyLFxuICAgICAgZm9ybWF0RnJhY3Rpb25Ub3RhbDogbnVtYmVyID0+IG51bWJlcixcbiAgICAgIGJ1bGxldENsYXNzOiBgJHtwZnh9LWJ1bGxldGAsXG4gICAgICBidWxsZXRBY3RpdmVDbGFzczogYCR7cGZ4fS1idWxsZXQtYWN0aXZlYCxcbiAgICAgIG1vZGlmaWVyQ2xhc3M6IGAke3BmeH0tYCxcbiAgICAgIGN1cnJlbnRDbGFzczogYCR7cGZ4fS1jdXJyZW50YCxcbiAgICAgIHRvdGFsQ2xhc3M6IGAke3BmeH0tdG90YWxgLFxuICAgICAgaGlkZGVuQ2xhc3M6IGAke3BmeH0taGlkZGVuYCxcbiAgICAgIHByb2dyZXNzYmFyRmlsbENsYXNzOiBgJHtwZnh9LXByb2dyZXNzYmFyLWZpbGxgLFxuICAgICAgcHJvZ3Jlc3NiYXJPcHBvc2l0ZUNsYXNzOiBgJHtwZnh9LXByb2dyZXNzYmFyLW9wcG9zaXRlYCxcbiAgICAgIGNsaWNrYWJsZUNsYXNzOiBgJHtwZnh9LWNsaWNrYWJsZWAsXG4gICAgICBsb2NrQ2xhc3M6IGAke3BmeH0tbG9ja2AsXG4gICAgICBob3Jpem9udGFsQ2xhc3M6IGAke3BmeH0taG9yaXpvbnRhbGAsXG4gICAgICB2ZXJ0aWNhbENsYXNzOiBgJHtwZnh9LXZlcnRpY2FsYCxcbiAgICAgIHBhZ2luYXRpb25EaXNhYmxlZENsYXNzOiBgJHtwZnh9LWRpc2FibGVkYFxuICAgIH1cbiAgfSk7XG4gIHN3aXBlci5wYWdpbmF0aW9uID0ge1xuICAgIGVsOiBudWxsLFxuICAgIGJ1bGxldHM6IFtdXG4gIH07XG4gIGxldCBidWxsZXRTaXplO1xuICBsZXQgZHluYW1pY0J1bGxldEluZGV4ID0gMDtcbiAgZnVuY3Rpb24gaXNQYWdpbmF0aW9uRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuICFzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uZWwgfHwgIXN3aXBlci5wYWdpbmF0aW9uLmVsIHx8IEFycmF5LmlzQXJyYXkoc3dpcGVyLnBhZ2luYXRpb24uZWwpICYmIHN3aXBlci5wYWdpbmF0aW9uLmVsLmxlbmd0aCA9PT0gMDtcbiAgfVxuICBmdW5jdGlvbiBzZXRTaWRlQnVsbGV0cyhidWxsZXRFbCwgcG9zaXRpb24pIHtcbiAgICBjb25zdCB7XG4gICAgICBidWxsZXRBY3RpdmVDbGFzc1xuICAgIH0gPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKCFidWxsZXRFbCkgcmV0dXJuO1xuICAgIGJ1bGxldEVsID0gYnVsbGV0RWxbYCR7cG9zaXRpb24gPT09ICdwcmV2JyA/ICdwcmV2aW91cycgOiAnbmV4dCd9RWxlbWVudFNpYmxpbmdgXTtcbiAgICBpZiAoYnVsbGV0RWwpIHtcbiAgICAgIGJ1bGxldEVsLmNsYXNzTGlzdC5hZGQoYCR7Y
2nVsbGV0QWN0aXZlQ2xhc3N9LSR7cG9zaXRpb259YCk7XG4gICAgICBidWxsZXRFbCA9IGJ1bGxldEVsW2Ake3Bvc2l0aW9uID09PSAncHJldicgPyAncHJldmlvdXMnIDogJ25leHQnfUVsZW1lbnRTaWJsaW5nYF07XG4gICAgICBpZiAoYnVsbGV0RWwpIHtcbiAgICAgICAgYnVsbGV0RWwuY2xhc3NMaXN0LmFkZChgJHtidWxsZXRBY3RpdmVDbGFzc30tJHtwb3NpdGlvbn0tJHtwb3NpdGlvbn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZ2V0TW92ZURpcmVjdGlvbihwcmV2SW5kZXgsIG5leHRJbmRleCwgbGVuZ3RoKSB7XG4gICAgcHJldkluZGV4ID0gcHJldkluZGV4ICUgbGVuZ3RoO1xuICAgIG5leHRJbmRleCA9IG5leHRJbmRleCAlIGxlbmd0aDtcbiAgICBpZiAobmV4dEluZGV4ID09PSBwcmV2SW5kZXggKyAxKSB7XG4gICAgICByZXR1cm4gJ25leHQnO1xuICAgIH0gZWxzZSBpZiAobmV4dEluZGV4ID09PSBwcmV2SW5kZXggLSAxKSB7XG4gICAgICByZXR1cm4gJ3ByZXZpb3VzJztcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGZ1bmN0aW9uIG9uQnVsbGV0Q2xpY2soZSkge1xuICAgIGNvbnN0IGJ1bGxldEVsID0gZS50YXJnZXQuY2xvc2VzdChjbGFzc2VzVG9TZWxlY3Rvcihzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MpKTtcbiAgICBpZiAoIWJ1bGxldEVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBpbmRleCA9IGVsZW1lbnRJbmRleChidWxsZXRFbCkgKiBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgIGlmIChzd2lwZXIucmVhbEluZGV4ID09PSBpbmRleCkgcmV0dXJuO1xuICAgICAgY29uc3QgbW92ZURpcmVjdGlvbiA9IGdldE1vdmVEaXJlY3Rpb24oc3dpcGVyLnJlYWxJbmRleCwgaW5kZXgsIHN3aXBlci5zbGlkZXMubGVuZ3RoKTtcbiAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAnbmV4dCcpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgICAgfSBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAncHJldmlvdXMnKSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVByZXYoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvTG9vcChpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKGluZGV4KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIC8vIFJlbmRlciB8fCBVcGRhdGUgUGFnaW5hdGlvbiBidWxsZXRzL2l0ZW1zXG4gICAgY29uc3QgcnRsID0gc3dpcGVyLnJ0bDtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKGlzUGFnaW5hdGlvbkRpc2FibGVkKCkpIHJldHVybjtcbiAgICBsZXQgZWwgPSBzd2lwZXIucGFnaW5hdGlvbi5lbDtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICAvLyBDdXJyZW50L1RvdGFsXG4gICAgbGV0IGN1cnJlbnQ7XG4gICAgbGV0IHByZXZpb3VzSW5kZXg7XG4gICAgY29uc3Qgc2xpZGVzTGVuZ3RoID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc3dpcGVyLnNsaWRlcy5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBzd2lwZXIucGFyYW1zLmxvb3AgPyBNYXRoLmNlaWwoc2xpZGVzTGVuZ3RoIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiBzd2lwZXIuc25hcEdyaWQubGVuZ3RoO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgIHByZXZpb3VzSW5kZXggPSBzd2lwZXIucHJldmlvdXNSZWFsSW5kZXggfHwgMDtcbiAgICAgIGN1cnJlbnQgPSBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID4gMSA/IE1hdGguZmxvb3Ioc3dpcGVyLnJlYWxJbmRleCAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApIDogc3dpcGVyLnJlYWxJbmRleDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2lwZXIuc25hcEluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY3VycmVudCA9IHN3aXBlci5zbmFwSW5kZXg7XG4gICAgICBwcmV2aW91c0luZGV4ID0gc3dpcGVyLnByZXZpb3VzU25hcEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2aW91c0luZGV4ID0gc3dpcGVyLnByZXZpb3VzSW5kZXggfHwgMDtcbiAgICAgIGN1cnJlbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggfHwgMDtcbiAgICB9XG4gICAgLy8gVHlwZXNcbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJyAmJiBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzICYmIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYnVsbGV0cyA9IHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHM7XG4gICAgICBsZXQgZmlyc3RJbmRleDtcbiAgICAgIGxldCBsYXN0SW5kZXg7XG4gICAgICBsZXQgbWlkSW5kZXg7XG4gICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgIGJ1bGxldFNpemUgPSBlbGVtZW50T3V0ZXJTaXplKGJ1bGxldHNbMF0sIHN3aXBlci5pc0hvcml6b250YWwoKSA/ICd3aWR0aCcgOiAnaGVpZ2h0JywgdHJ1ZSk7XG4gICAgICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgICAgIHN1YkVsLnN0eWxlW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICd3aWR0aCcgOiAnaGVpZ2h0J10gPSBgJHtidWxsZXRTaXplICogKHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgKyA0KX1weGA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyA+IDEgJiYgcHJldmlvdXNJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZHluYW1pY0J1bGxldEluZGV4ICs9IGN1cnJlbnQgLSAocHJldmlvdXNJbmRleCB8fCAwKTtcbiAgICAgICAgICBpZiAoZHluYW1pY0J1bGxldEluZGV4ID4gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyAtIDEpIHtcbiAgICAgICAgICAgIGR5bmFtaWNCdWxsZXRJbmRleCA9IHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgLSAxO1xuICAgICAgICAgI
2H0gZWxzZSBpZiAoZHluYW1pY0J1bGxldEluZGV4IDwgMCkge1xuICAgICAgICAgICAgZHluYW1pY0J1bGxldEluZGV4ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmlyc3RJbmRleCA9IE1hdGgubWF4KGN1cnJlbnQgLSBkeW5hbWljQnVsbGV0SW5kZXgsIDApO1xuICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4ICsgKE1hdGgubWluKGJ1bGxldHMubGVuZ3RoLCBwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzKSAtIDEpO1xuICAgICAgICBtaWRJbmRleCA9IChsYXN0SW5kZXggKyBmaXJzdEluZGV4KSAvIDI7XG4gICAgICB9XG4gICAgICBidWxsZXRzLmZvckVhY2goYnVsbGV0RWwgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc2VzVG9SZW1vdmUgPSBbLi4uWycnLCAnLW5leHQnLCAnLW5leHQtbmV4dCcsICctcHJldicsICctcHJldi1wcmV2JywgJy1tYWluJ10ubWFwKHN1ZmZpeCA9PiBgJHtwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3N9JHtzdWZmaXh9YCldLm1hcChzID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLmluY2x1ZGVzKCcgJykgPyBzLnNwbGl0KCcgJykgOiBzKS5mbGF0KCk7XG4gICAgICAgIGJ1bGxldEVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlc1RvUmVtb3ZlKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYnVsbGV0cy5mb3JFYWNoKGJ1bGxldCA9PiB7XG4gICAgICAgICAgY29uc3QgYnVsbGV0SW5kZXggPSBlbGVtZW50SW5kZXgoYnVsbGV0KTtcbiAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGJ1bGxldC5jbGFzc0xpc3QuYWRkKC4uLnBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcy5zcGxpdCgnICcpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGJ1bGxldC5zZXRBdHRyaWJ1dGUoJ3BhcnQnLCAnYnVsbGV0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgICAgIGlmIChidWxsZXRJbmRleCA+PSBmaXJzdEluZGV4ICYmIGJ1bGxldEluZGV4IDw9IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgICBidWxsZXQuY2xhc3NMaXN0LmFkZCguLi5gJHtwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3N9LW1haW5gLnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJ1bGxldEluZGV4ID09PSBmaXJzdEluZGV4KSB7XG4gICAgICAgICAgICAgIHNldFNpZGVCdWxsZXRzKGJ1bGxldCwgJ3ByZXYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChidWxsZXRJbmRleCA9PT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgIHNldFNpZGVCdWxsZXRzKGJ1bGxldCwgJ25leHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYnVsbGV0ID0gYnVsbGV0c1tjdXJyZW50XTtcbiAgICAgICAgaWYgKGJ1bGxldCkge1xuICAgICAgICAgIGJ1bGxldC5jbGFzc0xpc3QuYWRkKC4uLnBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcy5zcGxpdCgnICcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgICAgIGJ1bGxldHMuZm9yRWFjaCgoYnVsbGV0RWwsIGJ1bGxldEluZGV4KSA9PiB7XG4gICAgICAgICAgICBidWxsZXRFbC5zZXRBdHRyaWJ1dGUoJ3BhcnQnLCBidWxsZXRJbmRleCA9PT0gY3VycmVudCA/ICdidWxsZXQtYWN0aXZlJyA6ICdidWxsZXQnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3REaXNwbGF5ZWRCdWxsZXQgPSBidWxsZXRzW2ZpcnN0SW5kZXhdO1xuICAgICAgICAgIGNvbnN0IGxhc3REaXNwbGF5ZWRCdWxsZXQgPSBidWxsZXRzW2xhc3RJbmRleF07XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGZpcnN0SW5kZXg7IGkgPD0gbGFzdEluZGV4OyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChidWxsZXRzW2ldKSB7XG4gICAgICAgICAgICAgIGJ1bGxldHNbaV0uY2xhc3NMaXN0LmFkZCguLi5gJHtwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3N9LW1haW5gLnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaWRlQnVsbGV0cyhmaXJzdERpc3BsYXllZEJ1bGxldCwgJ3ByZXYnKTtcbiAgICAgICAgICBzZXRTaWRlQnVsbGV0cyhsYXN0RGlzcGxheWVkQnVsbGV0LCAnbmV4dCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNCdWxsZXRzTGVuZ3RoID0gTWF0aC5taW4oYnVsbGV0cy5sZW5ndGgsIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgKyA0KTtcbiAgICAgICAgY29uc3QgYnVsbGV0c09mZnNldCA9IChidWxsZXRTaXplICogZHluYW1pY0J1bGxldHNMZW5ndGggLSBidWxsZXRTaXplKSAvIDIgLSBtaWRJbmRleCAqIGJ1bGxldFNpemU7XG4gICAgICAgIGNvbnN0IG9mZnNldFByb3AgPSBydGwgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgICAgICBidWxsZXRzLmZvckVhY2goYnVsbGV0ID0+IHtcbiAgICAgICAgICBidWxsZXQuc3R5bGVbc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gb2Zmc2V0UHJvcCA6ICd0b3AnXSA9IGAke2J1bGxldHNPZmZzZXR9cHhgO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWwuZm9yRWFjaCgoc3ViRWwsIHN1YkVsSW5kZXgpID0+IHtcbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2ZyYWN0aW9uJykge1xuICAgICAgICBzdWJFbC5xdWVyeVNlbGVjdG9yQWxsKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5jdXJyZW50Q2xhc3MpKS5mb3JFYWNoKGZyYWN0aW9uRWwgPT4ge1xuICAgICAgICAgIGZyYWN0aW9uRWwudGV4dENvbnRlbnQgPSBwYXJhbXMuZm9ybWF0RnJhY3Rpb25DdXJyZW50KGN1cnJlbnQgKyAxKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YkVsLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLnRvdGFsQ2xhc3MpKS5mb3JFYWNoKHRvdGFsRWwgPT4ge1xuICAgICAgICAgI
2HRvdGFsRWwudGV4dENvbnRlbnQgPSBwYXJhbXMuZm9ybWF0RnJhY3Rpb25Ub3RhbCh0b3RhbCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAncHJvZ3Jlc3NiYXInKSB7XG4gICAgICAgIGxldCBwcm9ncmVzc2JhckRpcmVjdGlvbjtcbiAgICAgICAgaWYgKHBhcmFtcy5wcm9ncmVzc2Jhck9wcG9zaXRlKSB7XG4gICAgICAgICAgcHJvZ3Jlc3NiYXJEaXJlY3Rpb24gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2dyZXNzYmFyRGlyZWN0aW9uID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY2FsZSA9IChjdXJyZW50ICsgMSkgLyB0b3RhbDtcbiAgICAgICAgbGV0IHNjYWxlWCA9IDE7XG4gICAgICAgIGxldCBzY2FsZVkgPSAxO1xuICAgICAgICBpZiAocHJvZ3Jlc3NiYXJEaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgIHNjYWxlWCA9IHNjYWxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjYWxlWSA9IHNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIHN1YkVsLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLnByb2dyZXNzYmFyRmlsbENsYXNzKSkuZm9yRWFjaChwcm9ncmVzc0VsID0+IHtcbiAgICAgICAgICBwcm9ncmVzc0VsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGVYKCR7c2NhbGVYfSkgc2NhbGVZKCR7c2NhbGVZfSlgO1xuICAgICAgICAgIHByb2dyZXNzRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7c3dpcGVyLnBhcmFtcy5zcGVlZH1tc2A7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnY3VzdG9tJyAmJiBwYXJhbXMucmVuZGVyQ3VzdG9tKSB7XG4gICAgICAgIHN1YkVsLmlubmVySFRNTCA9IHBhcmFtcy5yZW5kZXJDdXN0b20oc3dpcGVyLCBjdXJyZW50ICsgMSwgdG90YWwpO1xuICAgICAgICBpZiAoc3ViRWxJbmRleCA9PT0gMCkgZW1pdCgncGFnaW5hdGlvblJlbmRlcicsIHN1YkVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdWJFbEluZGV4ID09PSAwKSBlbWl0KCdwYWdpbmF0aW9uUmVuZGVyJywgc3ViRWwpO1xuICAgICAgICBlbWl0KCdwYWdpbmF0aW9uVXBkYXRlJywgc3ViRWwpO1xuICAgICAgfVxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzd2lwZXIuZW5hYmxlZCkge1xuICAgICAgICBzdWJFbC5jbGFzc0xpc3Rbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZCcgOiAncmVtb3ZlJ10ocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIC8vIFJlbmRlciBDb250YWluZXJcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKGlzUGFnaW5hdGlvbkRpc2FibGVkKCkpIHJldHVybjtcbiAgICBjb25zdCBzbGlkZXNMZW5ndGggPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBzd2lwZXIuZ3JpZCAmJiBzd2lwZXIucGFyYW1zLmdyaWQucm93cyA+IDEgPyBzd2lwZXIuc2xpZGVzLmxlbmd0aCAvIE1hdGguY2VpbChzd2lwZXIucGFyYW1zLmdyaWQucm93cykgOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgICBsZXQgZWwgPSBzd2lwZXIucGFnaW5hdGlvbi5lbDtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBsZXQgcGFnaW5hdGlvbkhUTUwgPSAnJztcbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJykge1xuICAgICAgbGV0IG51bWJlck9mQnVsbGV0cyA9IHN3aXBlci5wYXJhbXMubG9vcCA/IE1hdGguY2VpbChzbGlkZXNMZW5ndGggLyBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwKSA6IHN3aXBlci5zbmFwR3JpZC5sZW5ndGg7XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5mcmVlTW9kZSAmJiBzd2lwZXIucGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQgJiYgbnVtYmVyT2ZCdWxsZXRzID4gc2xpZGVzTGVuZ3RoKSB7XG4gICAgICAgIG51bWJlck9mQnVsbGV0cyA9IHNsaWRlc0xlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWxsZXRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5yZW5kZXJCdWxsZXQpIHtcbiAgICAgICAgICBwYWdpbmF0aW9uSFRNTCArPSBwYXJhbXMucmVuZGVyQnVsbGV0LmNhbGwoc3dpcGVyLCBpLCBwYXJhbXMuYnVsbGV0Q2xhc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgIHBhZ2luYXRpb25IVE1MICs9IGA8JHtwYXJhbXMuYnVsbGV0RWxlbWVudH0gJHtzd2lwZXIuaXNFbGVtZW50ID8gJ3BhcnQ9XCJidWxsZXRcIicgOiAnJ30gY2xhc3M9XCIke3BhcmFtcy5idWxsZXRDbGFzc31cIj48LyR7cGFyYW1zLmJ1bGxldEVsZW1lbnR9PmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnZnJhY3Rpb24nKSB7XG4gICAgICBpZiAocGFyYW1zLnJlbmRlckZyYWN0aW9uKSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gcGFyYW1zLnJlbmRlckZyYWN0aW9uLmNhbGwoc3dpcGVyLCBwYXJhbXMuY3VycmVudENsYXNzLCBwYXJhbXMudG90YWxDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWdpbmF0aW9uSFRNTCA9IGA8c3BhbiBjbGFzcz1cIiR7cGFyYW1zLmN1cnJlbnRDbGFzc31cIj48L3NwYW4+YCArICcgLyAnICsgYDxzcGFuIGNsYXNzPVwiJHtwYXJhbXMudG90YWxDbGFzc31cIj48L3NwYW4+YDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAncHJvZ3Jlc3NiYXInKSB7XG4gICAgICBpZiAocGFyYW1zLnJlbmRlclByb2dyZXNzYmFyKSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gcGFyYW1zLnJlbmRlclByb2dyZXNzYmFyLmNhbGwoc3dpcGVyLCBwYXJhbXMucHJvZ3Jlc3NiYXJGaWxsQ2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFnaW5hdGlvbkhUTUwgPSBgPHNwYW4gY2xhc3M9XCIke3BhcmFtcy5wcm9ncmVzc2JhckZpbGxDbGFzc31cIj48L3NwYW4+YDtcbiAgICAgIH1cbiAgICB9XG4gICAgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cyA9IFtdO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgaWYgKHBhcmFtcy50eXBlICE9PSAnY3VzdG9tJykge1xuICAgICAgICBzdWJFbC5pbm5lckhUTUwgPSBwYWdpbmF0aW9uSFRNTCB8fCAnJztcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnKSB7XG4gICAgICAgI
2HN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMucHVzaCguLi5zdWJFbC5xdWVyeVNlbGVjdG9yQWxsKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5idWxsZXRDbGFzcykpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocGFyYW1zLnR5cGUgIT09ICdjdXN0b20nKSB7XG4gICAgICBlbWl0KCdwYWdpbmF0aW9uUmVuZGVyJywgZWxbMF0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbiA9IGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoc3dpcGVyLCBzd2lwZXIub3JpZ2luYWxQYXJhbXMucGFnaW5hdGlvbiwgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLCB7XG4gICAgICBlbDogJ3N3aXBlci1wYWdpbmF0aW9uJ1xuICAgIH0pO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoIXBhcmFtcy5lbCkgcmV0dXJuO1xuICAgIGxldCBlbDtcbiAgICBpZiAodHlwZW9mIHBhcmFtcy5lbCA9PT0gJ3N0cmluZycgJiYgc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgZWwgPSBzd2lwZXIuZWwucXVlcnlTZWxlY3RvcihwYXJhbXMuZWwpO1xuICAgIH1cbiAgICBpZiAoIWVsICYmIHR5cGVvZiBwYXJhbXMuZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbCA9IFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhcmFtcy5lbCldO1xuICAgIH1cbiAgICBpZiAoIWVsKSB7XG4gICAgICBlbCA9IHBhcmFtcy5lbDtcbiAgICB9XG4gICAgaWYgKCFlbCB8fCBlbC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiB0eXBlb2YgcGFyYW1zLmVsID09PSAnc3RyaW5nJyAmJiBBcnJheS5pc0FycmF5KGVsKSAmJiBlbC5sZW5ndGggPiAxKSB7XG4gICAgICBlbCA9IFsuLi5zd2lwZXIuZWwucXVlcnlTZWxlY3RvckFsbChwYXJhbXMuZWwpXTtcbiAgICAgIC8vIGNoZWNrIGlmIGl0IGJlbG9uZ3MgdG8gYW5vdGhlciBuZXN0ZWQgU3dpcGVyXG4gICAgICBpZiAoZWwubGVuZ3RoID4gMSkge1xuICAgICAgICBlbCA9IGVsLmZpbHRlcihzdWJFbCA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnRQYXJlbnRzKHN1YkVsLCAnLnN3aXBlcicpWzBdICE9PSBzd2lwZXIuZWwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSlbMF07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGVsKSAmJiBlbC5sZW5ndGggPT09IDEpIGVsID0gZWxbMF07XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIucGFnaW5hdGlvbiwge1xuICAgICAgZWxcbiAgICB9KTtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHBhcmFtcy5jbGlja2FibGUpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZCguLi4ocGFyYW1zLmNsaWNrYWJsZUNsYXNzIHx8ICcnKS5zcGxpdCgnICcpKTtcbiAgICAgIH1cbiAgICAgIHN1YkVsLmNsYXNzTGlzdC5hZGQocGFyYW1zLm1vZGlmaWVyQ2xhc3MgKyBwYXJhbXMudHlwZSk7XG4gICAgICBzdWJFbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJyAmJiBwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZChgJHtwYXJhbXMubW9kaWZpZXJDbGFzc30ke3BhcmFtcy50eXBlfS1keW5hbWljYCk7XG4gICAgICAgIGR5bmFtaWNCdWxsZXRJbmRleCA9IDA7XG4gICAgICAgIGlmIChwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzIDwgMSkge1xuICAgICAgICAgIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdwcm9ncmVzc2JhcicgJiYgcGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGUpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZChwYXJhbXMucHJvZ3Jlc3NiYXJPcHBvc2l0ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMuY2xpY2thYmxlKSB7XG4gICAgICAgIHN1YkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25CdWxsZXRDbGljayk7XG4gICAgICB9XG4gICAgICBpZiAoIXN3aXBlci5lbmFibGVkKSB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdC5hZGQocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKGlzUGFnaW5hdGlvbkRpc2FibGVkKCkpIHJldHVybjtcbiAgICBsZXQgZWwgPSBzd2lwZXIucGFnaW5hdGlvbi5lbDtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdC5yZW1vdmUocGFyYW1zLmhpZGRlbkNsYXNzKTtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShwYXJhbXMubW9kaWZpZXJDbGFzcyArIHBhcmFtcy50eXBlKTtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBwYXJhbXMuaG9yaXpvbn
2RhbENsYXNzIDogcGFyYW1zLnZlcnRpY2FsQ2xhc3MpO1xuICAgICAgICBpZiAocGFyYW1zLmNsaWNrYWJsZSkge1xuICAgICAgICAgIHN1YkVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uKHBhcmFtcy5jbGlja2FibGVDbGFzcyB8fCAnJykuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgc3ViRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkJ1bGxldENsaWNrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzKSBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0LnJlbW92ZSguLi5wYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3Muc3BsaXQoJyAnKSkpO1xuICB9XG4gIG9uKCdjaGFuZ2VEaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFnaW5hdGlvbiB8fCAhc3dpcGVyLnBhZ2luYXRpb24uZWwpIHJldHVybjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgbGV0IHtcbiAgICAgIGVsXG4gICAgfSA9IHN3aXBlci5wYWdpbmF0aW9uO1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShwYXJhbXMuaG9yaXpvbnRhbENsYXNzLCBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgICBzdWJFbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgfSk7XG4gIH0pO1xuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCgpO1xuICAgICAgcmVuZGVyKCk7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0pO1xuICBvbignYWN0aXZlSW5kZXhDaGFuZ2UnLCAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzd2lwZXIuc25hcEluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NuYXBJbmRleENoYW5nZScsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdzbmFwR3JpZExlbmd0aENoYW5nZScsICgpID0+IHtcbiAgICByZW5kZXIoKTtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGRlc3Ryb3koKTtcbiAgfSk7XG4gIG9uKCdlbmFibGUgZGlzYWJsZScsICgpID0+IHtcbiAgICBsZXQge1xuICAgICAgZWxcbiAgICB9ID0gc3dpcGVyLnBhZ2luYXRpb247XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICAgIGVsLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0W3N3aXBlci5lbmFibGVkID8gJ3JlbW92ZScgOiAnYWRkJ10oc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmxvY2tDbGFzcykpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdsb2NrIHVubG9jaycsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdjbGljaycsIChfcywgZSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEVsID0gZS50YXJnZXQ7XG4gICAgY29uc3QgZWwgPSBtYWtlRWxlbWVudHNBcnJheShzd2lwZXIucGFnaW5hdGlvbi5lbCk7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5lbCAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZU9uQ2xpY2sgJiYgZWwgJiYgZWwubGVuZ3RoID4gMCAmJiAhdGFyZ2V0RWwuY2xhc3NMaXN0LmNvbnRhaW5zKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpIHtcbiAgICAgIGlmIChzd2lwZXIubmF2aWdhdGlvbiAmJiAoc3dpcGVyLm5hdmlnYXRpb24ubmV4dEVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwgfHwgc3dpcGVyLm5hdmlnYXRpb24ucHJldkVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5wcmV2RWwpKSByZXR1cm47XG4gICAgICBjb25zdCBpc0hpZGRlbiA9IGVsWzBdLmNsYXNzTGlzdC5jb250YWlucyhzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgaWYgKGlzSGlkZGVuID09PSB0cnVlKSB7XG4gICAgICAgIGVtaXQoJ3BhZ2luYXRpb25TaG93Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0KCdwYWdpbmF0aW9uSGlkZScpO1xuICAgICAgfVxuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiBzdWJFbC5jbGFzc0xpc3QudG9nZ2xlKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5oaWRkZW5DbGFzcykpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGVuYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24ucGFnaW5hdGlvbkRpc2FibGVkQ2xhc3MpO1xuICAgIGxldCB7XG4gICAgICBlbFxuICAgIH0gPSBzd2lwZXIucGFnaW5hdGlvbjtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiBzdWJFbC5jbGFzc0xpc3QucmVtb3ZlKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5wYWdpbmF0aW9uRGlzYWJsZWRDbGFzcykpO1xuICAgIH1cbiAgICBpbml0KCk7XG4gICAgcmVuZGVyKCk7XG4gICAgdXBkYXRlKCk7XG4gIH07XG4gIGNvbnN0IGRpc2FibGUgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5hZGQoc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKTtcbiAgICBsZXQge1xuICAgICAgZWxcbiAgICB9ID0gc3dpcGVyLnBhZ2luYXRpb247XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICAgIGVsLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0LmFkZChzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24ucGFnaW5hdGlvbkRpc2FibGVkQ2xhc3MpKTtcbiAgICB9XG4gICAgZGVzdHJveSgpO1xuICB9O1xuICBPYmplY3QuYXNzaWduKHN3aXBlci5wYWdpbmF0aW9uLCB7XG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGUsXG4gICAgcmVuZGVyLFxuICAgIHVwZGF0ZSxcbiAgICBpbml0LFxuICAgIGRlc3Ryb3lcbiAgfSk7XG59XG5cbmV4cG9ydCB7
2IFBhZ2luYXRpb24gYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgZyBhcyBnZXREb2N1bWVudCB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuXG4vKiBlc2xpbnQgbm8tdW5kZXJzY29yZS1kYW5nbGU6IFwib2ZmXCIgKi9cbi8qIGVzbGludCBuby11c2UtYmVmb3JlLWRlZmluZTogXCJvZmZcIiAqL1xuZnVuY3Rpb24gQXV0b3BsYXkoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb24sXG4gICAgZW1pdCxcbiAgICBwYXJhbXNcbiAgfSA9IF9yZWY7XG4gIHN3aXBlci5hdXRvcGxheSA9IHtcbiAgICBydW5uaW5nOiBmYWxzZSxcbiAgICBwYXVzZWQ6IGZhbHNlLFxuICAgIHRpbWVMZWZ0OiAwXG4gIH07XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgYXV0b3BsYXk6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVsYXk6IDMwMDAsXG4gICAgICB3YWl0Rm9yVHJhbnNpdGlvbjogdHJ1ZSxcbiAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0b3BPbkxhc3RTbGlkZTogZmFsc2UsXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiBmYWxzZSxcbiAgICAgIHBhdXNlT25Nb3VzZUVudGVyOiBmYWxzZVxuICAgIH1cbiAgfSk7XG4gIGxldCB0aW1lb3V0O1xuICBsZXQgcmFmO1xuICBsZXQgYXV0b3BsYXlEZWxheVRvdGFsID0gcGFyYW1zICYmIHBhcmFtcy5hdXRvcGxheSA/IHBhcmFtcy5hdXRvcGxheS5kZWxheSA6IDMwMDA7XG4gIGxldCBhdXRvcGxheURlbGF5Q3VycmVudCA9IHBhcmFtcyAmJiBwYXJhbXMuYXV0b3BsYXkgPyBwYXJhbXMuYXV0b3BsYXkuZGVsYXkgOiAzMDAwO1xuICBsZXQgYXV0b3BsYXlUaW1lTGVmdDtcbiAgbGV0IGF1dG9wbGF5U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGxldCB3YXNQYXVzZWQ7XG4gIGxldCBpc1RvdWNoZWQ7XG4gIGxldCBwYXVzZWRCeVRvdWNoO1xuICBsZXQgdG91Y2hTdGFydFRpbWVvdXQ7XG4gIGxldCBzbGlkZUNoYW5nZWQ7XG4gIGxldCBwYXVzZWRCeUludGVyYWN0aW9uO1xuICBsZXQgcGF1c2VkQnlQb2ludGVyRW50ZXI7XG4gIGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZChlKSB7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLndyYXBwZXJFbCkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gc3dpcGVyLndyYXBwZXJFbCkgcmV0dXJuO1xuICAgIHN3aXBlci53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgaWYgKHBhdXNlZEJ5UG9pbnRlckVudGVyIHx8IGUuZGV0YWlsICYmIGUuZGV0YWlsLmJ5U3dpcGVyVG91Y2hNb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlc3VtZSgpO1xuICB9XG4gIGNvbnN0IGNhbGNUaW1lTGVmdCA9ICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCkge1xuICAgICAgd2FzUGF1c2VkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHdhc1BhdXNlZCkge1xuICAgICAgYXV0b3BsYXlEZWxheUN1cnJlbnQgPSBhdXRvcGxheVRpbWVMZWZ0O1xuICAgICAgd2FzUGF1c2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVMZWZ0ID0gc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA/IGF1dG9wbGF5VGltZUxlZnQgOiBhdXRvcGxheVN0YXJ0VGltZSArIGF1dG9wbGF5RGVsYXlDdXJyZW50IC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnRpbWVMZWZ0ID0gdGltZUxlZnQ7XG4gICAgZW1pdCgnYXV0b3BsYXlUaW1lTGVmdCcsIHRpbWVMZWZ0LCB0aW1lTGVmdCAvIGF1dG9wbGF5RGVsYXlUb3RhbCk7XG4gICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNhbGNUaW1lTGVmdCgpO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBnZXRTbGlkZURlbGF5ID0gKCkgPT4ge1xuICAgIGxldCBhY3RpdmVTbGlkZUVsO1xuICAgIGlmIChzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgYWN0aXZlU2xpZGVFbCA9IHN3aXBlci5zbGlkZXMuZmlsdGVyKHNsaWRlRWwgPT4gc2xpZGVFbC5jbGFzc0xpc3QuY29udGFpbnMoJ3N3aXBlci1zbGlkZS1hY3RpdmUnKSlbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGl2ZVNsaWRlRWwgPSBzd2lwZXIuc2xpZGVzW3N3aXBlci5hY3RpdmVJbmRleF07XG4gICAgfVxuICAgIGlmICghYWN0aXZlU2xpZGVFbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBjdXJyZW50U2xpZGVEZWxheSA9IHBhcnNlSW50KGFjdGl2ZVNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1hdXRvcGxheScpLCAxMCk7XG4gICAgcmV0dXJuIGN1cnJlbnRTbGlkZURlbGF5O1xuICB9O1xuICBjb25zdCBydW4gPSBkZWxheUZvcmNlID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpO1xuICAgIGNhbGNUaW1lTGVmdCgpO1xuICAgIGxldCBkZWxheSA9IHR5cGVvZiBkZWxheUZvcmNlID09PSAndW5kZWZpbmVkJyA/IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXkgOiBkZWxheUZvcmNlO1xuICAgIGF1dG9wbGF5RGVsYXlUb3RhbCA9IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7XG4gICAgYXV0b3BsYXlEZWxheUN1cnJlbnQgPSBzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRlbGF5O1xuICAgIGNvbnN0IGN1cnJlbnRTbGlkZURlbGF5ID0gZ2V0U2xpZGVEZWxheSgpO1xuICAgIGlmICghTnVtYmVyLmlzTmFOKGN1cnJlbnRTbGlkZURlbGF5KSAmJiBjdXJyZW50U2xpZGVEZWxheSA+IDAgJiYgdHlwZW9mIGRlbGF5Rm9yY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkZWxheSA9IGN1cnJlbnRTbGlkZURlbGF5O1xuICAgICAgYXV0b3BsYXlEZWxheVRvdGFsID0gY3VycmVudFNsaWRlRGVsYXk7XG4gICAgICBhdXRvcGxheURlbGF5Q3VycmVudCA9IGN1cnJlbnRTbGlkZURlbGF5O1xuICAgIH1cbiAgICBhdXRvcGxheVRpbWVMZWZ0ID0gZGVsYXk7XG4gICAgY29uc3Qgc3BlZWQgPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICAgIGNvbnN0IHByb2NlZWQgPSAoKSA9PiB7XG4gICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5yZXZlcnNlRGlyZWN0aW9uKSB7XG4gICAgICAgIGlmICghc3dpcGVyLmlzQmVnaW5uaW5nIHx8IHN3aXBlci5wYXJhbXMubG9vcCB8fCBzd2lwZXIucGFyYW1zLnJld2luZCkge1xuICAgICAgICAgI
2HN3aXBlci5zbGlkZVByZXYoc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN3aXBlci5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlKSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxLCBzcGVlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgZW1pdCgnYXV0b3BsYXknKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFzd2lwZXIuaXNFbmQgfHwgc3dpcGVyLnBhcmFtcy5sb29wIHx8IHN3aXBlci5wYXJhbXMucmV3aW5kKSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlTmV4dChzcGVlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgZW1pdCgnYXV0b3BsYXknKTtcbiAgICAgICAgfSBlbHNlIGlmICghc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5zdG9wT25MYXN0U2xpZGUpIHtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVUbygwLCBzcGVlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgZW1pdCgnYXV0b3BsYXknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgICBhdXRvcGxheVN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJ1bigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChkZWxheSA+IDApIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcHJvY2VlZCgpO1xuICAgICAgfSwgZGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcm9jZWVkKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICByZXR1cm4gZGVsYXk7XG4gIH07XG4gIGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICAgIGF1dG9wbGF5U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcgPSB0cnVlO1xuICAgIHJ1bigpO1xuICAgIGVtaXQoJ2F1dG9wbGF5U3RhcnQnKTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBzd2lwZXIuYXV0b3BsYXkucnVubmluZyA9IGZhbHNlO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpO1xuICAgIGVtaXQoJ2F1dG9wbGF5U3RvcCcpO1xuICB9O1xuICBjb25zdCBwYXVzZSA9IChpbnRlcm5hbCwgcmVzZXQpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgcGF1c2VkQnlJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHByb2NlZWQgPSAoKSA9PiB7XG4gICAgICBlbWl0KCdhdXRvcGxheVBhdXNlJyk7XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvcGxheS53YWl0Rm9yVHJhbnNpdGlvbikge1xuICAgICAgICBzd2lwZXIud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdW1lKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBzd2lwZXIuYXV0b3BsYXkucGF1c2VkID0gdHJ1ZTtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIGlmIChzbGlkZUNoYW5nZWQpIHtcbiAgICAgICAgYXV0b3BsYXlUaW1lTGVmdCA9IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7XG4gICAgICB9XG4gICAgICBzbGlkZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHByb2NlZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVsYXkgPSBhdXRvcGxheVRpbWVMZWZ0IHx8IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7XG4gICAgYXV0b3BsYXlUaW1lTGVmdCA9IGRlbGF5IC0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gYXV0b3BsYXlTdGFydFRpbWUpO1xuICAgIGlmIChzd2lwZXIuaXNFbmQgJiYgYXV0b3BsYXlUaW1lTGVmdCA8IDAgJiYgIXN3aXBlci5wYXJhbXMubG9vcCkgcmV0dXJuO1xuICAgIGlmIChhdXRvcGxheVRpbWVMZWZ0IDwgMCkgYXV0b3BsYXlUaW1lTGVmdCA9IDA7XG4gICAgcHJvY2VlZCgpO1xuICB9O1xuICBjb25zdCByZXN1bWUgPSAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5pc0VuZCAmJiBhdXRvcGxheVRpbWVMZWZ0IDwgMCAmJiAhc3dpcGVyLnBhcmFtcy5sb29wIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm47XG4gICAgYXV0b3BsYXlTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBpZiAocGF1c2VkQnlJbnRlcmFjdGlvbikge1xuICAgICAgcGF1c2VkQnlJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgICAgcnVuKGF1dG9wbGF5VGltZUxlZnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBydW4oKTtcbiAgICB9XG4gICAgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA9IGZhbHNlO1xuICAgIGVtaXQoJ2F1dG9wbGF5UmVzdW1lJyk7XG4gIH07XG4gIGNvbnN0IG9uVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgICAgcGF1c2UodHJ1ZSk7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgcmVzdW1lKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvblBvaW50ZXJFbnRlciA9IGUgPT4ge1xuICAgIGlmIChlLnBvaW50ZXJUeXBlICE9PSAnbW91c2UnKSByZXR1cm47XG4gICAgcGF1c2VkQnlJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgcGF1c2VkQnlQb2ludGVyRW50ZXIgPSB0cnVlO1xuICAgIGlmIChzd2lwZXIuYW5pbWF0aW5nIHx8IHN3aXBlci5hdXRvcGxheS5wYXVzZWQpIHJldHVybjtcbiAgICBwYXVzZSh0cnVlKTtcbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyTGVhdmUgP
2SBlID0+IHtcbiAgICBpZiAoZS5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJykgcmV0dXJuO1xuICAgIHBhdXNlZEJ5UG9pbnRlckVudGVyID0gZmFsc2U7XG4gICAgaWYgKHN3aXBlci5hdXRvcGxheS5wYXVzZWQpIHtcbiAgICAgIHJlc3VtZSgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYXR0YWNoTW91c2VFdmVudHMgPSAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkucGF1c2VPbk1vdXNlRW50ZXIpIHtcbiAgICAgIHN3aXBlci5lbC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBvblBvaW50ZXJFbnRlcik7XG4gICAgICBzd2lwZXIuZWwuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgb25Qb2ludGVyTGVhdmUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGV0YWNoTW91c2VFdmVudHMgPSAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5lbCAmJiB0eXBlb2Ygc3dpcGVyLmVsICE9PSAnc3RyaW5nJykge1xuICAgICAgc3dpcGVyLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJlbnRlcicsIG9uUG9pbnRlckVudGVyKTtcbiAgICAgIHN3aXBlci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBvblBvaW50ZXJMZWF2ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBhdHRhY2hEb2N1bWVudEV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eUNoYW5nZSk7XG4gIH07XG4gIGNvbnN0IGRldGFjaERvY3VtZW50RXZlbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgfTtcbiAgb24oJ2luaXQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZW5hYmxlZCkge1xuICAgICAgYXR0YWNoTW91c2VFdmVudHMoKTtcbiAgICAgIGF0dGFjaERvY3VtZW50RXZlbnRzKCk7XG4gICAgICBzdGFydCgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGRldGFjaE1vdXNlRXZlbnRzKCk7XG4gICAgZGV0YWNoRG9jdW1lbnRFdmVudHMoKTtcbiAgICBpZiAoc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHtcbiAgICAgIHN0b3AoKTtcbiAgICB9XG4gIH0pO1xuICBvbignX2ZyZWVNb2RlU3RhdGljUmVsZWFzZScsICgpID0+IHtcbiAgICBpZiAocGF1c2VkQnlUb3VjaCB8fCBwYXVzZWRCeUludGVyYWN0aW9uKSB7XG4gICAgICByZXN1bWUoKTtcbiAgICB9XG4gIH0pO1xuICBvbignX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UnLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uKSB7XG4gICAgICBwYXVzZSh0cnVlLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcCgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCAoX3MsIHNwZWVkLCBpbnRlcm5hbCkgPT4ge1xuICAgIGlmIChzd2lwZXIuZGVzdHJveWVkIHx8ICFzd2lwZXIuYXV0b3BsYXkucnVubmluZykgcmV0dXJuO1xuICAgIGlmIChpbnRlcm5hbCB8fCAhc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikge1xuICAgICAgcGF1c2UodHJ1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3AoKTtcbiAgICB9XG4gIH0pO1xuICBvbignc2xpZGVyRmlyc3RNb3ZlJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuZGVzdHJveWVkIHx8ICFzd2lwZXIuYXV0b3BsYXkucnVubmluZykgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uKSB7XG4gICAgICBzdG9wKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzVG91Y2hlZCA9IHRydWU7XG4gICAgcGF1c2VkQnlUb3VjaCA9IGZhbHNlO1xuICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB0b3VjaFN0YXJ0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcGF1c2VkQnlJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgICBwYXVzZWRCeVRvdWNoID0gdHJ1ZTtcbiAgICAgIHBhdXNlKHRydWUpO1xuICAgIH0sIDIwMCk7XG4gIH0pO1xuICBvbigndG91Y2hFbmQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5hdXRvcGxheS5ydW5uaW5nIHx8ICFpc1RvdWNoZWQpIHJldHVybjtcbiAgICBjbGVhclRpbWVvdXQodG91Y2hTdGFydFRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikge1xuICAgICAgcGF1c2VkQnlUb3VjaCA9IGZhbHNlO1xuICAgICAgaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwYXVzZWRCeVRvdWNoICYmIHN3aXBlci5wYXJhbXMuY3NzTW9kZSkgcmVzdW1lKCk7XG4gICAgcGF1c2VkQnlUb3VjaCA9IGZhbHNlO1xuICAgIGlzVG91Y2hlZCA9IGZhbHNlO1xuICB9KTtcbiAgb24oJ3NsaWRlQ2hhbmdlJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuZGVzdHJveWVkIHx8ICFzd2lwZXIuYXV0b3BsYXkucnVubmluZykgcmV0dXJuO1xuICAgIHNsaWRlQ2hhbmdlZCA9IHRydWU7XG4gIH0pO1xuICBPYmplY3QuYXNzaWduKHN3aXBlci5hdXRvcGxheSwge1xuICAgIHN0YXJ0LFxuICAgIHN0b3AsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lXG4gIH0pO1xufVxuXG5leHBvcnQgeyBBdXRvcGxheSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBnIGFzIGdldFNsaWRlVHJhbnNmb3JtRWwgfSBmcm9tICcuL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIGVmZmVjdFRhcmdldChlZmZlY3RQYXJhbXMsIHNsaWRlRWwpIHtcbiAgY29uc3QgdHJhbnNmb3JtRWwgPSBnZXRTbGlkZVRyYW5zZm9ybUVsKHNsaWRlRWwpO1xuICBpZiAodHJhbnNmb3JtRWwgIT09IHNsaWRlRWwpIHtcbiAgICB0cmFuc2Zvcm1FbC5zdHlsZS5iYWNrZmFjZVZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICB0cmFuc2Zvcm1FbC5zdHlsZVsnLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5J10gPSAnaGlkZGVuJztcbiAgfVxuICByZXR1cm4gdHJhbnNmb3JtRWw7XG59XG5cbmV4cG9ydCB7
2IGVmZmVjdFRhcmdldCBhcyBlIH07XG4iLCJpbXBvcnQgeyBrIGFzIGVsZW1lbnRUcmFuc2l0aW9uRW5kIH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZChfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGR1cmF0aW9uLFxuICAgIHRyYW5zZm9ybUVsZW1lbnRzLFxuICAgIGFsbFNsaWRlc1xuICB9ID0gX3JlZjtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUluZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IGdldFNsaWRlID0gZWwgPT4ge1xuICAgIGlmICghZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgLy8gYXNzdW1lIHNoYWRvdyByb290XG4gICAgICBjb25zdCBzbGlkZSA9IHN3aXBlci5zbGlkZXMuZmlsdGVyKHNsaWRlRWwgPT4gc2xpZGVFbC5zaGFkb3dSb290ICYmIHNsaWRlRWwuc2hhZG93Um9vdCA9PT0gZWwucGFyZW50Tm9kZSlbMF07XG4gICAgICByZXR1cm4gc2xpZGU7XG4gICAgfVxuICAgIHJldHVybiBlbC5wYXJlbnRFbGVtZW50O1xuICB9O1xuICBpZiAoc3dpcGVyLnBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlICYmIGR1cmF0aW9uICE9PSAwKSB7XG4gICAgbGV0IGV2ZW50VHJpZ2dlcmVkID0gZmFsc2U7XG4gICAgbGV0IHRyYW5zaXRpb25FbmRUYXJnZXQ7XG4gICAgaWYgKGFsbFNsaWRlcykge1xuICAgICAgdHJhbnNpdGlvbkVuZFRhcmdldCA9IHRyYW5zZm9ybUVsZW1lbnRzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uRW5kVGFyZ2V0ID0gdHJhbnNmb3JtRWxlbWVudHMuZmlsdGVyKHRyYW5zZm9ybUVsID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSB0cmFuc2Zvcm1FbC5jbGFzc0xpc3QuY29udGFpbnMoJ3N3aXBlci1zbGlkZS10cmFuc2Zvcm0nKSA/IGdldFNsaWRlKHRyYW5zZm9ybUVsKSA6IHRyYW5zZm9ybUVsO1xuICAgICAgICByZXR1cm4gc3dpcGVyLmdldFNsaWRlSW5kZXgoZWwpID09PSBhY3RpdmVJbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0cmFuc2l0aW9uRW5kVGFyZ2V0LmZvckVhY2goZWwgPT4ge1xuICAgICAgZWxlbWVudFRyYW5zaXRpb25FbmQoZWwsICgpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50VHJpZ2dlcmVkKSByZXR1cm47XG4gICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgZXZlbnRUcmlnZ2VyZWQgPSB0cnVlO1xuICAgICAgICBzd2lwZXIuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV2dCA9IG5ldyB3aW5kb3cuQ3VzdG9tRXZlbnQoJ3RyYW5zaXRpb25lbmQnLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBzd2lwZXIud3JhcHBlckVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7IGVmZmVjdFZpcnR1YWxUcmFuc2l0aW9uRW5kIGFzIGUgfTtcbiIsImltcG9ydCB7IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RUYXJnZXQgfSBmcm9tICcuLi9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtdmlydHVhbC10cmFuc2l0aW9uLWVuZC5tanMnO1xuaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIEVmZmVjdEZhZGUoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb25cbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgZmFkZUVmZmVjdDoge1xuICAgICAgY3Jvc3NGYWRlOiBmYWxzZVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHNldFRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzbGlkZXNcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuZmFkZUVmZmVjdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3Qgc2xpZGVFbCA9IHN3aXBlci5zbGlkZXNbaV07XG4gICAgICBjb25zdCBvZmZzZXQgPSBzbGlkZUVsLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgICAgbGV0IHR4ID0gLW9mZnNldDtcbiAgICAgIGlmICghc3dpcGVyLnBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB0eCAtPSBzd2lwZXIudHJhbnNsYXRlO1xuICAgICAgbGV0IHR5ID0gMDtcbiAgICAgIGlmICghc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgIHR5ID0gdHg7XG4gICAgICAgIHR4ID0gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNsaWRlT3BhY2l0eSA9IHN3aXBlci5wYXJhbXMuZmFkZUVmZmVjdC5jcm9zc0ZhZGUgPyBNYXRoLm1heCgxIC0gTWF0aC5hYnMoc2xpZGVFbC5wcm9ncmVzcyksIDApIDogMSArIE1hdGgubWluKE1hdGgubWF4KHNsaWRlRWwucHJvZ3Jlc3MsIC0xKSwgMCk7XG4gICAgICBjb25zdCB0YXJnZXRFbCA9IGVmZmVjdFRhcmdldChwYXJhbXMsIHNsaWRlRWwpO1xuICAgICAgdGFyZ2V0RWwuc3R5bGUub3BhY2l0eSA9IHNsaWRlT3BhY2l0eTtcbiAgICAgIHRhcmdldEVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3R4fXB4LCAke3R5fXB4LCAwcHgpYDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBkdXJhdGlvbiA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtRWxlbWVudHMgPSBzd2lwZXIuc2xpZGVzLm1hcChzbGlkZUVsID0+IGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCkpO1xuICAgIHRyYW5zZm9ybUVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgIH0pO1xuICAgIGVmZmVjdFZpcnR1YWxUcmFuc2l0aW9uRW5kKHtcbiAgICAgIHN3aXBlcixcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgdHJhbnNmb3JtRWxlbWVudHMsXG4gICAgICBhbGxTbGlkZXM6IHRydWVcbiAgICB9KTtcbiAgfTtcbiAgZWZmZWN0SW5p
2dCh7XG4gICAgZWZmZWN0OiAnZmFkZScsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHtcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEsXG4gICAgICBzbGlkZXNQZXJHcm91cDogMSxcbiAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICBzcGFjZUJldHdlZW46IDAsXG4gICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhc3dpcGVyLnBhcmFtcy5jc3NNb2RlXG4gICAgfSlcbiAgfSk7XG59XG5cbmV4cG9ydCB7IEVmZmVjdEZhZGUgYXMgZGVmYXVsdCB9O1xuIiwiZnVuY3Rpb24gZWZmZWN0SW5pdChwYXJhbXMpIHtcbiAgY29uc3Qge1xuICAgIGVmZmVjdCxcbiAgICBzd2lwZXIsXG4gICAgb24sXG4gICAgc2V0VHJhbnNsYXRlLFxuICAgIHNldFRyYW5zaXRpb24sXG4gICAgb3ZlcndyaXRlUGFyYW1zLFxuICAgIHBlcnNwZWN0aXZlLFxuICAgIHJlY3JlYXRlU2hhZG93cyxcbiAgICBnZXRFZmZlY3RQYXJhbXNcbiAgfSA9IHBhcmFtcztcbiAgb24oJ2JlZm9yZUluaXQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZWZmZWN0ICE9PSBlZmZlY3QpIHJldHVybjtcbiAgICBzd2lwZXIuY2xhc3NOYW1lcy5wdXNoKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke2VmZmVjdH1gKTtcbiAgICBpZiAocGVyc3BlY3RpdmUgJiYgcGVyc3BlY3RpdmUoKSkge1xuICAgICAgc3dpcGVyLmNsYXNzTmFtZXMucHVzaChgJHtzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9M2RgKTtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcndyaXRlUGFyYW1zUmVzdWx0ID0gb3ZlcndyaXRlUGFyYW1zID8gb3ZlcndyaXRlUGFyYW1zKCkgOiB7fTtcbiAgICBPYmplY3QuYXNzaWduKHN3aXBlci5wYXJhbXMsIG92ZXJ3cml0ZVBhcmFtc1Jlc3VsdCk7XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIub3JpZ2luYWxQYXJhbXMsIG92ZXJ3cml0ZVBhcmFtc1Jlc3VsdCk7XG4gIH0pO1xuICBvbignc2V0VHJhbnNsYXRlJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmVmZmVjdCAhPT0gZWZmZWN0KSByZXR1cm47XG4gICAgc2V0VHJhbnNsYXRlKCk7XG4gIH0pO1xuICBvbignc2V0VHJhbnNpdGlvbicsIChfcywgZHVyYXRpb24pID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5lZmZlY3QgIT09IGVmZmVjdCkgcmV0dXJuO1xuICAgIHNldFRyYW5zaXRpb24oZHVyYXRpb24pO1xuICB9KTtcbiAgb24oJ3RyYW5zaXRpb25FbmQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZWZmZWN0ICE9PSBlZmZlY3QpIHJldHVybjtcbiAgICBpZiAocmVjcmVhdGVTaGFkb3dzKSB7XG4gICAgICBpZiAoIWdldEVmZmVjdFBhcmFtcyB8fCAhZ2V0RWZmZWN0UGFyYW1zKCkuc2xpZGVTaGFkb3dzKSByZXR1cm47XG4gICAgICAvLyByZW1vdmUgc2hhZG93c1xuICAgICAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgICBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCcpLmZvckVhY2goc2hhZG93RWwgPT4gc2hhZG93RWwucmVtb3ZlKCkpO1xuICAgICAgfSk7XG4gICAgICAvLyBjcmVhdGUgbmV3IG9uZVxuICAgICAgcmVjcmVhdGVTaGFkb3dzKCk7XG4gICAgfVxuICB9KTtcbiAgbGV0IHJlcXVpcmVVcGRhdGVPblZpcnR1YWw7XG4gIG9uKCd2aXJ0dWFsVXBkYXRlJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmVmZmVjdCAhPT0gZWZmZWN0KSByZXR1cm47XG4gICAgaWYgKCFzd2lwZXIuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgcmVxdWlyZVVwZGF0ZU9uVmlydHVhbCA9IHRydWU7XG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBpZiAocmVxdWlyZVVwZGF0ZU9uVmlydHVhbCAmJiBzd2lwZXIuc2xpZGVzICYmIHN3aXBlci5zbGlkZXMubGVuZ3RoKSB7XG4gICAgICAgIHNldFRyYW5zbGF0ZSgpO1xuICAgICAgICByZXF1aXJlVXBkYXRlT25WaXJ0dWFsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyBlZmZlY3RJbml0IGFzIGUgfTtcbiIsIi8qKlxuICogU1NSIFdpbmRvdyA0LjAuMlxuICogQmV0dGVyIGhhbmRsaW5nIGZvciB3aW5kb3cgb2JqZWN0IGluIFNTUiBlbnZpcm9ubWVudFxuICogaHR0cHM6Ly9naXRodWIuY29tL25vbGltaXRzNHdlYi9zc3Itd2luZG93XG4gKlxuICogQ29weXJpZ2h0IDIwMjEsIFZsYWRpbWlyIEtoYXJsYW1waWRpXG4gKlxuICogTGljZW5zZWQgdW5kZXIgTUlUXG4gKlxuICogUmVsZWFzZWQgb246IERlY2VtYmVyIDEzLCAyMDIxXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAnY29uc3RydWN0b3InIGluIG9iaiAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn1cbmZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNyYykge1xuICBpZiAodGFyZ2V0ID09PSB2b2lkIDApIHtcbiAgICB0YXJnZXQgPSB7fTtcbiAgfVxuICBpZiAoc3JjID09PSB2b2lkIDApIHtcbiAgICBzcmMgPSB7fTtcbiAgfVxuICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAodHlwZW9mIHRhcmdldFtrZXldID09PSAndW5kZWZpbmVkJykgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTtlbHNlIGlmIChpc09iamVjdChzcmNba2V5XSkgJiYgaXNPYmplY3QodGFyZ2V0W2tleV0pICYmIE9iamVjdC5rZXlzKHNyY1trZXldKS5sZW5ndGggPiAwKSB7XG4gICAgICBleHRlbmQodGFyZ2V0W2tleV0sIHNyY1trZXldKTtcbiAgICB9XG4gIH0pO1xufVxuY29uc3Qgc3NyRG9jdW1lbnQgPSB7XG4gIGJvZHk6IHt9LFxuICBhZGRFdmVudExpc3RlbmVyKCkge30sXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7fSxcbiAgYWN0aXZlRWxlbWVudDoge1xuICAgIGJsdXIoKSB7fSxcbiAgICBub2RlTmFtZTogJydcbiAgfSxcbiAgcXVlcnlTZWxlY3RvcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgcXVlcnlTZWxlY3RvckFsbCgpIHtcbiAgICByZXR1cm4gW107XG4gIH0sXG4gIGdldEVsZW1lbnRCeUlkKCkge1xuICAgIHJldHVybi
2BudWxsO1xuICB9LFxuICBjcmVhdGVFdmVudCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5pdEV2ZW50KCkge31cbiAgICB9O1xuICB9LFxuICBjcmVhdGVFbGVtZW50KCkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBjaGlsZE5vZGVzOiBbXSxcbiAgICAgIHN0eWxlOiB7fSxcbiAgICAgIHNldEF0dHJpYnV0ZSgpIHt9LFxuICAgICAgZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBjcmVhdGVFbGVtZW50TlMoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICBpbXBvcnROb2RlKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9LFxuICBsb2NhdGlvbjoge1xuICAgIGhhc2g6ICcnLFxuICAgIGhvc3Q6ICcnLFxuICAgIGhvc3RuYW1lOiAnJyxcbiAgICBocmVmOiAnJyxcbiAgICBvcmlnaW46ICcnLFxuICAgIHBhdGhuYW1lOiAnJyxcbiAgICBwcm90b2NvbDogJycsXG4gICAgc2VhcmNoOiAnJ1xuICB9XG59O1xuZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKSB7XG4gIGNvbnN0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IHt9O1xuICBleHRlbmQoZG9jLCBzc3JEb2N1bWVudCk7XG4gIHJldHVybiBkb2M7XG59XG5jb25zdCBzc3JXaW5kb3cgPSB7XG4gIGRvY3VtZW50OiBzc3JEb2N1bWVudCxcbiAgbmF2aWdhdG9yOiB7XG4gICAgdXNlckFnZW50OiAnJ1xuICB9LFxuICBsb2NhdGlvbjoge1xuICAgIGhhc2g6ICcnLFxuICAgIGhvc3Q6ICcnLFxuICAgIGhvc3RuYW1lOiAnJyxcbiAgICBocmVmOiAnJyxcbiAgICBvcmlnaW46ICcnLFxuICAgIHBhdGhuYW1lOiAnJyxcbiAgICBwcm90b2NvbDogJycsXG4gICAgc2VhcmNoOiAnJ1xuICB9LFxuICBoaXN0b3J5OiB7XG4gICAgcmVwbGFjZVN0YXRlKCkge30sXG4gICAgcHVzaFN0YXRlKCkge30sXG4gICAgZ28oKSB7fSxcbiAgICBiYWNrKCkge31cbiAgfSxcbiAgQ3VzdG9tRXZlbnQ6IGZ1bmN0aW9uIEN1c3RvbUV2ZW50KCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBhZGRFdmVudExpc3RlbmVyKCkge30sXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7fSxcbiAgZ2V0Q29tcHV0ZWRTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0UHJvcGVydHlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIEltYWdlKCkge30sXG4gIERhdGUoKSB7fSxcbiAgc2NyZWVuOiB7fSxcbiAgc2V0VGltZW91dCgpIHt9LFxuICBjbGVhclRpbWVvdXQoKSB7fSxcbiAgbWF0Y2hNZWRpYSgpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9LFxuICBjYW5jZWxBbmltYXRpb25GcmFtZShpZCkge1xuICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGdldFdpbmRvdygpIHtcbiAgY29uc3Qgd2luID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbiAgZXh0ZW5kKHdpbiwgc3NyV2luZG93KTtcbiAgcmV0dXJuIHdpbjtcbn1cblxuZXhwb3J0IHsgZ2V0V2luZG93IGFzIGEsIGdldERvY3VtZW50IGFzIGcgfTtcbiIsImltcG9ydCB7IGEgYXMgZ2V0V2luZG93LCBnIGFzIGdldERvY3VtZW50IH0gZnJvbSAnLi9zc3Itd2luZG93LmVzbS5tanMnO1xuXG5mdW5jdGlvbiBjbGFzc2VzVG9Ub2tlbnMoY2xhc3Nlcykge1xuICBpZiAoY2xhc3NlcyA9PT0gdm9pZCAwKSB7XG4gICAgY2xhc3NlcyA9ICcnO1xuICB9XG4gIHJldHVybiBjbGFzc2VzLnRyaW0oKS5zcGxpdCgnICcpLmZpbHRlcihjID0+ICEhYy50cmltKCkpO1xufVxuXG5mdW5jdGlvbiBkZWxldGVQcm9wcyhvYmopIHtcbiAgY29uc3Qgb2JqZWN0ID0gb2JqO1xuICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goa2V5ID0+IHtcbiAgICB0cnkge1xuICAgICAgb2JqZWN0W2tleV0gPSBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vIGdldHRlciBmb3Igb2JqZWN0XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBkZWxldGUgb2JqZWN0W2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gc29tZXRoaW5nIGdvdCB3cm9uZ1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBuZXh0VGljayhjYWxsYmFjaywgZGVsYXkpIHtcbiAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHtcbiAgICBkZWxheSA9IDA7XG4gIH1cbiAgcmV0dXJuIHNldFRpbWVvdXQoY2FsbGJhY2ssIGRlbGF5KTtcbn1cbmZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIERhdGUubm93KCk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBsZXQgc3R5bGU7XG4gIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSkge1xuICAgIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpO1xuICB9XG4gIGlmICghc3R5bGUgJiYgZWwuY3VycmVudFN0eWxlKSB7XG4gICAgc3R5bGUgPSBlbC5jdXJyZW50U3R5bGU7XG4gIH1cbiAgaWYgKCFzdHlsZSkge1xuICAgIHN0eWxlID0gZWwuc3R5bGU7XG4gIH1cbiAgcmV0dXJuIHN0eWxlO1xufVxuZnVuY3Rpb24gZ2V0VHJhbnNsYXRlKGVsLCBheGlzKSB7XG4gIGlmIChheGlzID09PSB2b2lkIDApIHtcbiAgICBheGlzID0gJ3gnO1xuICB9XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBsZXQgbWF0cml4O1xuICBsZXQgY3VyVHJhbnNmb3JtO1xuICBsZXQgdHJhbnNmb3JtTWF0cml4O1xuICBjb25zdCBjdXJTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkge1xuICAgIGN1clRyYW5zZm9ybSA9IGN1clN0eWxlLnRyYW5zZm9ybSB8fCBjdXJTdHlsZS53ZWJraXRUcmFuc2Zvcm07XG4gICAgaWYgKGN1clRyYW5zZm9ybS5zcGxpdCgnLCcpLmxlbmd0aCA+IDYpIHtcbiAgICAgIGN1clRyYW5zZm9ybSA9IGN1clRyYW5zZm9ybS5zcGxpdCgnLCAnKS5tYXAoYSA9PiBhLnJlcGxhY2UoJywnLCAnLicpKS5qb2luKCcsICcpO1xuICAgIH1cbiAgICAvLyBTb21lIG9sZCB2ZXJzaW9ucyBvZiBXZWJraXQgY2hva2Ugd2hlbiAnbm9uZScgaXMgcGFzc2VkOyBwYXNzXG4gICAgLy8gZW1wdHkgc3RyaW5nIGluc3RlYWQgaW4gdGhpcyBjYXNlXG4gICAgdHJhbnNmb3JtTWF0cml4ID0gbmV3IHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgoY3VyVHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IGN1clRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgdHJhbnNmb3JtTWF0cml4ID0gY3VyU3R5bGUuTW96VHJhbnNmb3JtIHx8IGN1clN0eWxlLk9UcmFuc2Zvcm0gfHwgY3VyU3R5bGUuTXNUcmFuc2Zvcm0gfHwgY3VyU3R5bGUubXNUcmFuc2Zvcm0gfHwgY3VyU3R5bGUudHJhbnNmb3JtIHx8IGN1clN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3RyYW5zZm9ybScpLnJlcGxhY2UoJ3RyYW5zbGF0ZSgnLCAnbWF0cml4KDEsIDAsIDAsIDEsJyk7XG4gICAgbWF0cml4ID0gdHJhbnNmb3JtTWF0cml4LnRvU3RyaW5nKCkuc3BsaXQoJywnKTtcbiAgfVxuICBpZiAoYXhpcyA9PT0gJ3gnKSB7XG4gICAgLy8gTGF0ZXN0IENocm9tZSBhbmQgd2Via2l0cyBGaXhcbiAgICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkgY3VyVHJhbnNmb3JtID0gdHJhbnNmb3JtTWF0cml4Lm00MTtcbiAgICAvLyBDcmF6eSBJRTEwIE1hdHJpeFxuICAgIGVsc2UgaWYgKG1hdHJpeC5sZW5ndGggPT09IDE2KSBjdXJUcmFuc2Zvcm0gPSBwYXJzZU
2Zsb2F0KG1hdHJpeFsxMl0pO1xuICAgIC8vIE5vcm1hbCBCcm93c2Vyc1xuICAgIGVsc2UgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbNF0pO1xuICB9XG4gIGlmIChheGlzID09PSAneScpIHtcbiAgICAvLyBMYXRlc3QgQ2hyb21lIGFuZCB3ZWJraXRzIEZpeFxuICAgIGlmICh3aW5kb3cuV2ViS2l0Q1NTTWF0cml4KSBjdXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm1NYXRyaXgubTQyO1xuICAgIC8vIENyYXp5IElFMTAgTWF0cml4XG4gICAgZWxzZSBpZiAobWF0cml4Lmxlbmd0aCA9PT0gMTYpIGN1clRyYW5zZm9ybSA9IHBhcnNlRmxvYXQobWF0cml4WzEzXSk7XG4gICAgLy8gTm9ybWFsIEJyb3dzZXJzXG4gICAgZWxzZSBjdXJUcmFuc2Zvcm0gPSBwYXJzZUZsb2F0KG1hdHJpeFs1XSk7XG4gIH1cbiAgcmV0dXJuIGN1clRyYW5zZm9ybSB8fCAwO1xufVxuZnVuY3Rpb24gaXNPYmplY3Qobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09ICdvYmplY3QnICYmIG8gIT09IG51bGwgJiYgby5jb25zdHJ1Y3RvciAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpID09PSAnT2JqZWN0Jztcbn1cbmZ1bmN0aW9uIGlzTm9kZShub2RlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICB9XG4gIHJldHVybiBub2RlICYmIChub2RlLm5vZGVUeXBlID09PSAxIHx8IG5vZGUubm9kZVR5cGUgPT09IDExKTtcbn1cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgY29uc3QgdG8gPSBPYmplY3QoYXJndW1lbnRzLmxlbmd0aCA8PSAwID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzBdKTtcbiAgY29uc3Qgbm9FeHRlbmQgPSBbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBuZXh0U291cmNlID0gaSA8IDAgfHwgYXJndW1lbnRzLmxlbmd0aCA8PSBpID8gdW5kZWZpbmVkIDogYXJndW1lbnRzW2ldO1xuICAgIGlmIChuZXh0U291cmNlICE9PSB1bmRlZmluZWQgJiYgbmV4dFNvdXJjZSAhPT0gbnVsbCAmJiAhaXNOb2RlKG5leHRTb3VyY2UpKSB7XG4gICAgICBjb25zdCBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyhPYmplY3QobmV4dFNvdXJjZSkpLmZpbHRlcihrZXkgPT4gbm9FeHRlbmQuaW5kZXhPZihrZXkpIDwgMCk7XG4gICAgICBmb3IgKGxldCBuZXh0SW5kZXggPSAwLCBsZW4gPSBrZXlzQXJyYXkubGVuZ3RoOyBuZXh0SW5kZXggPCBsZW47IG5leHRJbmRleCArPSAxKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBrZXlzQXJyYXlbbmV4dEluZGV4XTtcbiAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmV4dFNvdXJjZSwgbmV4dEtleSk7XG4gICAgICAgIGlmIChkZXNjICE9PSB1bmRlZmluZWQgJiYgZGVzYy5lbnVtZXJhYmxlKSB7XG4gICAgICAgICAgaWYgKGlzT2JqZWN0KHRvW25leHRLZXldKSAmJiBpc09iamVjdChuZXh0U291cmNlW25leHRLZXldKSkge1xuICAgICAgICAgICAgaWYgKG5leHRTb3VyY2VbbmV4dEtleV0uX19zd2lwZXJfXykge1xuICAgICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBleHRlbmQodG9bbmV4dEtleV0sIG5leHRTb3VyY2VbbmV4dEtleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzT2JqZWN0KHRvW25leHRLZXldKSAmJiBpc09iamVjdChuZXh0U291cmNlW25leHRLZXldKSkge1xuICAgICAgICAgICAgdG9bbmV4dEtleV0gPSB7fTtcbiAgICAgICAgICAgIGlmIChuZXh0U291cmNlW25leHRLZXldLl9fc3dpcGVyX18pIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZXh0ZW5kKHRvW25leHRLZXldLCBuZXh0U291cmNlW25leHRLZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdG87XG59XG5mdW5jdGlvbiBzZXRDU1NQcm9wZXJ0eShlbCwgdmFyTmFtZSwgdmFyVmFsdWUpIHtcbiAgZWwuc3R5bGUuc2V0UHJvcGVydHkodmFyTmFtZSwgdmFyVmFsdWUpO1xufVxuZnVuY3Rpb24gYW5pbWF0ZUNTU01vZGVTY3JvbGwoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICB0YXJnZXRQb3NpdGlvbixcbiAgICBzaWRlXG4gIH0gPSBfcmVmO1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IC1zd2lwZXIudHJhbnNsYXRlO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcbiAgbGV0IHRpbWU7XG4gIGNvbnN0IGR1cmF0aW9uID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICdub25lJztcbiAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHN3aXBlci5jc3NNb2RlRnJhbWVJRCk7XG4gIGNvbnN0IGRpciA9IHRhcmdldFBvc2l0aW9uID4gc3RhcnRQb3NpdGlvbiA/ICduZXh0JyA6ICdwcmV2JztcbiAgY29uc3QgaXNPdXRPZkJvdW5kID0gKGN1cnJlbnQsIHRhcmdldCkgPT4ge1xuICAgIHJldHVybiBkaXIgPT09ICduZXh0JyAmJiBjdXJyZW50ID49IHRhcmdldCB8fCBkaXIgPT09ICdwcmV2JyAmJiBjdXJyZW50IDw9IHRhcmdldDtcbiAgfTtcbiAgY29uc3QgYW5pbWF0ZSA9ICgpID0+IHtcbiAgICB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCkge1xuICAgICAgc3RhcnRUaW1lID0gdGltZTtcbiAgICB9XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1heChNYXRoLm1pbigodGltZSAtIHN0YXJ0VGltZSkgLyBkdXJhdGlvbiwgMSksIDApO1xuICAgIGNvbnN0IGVhc2VQcm9ncmVzcyA9IDAuNSAtIE1hdGguY29zKHByb2dyZXNzICogTWF0aC5QSSkgLyAyO1xuICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgZWFzZVByb2dyZXNzICogKHRhcmdldFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7XG4gICAgaWYgKGlzT3V0T2ZCb3VuZChjdXJyZW50UG9zaXRpb24sIHRhcmdldFBvc2l0aW9uKSkge1xuICAgICAgY3VycmVudFBvc2l0aW9uID0gdGFyZ2V0UG9zaXRpb247XG4gICAgfVxuICAgIHN3aXBlci53cmFwcGVyRWwuc2Nyb2xsVG8oe1xuICAgICAgW3NpZGVdOiBjdXJyZW50UG9zaXRpb25cbiAgICB9KTtcbiAgICBpZiAoaXNPdXRPZkJvdW5kKGN1cnJlbnRQb3NpdGlvbiwgdGFyZ2V0UG9zaXRpb24pKSB7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlID0gJyc7XG4gICAgICBzZXRUaW
21lb3V0KCgpID0+IHtcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuICAgICAgICBzd2lwZXIud3JhcHBlckVsLnNjcm9sbFRvKHtcbiAgICAgICAgICBbc2lkZV06IGN1cnJlbnRQb3NpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHN3aXBlci5jc3NNb2RlRnJhbWVJRCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXBlci5jc3NNb2RlRnJhbWVJRCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gIH07XG4gIGFuaW1hdGUoKTtcbn1cbmZ1bmN0aW9uIGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCkge1xuICByZXR1cm4gc2xpZGVFbC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXNsaWRlLXRyYW5zZm9ybScpIHx8IHNsaWRlRWwuc2hhZG93Um9vdCAmJiBzbGlkZUVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS10cmFuc2Zvcm0nKSB8fCBzbGlkZUVsO1xufVxuZnVuY3Rpb24gZWxlbWVudENoaWxkcmVuKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gIGlmIChzZWxlY3RvciA9PT0gdm9pZCAwKSB7XG4gICAgc2VsZWN0b3IgPSAnJztcbiAgfVxuICBjb25zdCBjaGlsZHJlbiA9IFsuLi5lbGVtZW50LmNoaWxkcmVuXTtcbiAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU2xvdEVsZW1lbnQpIHtcbiAgICBjaGlsZHJlbi5wdXNoKC4uLmVsZW1lbnQuYXNzaWduZWRFbGVtZW50cygpKTtcbiAgfVxuICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHJldHVybiBjaGlsZHJlbi5maWx0ZXIoZWwgPT4gZWwubWF0Y2hlcyhzZWxlY3RvcikpO1xufVxuZnVuY3Rpb24gZWxlbWVudElzQ2hpbGRPZihlbCwgcGFyZW50KSB7XG4gIGNvbnN0IGlzQ2hpbGQgPSBwYXJlbnQuY29udGFpbnMoZWwpO1xuICBpZiAoIWlzQ2hpbGQgJiYgcGFyZW50IGluc3RhbmNlb2YgSFRNTFNsb3RFbGVtZW50KSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBbLi4ucGFyZW50LmFzc2lnbmVkRWxlbWVudHMoKV07XG4gICAgcmV0dXJuIGNoaWxkcmVuLmluY2x1ZGVzKGVsKTtcbiAgfVxuICByZXR1cm4gaXNDaGlsZDtcbn1cbmZ1bmN0aW9uIHNob3dXYXJuaW5nKHRleHQpIHtcbiAgdHJ5IHtcbiAgICBjb25zb2xlLndhcm4odGV4dCk7XG4gICAgcmV0dXJuO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBlcnJcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWcsIGNsYXNzZXMpIHtcbiAgaWYgKGNsYXNzZXMgPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXMgPSBbXTtcbiAgfVxuICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi4oQXJyYXkuaXNBcnJheShjbGFzc2VzKSA/IGNsYXNzZXMgOiBjbGFzc2VzVG9Ub2tlbnMoY2xhc3NlcykpKTtcbiAgcmV0dXJuIGVsO1xufVxuZnVuY3Rpb24gZWxlbWVudE9mZnNldChlbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCBib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IGNsaWVudFRvcCA9IGVsLmNsaWVudFRvcCB8fCBib2R5LmNsaWVudFRvcCB8fCAwO1xuICBjb25zdCBjbGllbnRMZWZ0ID0gZWwuY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcbiAgY29uc3Qgc2Nyb2xsVG9wID0gZWwgPT09IHdpbmRvdyA/IHdpbmRvdy5zY3JvbGxZIDogZWwuc2Nyb2xsVG9wO1xuICBjb25zdCBzY3JvbGxMZWZ0ID0gZWwgPT09IHdpbmRvdyA/IHdpbmRvdy5zY3JvbGxYIDogZWwuc2Nyb2xsTGVmdDtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IGJveC50b3AgKyBzY3JvbGxUb3AgLSBjbGllbnRUb3AsXG4gICAgbGVmdDogYm94LmxlZnQgKyBzY3JvbGxMZWZ0IC0gY2xpZW50TGVmdFxuICB9O1xufVxuZnVuY3Rpb24gZWxlbWVudFByZXZBbGwoZWwsIHNlbGVjdG9yKSB7XG4gIGNvbnN0IHByZXZFbHMgPSBbXTtcbiAgd2hpbGUgKGVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICBjb25zdCBwcmV2ID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgaWYgKHByZXYubWF0Y2hlcyhzZWxlY3RvcikpIHByZXZFbHMucHVzaChwcmV2KTtcbiAgICB9IGVsc2UgcHJldkVscy5wdXNoKHByZXYpO1xuICAgIGVsID0gcHJldjtcbiAgfVxuICByZXR1cm4gcHJldkVscztcbn1cbmZ1bmN0aW9uIGVsZW1lbnROZXh0QWxsKGVsLCBzZWxlY3Rvcikge1xuICBjb25zdCBuZXh0RWxzID0gW107XG4gIHdoaWxlIChlbC5uZXh0RWxlbWVudFNpYmxpbmcpIHtcbiAgICBjb25zdCBuZXh0ID0gZWwubmV4dEVsZW1lbnRTaWJsaW5nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkgbmV4dEVscy5wdXNoKG5leHQpO1xuICAgIH0gZWxzZSBuZXh0RWxzLnB1c2gobmV4dCk7XG4gICAgZWwgPSBuZXh0O1xuICB9XG4gIHJldHVybiBuZXh0RWxzO1xufVxuZnVuY3Rpb24gZWxlbWVudFN0eWxlKGVsLCBwcm9wKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCk7XG59XG5mdW5jdGlvbiBlbGVtZW50SW5kZXgoZWwpIHtcbiAgbGV0IGNoaWxkID0gZWw7XG4gIGxldCBpO1xuICBpZiAoY2hpbGQpIHtcbiAgICBpID0gMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB3aGlsZSAoKGNoaWxkID0gY2hpbGQucHJldmlvdXNTaWJsaW5nKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSBpICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBlbGVtZW50UGFyZW50cyhlbCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgcGFyZW50cyA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIGxldCBwYXJlbnQgPSBlbC5wYXJlbnRFbGVtZW50OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gI
2HdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmIChwYXJlbnQubWF0Y2hlcyhzZWxlY3RvcikpIHBhcmVudHMucHVzaChwYXJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHBhcmVudHM7XG59XG5mdW5jdGlvbiBlbGVtZW50VHJhbnNpdGlvbkVuZChlbCwgY2FsbGJhY2spIHtcbiAgZnVuY3Rpb24gZmlyZUNhbGxCYWNrKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgIT09IGVsKSByZXR1cm47XG4gICAgY2FsbGJhY2suY2FsbChlbCwgZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVsZW1lbnRPdXRlclNpemUoZWwsIHNpemUsIGluY2x1ZGVNYXJnaW5zKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBpZiAoaW5jbHVkZU1hcmdpbnMpIHtcbiAgICByZXR1cm4gZWxbc2l6ZSA9PT0gJ3dpZHRoJyA/ICdvZmZzZXRXaWR0aCcgOiAnb2Zmc2V0SGVpZ2h0J10gKyBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHNpemUgPT09ICd3aWR0aCcgPyAnbWFyZ2luLXJpZ2h0JyA6ICdtYXJnaW4tdG9wJykpICsgcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzaXplID09PSAnd2lkdGgnID8gJ21hcmdpbi1sZWZ0JyA6ICdtYXJnaW4tYm90dG9tJykpO1xuICB9XG4gIHJldHVybiBlbC5vZmZzZXRXaWR0aDtcbn1cbmZ1bmN0aW9uIG1ha2VFbGVtZW50c0FycmF5KGVsKSB7XG4gIHJldHVybiAoQXJyYXkuaXNBcnJheShlbCkgPyBlbCA6IFtlbF0pLmZpbHRlcihlID0+ICEhZSk7XG59XG5mdW5jdGlvbiBnZXRSb3RhdGVGaXgoc3dpcGVyKSB7XG4gIHJldHVybiB2ID0+IHtcbiAgICBpZiAoTWF0aC5hYnModikgPiAwICYmIHN3aXBlci5icm93c2VyICYmIHN3aXBlci5icm93c2VyLm5lZWQzZEZpeCAmJiBNYXRoLmFicyh2KSAlIDkwID09PSAwKSB7XG4gICAgICByZXR1cm4gdiArIDAuMDAxO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfTtcbn1cblxuZXhwb3J0IHsgZWxlbWVudFBhcmVudHMgYXMgYSwgZWxlbWVudE9mZnNldCBhcyBiLCBjcmVhdGVFbGVtZW50IGFzIGMsIG5vdyBhcyBkLCBlbGVtZW50Q2hpbGRyZW4gYXMgZSwgZWxlbWVudE91dGVyU2l6ZSBhcyBmLCBnZXRTbGlkZVRyYW5zZm9ybUVsIGFzIGcsIGVsZW1lbnRJbmRleCBhcyBoLCBjbGFzc2VzVG9Ub2tlbnMgYXMgaSwgZ2V0VHJhbnNsYXRlIGFzIGosIGVsZW1lbnRUcmFuc2l0aW9uRW5kIGFzIGssIGlzT2JqZWN0IGFzIGwsIG1ha2VFbGVtZW50c0FycmF5IGFzIG0sIG5leHRUaWNrIGFzIG4sIGdldFJvdGF0ZUZpeCBhcyBvLCBlbGVtZW50U3R5bGUgYXMgcCwgZWxlbWVudE5leHRBbGwgYXMgcSwgZWxlbWVudFByZXZBbGwgYXMgciwgc2V0Q1NTUHJvcGVydHkgYXMgcywgYW5pbWF0ZUNTU01vZGVTY3JvbGwgYXMgdCwgc2hvd1dhcm5pbmcgYXMgdSwgZWxlbWVudElzQ2hpbGRPZiBhcyB2LCBleHRlbmQgYXMgdywgZGVsZXRlUHJvcHMgYXMgeCB9O1xuIiwiaW1wb3J0IHsgYSBhcyBnZXRXaW5kb3csIGcgYXMgZ2V0RG9jdW1lbnQgfSBmcm9tICcuL3Nzci13aW5kb3cuZXNtLm1qcyc7XG5pbXBvcnQgeyBhIGFzIGVsZW1lbnRQYXJlbnRzLCBwIGFzIGVsZW1lbnRTdHlsZSwgZSBhcyBlbGVtZW50Q2hpbGRyZW4sIHMgYXMgc2V0Q1NTUHJvcGVydHksIGYgYXMgZWxlbWVudE91dGVyU2l6ZSwgcSBhcyBlbGVtZW50TmV4dEFsbCwgciBhcyBlbGVtZW50UHJldkFsbCwgaiBhcyBnZXRUcmFuc2xhdGUsIHQgYXMgYW5pbWF0ZUNTU01vZGVTY3JvbGwsIG4gYXMgbmV4dFRpY2ssIHUgYXMgc2hvd1dhcm5pbmcsIGMgYXMgY3JlYXRlRWxlbWVudCwgdiBhcyBlbGVtZW50SXNDaGlsZE9mLCBkIGFzIG5vdywgdyBhcyBleHRlbmQsIGggYXMgZWxlbWVudEluZGV4LCB4IGFzIGRlbGV0ZVByb3BzIH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5sZXQgc3VwcG9ydDtcbmZ1bmN0aW9uIGNhbGNTdXBwb3J0KCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICByZXR1cm4ge1xuICAgIHNtb290aFNjcm9sbDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiAnc2Nyb2xsQmVoYXZpb3InIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxcbiAgICB0b3VjaDogISEoJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IHdpbmRvdy5Eb2N1bWVudFRvdWNoICYmIGRvY3VtZW50IGluc3RhbmNlb2Ygd2luZG93LkRvY3VtZW50VG91Y2gpXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdXBwb3J0KCkge1xuICBpZiAoIXN1cHBvcnQpIHtcbiAgICBzdXBwb3J0ID0gY2FsY1N1cHBvcnQoKTtcbiAgfVxuICByZXR1cm4gc3VwcG9ydDtcbn1cblxubGV0IGRldmljZUNhY2hlZDtcbmZ1bmN0aW9uIGNhbGNEZXZpY2UoX3RlbXApIHtcbiAgbGV0IHtcbiAgICB1c2VyQWdlbnRcbiAgfSA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wO1xuICBjb25zdCBzdXBwb3J0ID0gZ2V0U3VwcG9ydCgpO1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgcGxhdGZvcm0gPSB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtO1xuICBjb25zdCB1YSA9IHVzZXJBZ2VudCB8fCB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgY29uc3QgZGV2aWNlID0ge1xuICAgIGlvczogZmFsc2UsXG4gICAgYW5kcm9pZDogZmFsc2VcbiAgfTtcbiAgY29uc3Qgc2NyZWVuV2lkdGggPSB3aW5kb3cuc2NyZWVuLndpZHRoO1xuICBjb25zdCBzY3JlZW5IZWlnaHQgPSB3aW5kb3cuc2NyZWVuLmhlaWdodDtcbiAgY29uc3QgYW5kcm9pZCA9IHVhLm1hdGNoKC8oQW5kcm9pZCk7P1tcXHNcXC9dKyhbXFxkLl0rKT8vKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBsZXQgaXBhZCA9IHVhLm1hdGNoKC8oaVBhZCkuKk9TXFxzKFtcXGRfXSspLyk7XG4gIGNvbnN0IGlwb2QgPSB1YS5tYXRjaCgvKGlQb2QpKC4qT1NcXHMoW1xcZF9dKykpPy8pO1xuICBjb25zdCBpcGhvbmUgPSAhaXBhZCAmJiB1YS5tYXRjaCgvKGlQaG9uZVxcc09TfGlPUylcXHMoW1xcZF9dKykvKTtcbiAgY29uc3Qgd2luZG93cyA9IHBsYXRmb3JtID09PSAnV2luMzInO1xuICBsZXQgbWFjb3MgPSBwbGF0Zm9ybSA9PT0gJ01hY0ludGVsJztcblxuICAvLyBpUGFkT3MgMTMgZml4XG4gIGNvbnN0IGlQYWRTY3JlZW5zID0gWycxMDI0eDEzNjYnLCAnMTM2NngxMDI0JywgJzgzNHgxMTk0JywgJzExOTR4ODM0JywgJzgzNHgxMTEyJywgJzExMTJ4ODM0JywgJzc2OHgxMDI0JywgJzEwMjR4NzY4JywgJzgyMHgxMTgwJywgJzExODB4ODIwJywgJzgxMHgxMDgwJywgJzEwODB4ODEwJ107XG4gIGlmICghaXBhZCAmJiBtYWNvcyAmJiBzdXBwb3J0LnRvdWNoICYmIGlQYWRTY3JlZW5zLmluZGV4T2YoYCR7c2NyZWVuV2lkdGh9eCR7c2NyZWVuSGVpZ2h0fWApID49IDApIHtcbiAgICBpcGFkID0gdWEubWF0Y2goLyhWZXJzaW9uKVxcLyhbXFxkLl0rKS8pO1xuICAgIGlmICghaXBhZCkgaXBhZCA9IFswLCAxLCAnMTNfMF8wJ107XG4gICAgbWFjb3MgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEFuZHJvaWRcbiAgaWYgKGFuZHJvaWQgJiYgIXdpbmRvd3MpIHtcbiAgICBkZXZpY2Uub3MgPSAnYW5kcm9pZCc7XG4gICAgZGV2aWNlLmFuZHJvaWQgPSB0cnVlO1xuICB9XG4gIGlmIChpcGFkIHx8IGlwaG9uZSB8fCBpcG9kKSB7XG4gICAgZGV2aWNlLm9zID0gJ2lvcyc7XG4gICAgZGV2aWNlLmlvcyA9IHRydWU7XG4gIH1cblxuICAvLyBFeHBvcnQgb2JqZWN0XG4gIHJldHVybi
2BkZXZpY2U7XG59XG5mdW5jdGlvbiBnZXREZXZpY2Uob3ZlcnJpZGVzKSB7XG4gIGlmIChvdmVycmlkZXMgPT09IHZvaWQgMCkge1xuICAgIG92ZXJyaWRlcyA9IHt9O1xuICB9XG4gIGlmICghZGV2aWNlQ2FjaGVkKSB7XG4gICAgZGV2aWNlQ2FjaGVkID0gY2FsY0RldmljZShvdmVycmlkZXMpO1xuICB9XG4gIHJldHVybiBkZXZpY2VDYWNoZWQ7XG59XG5cbmxldCBicm93c2VyO1xuZnVuY3Rpb24gY2FsY0Jyb3dzZXIoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBkZXZpY2UgPSBnZXREZXZpY2UoKTtcbiAgbGV0IG5lZWRQZXJzcGVjdGl2ZUZpeCA9IGZhbHNlO1xuICBmdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgICBjb25zdCB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ3NhZmFyaScpID49IDAgJiYgdWEuaW5kZXhPZignY2hyb21lJykgPCAwICYmIHVhLmluZGV4T2YoJ2FuZHJvaWQnKSA8IDA7XG4gIH1cbiAgaWYgKGlzU2FmYXJpKCkpIHtcbiAgICBjb25zdCB1YSA9IFN0cmluZyh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgaWYgKHVhLmluY2x1ZGVzKCdWZXJzaW9uLycpKSB7XG4gICAgICBjb25zdCBbbWFqb3IsIG1pbm9yXSA9IHVhLnNwbGl0KCdWZXJzaW9uLycpWzFdLnNwbGl0KCcgJylbMF0uc3BsaXQoJy4nKS5tYXAobnVtID0+IE51bWJlcihudW0pKTtcbiAgICAgIG5lZWRQZXJzcGVjdGl2ZUZpeCA9IG1ham9yIDwgMTYgfHwgbWFqb3IgPT09IDE2ICYmIG1pbm9yIDwgMjtcbiAgICB9XG4gIH1cbiAgY29uc3QgaXNXZWJWaWV3ID0gLyhpUGhvbmV8aVBvZHxpUGFkKS4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgY29uc3QgaXNTYWZhcmlCcm93c2VyID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgbmVlZDNkRml4ID0gaXNTYWZhcmlCcm93c2VyIHx8IGlzV2ViVmlldyAmJiBkZXZpY2UuaW9zO1xuICByZXR1cm4ge1xuICAgIGlzU2FmYXJpOiBuZWVkUGVyc3BlY3RpdmVGaXggfHwgaXNTYWZhcmlCcm93c2VyLFxuICAgIG5lZWRQZXJzcGVjdGl2ZUZpeCxcbiAgICBuZWVkM2RGaXgsXG4gICAgaXNXZWJWaWV3XG4gIH07XG59XG5mdW5jdGlvbiBnZXRCcm93c2VyKCkge1xuICBpZiAoIWJyb3dzZXIpIHtcbiAgICBicm93c2VyID0gY2FsY0Jyb3dzZXIoKTtcbiAgfVxuICByZXR1cm4gYnJvd3Nlcjtcbn1cblxuZnVuY3Rpb24gUmVzaXplKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgb24sXG4gICAgZW1pdFxuICB9ID0gX3JlZjtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGxldCBvYnNlcnZlciA9IG51bGw7XG4gIGxldCBhbmltYXRpb25GcmFtZSA9IG51bGw7XG4gIGNvbnN0IHJlc2l6ZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm47XG4gICAgZW1pdCgnYmVmb3JlUmVzaXplJyk7XG4gICAgZW1pdCgncmVzaXplJyk7XG4gIH07XG4gIGNvbnN0IGNyZWF0ZU9ic2VydmVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgYW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodFxuICAgICAgICB9ID0gc3dpcGVyO1xuICAgICAgICBsZXQgbmV3V2lkdGggPSB3aWR0aDtcbiAgICAgICAgbGV0IG5ld0hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKF9yZWYyID0+IHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgY29udGVudEJveFNpemUsXG4gICAgICAgICAgICBjb250ZW50UmVjdCxcbiAgICAgICAgICAgIHRhcmdldFxuICAgICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gc3dpcGVyLmVsKSByZXR1cm47XG4gICAgICAgICAgbmV3V2lkdGggPSBjb250ZW50UmVjdCA/IGNvbnRlbnRSZWN0LndpZHRoIDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5pbmxpbmVTaXplO1xuICAgICAgICAgIG5ld0hlaWdodCA9IGNvbnRlbnRSZWN0ID8gY29udGVudFJlY3QuaGVpZ2h0IDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5ibG9ja1NpemU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmV3V2lkdGggIT09IHdpZHRoIHx8IG5ld0hlaWdodCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgcmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHN3aXBlci5lbCk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZU9ic2VydmVyID0gKCkgPT4ge1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbkZyYW1lKTtcbiAgICB9XG4gICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLnVub2JzZXJ2ZSAmJiBzd2lwZXIuZWwpIHtcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShzd2lwZXIuZWwpO1xuICAgICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIGVtaXQoJ29yaWVudGF0aW9uY2hhbmdlJyk7XG4gIH07XG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnJlc2l6ZU9ic2VydmVyICYmIHR5cGVvZiB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjcmVhdGVPYnNlcnZlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIHJlbW92ZU9ic2VydmVyKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhhbmRsZXIpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIG9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBPYnNlcnZlcihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvbixcbiAgICBlbWl0XG4gIH0gPSBfcmVmO1xuICBjb25zdCBvYnNlcnZlcnMgPSBbXTtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IGF0dGFjaCA9IGZ1bmN0aW9uICh0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGNvbnN0IE9ic2VydmVyRnVuYyA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJraXRNdXRhdGlvbk9ic2VydmVyO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE9ic2VydmVyRnVuYyhtdXRhdGlvbnMgPT4ge1xuICAgICAgLy8gVGhlIG9ic2VydmVyVXBkYXRlIGV2ZW50IHNob3VsZCBvbmx5IGJlIHRyaWdnZXJlZFxuICAgICAgLy8gb25jZSBkZXNwaXRlIHRoZSBudW1iZXIgb2YgbXV0YXRpb25zLiAgQWRkaXRpb25hbFxuICAgICAgLy8gdHJpZ2dlcnMgYXJlIHJlZHVuZGFudCBhbmQgYXJlIHZlcnkgY29zdGx5XG4gICAgICBpZiAoc3dpcGVyLl9fcHJldmVudE9ic2VydmVyX18pIHJldHVybjtcbiAgICAgIGlmIChtdXRhdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGVtaXQoJ29ic2VydmVyVXBkYXRlJywgbXV0YXRpb25zWzBdKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JzZXJ2ZXJVcGRhdGUgPSBmdW5jdGlvbiBvYnNlcnZlclVwZGF0ZSgpIHtcbiAgICAgICAgZW1pdCgnb2JzZXJ2ZXJVcGRhdGUnLCBtdXRhdGlvbnNbMF0pO1xuICAgICAgfTtcbiAgICAgIGlmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICAgI
2HdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob2JzZXJ2ZXJVcGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQob2JzZXJ2ZXJVcGRhdGUsIDApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0eXBlb2Ygb3B0aW9ucy5hdHRyaWJ1dGVzID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBvcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICBjaGlsZExpc3Q6IHN3aXBlci5pc0VsZW1lbnQgfHwgKHR5cGVvZiBvcHRpb25zLmNoaWxkTGlzdCA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucykuY2hpbGRMaXN0LFxuICAgICAgY2hhcmFjdGVyRGF0YTogdHlwZW9mIG9wdGlvbnMuY2hhcmFjdGVyRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucy5jaGFyYWN0ZXJEYXRhXG4gICAgfSk7XG4gICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICB9O1xuICBjb25zdCBpbml0ID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5vYnNlcnZlcikgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLm9ic2VydmVQYXJlbnRzKSB7XG4gICAgICBjb25zdCBjb250YWluZXJQYXJlbnRzID0gZWxlbWVudFBhcmVudHMoc3dpcGVyLmhvc3RFbCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lclBhcmVudHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgYXR0YWNoKGNvbnRhaW5lclBhcmVudHNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBPYnNlcnZlIGNvbnRhaW5lclxuICAgIGF0dGFjaChzd2lwZXIuaG9zdEVsLCB7XG4gICAgICBjaGlsZExpc3Q6IHN3aXBlci5wYXJhbXMub2JzZXJ2ZVNsaWRlQ2hpbGRyZW5cbiAgICB9KTtcblxuICAgIC8vIE9ic2VydmUgd3JhcHBlclxuICAgIGF0dGFjaChzd2lwZXIud3JhcHBlckVsLCB7XG4gICAgICBhdHRyaWJ1dGVzOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIG9ic2VydmVycy5mb3JFYWNoKG9ic2VydmVyID0+IHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KTtcbiAgICBvYnNlcnZlcnMuc3BsaWNlKDAsIG9ic2VydmVycy5sZW5ndGgpO1xuICB9O1xuICBleHRlbmRQYXJhbXMoe1xuICAgIG9ic2VydmVyOiBmYWxzZSxcbiAgICBvYnNlcnZlUGFyZW50czogZmFsc2UsXG4gICAgb2JzZXJ2ZVNsaWRlQ2hpbGRyZW46IGZhbHNlXG4gIH0pO1xuICBvbignaW5pdCcsIGluaXQpO1xuICBvbignZGVzdHJveScsIGRlc3Ryb3kpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG52YXIgZXZlbnRzRW1pdHRlciA9IHtcbiAgb24oZXZlbnRzLCBoYW5kbGVyLCBwcmlvcml0eSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybiBzZWxmO1xuICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHNlbGY7XG4gICAgY29uc3QgbWV0aG9kID0gcHJpb3JpdHkgPyAndW5zaGlmdCcgOiAncHVzaCc7XG4gICAgZXZlbnRzLnNwbGl0KCcgJykuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XSkgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdID0gW107XG4gICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF1bbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgb25jZShldmVudHMsIGhhbmRsZXIsIHByaW9yaXR5KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcbiAgICBmdW5jdGlvbiBvbmNlSGFuZGxlcigpIHtcbiAgICAgIHNlbGYub2ZmKGV2ZW50cywgb25jZUhhbmRsZXIpO1xuICAgICAgaWYgKG9uY2VIYW5kbGVyLl9fZW1pdHRlclByb3h5KSB7XG4gICAgICAgIGRlbGV0ZSBvbmNlSGFuZGxlci5fX2VtaXR0ZXJQcm94eTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuICAgICAgaGFuZGxlci5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG4gICAgb25jZUhhbmRsZXIuX19lbWl0dGVyUHJveHkgPSBoYW5kbGVyO1xuICAgIHJldHVybiBzZWxmLm9uKGV2ZW50cywgb25jZUhhbmRsZXIsIHByaW9yaXR5KTtcbiAgfSxcbiAgb25BbnkoaGFuZGxlciwgcHJpb3JpdHkpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzIHx8IHNlbGYuZGVzdHJveWVkKSByZXR1cm4gc2VsZjtcbiAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHJldHVybiBzZWxmO1xuICAgIGNvbnN0IG1ldGhvZCA9IHByaW9yaXR5ID8gJ3Vuc2hpZnQnIDogJ3B1c2gnO1xuICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpIDwgMCkge1xuICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnNbbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIG9mZkFueShoYW5kbGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0FueUxpc3RlbmVycykgcmV0dXJuIHNlbGY7XG4gICAgY29uc3QgaW5kZXggPSBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgb2ZmKGV2ZW50cywgaGFuZGxlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybi
2BzZWxmO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMpIHJldHVybiBzZWxmO1xuICAgIGV2ZW50cy5zcGxpdCgnICcpLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0gPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAoc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdKSB7XG4gICAgICAgIHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XS5mb3JFYWNoKChldmVudEhhbmRsZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlciA9PT0gaGFuZGxlciB8fCBldmVudEhhbmRsZXIuX19lbWl0dGVyUHJveHkgJiYgZXZlbnRIYW5kbGVyLl9fZW1pdHRlclByb3h5ID09PSBoYW5kbGVyKSB7XG4gICAgICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9LFxuICBlbWl0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybiBzZWxmO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMpIHJldHVybiBzZWxmO1xuICAgIGxldCBldmVudHM7XG4gICAgbGV0IGRhdGE7XG4gICAgbGV0IGNvbnRleHQ7XG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgZXZlbnRzID0gYXJnc1swXTtcbiAgICAgIGRhdGEgPSBhcmdzLnNsaWNlKDEsIGFyZ3MubGVuZ3RoKTtcbiAgICAgIGNvbnRleHQgPSBzZWxmO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudHMgPSBhcmdzWzBdLmV2ZW50cztcbiAgICAgIGRhdGEgPSBhcmdzWzBdLmRhdGE7XG4gICAgICBjb250ZXh0ID0gYXJnc1swXS5jb250ZXh0IHx8IHNlbGY7XG4gICAgfVxuICAgIGRhdGEudW5zaGlmdChjb250ZXh0KTtcbiAgICBjb25zdCBldmVudHNBcnJheSA9IEFycmF5LmlzQXJyYXkoZXZlbnRzKSA/IGV2ZW50cyA6IGV2ZW50cy5zcGxpdCgnICcpO1xuICAgIGV2ZW50c0FycmF5LmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKHNlbGYuZXZlbnRzQW55TGlzdGVuZXJzICYmIHNlbGYuZXZlbnRzQW55TGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5mb3JFYWNoKGV2ZW50SGFuZGxlciA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmFwcGx5KGNvbnRleHQsIFtldmVudCwgLi4uZGF0YV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLmV2ZW50c0xpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0pIHtcbiAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdLmZvckVhY2goZXZlbnRIYW5kbGVyID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuYXBwbHkoY29udGV4dCwgZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVTaXplKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBsZXQgd2lkdGg7XG4gIGxldCBoZWlnaHQ7XG4gIGNvbnN0IGVsID0gc3dpcGVyLmVsO1xuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMud2lkdGggIT09ICd1bmRlZmluZWQnICYmIHN3aXBlci5wYXJhbXMud2lkdGggIT09IG51bGwpIHtcbiAgICB3aWR0aCA9IHN3aXBlci5wYXJhbXMud2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgd2lkdGggPSBlbC5jbGllbnRXaWR0aDtcbiAgfVxuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyAmJiBzd2lwZXIucGFyYW1zLmhlaWdodCAhPT0gbnVsbCkge1xuICAgIGhlaWdodCA9IHN3aXBlci5wYXJhbXMuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGhlaWdodCA9IGVsLmNsaWVudEhlaWdodDtcbiAgfVxuICBpZiAod2lkdGggPT09IDAgJiYgc3dpcGVyLmlzSG9yaXpvbnRhbCgpIHx8IGhlaWdodCA9PT0gMCAmJiBzd2lwZXIuaXNWZXJ0aWNhbCgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gU3VidHJhY3QgcGFkZGluZ3NcbiAgd2lkdGggPSB3aWR0aCAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctbGVmdCcpIHx8IDAsIDEwKSAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctcmlnaHQnKSB8fCAwLCAxMCk7XG4gIGhlaWdodCA9IGhlaWdodCAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctdG9wJykgfHwgMCwgMTApIC0gcGFyc2VJbnQoZWxlbWVudFN0eWxlKGVsLCAncGFkZGluZy1ib3R0b20nKSB8fCAwLCAxMCk7XG4gIGlmIChOdW1iZXIuaXNOYU4od2lkdGgpKSB3aWR0aCA9IDA7XG4gIGlmIChOdW1iZXIuaXNOYU4oaGVpZ2h0KSkgaGVpZ2h0ID0gMDtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgc2l6ZTogc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gd2lkdGggOiBoZWlnaHRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVNsaWRlcygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShub2RlLCBsYWJlbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KG5vZGUuZ2V0UHJvcGVydHlWYWx1ZShzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwobGFiZWwpKSB8fCAwKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB7XG4gICAgd3JhcHBlckVsLFxuICAgIHNsaWRlc0VsLFxuICAgIHNpemU6IHN3aXBlclNpemUsXG4gICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgd3JvbmdSVExcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgY29uc3QgcHJldmlvdXNTbGlkZXNMZW5ndGggPSBpc1ZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc3dpcGVyLnNsaWRlcy5sZW5ndGg7XG4gIGNvbnN0IHNsaWRlcyA9IGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICBjb25zdCBzbGlkZXNMZW5ndGggPSBpc1ZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc2xpZGVzLmxlbmd0aDtcbiAgbGV0IHNuYXBHcmlkID0gW107XG4gIGNvbnN0IHNsaWRlc0dyaWQgPSBbXTtcbiAgY29uc3Qgc2xpZGVzU2l6ZXNHcmlkID0gW107XG4gIGxldCBvZmZzZXRCZWZvcmUgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlO1xuICBpZiAodHlwZW9mIG9mZnNldEJlZm9yZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEJlZm9yZSA9IHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUuY2FsbChzd2lwZXIpO1xuICB9XG4gIGxldCBvZmZzZXRBZnRlciA9IHBhcmFtcy5zbGlkZXNPZmZzZXRBZnRlcjtcbiAgaWYgKHR5cGVvZiBvZmZzZXRBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEFmdGVyID0gcGFyYW1zLnNsaWRlc09mZnNldEFmdGVyLmNhbGwoc3dpcGVyKTtcbiAgfVxuICBjb25zdCBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoID0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcbiAgY29uc3QgcHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoID0gc3dpcGVyLnNsaWRlc0dyaWQubGVuZ3RoO1xuICBsZXQgc3BhY2VCZXR3ZWVuID0gcGFyYW1zLnNwYWNlQmV0d2VlbjtcbiAgbGV0IHNsaWRlUG9zaXRpb24gPSAtb2Zmc2V0QmVmb3JlO1xuICBsZXQgcHJldlNsaWRlU2l6ZSA9IDA7XG4gIGxldCBpbmRleCA9IDA7XG4gIGlmICh0eXBlb2Ygc3dpcGVyU2l6ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnICYmIHNwYWNlQmV0d2Vlbi5pbmRleE9mKCclJykgPj0gMCkge1xuICAgIHNwYWNlQmV0d2VlbiA9IHBhcnNlRmxvYXQoc3BhY2VCZXR3ZWVuLnJlcGxhY2UoJyUnLCAnJykpIC8gMTAwICogc3dpcGVyU2l6ZTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc3BhY2VCZXR3ZWVuID09PSAnc3RyaW5nJykge1xuICAgIHNwYWNlQmV0d2VlbiA9IHBhcnNlRmxvYXQoc3BhY2VCZXR3ZWVuKTtcbiAgfVxuICBzd2lwZXIudmlydHVhbFNpemUgPSAtc3B
2hY2VCZXR3ZWVuO1xuXG4gIC8vIHJlc2V0IG1hcmdpbnNcbiAgc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgaWYgKHJ0bCkge1xuICAgICAgc2xpZGVFbC5zdHlsZS5tYXJnaW5MZWZ0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlRWwuc3R5bGUubWFyZ2luUmlnaHQgPSAnJztcbiAgICB9XG4gICAgc2xpZGVFbC5zdHlsZS5tYXJnaW5Cb3R0b20gPSAnJztcbiAgICBzbGlkZUVsLnN0eWxlLm1hcmdpblRvcCA9ICcnO1xuICB9KTtcblxuICAvLyByZXNldCBjc3NNb2RlIG9mZnNldHNcbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY3NzTW9kZSkge1xuICAgIHNldENTU1Byb3BlcnR5KHdyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUnLCAnJyk7XG4gICAgc2V0Q1NTUHJvcGVydHkod3JhcHBlckVsLCAnLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyJywgJycpO1xuICB9XG4gIGNvbnN0IGdyaWRFbmFibGVkID0gcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDEgJiYgc3dpcGVyLmdyaWQ7XG4gIGlmIChncmlkRW5hYmxlZCkge1xuICAgIHN3aXBlci5ncmlkLmluaXRTbGlkZXMoc2xpZGVzKTtcbiAgfSBlbHNlIGlmIChzd2lwZXIuZ3JpZCkge1xuICAgIHN3aXBlci5ncmlkLnVuc2V0U2xpZGVzKCk7XG4gIH1cblxuICAvLyBDYWxjIHNsaWRlc1xuICBsZXQgc2xpZGVTaXplO1xuICBjb25zdCBzaG91bGRSZXNldFNsaWRlU2l6ZSA9IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLmJyZWFrcG9pbnRzICYmIE9iamVjdC5rZXlzKHBhcmFtcy5icmVha3BvaW50cykuZmlsdGVyKGtleSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXJhbXMuYnJlYWtwb2ludHNba2V5XS5zbGlkZXNQZXJWaWV3ICE9PSAndW5kZWZpbmVkJztcbiAgfSkubGVuZ3RoID4gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNMZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlU2l6ZSA9IDA7XG4gICAgbGV0IHNsaWRlO1xuICAgIGlmIChzbGlkZXNbaV0pIHNsaWRlID0gc2xpZGVzW2ldO1xuICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgc3dpcGVyLmdyaWQudXBkYXRlU2xpZGUoaSwgc2xpZGUsIHNsaWRlcyk7XG4gICAgfVxuICAgIGlmIChzbGlkZXNbaV0gJiYgZWxlbWVudFN0eWxlKHNsaWRlLCAnZGlzcGxheScpID09PSAnbm9uZScpIGNvbnRpbnVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJykge1xuICAgICAgaWYgKHNob3VsZFJlc2V0U2xpZGVTaXplKSB7XG4gICAgICAgIHNsaWRlc1tpXS5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gYGA7XG4gICAgICB9XG4gICAgICBjb25zdCBzbGlkZVN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoc2xpZGUpO1xuICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IHNsaWRlLnN0eWxlLnRyYW5zZm9ybTtcbiAgICAgIGNvbnN0IGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0gPSBzbGlkZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm07XG4gICAgICBpZiAoY3VycmVudFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS50cmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFdlYktpdFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykge1xuICAgICAgICBzbGlkZVNpemUgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBlbGVtZW50T3V0ZXJTaXplKHNsaWRlLCAnd2lkdGgnLCB0cnVlKSA6IGVsZW1lbnRPdXRlclNpemUoc2xpZGUsICdoZWlnaHQnLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBjb25zdCB3aWR0aCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICd3aWR0aCcpO1xuICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdwYWRkaW5nLWxlZnQnKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ3BhZGRpbmctcmlnaHQnKTtcbiAgICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tbGVmdCcpO1xuICAgICAgICBjb25zdCBtYXJnaW5SaWdodCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tcmlnaHQnKTtcbiAgICAgICAgY29uc3QgYm94U2l6aW5nID0gc2xpZGVTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuICAgICAgICBpZiAoYm94U2l6aW5nICYmIGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgICAgc2xpZGVTaXplID0gd2lkdGggKyBtYXJnaW5MZWZ0ICsgbWFyZ2luUmlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgICAgICAgICBvZmZzZXRXaWR0aFxuICAgICAgICAgIH0gPSBzbGlkZTtcbiAgICAgICAgICBzbGlkZVNpemUgPSB3aWR0aCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgbWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0ICsgKG9mZnNldFdpZHRoIC0gY2xpZW50V2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS50cmFuc2Zvcm0gPSBjdXJyZW50VHJhbnNmb3JtO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGUuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gY3VycmVudFdlYktpdFRyYW5zZm9ybTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVNpemUgPSBNYXRoLmZsb29yKHNsaWRlU2l6ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlU2l6ZSA9IChzd2lwZXJTaXplIC0gKHBhcmFtcy5zbGlkZXNQZXJWaWV3IC0gMSkgKiBzcGFjZUJldHdlZW4pIC8gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVTaXplID0gTWF0aC5mbG9vcihzbGlkZVNpemUpO1xuICAgICAgaWYgKHNsaWRlc1tpXSkge1xuICAgICAgICBzbGlkZXNbaV0uc3R5bGVbc3dpcGVyLmdldERpcmVjdGlvbkxhYmVsKCd3aWR0aCcpXSA9IGAke3NsaWRlU2l6ZX1weGA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzbGlkZXNbaV0pIHtcbiAgICAgIHNsaWRlc1tpXS5zd2lwZXJTbGlkZVNpemUgPSBzbGlkZVNpemU7XG4gICAgfVxuICAgIHNsaWRlc1NpemVzR3JpZC5wdXNoKHNsaWRlU2l6ZSk7XG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVQb3NpdGlvbiA9IHNsaWRlUG9zaXRpb24gKyBzbGlkZVNpemUgLyAyICsgcHJldlNsaWRlU2l6ZSAvIDIgKyBzcGFjZUJldHdlZW47XG4gICAgICBpZiAocHJldlNsaWRlU2l6ZSA9PT0gMCAmJiBpICE9PSAwKSBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiAtIHN3aXBlclNpemUgLyAyIC0gc3BhY2VCZXR3ZWVuO1xuICAgICAgaWYgKGkgPT09IDApIHNsaWRlUG9zaXRpb24gPSBzbGlkZVBvc2l0aW9uIC0gc3dpcGVyU2l6ZSAvIDIgLSBzcGFjZUJldHdlZW47XG4gICAgICBpZiAoTWF0aC5hYnMoc2xpZGVQb3NpdGlvbikgPCAxIC8gMTAwMCkgc2xpZGVQb3NpdGlvbiA9IDA7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVQb3NpdGlvbiA9IE1hdGguZmxvb3Ioc2xpZGVQb3NpdGlvbik7XG4gICAgICBpZiAoaW5kZXggJSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVBvc2l0aW9uID0gTWF0aC5mbG9vcihzbGlkZVBvc2l0aW9uKTtcbiAgICAgIGlmICgoaW5kZXggLSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgaW5kZXgpKSAlIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiArIHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICB9XG4gICAgc3dpcGVyLnZpcnR1YWxTaXplICs9IHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICBwcmV2U2xpZGVTaXplID0gc2xpZGVTaXplO1xuICAgIGluZGV4ICs9IDE7XG4gIH1cbiAgc3dpcGVyLnZpcnR1YWxTaXplID0gTWF0aC5tYXgoc3dpcGVyLnZpcnR1YWxTaXplLCBzd2lwZXJTaXplKSArIG9mZnNldEFmdGVyO1xuICBpZiAocnRsICYmIHdyb25nUlRMICYmIChwYXJhbXMuZWZmZWN0ID09PSAnc2xpZGUnIHx8IHBhcmFtcy5lZmZlY3QgPT09ICdjb3ZlcmZsb3cnKSkge1xuICAgIHdyYXBwZXJFbC5zdHlsZS53aWR0aCA9IGAke3N3aXBlci52aXJ0dWFsU2l6ZSArIHNwYWNlQmV0d2Vlbn1weGA7XG4gIH1cbiAgaWYgKHBhcmFtcy5zZXRXcmFwcGVyU2l6ZSkge1xuICAgIHdyYXBwZXJFbC5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gYCR7c3dpcGVyLnZpcnR1YWxTaXplICsgc3BhY2VCZXR3ZWVufXB4YDtcbiAgfVxuICBpZiAoZ3JpZEVuYWJsZWQpIHtcbiAgICBzd2lwZXIuZ3JpZC51cGRhdGVXcmFwcGVyU2l6ZShzbGlkZVNpemUsIHNuYXBHcmlkKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBsYXN0IGdyaWQgZWxlbWVudHMgZGVwZW5kaW5nIG9uIHdpZHRoXG4gIGlmICghcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgY29uc3QgbmV3U2xpZGVzR3JpZCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc25hcEdyaWQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGxldCBzbGlkZXNHcmlkSXRlbSA9IHNuYXBHcmlkW2ldO1xuICAgICAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHNsaWRlc0dyaWRJdGVtID0gTWF0aC5mbG9vcihzbGlkZXNHcmlkSXRlbSk7XG4gICAgICBpZiAoc25hcEdyaWRbaV0gPD0gc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSkge1xuICAgICAgICBuZXdTbGlkZXNHcmlkLnB1c2goc2xpZGVzR3JpZEl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBzbmFwR3JpZCA9IG5ld1NsaWRlc0dyaWQ7XG4gICAgaWYgKE1hdGguZmxvb3Ioc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSkgLSBNYXRoLmZsb29yKHNuYXBHcmlkW3NuYXBHcmlkLmxlbmd0aCAtIDFdKSA+IDEpIHtcbiAgICAgIHNuYXBHcmlkLnB1c2goc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSk7XG4gICAgfVxuICB9XG4gIGlmIChpc1ZpcnR1YWwgJiYgcGFyYW1zLmxvb3ApIHtcbiAgICBjb25zdCBzaXplID0gc2xpZGVzU2l6ZXNHcmlkWzBdICsgc3BhY2VCZXR3ZWVuO1xuICAgIGlmIChwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPiAxKSB7XG4gICAgICBjb25zdCBncm91cHMgPSBNYXRoLmNlaWwoKHN3aXBlci52aXJ0dWFsLnNsaWRlc0JlZm9yZSArIHN3aXBlci52aXJ0dWFsLnNsaWRlc0FmdGVyKSAvIHBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gICAgICBjb25zdCBncm91cFNpemUgPSBzaXplICogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHM7IGkgKz
20gMSkge1xuICAgICAgICBzbmFwR3JpZC5wdXNoKHNuYXBHcmlkW3NuYXBHcmlkLmxlbmd0aCAtIDFdICsgZ3JvdXBTaXplKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmUgKyBzd2lwZXIudmlydHVhbC5zbGlkZXNBZnRlcjsgaSArPSAxKSB7XG4gICAgICBpZiAocGFyYW1zLnNsaWRlc1Blckdyb3VwID09PSAxKSB7XG4gICAgICAgIHNuYXBHcmlkLnB1c2goc25hcEdyaWRbc25hcEdyaWQubGVuZ3RoIC0gMV0gKyBzaXplKTtcbiAgICAgIH1cbiAgICAgIHNsaWRlc0dyaWQucHVzaChzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMV0gKyBzaXplKTtcbiAgICAgIHN3aXBlci52aXJ0dWFsU2l6ZSArPSBzaXplO1xuICAgIH1cbiAgfVxuICBpZiAoc25hcEdyaWQubGVuZ3RoID09PSAwKSBzbmFwR3JpZCA9IFswXTtcbiAgaWYgKHNwYWNlQmV0d2VlbiAhPT0gMCkge1xuICAgIGNvbnN0IGtleSA9IHN3aXBlci5pc0hvcml6b250YWwoKSAmJiBydGwgPyAnbWFyZ2luTGVmdCcgOiBzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ21hcmdpblJpZ2h0Jyk7XG4gICAgc2xpZGVzLmZpbHRlcigoXywgc2xpZGVJbmRleCkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXMuY3NzTW9kZSB8fCBwYXJhbXMubG9vcCkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoc2xpZGVJbmRleCA9PT0gc2xpZGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICAgIHNsaWRlRWwuc3R5bGVba2V5XSA9IGAke3NwYWNlQmV0d2Vlbn1weGA7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY2VudGVyZWRTbGlkZXNCb3VuZHMpIHtcbiAgICBsZXQgYWxsU2xpZGVzU2l6ZSA9IDA7XG4gICAgc2xpZGVzU2l6ZXNHcmlkLmZvckVhY2goc2xpZGVTaXplVmFsdWUgPT4ge1xuICAgICAgYWxsU2xpZGVzU2l6ZSArPSBzbGlkZVNpemVWYWx1ZSArIChzcGFjZUJldHdlZW4gfHwgMCk7XG4gICAgfSk7XG4gICAgYWxsU2xpZGVzU2l6ZSAtPSBzcGFj
2ZUJldHdlZW47XG4gICAgY29uc3QgbWF4U25hcCA9IGFsbFNsaWRlc1NpemUgLSBzd2lwZXJTaXplO1xuICAgIHNuYXBHcmlkID0gc25hcEdyaWQubWFwKHNuYXAgPT4ge1xuICAgICAgaWYgKHNuYXAgPD0gMCkgcmV0dXJuIC1vZmZzZXRCZWZvcmU7XG4gICAgICBpZiAoc25hcCA+IG1heFNuYXApIHJldHVybiBtYXhTbmFwICsgb2Zmc2V0QWZ0ZXI7XG4gICAgICByZXR1cm4gc25hcDtcbiAgICB9KTtcbiAgfVxuICBpZiAocGFyYW1zLmNlbnRlckluc3VmZmljaWVudFNsaWRlcykge1xuICAgIGxldCBhbGxTbGlkZXNTaXplID0gMDtcbiAgICBzbGlkZXNTaXplc0dyaWQuZm9yRWFjaChzbGlkZVNpemVWYWx1ZSA9PiB7XG4gICAgICBhbGxTbGlkZXNTaXplICs9IHNsaWRlU2l6ZVZhbHVlICsgKHNwYWNlQmV0d2VlbiB8fCAwKTtcbiAgICB9KTtcbiAgICBhbGxTbGlkZXNTaXplIC09IHNwYWNlQmV0d2VlbjtcbiAgICBjb25zdCBvZmZzZXRTaXplID0gKHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgfHwgMCkgKyAocGFyYW1zLnNsaWRlc09mZnNldEFmdGVyIHx8IDApO1xuICAgIGlmIChhbGxTbGlkZXNTaXplICsgb2Zmc2V0U2l6ZSA8IHN3aXBlclNpemUpIHtcbiAgICAgIGNvbnN0IGFsbFNsaWRlc09mZnNldCA9IChzd2lwZXJTaXplIC0gYWxsU2xpZGVzU2l6ZSAtIG9mZnNldFNpemUpIC8gMjtcbiAgICAgIHNuYXBHcmlkLmZvckVhY2goKHNuYXAsIHNuYXBJbmRleCkgPT4ge1xuICAgICAgICBzbmFwR3JpZFtzbmFwSW5kZXhdID0gc25hcCAtIGFsbFNsaWRlc09mZnNldDtcbiAgICAgIH0pO1xuICAgICAgc2xpZGVzR3JpZC5mb3JFYWNoKChzbmFwLCBzbmFwSW5kZXgpID0+IHtcbiAgICAgICAgc2xpZGVzR3JpZFtzbmFwSW5kZXhdID0gc25hcCArIGFsbFNsaWRlc09mZnNldDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIHNsaWRlcyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHNsaWRlc1NpemVzR3JpZFxuICB9KTtcbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY3NzTW9kZSAmJiAhcGFyYW1zLmNlbnRlcmVkU2xpZGVzQm91bmRzKSB7XG4gICAgc2V0Q1NTUHJvcGVydHkod3JhcHBlckVsLCAnLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZScsIGAkey1zbmFwR3JpZFswXX1weGApO1xuICAgIHNldENTU1Byb3BlcnR5KHdyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcicsIGAke3N3aXBlci5zaXplIC8gMiAtIHNsaWRlc1NpemVzR3JpZFtzbGlkZXNTaXplc0dyaWQubGVuZ3RoIC0gMV0gLyAyfXB4YCk7XG4gICAgY29uc3QgYWRkVG9TbmFwR3JpZCA9IC1zd2lwZXIuc25hcEdyaWRbMF07XG4gICAgY29uc3QgYWRkVG9TbGlkZXNHcmlkID0gLXN3aXBlci5zbGlkZXNHcmlkWzBdO1xuICAgIHN3aXBlci5zbmFwR3JpZCA9IHN3aXBlci5zbmFwR3JpZC5tYXAodiA9PiB2ICsgYWRkVG9TbmFwR3JpZCk7XG4gICAgc3dpcGVyLnNsaWRlc0dyaWQgPSBzd2lwZXIuc2xpZGVzR3JpZC5tYXAodiA9PiB2ICsgYWRkVG9TbGlkZXNHcmlkKTtcbiAgfVxuICBpZiAoc2xpZGVzTGVuZ3RoICE9PSBwcmV2aW91c1NsaWRlc0xlbmd0aCkge1xuICAgIHN3aXBlci5lbWl0KCdzbGlkZXNMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuICBpZiAoc25hcEdyaWQubGVuZ3RoICE9PSBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdykgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICBzd2lwZXIuZW1pdCgnc25hcEdyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuICBpZiAoc2xpZGVzR3JpZC5sZW5ndGggIT09IHByZXZpb3VzU2xpZGVzR3JpZExlbmd0aCkge1xuICAgIHN3aXBlci5lbWl0KCdzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlJyk7XG4gIH1cbiAgaWYgKHBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzKSB7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICB9XG4gIHN3aXBlci5lbWl0KCdzbGlkZXNVcGRhdGVkJyk7XG4gIGlmICghaXNWaXJ0dWFsICYmICFwYXJhbXMuY3NzTW9kZSAmJiAocGFyYW1zLmVmZmVjdCA9PT0gJ3NsaWRlJyB8fCBwYXJhbXMuZWZmZWN0ID09PSAnZmFkZScpKSB7XG4gICAgY29uc3QgYmFja0ZhY2VIaWRkZW5DbGFzcyA9IGAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWJhY2tmYWNlLWhpZGRlbmA7XG4gICAgY29uc3QgaGFzQ2xhc3NCYWNrZmFjZUNsYXNzQWRkZWQgPSBzd2lwZXIuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGJhY2tGYWNlSGlkZGVuQ2xhc3MpO1xuICAgIGlmIChzbGlkZXNMZW5ndGggPD0gcGFyYW1zLm1heEJhY2tmYWNlSGlkZGVuU2xpZGVzKSB7XG4gICAgICBpZiAoIWhhc0NsYXNzQmFja2ZhY2VDbGFzc0FkZGVkKSBzd2lwZXIuZWwuY2xhc3NMaXN0LmFkZChiYWNrRmFjZUhpZGRlbkNsYXNzKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NsYXNzQmFja2ZhY2VDbGFzc0FkZGVkKSB7XG4gICAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShiYWNrRmFjZUhpZGRlbkNsYXNzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQXV0b0hlaWdodChzcGVlZCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBhY3RpdmVTbGlkZXMgPSBbXTtcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIGxldCBuZXdIZWlnaHQgPSAwO1xuICBsZXQgaTtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ251bWJlcicpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gIH0gZWxzZSBpZiAoc3BlZWQgPT09IHRydWUpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzd2lwZXIucGFyYW1zLnNwZWVkKTtcbiAgfVxuICBjb25zdCBnZXRTbGlkZUJ5SW5kZXggPSBpbmRleCA9PiB7XG4gICAgaWYgKGlzVmlydHVhbCkge1xuICAgICAgcmV0dXJuIHN3aXBlci5zbGlkZXNbc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEoaW5kZXgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZXNbaW5kZXhdO1xuICB9O1xuICAvLyBGaW5kIHNsaWRlcyBjdXJyZW50bHkgaW4gdmlld1xuICBpZiAoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID4gMSkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAoc3dpcGVyLnZpc2libGVTbGlkZXMgfHwgW10pLmZvckVhY2goc2xpZGUgPT4ge1xuICAgICAgICBhY3RpdmVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgaSA8IE1hdGguY2VpbChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcpOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXggKyBpO1xuICAgICAgICBpZiAoaW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAmJiAhaXNWaXJ0dWFsKSBicmVhaztcbiAgICAgICAgYWN0aXZlU2xpZGVzLnB1c2goZ2V0U2xpZGVCeUluZGV4KGluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFjdGl2ZVNsaWRlcy5wdXNoKGdldFNsaWRlQnlJbmRleChzd2lwZXIuYWN0aXZlSW5kZXgpKTtcbiAgfVxuXG4gIC8vIEZpbmQgbmV3IGhlaWdodCBmcm9tIGhpZ2hlc3Qgc2xpZGUgaW4gdmlld1xuICBmb3IgKGkgPSAwOyBpIDwgYWN0aXZlU2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHR5cGVvZiBhY3RpdmVTbGlkZXNbaV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBhY3RpdmVTbGlkZXNbaV0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgbmV3SGVpZ2h0ID0gaGVpZ2h0ID4gbmV3SGVpZ2h0ID8gaGVpZ2h0IDogbmV3SGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZSBIZWlnaHRcbiAgaWYgKG5ld0hlaWdodCB8fCBuZXdIZWlnaHQgPT09IDApIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3SGVpZ2h0fXB4YDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlU2xpZGVzT2Zmc2V0KCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBzbGlkZXMgPSBzd2lwZXIuc2xpZGVzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgbWludXNPZmZzZXQgPSBzd2lwZXIuaXNFbGVtZW50ID8gc3dpcGVyLmlzSG9yaXpvbn
2RhbCgpID8gc3dpcGVyLndyYXBwZXJFbC5vZmZzZXRMZWZ0IDogc3dpcGVyLndyYXBwZXJFbC5vZmZzZXRUb3AgOiAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlc1tpXS5zd2lwZXJTbGlkZU9mZnNldCA9IChzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBzbGlkZXNbaV0ub2Zmc2V0TGVmdCA6IHNsaWRlc1tpXS5vZmZzZXRUb3ApIC0gbWludXNPZmZzZXQgLSBzd2lwZXIuY3NzT3ZlcmZsb3dBZGp1c3RtZW50KCk7XG4gIH1cbn1cblxuY29uc3QgdG9nZ2xlU2xpZGVDbGFzc2VzJDEgPSAoc2xpZGVFbCwgY29uZGl0aW9uLCBjbGFzc05hbWUpID0+IHtcbiAgaWYgKGNvbmRpdGlvbiAmJiAhc2xpZGVFbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgIHNsaWRlRWwuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKCFjb25kaXRpb24gJiYgc2xpZGVFbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgIHNsaWRlRWwuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9XG59O1xuZnVuY3Rpb24gdXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlKSB7XG4gIGlmICh0cmFuc2xhdGUgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZSA9IHRoaXMgJiYgdGhpcy50cmFuc2xhdGUgfHwgMDtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB7XG4gICAgc2xpZGVzLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHNuYXBHcmlkXG4gIH0gPSBzd2lwZXI7XG4gIGlmIChzbGlkZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIGlmICh0eXBlb2Ygc2xpZGVzWzBdLnN3aXBlclNsaWRlT2Zmc2V0ID09PSAndW5kZWZpbmVkJykgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICBsZXQgb2Zmc2V0Q2VudGVyID0gLXRyYW5zbGF0ZTtcbiAgaWYgKHJ0bCkgb2Zmc2V0Q2VudGVyID0gdHJhbnNsYXRlO1xuICBzd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMgPSBbXTtcbiAgc3dpcGVyLnZpc2libGVTbGlkZXMgPSBbXTtcbiAgbGV0IHNwYWNlQmV0d2VlbiA9IHBhcmFtcy5zcGFjZUJldHdlZW47XG4gIGlmICh0eXBlb2Ygc3BhY2VCZXR3ZWVuID09PSAnc3RyaW5nJyAmJiBzcGFjZUJldHdlZW4uaW5kZXhPZignJScpID49IDApIHtcbiAgICBzcGFjZUJldHdlZW4gPSBwYXJzZUZsb2F0KHNwYWNlQmV0d2Vlbi5yZXBsYWNlKCclJywgJycpKSAvIDEwMCAqIHN3aXBlci5zaXplO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgc3BhY2VCZXR3ZWVuID0gcGFyc2VGbG9hdChzcGFjZUJldHdlZW4pO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3Qgc2xpZGUgPSBzbGlkZXNbaV07XG4gICAgbGV0IHNsaWRlT2Zmc2V0ID0gc2xpZGUuc3dpcGVyU2xpZGVPZmZzZXQ7XG4gICAgaWYgKHBhcmFtcy5jc3NNb2RlICYmIHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVPZmZzZXQgLT0gc2xpZGVzWzBdLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgIH1cbiAgICBjb25zdCBzbGlkZVByb2dyZXNzID0gKG9mZnNldENlbnRlciArIChwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyBzd2lwZXIubWluVHJhbnNsYXRlKCkgOiAwKSAtIHNsaWRlT2Zmc2V0KSAvIChzbGlkZS5zd2lwZXJTbGlkZVNpemUgKyBzcGFjZUJldHdlZW4pO1xuICAgIGNvbnN0IG9yaWdpbmFsU2xpZGVQcm9ncmVzcyA9IChvZmZzZXRDZW50ZXIgLSBzbmFwR3JpZFswXSArIChwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyBzd2lwZXIubWluVHJhbnNsYXRlKCkgOiAwKSAtIHNsaWRlT2Zmc2V0KSAvIChzbGlkZS5zd2lwZXJTbGlkZVNpemUgKyBzcGFjZUJldHdlZW4pO1xuICAgIGNvbnN0IHNsaWRlQmVmb3JlID0gLShvZmZzZXRDZW50ZXIgLSBzbGlkZU9mZnNldCk7XG4gICAgY29uc3Qgc2xpZGVBZnRlciA9IHNsaWRlQmVmb3JlICsgc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtpXTtcbiAgICBjb25zdCBpc0Z1bGx5VmlzaWJsZSA9IHNsaWRlQmVmb3JlID49IDAgJiYgc2xpZGVCZWZvcmUgPD0gc3dpcGVyLnNpemUgLSBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW2ldO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHNsaWRlQmVmb3JlID49IDAgJiYgc2xpZGVCZWZvcmUgPCBzd2lwZXIuc2l6ZSAtIDEgfHwgc2xpZGVBZnRlciA+IDEgJiYgc2xpZGVBZnRlciA8PSBzd2lwZXIuc2l6ZSB8fCBzbGlkZUJlZm9yZSA8PSAwICYmIHNsaWRlQWZ0ZXIgPj0gc3dpcGVyLnNpemU7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc3dpcGVyLnZpc2libGVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICBzd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaChpKTtcbiAgICB9XG4gICAgdG9nZ2xlU2xpZGVDbGFzc2VzJDEoc2xpZGUsIGlzVmlzaWJsZSwgcGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzKTtcbiAgICB0b2dnbGVTbGlkZUNsYXNzZXMkMShzbGlkZSwgaXNGdWxseVZpc2libGUsIHBhcmFtcy5zbGlkZUZ1bGx5VmlzaWJsZUNsYXNzKTtcbiAgICBzbGlkZS5wcm9ncmVzcyA9IHJ0bCA/IC1zbGlkZVByb2dyZXNzIDogc2xpZGVQcm9ncmVzcztcbiAgICBzbGlkZS5vcmlnaW5hbFByb2dyZXNzID0gcnRsID8gLW9yaWdpbmFsU2xpZGVQcm9ncmVzcyA6IG9yaWdpbmFsU2xpZGVQcm9ncmVzcztcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHR5cGVvZiB0cmFuc2xhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IHN3aXBlci5ydGxUcmFuc2xhdGUgPyAtMSA6IDE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdHJhbnNsYXRlID0gc3dpcGVyICYmIHN3aXBlci50cmFuc2xhdGUgJiYgc3dpcGVyLnRyYW5zbGF0ZSAqIG11bHRpcGxpZXIgfHwgMDtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgbGV0IHtcbiAgICBwcm9ncmVzcyxcbiAgICBpc0JlZ2lubmluZyxcbiAgICBpc0VuZCxcbiAgICBwcm9ncmVzc0xvb3BcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3Qgd2FzQmVnaW5uaW5nID0gaXNCZWdpbm5pbmc7XG4gIGNvbnN0IHdhc0VuZCA9IGlzRW5kO1xuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBwcm9ncmVzcyA9IDA7XG4gICAgaXNCZWdpbm5pbmcgPSB0cnVlO1xuICAgIGlzRW5kID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBwcm9ncmVzcyA9ICh0cmFuc2xhdGUgLSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIC8gdHJhbnNsYXRlc0RpZmY7XG4gICAgY29uc3QgaXNCZWdpbm5pbmdSb3VuZGVkI
2D0gTWF0aC5hYnModHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSA8IDE7XG4gICAgY29uc3QgaXNFbmRSb3VuZGVkID0gTWF0aC5hYnModHJhbnNsYXRlIC0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSA8IDE7XG4gICAgaXNCZWdpbm5pbmcgPSBpc0JlZ2lubmluZ1JvdW5kZWQgfHwgcHJvZ3Jlc3MgPD0gMDtcbiAgICBpc0VuZCA9IGlzRW5kUm91bmRlZCB8fCBwcm9ncmVzcyA+PSAxO1xuICAgIGlmIChpc0JlZ2lubmluZ1JvdW5kZWQpIHByb2dyZXNzID0gMDtcbiAgICBpZiAoaXNFbmRSb3VuZGVkKSBwcm9ncmVzcyA9IDE7XG4gIH1cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgY29uc3QgZmlyc3RTbGlkZUluZGV4ID0gc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEoMCk7XG4gICAgY29uc3QgbGFzdFNsaWRlSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleEJ5RGF0YShzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGZpcnN0U2xpZGVUcmFuc2xhdGUgPSBzd2lwZXIuc2xpZGVzR3JpZFtmaXJzdFNsaWRlSW5kZXhdO1xuICAgIGNvbnN0IGxhc3RTbGlkZVRyYW5zbGF0ZSA9IHN3aXBlci5zbGlkZXNHcmlkW2xhc3RTbGlkZUluZGV4XTtcbiAgICBjb25zdCB0cmFuc2xhdGVNYXggPSBzd2lwZXIuc2xpZGVzR3JpZFtzd2lwZXIuc2xpZGVzR3JpZC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCB0cmFuc2xhdGVBYnMgPSBNYXRoLmFicyh0cmFuc2xhdGUpO1xuICAgIGlmICh0cmFuc2xhdGVBYnMgPj0gZmlyc3RTbGlkZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvZ3Jlc3NMb29wID0gKHRyYW5zbGF0ZUFicyAtIGZpcnN0U2xpZGVUcmFuc2xhdGUpIC8gdHJhbnNsYXRlTWF4O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9ncmVzc0xvb3AgPSAodHJhbnNsYXRlQWJzICsgdHJhbnNsYXRlTWF4IC0gbGFzdFNsaWRlVHJhbnNsYXRlKSAvIHRyYW5zbGF0ZU1heDtcbiAgICB9XG4gICAgaWYgKHByb2dyZXNzTG9vcCA+IDEpIHByb2dyZXNzTG9vcCAtPSAxO1xuICB9XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgcHJvZ3Jlc3MsXG4gICAgcHJvZ3Jlc3NMb29wLFxuICAgIGlzQmVnaW5uaW5nLFxuICAgIGlzRW5kXG4gIH0pO1xuICBpZiAocGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MgfHwgcGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHBhcmFtcy5hdXRvSGVpZ2h0KSBzd2lwZXIudXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlKTtcbiAgaWYgKGlzQmVnaW5uaW5nICYmICF3YXNCZWdpbm5pbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hCZWdpbm5pbmcgdG9FZGdlJyk7XG4gIH1cbiAgaWYgKGlzRW5kICYmICF3YXNFbmQpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hFbmQgdG9FZGdlJyk7XG4gIH1cbiAgaWYgKHdhc0JlZ2lubmluZyAmJiAhaXNCZWdpbm5pbmcgfHwgd2FzRW5kICYmICFpc0VuZCkge1xuICAgIHN3aXBlci5lbWl0KCdmcm9tRWRnZScpO1xuICB9XG4gIHN3aXBlci5lbWl0KCdwcm9ncmVzcycsIHByb2dyZXNzKTtcbn1cblxuY29uc3QgdG9nZ2xlU2xpZGVDbGFzc2VzID0gKHNsaWRlRWwsIGNvbmRpdGlvbiwgY2xhc3NOYW1lKSA9PiB7XG4gIGlmIChjb25kaXRpb24gJiYgIXNsaWRlRWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICBzbGlkZUVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmICghY29uZGl0aW9uICYmIHNsaWRlRWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICBzbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfVxufTtcbmZ1bmN0aW9uIHVwZGF0ZVNsaWRlc0NsYXNzZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXMsXG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc0VsLFxuICAgIGFjdGl2ZUluZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIGNvbnN0IGdyaWRFbmFibGVkID0gc3dpcGVyLmdyaWQgJiYgcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDE7XG4gIGNvbnN0IGdldEZpbHRlcmVkU2xpZGUgPSBzZWxlY3RvciA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3BhcmFtcy5zbGlkZUNsYXNzfSR7c2VsZWN0b3J9LCBzd2lwZXItc2xpZGUke3NlbGVjdG9yfWApWzBdO1xuICB9O1xuICBsZXQgYWN0aXZlU2xpZGU7XG4gIGxldCBwcmV2U2xpZGU7XG4gIGxldCBuZXh0U2xpZGU7XG4gIGlmIChpc1ZpcnR1YWwpIHtcbiAgICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAgIGxldCBzbGlkZUluZGV4ID0gYWN0aXZlSW5kZXggLSBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmU7XG4gICAgICBpZiAoc2xpZGVJbmRleCA8IDApIHNsaWRlSW5kZXggPSBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoICsgc2xpZGVJbmRleDtcbiAgICAgIGlmIChzbGlkZUluZGV4ID49IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGgpIHNsaWRlSW5kZXggLT0gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aDtcbiAgICAgIGFjdGl2ZVNsaWRlID0gZ2V0RmlsdGVyZWRTbGlkZShgW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHtzbGlkZUluZGV4fVwiXWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3RpdmVTbGlkZSA9IGdldEZpbHRlcmVkU2xpZGUoYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7YWN0aXZlSW5kZXh9XCJdYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgYWN0aXZlU2xpZGUgPSBzbGlkZXMuZmlsdGVyKHNsaWRlRWwgPT4gc2xpZGVFbC5jb2x1bW4gPT09IGFjdGl2ZUluZGV4KVswXTtcbiAgICAgIG5leHRTbGlkZSA9IHNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmNvbHVtbiA9PT0gYWN0aXZlSW5kZXggKyAxKVswXTtcbiAgICAgIHByZXZTbGlkZSA9IHNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmNvbHVtbiA9PT0gYWN0aXZlSW5kZXggLSAxKVswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlU2xpZGUgPSBzbGlkZXNbYWN0aXZlSW5kZXhdO1xuICAgIH1cbiAgfVxuICBpZiAoYWN0aXZlU2xpZGUpIHtcbiAgICBpZiAoIWdyaWRFbmFibGVkKSB7XG4gICAgICAvLyBOZXh0IFNsaWRlXG4gICAgICBuZXh0U2xpZGUgPSBlbGVtZW50TmV4dEFsbChhY3RpdmVTbGlkZSwgYC4ke3BhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYClbMF07XG4gICAgICBpZiAocGFyYW1zLmxvb3AgJiYgIW5leHRTbGlkZSkge1xuICAgICAgICBuZXh0U2xpZGUgPSBzbGlkZXNbMF07XG4gICAgICB9XG5cbiAgICAgIC8vIFByZXYgU2xpZGVcbiAgICAgIHByZXZTbGlkZSA9IGVsZW1lbnRQcmV2QWxsKGFjdGl2ZVNsaWRlLCBgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKVswXTtcbiAgICAgIGlmIChwYXJhbXMubG9vcCAmJiAhcHJldlNsaWRlID09PSAwKSB7XG4gICAgICAgI
2HByZXZTbGlkZSA9IHNsaWRlc1tzbGlkZXMubGVuZ3RoIC0gMV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgIHRvZ2dsZVNsaWRlQ2xhc3NlcyhzbGlkZUVsLCBzbGlkZUVsID09PSBhY3RpdmVTbGlkZSwgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MpO1xuICAgIHRvZ2dsZVNsaWRlQ2xhc3NlcyhzbGlkZUVsLCBzbGlkZUVsID09PSBuZXh0U2xpZGUsIHBhcmFtcy5zbGlkZU5leHRDbGFzcyk7XG4gICAgdG9nZ2xlU2xpZGVDbGFzc2VzKHNsaWRlRWwsIHNsaWRlRWwgPT09IHByZXZTbGlkZSwgcGFyYW1zLnNsaWRlUHJldkNsYXNzKTtcbiAgfSk7XG4gIHN3aXBlci5lbWl0U2xpZGVzQ2xhc3NlcygpO1xufVxuXG5jb25zdCBwcm9jZXNzTGF6eVByZWxvYWRlciA9IChzd2lwZXIsIGltYWdlRWwpID0+IHtcbiAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLnBhcmFtcykgcmV0dXJuO1xuICBjb25zdCBzbGlkZVNlbGVjdG9yID0gKCkgPT4gc3dpcGVyLmlzRWxlbWVudCA/IGBzd2lwZXItc2xpZGVgIDogYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc31gO1xuICBjb25zdCBzbGlkZUVsID0gaW1hZ2VFbC5jbG9zZXN0KHNsaWRlU2VsZWN0b3IoKSk7XG4gIGlmIChzbGlkZUVsKSB7XG4gICAgbGV0IGxhenlFbCA9IHNsaWRlRWwucXVlcnlTZWxlY3RvcihgLiR7c3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZGVyQ2xhc3N9YCk7XG4gICAgaWYgKCFsYXp5RWwgJiYgc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgaWYgKHNsaWRlRWwuc2hhZG93Um9vdCkge1xuICAgICAgICBsYXp5RWwgPSBzbGlkZUVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLiR7c3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZGVyQ2xhc3N9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbml0IGxhdGVyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNsaWRlRWwuc2hhZG93Um9vdCkge1xuICAgICAgICAgICAgbGF6eUVsID0gc2xpZGVFbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYC4ke3N3aXBlci5wYXJhbXMubGF6eVByZWxvYWRlckNsYXNzfWApO1xuICAgICAgICAgICAgaWYgKGxhenlFbCkgbGF6eUVsLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXp5RWwpIGxhenlFbC5yZW1vdmUoKTtcbiAgfVxufTtcbmNvbnN0IHVubGF6eSA9IChzd2lwZXIsIGluZGV4KSA9PiB7XG4gIGlmICghc3dpcGVyLnNsaWRlc1tpbmRleF0pIHJldHVybjtcbiAgY29uc3QgaW1hZ2VFbCA9IHN3aXBlci5zbGlkZXNbaW5kZXhdLnF1ZXJ5U2VsZWN0b3IoJ1tsb2FkaW5nPVwibGF6eVwiXScpO1xuICBpZiAoaW1hZ2VFbCkgaW1hZ2VFbC5yZW1vdmVBdHRyaWJ1dGUoJ2xvYWRpbmcnKTtcbn07XG5jb25zdCBwcmVsb2FkID0gc3dpcGVyID0+IHtcbiAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLnBhcmFtcykgcmV0dXJuO1xuICBsZXQgYW1vdW50ID0gc3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZFByZXZOZXh0O1xuICBjb25zdCBsZW4gPSBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgaWYgKCFsZW4gfHwgIWFtb3VudCB8fCBhbW91bnQgPCAwKSByZXR1cm47XG4gIGFtb3VudCA9IE1hdGgubWluKGFtb3VudCwgbGVuKTtcbiAgY29uc3Qgc2xpZGVzUGVyVmlldyA9IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nID8gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBNYXRoLmNlaWwoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3KTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gIGlmIChzd2lwZXIucGFyYW1zLmdyaWQgJiYgc3dpcGVyLnBhcmFtcy5ncmlkLnJvd3MgPiAxKSB7XG4gICAgY29uc3QgYWN0aXZlQ29sdW1uID0gYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgcHJlbG9hZENvbHVtbnMgPSBbYWN0aXZlQ29sdW1uIC0gYW1vdW50XTtcbiAgICBwcmVsb2FkQ29sdW1ucy5wdXNoKC4uLkFycmF5LmZyb20oe1xuICAgICAgbGVuZ3RoOiBhbW91bnRcbiAgICB9KS5tYXAoKF8sIGkpID0+IHtcbiAgICAgIHJldHVybiBhY3RpdmVDb2x1bW4gKyBzbGlkZXNQZXJWaWV3ICsgaTtcbiAgICB9KSk7XG4gICAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKChzbGlkZUVsLCBpKSA9PiB7XG4gICAgICBpZiAocHJlbG9hZENvbHVtbnMuaW5jbHVkZXMoc2xpZGVFbC5jb2x1bW4pKSB1bmxhenkoc3dpcGVyLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc2xpZGVJbmRleExhc3RJblZpZXcgPSBhY3RpdmVJbmRleCArIHNsaWRlc1BlclZpZXcgLSAxO1xuICBpZiAoc3dpcGVyLnBhcmFtcy5yZXdpbmQgfHwgc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgZm9yIChsZXQgaSA9IGFjdGl2ZUluZGV4IC0gYW1vdW50OyBpIDw9IHNsaWRlSW5kZXhMYXN0SW5WaWV3ICsgYW1vdW50OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHJlYWxJbmRleCA9IChpICUgbGVuICsgbGVuKSAlIGxlbjtcbiAgICAgIGlmIChyZWFsSW5kZXggPCBhY3RpdmVJbmRleCB8fCByZWFsSW5kZXggPiBzbGlkZUluZGV4TGFzdEluVmlldykgdW5sYXp5KHN3aXBlciwgcmVhbEluZGV4KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KGFjdGl2ZUluZGV4IC0gYW1vdW50LCAwKTsgaSA8PSBNYXRoLm1pbihzbGlkZUluZGV4TGFzdEluVmlldyArIGFtb3VudCwgbGVuIC0gMSk7IGkgKz0gMSkge1xuICAgICAgaWYgKGkgIT09IGFjdGl2ZUluZGV4ICYmIChpID4gc2xpZGVJbmRleExhc3RJblZpZXcgfHwgaSA8IGFjdGl2ZUluZGV4KSkge1xuICAgICAgICB1bmxhenkoc3dpcGVyLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldEFjdGl2ZUluZGV4QnlUcmFuc2xhdGUoc3dpcGVyKSB7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXNHcmlkLFxuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBsZXQgYWN0aXZlSW5kZXg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzR3JpZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgMV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0gJiYgdHJhbnNsYXRlIDwgc2xpZGVzR3JpZFtpICsgMV0gLSAoc2xpZGVzR3JpZFtpICsgMV0gLSBzbGlkZXNHcmlkW2ldKSAvID
2IpIHtcbiAgICAgICAgYWN0aXZlSW5kZXggPSBpO1xuICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGUgPj0gc2xpZGVzR3JpZFtpXSAmJiB0cmFuc2xhdGUgPCBzbGlkZXNHcmlkW2kgKyAxXSkge1xuICAgICAgICBhY3RpdmVJbmRleCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0pIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gaTtcbiAgICB9XG4gIH1cbiAgLy8gTm9ybWFsaXplIHNsaWRlSW5kZXhcbiAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgaWYgKGFjdGl2ZUluZGV4IDwgMCB8fCB0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSBhY3RpdmVJbmRleCA9IDA7XG4gIH1cbiAgcmV0dXJuIGFjdGl2ZUluZGV4O1xufVxuZnVuY3Rpb24gdXBkYXRlQWN0aXZlSW5kZXgobmV3QWN0aXZlSW5kZXgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3QgdHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcbiAgY29uc3Qge1xuICAgIHNuYXBHcmlkLFxuICAgIHBhcmFtcyxcbiAgICBhY3RpdmVJbmRleDogcHJldmlvdXNJbmRleCxcbiAgICByZWFsSW5kZXg6IHByZXZpb3VzUmVhbEluZGV4LFxuICAgIHNuYXBJbmRleDogcHJldmlvdXNTbmFwSW5kZXhcbiAgfSA9IHN3aXBlcjtcbiAgbGV0IGFjdGl2ZUluZGV4ID0gbmV3QWN0aXZlSW5kZXg7XG4gIGxldCBzbmFwSW5kZXg7XG4gIGNvbnN0IGdldFZpcnR1YWxSZWFsSW5kZXggPSBhSW5kZXggPT4ge1xuICAgIGxldCByZWFsSW5kZXggPSBhSW5kZXggLSBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmU7XG4gICAgaWYgKHJlYWxJbmRleCA8IDApIHtcbiAgICAgIHJlYWxJbmRleCA9IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggKyByZWFsSW5kZXg7XG4gICAgfVxuICAgIGlmIChyZWFsSW5kZXggPj0gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgcmVhbEluZGV4IC09IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiByZWFsSW5kZXg7XG4gIH07XG4gIGlmICh0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgYWN0aXZlSW5kZXggPSBnZXRBY3RpdmVJbmRleEJ5VHJhbnNsYXRlKHN3aXBlcik7XG4gIH1cbiAgaWYgKHNuYXBHcmlkLmluZGV4T2YodHJhbnNsYXRlKSA+PSAwKSB7XG4gICAgc25hcEluZGV4ID0gc25hcEdyaWQuaW5kZXhPZih0cmFuc2xhdGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNraXAgPSBNYXRoLm1pbihwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBhY3RpdmVJbmRleCk7XG4gICAgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKGFjdGl2ZUluZGV4IC0gc2tpcCkgLyBwYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICB9XG4gIGlmIChzbmFwSW5kZXggPj0gc25hcEdyaWQubGVuZ3RoKSBzbmFwSW5kZXggPSBzbmFwR3JpZC5sZW5ndGggLSAxO1xuICBpZiAoYWN0aXZlSW5kZXggPT09IHByZXZpb3VzSW5kZXggJiYgIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgIGlmIChzbmFwSW5kZXggIT09IHByZXZpb3VzU25hcEluZGV4KSB7XG4gICAgICBzd2lwZXIuc25hcEluZGV4ID0gc25hcEluZGV4O1xuICAgICAgc3dpcGVyLmVtaXQoJ3NuYXBJbmRleENoYW5nZScpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFjdGl2ZUluZGV4ID09PSBwcmV2aW91c0luZGV4ICYmIHN3aXBlci5wYXJhbXMubG9vcCAmJiBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgIHN3aXBlci5yZWFsSW5kZXggPSBnZXRWaXJ0dWFsUmVhbEluZGV4KGFjdGl2ZUluZGV4KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZ3JpZEVuYWJsZWQgPSBzd2lwZXIuZ3JpZCAmJiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMTtcblxuICAvLyBHZXQgcmVhbCBpbmRleFxuICBsZXQgcmVhbEluZGV4O1xuICBpZiAoc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBwYXJhbXMubG9vcCkge1xuICAgIHJlYWxJbmRleCA9IGdldFZpcnR1YWxSZWFsSW5kZXgoYWN0aXZlSW5kZXgpO1xuICB9IGVsc2UgaWYgKGdyaWRFbmFibGVkKSB7XG4gICAgY29uc3QgZmlyc3RTbGlkZUluQ29sdW1uID0gc3dpcGVyLnNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmNvbHVtbiA9PT0gYWN0aXZlSW5kZXgpWzBdO1xuICAgIGxldCBhY3RpdmVTbGlkZUluZGV4ID0gcGFyc2VJbnQoZmlyc3RTbGlkZUluQ29sdW1uLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgIGlmIChOdW1iZXIuaXNOYU4oYWN0aXZlU2xpZGVJbmRleCkpIHtcbiAgICAgIGFjdGl2ZVNsaWRlSW5kZXggPSBNYXRoLm1heChzd2lwZXIuc2xpZGVzLmluZGV4T2YoZmlyc3RTbGlkZUluQ29sdW1uKSwgMCk7XG4gICAgfVxuICAgIHJlYWxJbmRleCA9IE1hdGguZmxvb3IoYWN0aXZlU2xpZGVJbmRleCAvIHBhcmFtcy5ncmlkLnJvd3MpO1xuICB9IGVsc2UgaWYgKHN3aXBlci5zbGlkZXNbYWN0aXZlSW5kZXhdKSB7XG4gICAgY29uc3Qgc2xpZGVJbmRleCA9IHN3aXBlci5zbGlkZXNbYWN0aXZlSW5kZXhdLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbiAgICBpZiAoc2xpZGVJbmRleCkge1xuICAgICAgcmVhbEluZGV4ID0gcGFyc2VJbnQoc2xpZGVJbmRleCwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVhbEluZGV4ID0gYWN0aXZlSW5kZXg7XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICBwcmV2aW91c1NuYXBJbmRleCxcbiAgICBzbmFwSW5kZXgsXG4gICAgcHJldmlvdXNSZWFsSW5kZXgsXG4gICAgcmVhbEluZGV4LFxuICAgIHByZXZpb3VzSW5kZXgsXG4gICAgYWN0aXZlSW5kZXhcbiAgfSk7XG4gIGlmIChzd2lwZXIuaW5pdGlhbGl6ZWQpIHtcbiAgICBwcmVsb2FkKHN3aXBlcik7XG4gIH1cbiAgc3dpcGVyLmVtaXQoJ2FjdGl2ZUluZGV4Q2hhbmdlJyk7XG4gIHN3aXBlci5lbWl0KCdzbmFwSW5kZXhDaGFuZ2UnKTtcbiAgaWYgKHN3aXBlci5pbml0aWFsaXplZCB8fCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCkge1xuICAgIGlmIChwcmV2aW91c1JlYWxJbmRleCAhPT0gcmVhbEluZGV4KSB7XG4gICAgICBzd2lwZXIuZW1pdCgncmVhbEluZGV4Q2hhbmdlJyk7XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCdzbGlkZUNoYW5nZScpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNsaWNrZWRTbGlkZShlbCwgcGF0aCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBsZXQgc2xpZGUgPSBlbC5jbG9zZXN0KGAuJHtwYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICBpZiAoIXNsaWRlICYmIHN3aXBlci5pc0VsZW1lbnQgJiYgcGF0aCAmJi
2BwYXRoLmxlbmd0aCA+IDEgJiYgcGF0aC5pbmNsdWRlcyhlbCkpIHtcbiAgICBbLi4ucGF0aC5zbGljZShwYXRoLmluZGV4T2YoZWwpICsgMSwgcGF0aC5sZW5ndGgpXS5mb3JFYWNoKHBhdGhFbCA9PiB7XG4gICAgICBpZiAoIXNsaWRlICYmIHBhdGhFbC5tYXRjaGVzICYmIHBhdGhFbC5tYXRjaGVzKGAuJHtwYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApKSB7XG4gICAgICAgIHNsaWRlID0gcGF0aEVsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGxldCBzbGlkZUZvdW5kID0gZmFsc2U7XG4gIGxldCBzbGlkZUluZGV4O1xuICBpZiAoc2xpZGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN3aXBlci5zbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChzd2lwZXIuc2xpZGVzW2ldID09PSBzbGlkZSkge1xuICAgICAgICBzbGlkZUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc2xpZGUgJiYgc2xpZGVGb3VuZCkge1xuICAgIHN3aXBlci5jbGlja2VkU2xpZGUgPSBzbGlkZTtcbiAgICBpZiAoc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHtcbiAgICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSBwYXJzZUludChzbGlkZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JyksIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmNsaWNrZWRJbmRleCA9IHNsaWRlSW5kZXg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3aXBlci5jbGlja2VkU2xpZGUgPSB1bmRlZmluZWQ7XG4gICAgc3dpcGVyLmNsaWNrZWRJbmRleCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHBhcmFtcy5zbGlkZVRvQ2xpY2tlZFNsaWRlICYmIHN3aXBlci5jbGlja2VkSW5kZXggIT09IHVuZGVmaW5lZCAmJiBzd2lwZXIuY2xpY2tlZEluZGV4ICE9PSBzd2lwZXIuYWN0aXZlSW5kZXgpIHtcbiAgICBzd2lwZXIuc2xpZGVUb0NsaWNrZWRTbGlkZSgpO1xuICB9XG59XG5cbnZhciB1cGRhdGUgPSB7XG4gIHVwZGF0ZVNpemUsXG4gIHVwZGF0ZVNsaWRlcyxcbiAgdXBkYXRlQXV0b0hlaWdodCxcbiAgdXBkYXRlU2xpZGVzT2Zmc2V0LFxuICB1cGRhdGVTbGlkZXNQcm9ncmVzcyxcbiAgdXBkYXRlUHJvZ3Jlc3MsXG4gIHVwZGF0ZVNsaWRlc0NsYXNzZXMsXG4gIHVwZGF0ZUFjdGl2ZUluZGV4LFxuICB1cGRhdGVDbGlja2VkU2xpZGVcbn07XG5cbmZ1bmN0aW9uIGdldFN3aXBlclRyYW5zbGF0ZShheGlzKSB7XG4gIGlmIChheGlzID09PSB2b2lkIDApIHtcbiAgICBheGlzID0gdGhpcy5pc0hvcml6b250YWwoKSA/ICd4JyA6ICd5JztcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHRyYW5zbGF0ZSxcbiAgICB3cmFwcGVyRWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKHBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB7XG4gICAgcmV0dXJuIHJ0bCA/IC10cmFuc2xhdGUgOiB0cmFuc2xhdGU7XG4gIH1cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZTtcbiAgfVxuICBsZXQgY3VycmVudFRyYW5zbGF0ZSA9IGdldFRyYW5zbGF0ZSh3cmFwcGVyRWwsIGF4aXMpO1xuICBjdXJyZW50VHJhbnNsYXRlICs9IHN3aXBlci5jc3NPdmVyZmxvd0FkanVzdG1lbnQoKTtcbiAgaWYgKHJ0bCkgY3VycmVudFRyYW5zbGF0ZSA9IC1jdXJyZW50VHJhbnNsYXRlO1xuICByZXR1cm4gY3VycmVudFRyYW5zbGF0ZSB8fCAwO1xufVxuXG5mdW5jdGlvbiBzZXRUcmFuc2xhdGUodHJhbnNsYXRlLCBieUNvbnRyb2xsZXIpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHBhcmFtcyxcbiAgICB3cmFwcGVyRWwsXG4gICAgcHJvZ3Jlc3NcbiAgfSA9IHN3aXBlcjtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGNvbnN0IHogPSAwO1xuICBpZiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgeCA9IHJ0bCA/IC10cmFuc2xhdGUgOiB0cmFuc2xhdGU7XG4gIH0gZWxzZSB7XG4gICAgeSA9IHRyYW5zbGF0ZTtcbiAgfVxuICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykge1xuICAgIHggPSBNYXRoLmZsb29yKHgpO1xuICAgIHkgPSBNYXRoLmZsb29yKHkpO1xuICB9XG4gIHN3aXBlci5wcmV2aW91c1RyYW5zbGF0ZSA9IHN3aXBlci50cmFuc2xhdGU7XG4gIHN3aXBlci50cmFuc2xhdGUgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyB4IDogeTtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgd3JhcHBlckVsW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IC14IDogLXk7XG4gIH0gZWxzZSBpZiAoIXBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB7XG4gICAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgICAgeCAtPSBzd2lwZXIuY3NzT3ZlcmZsb3dBZGp1c3RtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHkgLT0gc3dpcGVyLmNzc092ZXJmbG93QWRqdXN0bWVudCgpO1xuICAgIH1cbiAgICB3cmFwcGVyRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7eH1weCwgJHt5fXB4LCAke3p9cHgpYDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHByb2dyZXNzXG4gIGxldCBuZXdQcm9ncmVzcztcbiAgY29uc3QgdHJhbnNsYXRlc0RpZmYgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gIGlmICh0cmFuc2xhdGVzRGlmZiA9PT0gMCkge1xuICAgIG5ld1Byb2dyZXNzID0gMDtcbiAgfSBlbHNlIHtcbiAgICBuZXdQcm9ncmVzcyA9ICh0cmFuc2xhdGUgLSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIC8gdHJhbnNsYXRlc0RpZmY7XG4gIH1cbiAgaWYgKG5ld1Byb2dyZXNzICE9PSBwcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpO1xuICB9XG4gI
2HN3aXBlci5lbWl0KCdzZXRUcmFuc2xhdGUnLCBzd2lwZXIudHJhbnNsYXRlLCBieUNvbnRyb2xsZXIpO1xufVxuXG5mdW5jdGlvbiBtaW5UcmFuc2xhdGUoKSB7XG4gIHJldHVybiAtdGhpcy5zbmFwR3JpZFswXTtcbn1cblxuZnVuY3Rpb24gbWF4VHJhbnNsYXRlKCkge1xuICByZXR1cm4gLXRoaXMuc25hcEdyaWRbdGhpcy5zbmFwR3JpZC5sZW5ndGggLSAxXTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlVG8odHJhbnNsYXRlLCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCB0cmFuc2xhdGVCb3VuZHMsIGludGVybmFsKSB7XG4gIGlmICh0cmFuc2xhdGUgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZSA9IDA7XG4gIH1cbiAgaWYgKHNwZWVkID09PSB2b2lkIDApIHtcbiAgICBzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkO1xuICB9XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgaWYgKHRyYW5zbGF0ZUJvdW5kcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhbnNsYXRlQm91bmRzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHdyYXBwZXJFbFxuICB9ID0gc3dpcGVyO1xuICBpZiAoc3dpcGVyLmFuaW1hdGluZyAmJiBwYXJhbXMucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG1pblRyYW5zbGF0ZSA9IHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgY29uc3QgbWF4VHJhbnNsYXRlID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpO1xuICBsZXQgbmV3VHJhbnNsYXRlO1xuICBpZiAodHJhbnNsYXRlQm91bmRzICYmIHRyYW5zbGF0ZSA+IG1pblRyYW5zbGF0ZSkgbmV3VHJhbnNsYXRlID0gbWluVHJhbnNsYXRlO2Vsc2UgaWYgKHRyYW5zbGF0ZUJvdW5kcyAmJiB0cmFuc2xhdGUgPCBtYXhUcmFuc2xhdGUpIG5ld1RyYW5zbGF0ZSA9IG1heFRyYW5zbGF0ZTtlbHNlIG5ld1RyYW5zbGF0ZSA9IHRyYW5zbGF0ZTtcblxuICAvLyBVcGRhdGUgcHJvZ3Jlc3NcbiAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKG5ld1RyYW5zbGF0ZSk7XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIGNvbnN0IGlzSCA9IHN3aXBlci5pc0hvcml6b250YWwoKTtcbiAgICBpZiAoc3BlZWQgPT09IDApIHtcbiAgICAgIHdyYXBwZXJFbFtpc0ggPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSAtbmV3VHJhbnNsYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXN3aXBlci5zdXBwb3J0LnNtb290aFNjcm9sbCkge1xuICAgICAgICBhbmltYXRlQ1NTTW9kZVNjcm9sbCh7XG4gICAgICAgICAgc3dpcGVyLFxuICAgICAgICAgIHRhcmdldFBvc2l0aW9uOiAtbmV3VHJhbnNsYXRlLFxuICAgICAgICAgIHNpZGU6IGlzSCA/ICdsZWZ0JyA6ICd0b3AnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHdyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICAgIFtpc0ggPyAnbGVmdCcgOiAndG9wJ106IC1uZXdUcmFuc2xhdGUsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChzcGVlZCA9PT0gMCkge1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKDApO1xuICAgIHN3aXBlci5zZXRUcmFuc2xhdGUobmV3VHJhbnNsYXRlKTtcbiAgICBpZiAocnVuQ2FsbGJhY2tzKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jywgc3BlZWQsIGludGVybmFsKTtcbiAgICAgIHN3aXBlci5lbWl0KCd0cmFuc2l0aW9uRW5kJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKHNwZWVkKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1RyYW5zbGF0ZSk7XG4gICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcsIHNwZWVkLCBpbnRlcm5hbCk7XG4gICAgICBzd2lwZXIuZW1pdCgndHJhbnNpdGlvblN0YXJ0Jyk7XG4gICAgfVxuICAgIGlmICghc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgc3dpcGVyLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICBpZiAoIXN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpIHtcbiAgICAgICAgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25FbmQoZSkge1xuICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHJldHVybjtcbiAgICAgICAgICBzd2lwZXIud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgICBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgICBkZWxldGUgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZDtcbiAgICAgICAgICBzd2lwZXIuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgICAgICAgc3dpcGVyLmVtaXQoJ3RyYW5zaXRpb25FbmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBzd2lwZXIud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbnZhciB0cmFuc2xhdGUgPSB7XG4gIGdldFRyYW5zbGF0ZTogZ2V0U3dpcGVyVHJhbnNsYXRlLFxuICBzZXRUcmFuc2xhdGUsXG4gIG1pblRyYW5zbGF0ZSxcbiAgbWF4VHJhbnNsYXRlLFxuICB0cmFuc2xhdGVUb1xufTtcblxuZnVuY3Rpb24gc2V0VHJhbnNpdGlvbihkdXJhdGlvbiwgYnlDb250cm9sbGVyKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmICghc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbn1tc2A7XG4gICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS50cmFuc2l0aW9uRGVsYXkgPSBkdXJhdGlvbiA9PT0gMCA/IGAwbXNgIDogJyc7XG4gIH1cbiAgc3dpcGVyLmVtaXQoJ3NldFRyYW5zaXRpb24nLCBkdXJhdGlvbiwgYnlDb250cm9sbGVyKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbkVtaXQoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBydW5DYWxsYmFja3MsXG4gICAgZGlyZWN0aW9uLFxuICAgIHN0ZXBcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBwcmV2aW91c0luZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGxldCBkaXIgPSBkaXJlY3Rpb247XG4gIGlmICghZGlyKSB7XG4gICAgaWYgKGFjdGl2ZUluZGV4ID4gcHJldmlvdXNJbmRleCkgZGlyID0gJ25leHQnO2Vsc2UgaWYgKGFjdGl2ZUluZGV4IDwgcHJldmlvdXNJbmRleCkgZGlyID0gJ3ByZXYnO2Vsc2UgZGlyID0gJ3Jlc2V0JztcbiAgfVxuICBzd2lwZXIuZW1pdChgdHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgaWYgKHJ1bkNhbGxiYWNrcyAmJiBhY3RpdmVJbmRleCAhPT0gcHJldmlvdXNJbmRleCkge1xuICAgIGlmIChkaXIgPT09ICdyZXNldCcpIHtcbiAgICAgIHN3aXBlci5lbWl0KGBzbGlkZVJlc2V0VHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpcGVyLmVtaXQoYHNsaWRlQ2hhbmdlVHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICBpZiAoZGlyID09PSAnbmV4dCcpIHtcbiAgICAgIHN3aXBlci5lbWl0KGBzbGlkZU5leHRUcmFuc2l0aW9uJHtzdGVwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuZW1pdChgc2xpZGVQcmV2VHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICB9XG4gI
2H1cbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBpZiAocGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgaWYgKHBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgc3dpcGVyLnVwZGF0ZUF1dG9IZWlnaHQoKTtcbiAgfVxuICB0cmFuc2l0aW9uRW1pdCh7XG4gICAgc3dpcGVyLFxuICAgIHJ1bkNhbGxiYWNrcyxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3RlcDogJ1N0YXJ0J1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChydW5DYWxsYmFja3MsIGRpcmVjdGlvbikge1xuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXNcbiAgfSA9IHN3aXBlcjtcbiAgc3dpcGVyLmFuaW1hdGluZyA9IGZhbHNlO1xuICBpZiAocGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG4gIHRyYW5zaXRpb25FbWl0KHtcbiAgICBzd2lwZXIsXG4gICAgcnVuQ2FsbGJhY2tzLFxuICAgIGRpcmVjdGlvbixcbiAgICBzdGVwOiAnRW5kJ1xuICB9KTtcbn1cblxudmFyIHRyYW5zaXRpb24gPSB7XG4gIHNldFRyYW5zaXRpb24sXG4gIHRyYW5zaXRpb25TdGFydCxcbiAgdHJhbnNpdGlvbkVuZFxufTtcblxuZnVuY3Rpb24gc2xpZGVUbyhpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwsIGluaXRpYWwpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGluZGV4ID09PSAnc3RyaW5nJykge1xuICAgIGluZGV4ID0gcGFyc2VJbnQoaW5kZXgsIDEwKTtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBsZXQgc2xpZGVJbmRleCA9IGluZGV4O1xuICBpZiAoc2xpZGVJbmRleCA8IDApIHNsaWRlSW5kZXggPSAwO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHNuYXBHcmlkLFxuICAgIHNsaWRlc0dyaWQsXG4gICAgcHJldmlvdXNJbmRleCxcbiAgICBhY3RpdmVJbmRleCxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICB3cmFwcGVyRWwsXG4gICAgZW5hYmxlZFxuICB9ID0gc3dpcGVyO1xuICBpZiAoIWVuYWJsZWQgJiYgIWludGVybmFsICYmICFpbml0aWFsIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgc3dpcGVyLmFuaW1hdGluZyAmJiBwYXJhbXMucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3BlZWQgPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICB9XG4gIGNvbnN0IHNraXAgPSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgc2xpZGVJbmRleCk7XG4gIGxldCBzbmFwSW5kZXggPSBza2lwICsgTWF0aC5mbG9vcigoc2xpZGVJbmRleCAtIHNraXApIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gIGlmIChzbmFwSW5kZXggPj0gc25hcEdyaWQubGVuZ3RoKSBzbmFwSW5kZXggPSBzbmFwR3JpZC5sZW5ndGggLSAxO1xuICBjb25zdCB0cmFuc2xhdGUgPSAtc25hcEdyaWRbc25hcEluZGV4XTtcbiAgLy8gTm9ybWFsaXplIHNsaWRlSW5kZXhcbiAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkVHJhbnNsYXRlID0gLU1hdGguZmxvb3IodHJhbnNsYXRlICogMTAwKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRHcmlkID0gTWF0aC5mbG9vcihzbGlkZXNHcmlkW2ldICogMTAwKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRHcmlkTmV4dCA9IE1hdGguZmxvb3Ioc2xpZGVzR3JpZFtpICsgMV0gKiAxMDApO1xuICAgICAgaWYgKHR5cGVvZiBzbGlkZXNHcmlkW2kgKyAxXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRUcmFuc2xhdGUgPj0gbm9ybWFsaXplZEdyaWQgJiYgbm9ybWFsaXplZFRyYW5zbGF0ZSA8IG5vcm1hbGl6ZWRHcmlkTmV4dCAtIChub3JtYWxpemVkR3JpZE5leHQgLSBub3JtYWxpemVkR3JpZCkgLyAyKSB7XG4gICAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBub3JtYWxpemVkR3JpZCAmJiBub3JtYWxpemVkVHJhbnNsYXRlIDwgbm9ybWFsaXplZEdyaWROZXh0KSB7XG4gICAgICAgICAgc2xpZGVJbmRleCA9IGkgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRUcmFuc2xhdGUgPj0gbm9ybWFsaXplZEdyaWQpIHtcbiAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIERpcmVjdGlvbnMgbG9ja3NcbiAgaWYgKHN3aXBlci5pbml0aWFsaXplZCAmJiBzbGlkZUluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgIGlmICghc3dpcGVyLmFsbG93U2xpZGVOZXh0ICYmIChydGwgPyB0cmFuc2xhdGUgPiBzd2lwZXIudHJhbnNsYXRlICYmIHRyYW5zbGF0ZSA+IHN3aXBlci5taW5UcmFuc2xhdGUoKSA6IHRyYW5zbGF0ZSA8IHN3aXBlci50cmFuc2xhdGUgJiYgdHJhbnNsYXRlIDwgc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlUHJldiAmJiB0cmFuc2xhdGUgPiBzd2lwZXIudHJhbnNsYXRlICYmIHRyYW5zbGF0ZSA+IHN3aXBlci5tYXhUcmFuc2xhdGUoKSkge1xuICAgICAgaWYgKChhY3RpdmVJbmRleCB8fCAwKSAhPT0gc2xpZGVJbmRleCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChzbGlkZUluZGV4ICE9PSAocHJldmlvdXNJbmRleCB8fCAwKSAmJi
2BydW5DYWxsYmFja3MpIHtcbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlU2xpZGVDaGFuZ2VTdGFydCcpO1xuICB9XG5cbiAgLy8gVXBkYXRlIHByb2dyZXNzXG4gIHN3aXBlci51cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpO1xuICBsZXQgZGlyZWN0aW9uO1xuICBpZiAoc2xpZGVJbmRleCA+IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAnbmV4dCc7ZWxzZSBpZiAoc2xpZGVJbmRleCA8IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAncHJldic7ZWxzZSBkaXJlY3Rpb24gPSAncmVzZXQnO1xuXG4gIC8vIFVwZGF0ZSBJbmRleFxuICBpZiAocnRsICYmIC10cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUgfHwgIXJ0bCAmJiB0cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoc2xpZGVJbmRleCk7XG4gICAgLy8gVXBkYXRlIEhlaWdodFxuICAgIGlmIChwYXJhbXMuYXV0b0hlaWdodCkge1xuICAgICAgc3dpcGVyLnVwZGF0ZUF1dG9IZWlnaHQoKTtcbiAgICB9XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICBpZiAocGFyYW1zLmVmZmVjdCAhPT0gJ3NsaWRlJykge1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGUpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAncmVzZXQnKSB7XG4gICAgICBzd2lwZXIudHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICAgIHN3aXBlci50cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIGNvbnN0IGlzSCA9IHN3aXBlci5pc0hvcml6b250YWwoKTtcbiAgICBjb25zdCB0ID0gcnRsID8gdHJhbnNsYXRlIDogLXRyYW5zbGF0ZTtcbiAgICBpZiAoc3BlZWQgPT09IDApIHtcbiAgICAgIGNvbnN0IGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICAgICAgaWYgKGlzVmlydHVhbCkge1xuICAgICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlID0gJ25vbmUnO1xuICAgICAgICBzd2lwZXIuX2ltbWVkaWF0ZVZpcnR1YWwgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzVmlydHVhbCAmJiAhc3dpcGVyLl9jc3NNb2RlVmlydHVhbEluaXRpYWxTZXQgJiYgc3dpcGVyLnBhcmFtcy5pbml0aWFsU2xpZGUgPiAwKSB7XG4gICAgICAgIHN3aXBlci5fY3NzTW9kZVZpcnR1YWxJbml0aWFsU2V0ID0gdHJ1ZTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB3cmFwcGVyRWxbaXNIID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddID0gdDtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cmFwcGVyRWxbaXNIID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddID0gdDtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ZpcnR1YWwpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlID0gJyc7XG4gICAgICAgICAgc3dpcGVyLl9pbW1lZGlhdGVWaXJ0dWFsID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXN3aXBlci5zdXBwb3J0LnNtb290aFNjcm9sbCkge1xuICAgICAgICBhbmltYXRlQ1NTTW9kZVNjcm9sbCh7XG4gICAgICAgICAgc3dpcGVyLFxuICAgICAgICAgIHRhcmdldFBvc2l0aW9uOiB0LFxuICAgICAgICAgIHNpZGU6IGlzSCA/ICdsZWZ0JyA6ICd0b3AnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHdyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICAgIFtpc0ggPyAnbGVmdCcgOiAndG9wJ106IHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHN3aXBlci5zZXRUcmFuc2l0aW9uKHNwZWVkKTtcbiAgc3dpcGVyLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGUpO1xuICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoc2xpZGVJbmRleCk7XG4gIHN3aXBlci51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gIHN3aXBlci5lbWl0KCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCBzcGVlZCwgaW50ZXJuYWwpO1xuICBzd2lwZXIudHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgc3dpcGVyLnRyYW5zaXRpb25FbmQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuICB9IGVsc2UgaWYgKCFzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgc3dpcGVyLmFuaW1hdGluZyA9IHRydWU7XG4gICAgaWYgKCFzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpIHtcbiAgICAgIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25FbmQoZSkge1xuICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIGlmIChlLnRhcmdldCAhPT0gdGhpcykgcmV0dXJuO1xuICAgICAgICBzd2lwZXIud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBudWxsO1xuICAgICAgICBkZWxldGUgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kO1xuICAgICAgICBzd2lwZXIudHJhbnNpdGlvbkVuZChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG4gICAgICB9O1xuICAgIH1cbiAgICBzd2lwZXIud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBzbGlkZVRvTG9vcChpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGluZGV4ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGluZGV4QXNOdW1iZXIgPSBwYXJzZUludChpbmRleCwgMTApO1xuICAgIGluZGV4ID0gaW5kZXhBc051bWJlcjtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIHNwZWVkID09PSAndW5kZWZpbmVkJykge1xuICAgIHNwZWVkID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgfVxuICBjb25zdCBncmlkRW5hYmxlZCA9IHN3aXBlci5ncmlkICYmIHN3aXBlci5wYXJhbXMuZ3JpZCAmJiBzd2lwZXIucGFyYW1zLmdyaWQucm93cyA+IDE7XG4gIGxldCBuZXdJbmRleCA9IGluZGV4O1xuICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgaWYgKHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIG5ld0luZGV4ID0gbmV3SW5kZXggKyBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0YXJnZXRTbGlkZUluZGV4O1xuICAgICAgaWYgKGdyaWRFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBuZXdJbmRleCAqIHN3aXBlci5wYXJhbXMuZ3JpZC5yb3dzO1xuICAgICAgICB0YXJnZXRTbGlkZUluZGV4ID0gc3dpcGVyLnNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSAqIDEgPT09IHNsaWRlSW5kZXgpWzBdLmNvbHVtbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgI
2HRhcmdldFNsaWRlSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleEJ5RGF0YShuZXdJbmRleCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb2xzID0gZ3JpZEVuYWJsZWQgPyBNYXRoLmNlaWwoc3dpcGVyLnNsaWRlcy5sZW5ndGggLyBzd2lwZXIucGFyYW1zLmdyaWQucm93cykgOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2VudGVyZWRTbGlkZXNcbiAgICAgIH0gPSBzd2lwZXIucGFyYW1zO1xuICAgICAgbGV0IHNsaWRlc1BlclZpZXcgPSBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgICBpZiAoc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHNsaWRlc1BlclZpZXcgPSBzd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsaWRlc1BlclZpZXcgPSBNYXRoLmNlaWwocGFyc2VGbG9hdChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcsIDEwKSk7XG4gICAgICAgIGlmIChjZW50ZXJlZFNsaWRlcyAmJiBzbGlkZXNQZXJWaWV3ICUgMiA9PT0gMCkge1xuICAgICAgICAgIHNsaWRlc1BlclZpZXcgPSBzbGlkZXNQZXJWaWV3ICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IG5lZWRMb29wRml4ID0gY29scyAtIHRhcmdldFNsaWRlSW5kZXggPCBzbGlkZXNQZXJWaWV3O1xuICAgICAgaWYgKGNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAgIG5lZWRMb29wRml4ID0gbmVlZExvb3BGaXggfHwgdGFyZ2V0U2xpZGVJbmRleCA8IE1hdGguY2VpbChzbGlkZXNQZXJWaWV3IC8gMik7XG4gICAgICB9XG4gICAgICBpZiAoaW50ZXJuYWwgJiYgY2VudGVyZWRTbGlkZXMgJiYgc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgIWdyaWRFbmFibGVkKSB7XG4gICAgICAgIG5lZWRMb29wRml4ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExvb3BGaXgpIHtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gY2VudGVyZWRTbGlkZXMgPyB0YXJnZXRTbGlkZUluZGV4IDwgc3dpcGVyLmFjdGl2ZUluZGV4ID8gJ3ByZXYnIDogJ25leHQnIDogdGFyZ2V0U2xpZGVJbmRleCAtIHN3aXBlci5hY3RpdmVJbmRleCAtIDEgPCBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgPyAnbmV4dCcgOiAncHJldic7XG4gICAgICAgIHN3aXBlci5sb29wRml4KHtcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgc2xpZGVUbzogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmVTbGlkZUluZGV4OiBkaXJlY3Rpb24gPT09ICduZXh0JyA/IHRhcmdldFNsaWRlSW5kZXggKyAxIDogdGFyZ2V0U2xpZGVJbmRleCAtIGNvbHMgKyAxLFxuICAgICAgICAgIHNsaWRlUmVhbEluZGV4OiBkaXJlY3Rpb24gPT09ICduZXh0JyA/IHN3aXBlci5yZWFsSW5kZXggOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZ3JpZEVuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IG5ld0luZGV4ICogc3dpcGVyLnBhcmFtcy5ncmlkLnJvd3M7XG4gICAgICAgIG5ld0luZGV4ID0gc3dpcGVyLnNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSAqIDEgPT09IHNsaWRlSW5kZXgpWzBdLmNvbHVtbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0luZGV4ID0gc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEobmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHN3aXBlci5zbGlkZVRvKG5ld0luZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG4gIH0pO1xuICByZXR1cm4gc3dpcGVyO1xufVxuXG4vKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIHNsaWRlTmV4dChzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCkge1xuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkLFxuICAgIHBhcmFtcyxcbiAgICBhbmltYXRpbmdcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybiBzd2lwZXI7XG4gIGlmICh0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3BlZWQgPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICB9XG4gIGxldCBwZXJHcm91cCA9IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLnNsaWRlc1Blckdyb3VwID09PSAxICYmIHBhcmFtcy5zbGlkZXNQZXJHcm91cEF1dG8pIHtcbiAgICBwZXJHcm91cCA9IE1hdGgubWF4KHN3aXBlci5zbGlkZXNQZXJWaWV3RHluYW1pYygnY3VycmVudCcsIHRydWUpLCAxKTtcbiAgfVxuICBjb25zdCBpbmNyZW1lbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IHBlckdyb3VwO1xuICBjb25zdCBpc1ZpcnR1YWwgPSBzd2lwZXIudmlydHVhbCAmJiBwYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoYW5pbWF0aW5nICYmICFpc1ZpcnR1YWwgJiYgcGFyYW1zLmxvb3BQcmV2ZW50c1NsaWRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBzd2lwZXIubG9vcEZpeCh7XG4gICAgICBkaXJlY3Rpb246ICduZXh0J1xuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHN3aXBlci5fY2xpZW50TGVmdCA9IHN3aXBlci53cmFwcGVyRWwuY2xpZW50TGVmdDtcbiAgICBpZiAoc3dpcGVyLmFjdGl2ZUluZGV4ID09PSBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDEgJiYgcGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCArIGluY3JlbWVudCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gI
2H1cbiAgaWYgKHBhcmFtcy5yZXdpbmQgJiYgc3dpcGVyLmlzRW5kKSB7XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKDAsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbiAgfVxuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4ICsgaW5jcmVtZW50LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59XG5cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiAqL1xuZnVuY3Rpb24gc2xpZGVQcmV2KHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHJ0bFRyYW5zbGF0ZSxcbiAgICBlbmFibGVkLFxuICAgIGFuaW1hdGluZ1xuICB9ID0gc3dpcGVyO1xuICBpZiAoIWVuYWJsZWQgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuIHN3aXBlcjtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzcGVlZCA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIH1cbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgaWYgKGFuaW1hdGluZyAmJiAhaXNWaXJ0dWFsICYmIHBhcmFtcy5sb29wUHJldmVudHNTbGlkaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgZGlyZWN0aW9uOiAncHJldidcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBzd2lwZXIuX2NsaWVudExlZnQgPSBzd2lwZXIud3JhcHBlckVsLmNsaWVudExlZnQ7XG4gIH1cbiAgY29uc3QgdHJhbnNsYXRlID0gcnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBmdW5jdGlvbiBub3JtYWxpemUodmFsKSB7XG4gICAgaWYgKHZhbCA8IDApIHJldHVybiAtTWF0aC5mbG9vcihNYXRoLmFicyh2YWwpKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuICB9XG4gIGNvbnN0IG5vcm1hbGl6ZWRUcmFuc2xhdGUgPSBub3JtYWxpemUodHJhbnNsYXRlKTtcbiAgY29uc3Qgbm9ybWFsaXplZFNuYXBHcmlkID0gc25hcEdyaWQubWFwKHZhbCA9PiBub3JtYWxpemUodmFsKSk7XG4gIGxldCBwcmV2U25hcCA9IHNuYXBHcmlkW25vcm1hbGl6ZWRTbmFwR3JpZC5pbmRleE9mKG5vcm1hbGl6ZWRUcmFuc2xhdGUpIC0gMV07XG4gIGlmICh0eXBlb2YgcHJldlNuYXAgPT09ICd1bmRlZmluZWQnICYmIHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgbGV0IHByZXZTbmFwSW5kZXg7XG4gICAgc25hcEdyaWQuZm9yRWFjaCgoc25hcCwgc25hcEluZGV4KSA9PiB7XG4gICAgICBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBzbmFwKSB7XG4gICAgICAgIC8vIHByZXZTbmFwID0gc25hcDtcbiAgICAgICAgcHJldlNuYXBJbmRleCA9IHNuYXBJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIHByZXZTbmFwSW5kZXggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBwcmV2U25hcCA9IHNuYXBHcmlkW3ByZXZTbmFwSW5kZXggPiAwID8gcHJldlNuYXBJbmRleCAtIDEgOiBwcmV2U25hcEluZGV4XTtcbiAgICB9XG4gIH1cbiAgbGV0IHByZXZJbmRleCA9IDA7XG4gIGlmICh0eXBlb2YgcHJldlNuYXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcHJldkluZGV4ID0gc2xpZGVzR3JpZC5pbmRleE9mKHByZXZTbmFwKTtcbiAgICBpZiAocHJldkluZGV4IDwgMCkgcHJldkluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4IC0gMTtcbiAgICBpZiAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyAmJiBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDEgJiYgcGFyYW1zLnNsaWRlc1Blckdyb3VwQXV0bykge1xuICAgICAgcHJldkluZGV4ID0gcHJldkluZGV4IC0gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCdwcmV2aW91cycsIHRydWUpICsgMTtcbiAgICAgIHByZXZJbmRleCA9IE1hdGgubWF4KHByZXZJbmRleCwgMCk7XG4gICAgfVxuICB9XG4gIGlmIChwYXJhbXMucmV3aW5kICYmIHN3aXBlci5pc0JlZ2lubmluZykge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IHN3aXBlci5wYXJhbXMudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBzd2lwZXIudmlydHVhbCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggLSAxIDogc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBzd2lwZXIuc2xpZGVUbyhsYXN0SW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbiAgfSBlbHNlIGlmIChwYXJhbXMubG9vcCAmJiBzd2lwZXIuYWN0aXZlSW5kZXggPT09IDAgJiYgcGFyYW1zLmNzc01vZGUpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc3dpcGVyLnNsaWRlVG8ocHJldkluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKHByZXZJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufVxuXG4vKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIHNsaWRlUmVzZXQoc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpIHtcbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIHNwZWVkID09PSAndW5kZWZpbmVkJykge1xuICAgIHNwZWVkID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgfVxuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59XG5cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiAqL1xuZnVuY3Rpb24gc2xpZGVUb0Nsb3Nlc3Qoc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwsIHRocmVzaG9sZCkge1xuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgIHRocmVzaG9sZCA9IDAuNTtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIHNwZWVkID09PSAndW5kZWZpbmVkJykge1xuICAgIHNwZWVkID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgfVxuICBsZXQgaW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gIGNvbnN0IHNraXAgPSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgaW5kZXgpO1xuICBjb25zdCBzbmFwSW5kZXggPSBza2lwICsgTWF0aC5mbG9vcigoaW5kZXggLSBza2lwKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBpZiAodHJhbnNsYXRlID49IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdHJhbnNsYXRlIGlzIG9uIG9yIGFmdGVyIHRoZSBjdXJyZW50IHNuYXAgaW5kZXgsIHNvIHRoZSBjaG9pY2VcbiAgICAvLyBpcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGluZGV4IGFuZCB0aGUgb25lIGFmdGVyIGl0LlxuICAgIGNvbnN0IGN1cnJlbnRTbmFwID0gc3dpcGVyLnNuYXBHcmlkW3NuYXBJbmRleF07XG4gICAgY29uc3QgbmV4dFNuYXAgPSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4ICsgMV07XG4gICAgaWYgKHRyYW5zbGF0ZSAtIGN1cnJlbnRTbmFwID4gKG5leHRTbmFwIC0gY3VycmVudFNuYXApICogdGhyZXNob2xkKSB7XG4gICAgICBpbmRleCArPSBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgY3VycmVudCB0cmFuc2xhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHNuYXAgaW5kZXgsIHNvIHRoZSBjaG9pY2VcbiAgICAvLyBpcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGluZGV4IGFuZCB0aGUgb25lIGJlZm9yZSBpdC5cbiAgICBjb25zdCBwcmV2U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXggLSAxXTtcbiAgICBjb25zdCBjdXJyZW50U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdO1xuICAgIGlmICh0cmFuc2xhdGUgLSBwcmV2U25hcCA8PSAoY3VycmVudFNuYXAgLSBwcmV2U25hcCkgKiB0aHJlc2hvbGQpIHtcbiAgICAgIGluZGV4IC09IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG4gICAgfVxuICB9XG4gIGluZGV4ID0gTWF0aC5tYXgoaW5kZXgsIDApO1xuICBpbmRleCA9IE1hdGgubWluKGluZGV4LCBzd2lwZXIuc2xpZGVzR3JpZC5sZW5ndGggLSAxKTtcbiAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKGluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59XG5cbmZ1bmN0aW9uIHNsaWRlVG9DbGlja2VkU2xpZGUoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmIChzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgc2xpZGVzRWxcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3Qgc2xpZGVzUGVyVmlldyA9IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgPyBzd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoKSA6
2IHBhcmFtcy5zbGlkZXNQZXJWaWV3O1xuICBsZXQgc2xpZGVUb0luZGV4ID0gc3dpcGVyLmNsaWNrZWRJbmRleDtcbiAgbGV0IHJlYWxJbmRleDtcbiAgY29uc3Qgc2xpZGVTZWxlY3RvciA9IHN3aXBlci5pc0VsZW1lbnQgPyBgc3dpcGVyLXNsaWRlYCA6IGAuJHtwYXJhbXMuc2xpZGVDbGFzc31gO1xuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoc3dpcGVyLmFuaW1hdGluZykgcmV0dXJuO1xuICAgIHJlYWxJbmRleCA9IHBhcnNlSW50KHN3aXBlci5jbGlja2VkU2xpZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpLCAxMCk7XG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgaWYgKHNsaWRlVG9JbmRleCA8IHN3aXBlci5sb29wZWRTbGlkZXMgLSBzbGlkZXNQZXJWaWV3IC8gMiB8fCBzbGlkZVRvSW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIHN3aXBlci5sb29wZWRTbGlkZXMgKyBzbGlkZXNQZXJWaWV3IC8gMikge1xuICAgICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgICAgICBzbGlkZVRvSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleChlbGVtZW50Q2hpbGRyZW4oc2xpZGVzRWwsIGAke3NsaWRlU2VsZWN0b3J9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHtyZWFsSW5kZXh9XCJdYClbMF0pO1xuICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2xpZGVUb0luZGV4ID4gc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBzbGlkZXNQZXJWaWV3KSB7XG4gICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgICAgc2xpZGVUb0luZGV4ID0gc3dpcGVyLmdldFNsaWRlSW5kZXgoZWxlbWVudENoaWxkcmVuKHNsaWRlc0VsLCBgJHtzbGlkZVNlbGVjdG9yfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7cmVhbEluZGV4fVwiXWApWzBdKTtcbiAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICB9XG59XG5cbnZhciBzbGlkZSA9IHtcbiAgc2xpZGVUbyxcbiAgc2xpZGVUb0xvb3AsXG4gIHNsaWRlTmV4dCxcbiAgc2xpZGVQcmV2LFxuICBzbGlkZVJlc2V0LFxuICBzbGlkZVRvQ2xvc2VzdCxcbiAgc2xpZGVUb0NsaWNrZWRTbGlkZVxufTtcblxuZnVuY3Rpb24gbG9vcENyZWF0ZShzbGlkZVJlYWxJbmRleCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc0VsXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghcGFyYW1zLmxvb3AgfHwgc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHJldHVybjtcbiAgY29uc3QgaW5pdFNsaWRlcyA9ICgpID0+IHtcbiAgICBjb25zdCBzbGlkZXMgPSBlbGVtZW50Q2hpbGRyZW4oc2xpZGVzRWwsIGAuJHtwYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICAgIHNsaWRlcy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnLCBpbmRleCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGdyaWRFbmFibGVkID0gc3dpcGVyLmdyaWQgJiYgcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDE7XG4gIGNvbnN0IHNsaWRlc1Blckdyb3VwID0gcGFyYW1zLnNsaWRlc1Blckdyb3VwICogKGdyaWRFbmFibGVkID8gcGFyYW1zLmdyaWQucm93cyA6IDEpO1xuICBjb25zdCBzaG91bGRGaWxsR3JvdXAgPSBzd2lwZXIuc2xpZGVzLmxlbmd0aCAlIHNsaWRlc1Blckdyb3VwICE9PSAwO1xuICBjb25zdCBzaG91bGRGaWxsR3JpZCA9IGdyaWRFbmFibGVkICYmIHN3aXBlci5zbGlkZXMubGVuZ3RoICUgcGFyYW1zLmdyaWQucm93cyAhPT0gMDtcbiAgY29uc3QgYWRkQmxhbmtTbGlkZXMgPSBhbW91bnRPZlNsaWRlcyA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbW91bnRPZlNsaWRlczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBzbGlkZUVsID0gc3dpcGVyLmlzRWxlbWVudCA/IGNyZWF0ZUVsZW1lbnQoJ3N3aXBlci1zbGlkZScsIFtwYXJhbXMuc2xpZGVCbGFua0NsYXNzXSkgOiBjcmVhdGVFbGVtZW50KCdkaXYnLCBbcGFyYW1zLnNsaWRlQ2xhc3MsIHBhcmFtcy5zbGlkZUJsYW5rQ2xhc3NdKTtcbiAgICAgIHN3aXBlci5zbGlkZXNFbC5hcHBlbmQoc2xpZGVFbCk7XG4gICAgfVxuICB9O1xuICBpZiAoc2hvdWxkRmlsbEdyb3VwKSB7XG4gICAgaWYgKHBhcmFtcy5sb29wQWRkQmxhbmtTbGlkZXMpIHtcbiAgICAgIGNvbnN0IHNsaWRlc1RvQWRkID0gc2xpZGVzUGVyR3JvdXAgLSBzd2lwZXIuc2xpZGVzLmxlbmd0aCAlIHNsaWRlc1Blckdyb3VwO1xuICAgICAgYWRkQmxhbmtTbGlkZXMoc2xpZGVzVG9BZGQpO1xuICAgICAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaG93V2FybmluZygnU3dpcGVyIExvb3AgV2FybmluZzogVGhlIG51bWJlciBvZiBzbGlkZXMgaXMgbm90IGV2ZW4gdG8gc2xpZGVzUGVyR3JvdXAsIGxvb3AgbW9kZSBtYXkgbm90IGZ1bmN0aW9uIHByb3Blcmx5LiBZb3UgbmVlZCB0byBhZGQgbW9yZSBzbGlkZXMgKG9yIG1ha2UgZHVwbGljYXRlcywgb3IgZW1wdHkgc2xpZGVzKScpO1xuICAgIH1cbiAgICBpbml0U2xpZGVzKCk7XG4gIH0gZWxzZSBpZiAoc2hvdWxkRmlsbEdyaWQpIHtcbiAgICBpZiAocGFyYW1zLmxvb3BBZGRCbGFua1NsaWRlcykge1xuICAgICAgY29uc3Qgc2xpZGVzVG9BZGQgPSBwYXJhbXMuZ3JpZC5yb3dzIC0gc3dpcGVyLnNsaWRlcy5sZW5ndGggJSBwYXJhbXMuZ3JpZC5yb3dzO1xuICAgICAgYWRkQmxhbmtTbGlkZXMoc2xpZGVzVG9BZGQpO1xuICAgICAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaG93V2FybmluZygnU3dpcGVyIExvb3AgV2FybmluZzogVGhlIG51bWJlciBvZiBzbGlkZXMgaXMgbm90IGV2ZW4gdG8gZ3JpZC5yb3dzLCBsb29wIG1vZGUgbWF5IG5vdCBmdW5jdGlvbiBwcm9wZXJseS4gWW91IG5lZWQgdG8gYWRkIG1vcmUgc2xpZGVzIChvciBtYWtlIGR1cGxpY2F0ZXMsIG9yIGVt
2cHR5IHNsaWRlcyknKTtcbiAgICB9XG4gICAgaW5pdFNsaWRlcygpO1xuICB9IGVsc2Uge1xuICAgIGluaXRTbGlkZXMoKTtcbiAgfVxuICBzd2lwZXIubG9vcEZpeCh7XG4gICAgc2xpZGVSZWFsSW5kZXgsXG4gICAgZGlyZWN0aW9uOiBwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyB1bmRlZmluZWQgOiAnbmV4dCdcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGxvb3BGaXgoX3RlbXApIHtcbiAgbGV0IHtcbiAgICBzbGlkZVJlYWxJbmRleCxcbiAgICBzbGlkZVRvID0gdHJ1ZSxcbiAgICBkaXJlY3Rpb24sXG4gICAgc2V0VHJhbnNsYXRlLFxuICAgIGFjdGl2ZVNsaWRlSW5kZXgsXG4gICAgYnlDb250cm9sbGVyLFxuICAgIGJ5TW91c2V3aGVlbFxuICB9ID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmICghc3dpcGVyLnBhcmFtcy5sb29wKSByZXR1cm47XG4gIHN3aXBlci5lbWl0KCdiZWZvcmVMb29wRml4Jyk7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXMsXG4gICAgYWxsb3dTbGlkZVByZXYsXG4gICAgYWxsb3dTbGlkZU5leHQsXG4gICAgc2xpZGVzRWwsXG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IHtcbiAgICBjZW50ZXJlZFNsaWRlc1xuICB9ID0gcGFyYW1zO1xuICBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPSB0cnVlO1xuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xuICBpZiAoc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgIGlmIChzbGlkZVRvKSB7XG4gICAgICBpZiAoIXBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBzd2lwZXIuc25hcEluZGV4ID09PSAwKSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHN3aXBlci5zbmFwSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyVmlldykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoICsgc3dpcGVyLnNuYXBJbmRleCwgMCwgZmFsc2UsIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzd2lwZXIuc25hcEluZGV4ID09PSBzd2lwZXIuc25hcEdyaWQubGVuZ3RoIC0gMSkge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmUsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gYWxsb3dTbGlkZVByZXY7XG4gICAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gYWxsb3dTbGlkZU5leHQ7XG4gICAgc3dpcGVyLmVtaXQoJ2xvb3BGaXgnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHNsaWRlc1BlclZpZXcgPSBwYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgaWYgKHNsaWRlc1BlclZpZXcgPT09ICdhdXRvJykge1xuICAgIHNsaWRlc1BlclZpZXcgPSBzd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoKTtcbiAgfSBlbHNlIHtcbiAgICBzbGlkZXNQZXJWaWV3ID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocGFyYW1zLnNsaWRlc1BlclZpZXcsIDEwKSk7XG4gICAgaWYgKGNlbnRlcmVkU2xpZGVzICYmIHNsaWRlc1BlclZpZXcgJSAyID09PSAwKSB7XG4gICAgICBzbGlkZXNQZXJWaWV3ID0gc2xpZGVzUGVyVmlldyArIDE7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNsaWRlc1Blckdyb3VwID0gcGFyYW1zLnNsaWRlc1Blckdyb3VwQXV0byA/IHNsaWRlc1BlclZpZXcgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG4gIGxldCBsb29wZWRTbGlkZXMgPSBzbGlkZXNQZXJHcm91cDtcbiAgaWYgKGxvb3BlZFNsaWRlcyAlIHNsaWRlc1Blckdyb3VwICE9PSAwKSB7XG4gICAgbG9vcGVkU2xpZGVzICs9IHNsaWRlc1Blckdyb3VwIC0gbG9vcGVkU2xpZGVzICUgc2xpZGVzUGVyR3JvdXA7XG4gIH1cbiAgbG9vcGVkU2xpZGVzICs9IHBhcmFtcy5sb29wQWRkaXRpb25hbFNsaWRlcztcbiAgc3dpcGVyLmxvb3BlZFNsaWRlcyA9IGxvb3BlZFNsaWRlcztcbiAgY29uc3QgZ3JpZEVuYWJsZWQgPSBzd2lwZXIuZ3JpZCAmJiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMTtcbiAgaWYgKHNsaWRlcy5sZW5ndGggPCBzbGlkZXNQZXJWaWV3ICsgbG9vcGVkU2xpZGVzKSB7XG4gICAgc2hvd1dhcm5pbmcoJ1N3aXBlciBMb29wIFdhcm5pbmc6IFRoZSBudW1iZXIgb2Ygc2xpZGVzIGlzIG5vdCBlbm91Z2ggZm9yIGxvb3AgbW9kZSwgaXQgd2lsbCBiZSBkaXNhYmxlZCBhbmQgbm90IGZ1bmN0aW9uIHByb3Blcmx5LiBZb3UgbmVlZCB0byBhZGQgbW9yZSBzbGlkZXMgKG9yIG1ha2UgZHVwbGljYXRlcykgb3IgbG93ZXIgdGhlIHZhbHVlcyBvZiBzbGlkZXNQZXJWaWV3IGFuZCBzbGlkZXNQZXJHcm91cCBwYXJhbWV0ZXJzJyk7XG4gIH0gZWxzZSBpZiAoZ3JpZEVuYWJsZWQgJiYgcGFyYW1zLmdyaWQuZmlsbCA9PT0gJ3JvdycpIHtcbiAgICBzaG93V2FybmluZygnU3dpcGVyIExvb3AgV2FybmluZzogTG9vcCBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggZ3JpZC5maWxsID0gYHJvd2AnKTtcbiAgfVxuICBjb25zdCBwcmVwZW5kU2xpZGVzSW5kZXhlcyA9IFtdO1xuICBjb25zdCBhcHBlbmRTbGlkZXNJbmRleGVzID0gW107XG4gIGxldCBhY3RpdmVJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleDtcbiAgaWYgKHR5cGVvZiBhY3RpdmVTbGlkZUluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgIGFjdGl2ZVNsaWRlSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleChzbGlkZXMuZmlsdGVyKGVsID0+IGVsLmNsYXNzTGlzdC5jb250YWlucyhwYXJhbXMuc2xpZGVBY3RpdmVDbGFzcykpWzBdKTtcbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVJbmRleCA9IGFjdGl2ZVNsaWRlSW5kZXg7XG4gIH1cbiAgY29uc3QgaXNOZXh0ID0gZGlyZWN0aW9uID09PSAnbmV4dCcgfHwgIWRpcmVjdGlvbjtcbiAgY29uc3QgaXNQcmV2ID0gZGlyZWN0aW9uID09PSAncHJldicgfHwgIWRpcmVjdGlvbjtcbiAgbGV0IHNsaWRlc1ByZXBlbmRlZCA9IDA7XG4gIGxldCBzbGlkZXNBcHBlbmRlZCA9IDA7XG4gIGNvbnN0IGNvbHMgPSBncmlkRW5hYmxlZCA/IE1hdGguY2VpbChzbGlkZXMubGVuZ3RoIC8gcGFyYW1zLmdyaWQucm93cykgOiBzbGlkZXMubGVuZ3RoO1xuICBjb25zdCBhY3RpdmVDb2xJbmRleCA9IGdyaWRFbmFibGVkID8gc2xpZGVzW2FjdGl2ZVNsaWRlSW5kZXhdLmNvbHVtbiA6IGFjdGl2ZVNsaWRlSW5kZXg7XG4gIGNvbnN0IGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0ID0gYWN0aXZlQ29sSW5kZXggKyAoY2VudGVyZWRTbGlkZXMgJiYgdHlwZW9mIHNldFRyYW5zbGF0ZSA9PT0gJ3VuZGVmaW5lZCcgPyAtc2xpZGVzUGVyVmlldyAvIDIgKyAwLjUgOiAwKTtcbiAgLy8gcHJlcGVuZCBsYXN0IHNsaWRlcyBiZWZvcmUgc3RhcnRcbiAgaWYgKGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0IDwgbG9vcGVkU2xpZGVzKSB7XG4gICAgc2xpZGVzUHJlcGVuZGVkI
2D0gTWF0aC5tYXgobG9vcGVkU2xpZGVzIC0gYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQsIHNsaWRlc1Blckdyb3VwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BlZFNsaWRlcyAtIGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaSAtIE1hdGguZmxvb3IoaSAvIGNvbHMpICogY29scztcbiAgICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBjb2xJbmRleFRvUHJlcGVuZCA9IGNvbHMgLSBpbmRleCAtIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSBzbGlkZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICBpZiAoc2xpZGVzW2ldLmNvbHVtbiA9PT0gY29sSW5kZXhUb1ByZXBlbmQpIHByZXBlbmRTbGlkZXNJbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2xpZGVzLmZvckVhY2goKHNsaWRlLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHNsaWRlLmNvbHVtbiA9PT0gY29sSW5kZXhUb1ByZXBlbmQpIHByZXBlbmRTbGlkZXNJbmRleGVzLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlcGVuZFNsaWRlc0luZGV4ZXMucHVzaChjb2xzIC0gaW5kZXggLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQgKyBzbGlkZXNQZXJWaWV3ID4gY29scyAtIGxvb3BlZFNsaWRlcykge1xuICAgIHNsaWRlc0FwcGVuZGVkID0gTWF0aC5tYXgoYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQgLSAoY29scyAtIGxvb3BlZFNsaWRlcyAqIDIpLCBzbGlkZXNQZXJHcm91cCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNBcHBlbmRlZDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGkgLSBNYXRoLmZsb29yKGkgLyBjb2xzKSAqIGNvbHM7XG4gICAgICBpZiAoZ3JpZEVuYWJsZWQpIHtcbiAgICAgICAgc2xpZGVzLmZvckVhY2goKHNsaWRlLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKHNsaWRlLmNvbHVtbiA9PT0gaW5kZXgpIGFwcGVuZFNsaWRlc0luZGV4ZXMucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcHBlbmRTbGlkZXNJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzd2lwZXIuX19wcmV2ZW50T2JzZXJ2ZXJfXyA9IHRydWU7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgc3dpcGVyLl9fcHJldmVudE9ic2VydmVyX18gPSBmYWxzZTtcbiAgfSk7XG4gIGlmIChpc1ByZXYpIHtcbiAgICBwcmVwZW5kU2xpZGVzSW5kZXhlcy5mb3JFYWNoKGluZGV4ID0+IHtcbiAgICAgIHNsaWRlc1tpbmRleF0uc3dpcGVyTG9vcE1vdmVET00gPSB0cnVlO1xuICAgICAgc2xpZGVzRWwucHJlcGVuZChzbGlkZXNbaW5kZXhdKTtcbiAgICAgIHNsaWRlc1tpbmRleF0uc3dpcGVyTG9vcE1vdmVET00gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNOZXh0KSB7XG4gICAgYXBwZW5kU2xpZGVzSW5kZXhlcy5mb3JFYWNoKGluZGV4ID0+IHtcbiAgICAgIHNsaWRlc1tpbmRleF0uc3dpcGVyTG9vcE1vdmVET00gPSB0cnVlO1xuICAgICAgc2xpZGVzRWwuYXBwZW5kKHNsaWRlc1tpbmRleF0pO1xuICAgICAgc2xpZGVzW2luZGV4XS5zd2lwZXJMb29wTW92ZURPTSA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIHN3aXBlci5yZWNhbGNTbGlkZXMoKTtcbiAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycpIHtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gIH0gZWxzZSBpZiAoZ3JpZEVuYWJsZWQgJiYgKHByZXBlbmRTbGlkZXNJbmRleGVzLmxlbmd0aCA+IDAgJiYgaXNQcmV2IHx8IGFwcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoID4gMCAmJiBpc05leHQpKSB7XG4gICAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKChzbGlkZSwgc2xpZGVJbmRleCkgPT4ge1xuICAgICAgc3dpcGVyLmdyaWQudXBkYXRlU2xpZGUoc2xpZGVJbmRleCwgc2xpZGUsIHN3aXBlci5zbGlkZXMpO1xuICAgIH0pO1xuICB9XG4gIGlmIChwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXNPZmZzZXQoKTtcbiAgfVxuICBpZiAoc2xpZGVUbykge1xuICAgIGlmIChwcmVwZW5kU2xpZGVzSW5kZXhlcy5sZW5ndGggPiAwICYmIGlzUHJldikge1xuICAgICAgaWYgKHR5cGVvZiBzbGlkZVJlYWxJbmRleCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNsaWRlVHJhbnNsYXRlID0gc3dpcGVyLnNsaWRlc0dyaWRbYWN0aXZlSW5kZXhdO1xuICAgICAgICBjb25zdCBuZXdTbGlkZVRyYW5zbGF0ZSA9IHN3aXBlci5zbGlkZXNHcmlkW2FjdGl2ZUluZGV4ICsgc2xpZGVzUHJlcGVuZGVkXTtcbiAgICAgICAgY29uc3QgZGlmZiA9IG5ld1NsaWRlVHJhbnNsYXRlIC0gY3VycmVudFNsaWRlVHJhbnNsYXRlO1xuICAgICAgICBpZiAoYnlNb3VzZXdoZWVsKSB7XG4gICAgICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShzd2lwZXIudHJhbnNsYXRlIC0gZGlmZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oYWN0aXZlSW5kZXggKyBNYXRoLmNlaWwoc2xpZGVzUHJlcGVuZGVkKSwgMCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgIGlmIChzZXRUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEuc3RhcnRUcmFuc2xhdGUgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhLnN0YXJ0VHJhbnNsYXRlIC0gZGlmZjtcbiAgICAgICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci50b3VjaEV2ZW50c0RhdGEuY3VycmVudFRyYW5zbGF0ZSAtIGRpZmY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2V0VHJhbnNsYXRlKSB7XG4gICAgICAgICAgY29uc3Qgc2hpZnQgPSBncmlkRW5hYmxlZCA/IHByZXBlbmRTbGlkZXNJbmRleGVzLmxlbmd0aCAvIHBhcmFtcy5ncmlkLnJvd3MgOiBwcmVwZW5kU2xpZGVzSW5kZX
2hlcy5sZW5ndGg7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4ICsgc2hpZnQsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICBzd2lwZXIudG91Y2hFdmVudHNEYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBzd2lwZXIudHJhbnNsYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcHBlbmRTbGlkZXNJbmRleGVzLmxlbmd0aCA+IDAgJiYgaXNOZXh0KSB7XG4gICAgICBpZiAodHlwZW9mIHNsaWRlUmVhbEluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBjdXJyZW50U2xpZGVUcmFuc2xhdGUgPSBzd2lwZXIuc2xpZGVzR3JpZFthY3RpdmVJbmRleF07XG4gICAgICAgIGNvbnN0IG5ld1NsaWRlVHJhbnNsYXRlID0gc3dpcGVyLnNsaWRlc0dyaWRbYWN0aXZlSW5kZXggLSBzbGlkZXNBcHBlbmRlZF07XG4gICAgICAgIGNvbnN0IGRpZmYgPSBuZXdTbGlkZVRyYW5zbGF0ZSAtIGN1cnJlbnRTbGlkZVRyYW5zbGF0ZTtcbiAgICAgICAgaWYgKGJ5TW91c2V3aGVlbCkge1xuICAgICAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUoc3dpcGVyLnRyYW5zbGF0ZSAtIGRpZmYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXBlci5zbGlkZVRvKGFjdGl2ZUluZGV4IC0gc2xpZGVzQXBwZW5kZWQsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICBpZiAoc2V0VHJhbnNsYXRlKSB7XG4gICAgICAgICAgICBzd2lwZXIudG91Y2hFdmVudHNEYXRhLnN0YXJ0VHJhbnNsYXRlID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YS5zdGFydFRyYW5zbGF0ZSAtIGRpZmY7XG4gICAgICAgICAgICBzd2lwZXIudG91Y2hFdmVudHNEYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhLmN1cnJlbnRUcmFuc2xhdGUgLSBkaWZmO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2hpZnQgPSBncmlkRW5hYmxlZCA/IGFwcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoIC8gcGFyYW1zLmdyaWQucm93cyA6IGFwcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoO1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXggLSBzaGlmdCwgMCwgZmFsc2UsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPSBhbGxvd1NsaWRlUHJldjtcbiAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gYWxsb3dTbGlkZU5leHQ7XG4gIGlmIChzd2lwZXIuY29udHJvbGxlciAmJiBzd2lwZXIuY29udHJvbGxlci5jb250cm9sICYmICFieUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBsb29wUGFyYW1zID0ge1xuICAgICAgc2xpZGVSZWFsSW5kZXgsXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBzZXRUcmFuc2xhdGUsXG4gICAgICBhY3RpdmVTbGlkZUluZGV4LFxuICAgICAgYnlDb250cm9sbGVyOiB0cnVlXG4gICAgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzd2lwZXIuY29udHJvbGxlci5jb250cm9sKSkge1xuICAgICAgc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbC5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoIWMuZGVzdHJveWVkICYmIGMucGFyYW1zLmxvb3ApIGMubG9vcEZpeCh7XG4gICAgICAgICAgLi4ubG9vcFBhcmFtcyxcbiAgICAgICAgICBzbGlkZVRvOiBjLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSBwYXJhbXMuc2xpZGVzUGVyVmlldyA/IHNsaWRlVG8gOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbCBpbnN0YW5jZW9mIHN3aXBlci5jb25zdHJ1Y3RvciAmJiBzd2lwZXIuY29udHJvbGxlci5jb250cm9sLnBhcmFtcy5sb29wKSB7XG4gICAgICBzd2lwZXIuY29udHJvbGxlci5jb250cm9sLmxvb3BGaXgoe1xuICAgICAgICAuLi5sb29wUGFyYW1zLFxuICAgICAgICBzbGlkZVRvOiBzd2lwZXIuY29udHJvbGxlci5jb250cm9sLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSBwYXJhbXMuc2xpZGVzUGVyVmlldyA/IHNsaWRlVG8gOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHN3aXBlci5lbWl0KCdsb29wRml4Jyk7XG59XG5cbmZ1bmN0aW9uIGxvb3BEZXN0cm95KCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc0VsXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghcGFyYW1zLmxvb3AgfHwgc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHJldHVybjtcbiAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICBjb25zdCBuZXdTbGlkZXNPcmRlciA9IFtdO1xuICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgY29uc3QgaW5kZXggPSB0eXBlb2Ygc2xpZGVFbC5zd2lwZXJTbGlkZUluZGV4ID09PSAndW5kZWZpbmVkJyA/IHNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpICogMSA6IHNsaWRlRWwuc3dpcGVyU2xpZGVJbmRleDtcbiAgICBuZXdTbGlkZXNPcmRlcltpbmRleF0gPSBzbGlkZUVsO1xuICB9KTtcbiAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgIHNsaWRlRWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpO1xuICB9KTtcbiAgbmV3U2xpZGVzT3JkZXIuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICBzbGlkZXNFbC5hcHBlbmQoc2xpZGVFbCk7XG4gIH0pO1xuICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gIHN3aXBlci5zbGlkZVRvKHN3aXBlci5yZWFsSW5kZXgsIDApO1xufVxuXG52YXIgbG9vcCA9IHtcbiAgbG9vcENyZWF0ZSxcbiAgbG9vcEZpeCxcbiAgbG9vcERlc3Ryb3lcbn07XG5cbmZ1bmN0aW9uIHNldEdyYWJDdXJzb3IobW92aW5nKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmICghc3dpcGVyLnBhcmFtcy5zaW11bGF0ZVRvdWNoIHx8IHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzd2lwZXIuaXNMb2NrZWQgfHwgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIGNvbnN0IGVsID0gc3dpcGVyLnBhcmFtcy50b3VjaEV2ZW50c1RhcmdldCA9PT0gJ2Nvbn
2RhaW5lcicgPyBzd2lwZXIuZWwgOiBzd2lwZXIud3JhcHBlckVsO1xuICBpZiAoc3dpcGVyLmlzRWxlbWVudCkge1xuICAgIHN3aXBlci5fX3ByZXZlbnRPYnNlcnZlcl9fID0gdHJ1ZTtcbiAgfVxuICBlbC5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7XG4gIGVsLnN0eWxlLmN1cnNvciA9IG1vdmluZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHN3aXBlci5fX3ByZXZlbnRPYnNlcnZlcl9fID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zZXRHcmFiQ3Vyc29yKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5pc0xvY2tlZCB8fCBzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICBzd2lwZXIuX19wcmV2ZW50T2JzZXJ2ZXJfXyA9IHRydWU7XG4gIH1cbiAgc3dpcGVyW3N3aXBlci5wYXJhbXMudG91Y2hFdmVudHNUYXJnZXQgPT09ICdjb250YWluZXInID8gJ2VsJyA6ICd3cmFwcGVyRWwnXS5zdHlsZS5jdXJzb3IgPSAnJztcbiAgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc3dpcGVyLl9fcHJldmVudE9ic2VydmVyX18gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxufVxuXG52YXIgZ3JhYkN1cnNvciA9IHtcbiAgc2V0R3JhYkN1cnNvcixcbiAgdW5zZXRHcmFiQ3Vyc29yXG59O1xuXG4vLyBNb2RpZmllZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU0NTIwNTU0L2N1c3RvbS1lbGVtZW50LWdldHJvb3Rub2RlLWNsb3Nlc3QtZnVuY3Rpb24tY3Jvc3NpbmctbXVsdGlwbGUtcGFyZW50LXNoYWRvd2RcbmZ1bmN0aW9uIGNsb3Nlc3RFbGVtZW50KHNlbGVjdG9yLCBiYXNlKSB7XG4gIGlmIChiYXNlID09PSB2b2lkIDApIHtcbiAgICBiYXNlID0gdGhpcztcbiAgfVxuICBmdW5jdGlvbiBfX2Nsb3Nlc3RGcm9tKGVsKSB7XG4gICAgaWYgKCFlbCB8fCBlbCA9PT0gZ2V0RG9jdW1lbnQoKSB8fCBlbCA9PT0gZ2V0V2luZG93KCkpIHJldHVybiBudWxsO1xuICAgIGlmIChlbC5hc3NpZ25lZFNsb3QpIGVsID0gZWwuYXNzaWduZWRTbG90O1xuICAgIGNvbnN0IGZvdW5kID0gZWwuY2xvc2VzdChzZWxlY3Rvcik7XG4gICAgaWYgKCFmb3VuZCAmJiAhZWwuZ2V0Um9vdE5vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZm91bmQgfHwgX19jbG9zZXN0RnJvbShlbC5nZXRSb290Tm9kZSgpLmhvc3QpO1xuICB9XG4gIHJldHVybiBfX2Nsb3Nlc3RGcm9tKGJhc2UpO1xufVxuZnVuY3Rpb24gcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGV2ZW50LCBzdGFydFgpIHtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXNcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgZWRnZVN3aXBlRGV0ZWN0aW9uID0gcGFyYW1zLmVkZ2VTd2lwZURldGVjdGlvbjtcbiAgY29uc3QgZWRnZVN3aXBlVGhyZXNob2xkID0gcGFyYW1zLmVkZ2VTd2lwZVRocmVzaG9sZDtcbiAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiAmJiAoc3RhcnRYIDw9IGVkZ2VTd2lwZVRocmVzaG9sZCB8fCBzdGFydFggPj0gd2luZG93LmlubmVyV2lkdGggLSBlZGdlU3dpcGVUaHJlc2hvbGQpKSB7XG4gICAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiA9PT0gJ3ByZXZlbnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIG9uVG91Y2hTdGFydChldmVudCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGxldCBlID0gZXZlbnQ7XG4gIGlmIChlLm9yaWdpbmFsRXZlbnQpIGUgPSBlLm9yaWdpbmFsRXZlbnQ7XG4gIGNvbnN0IGRhdGEgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhO1xuICBpZiAoZS50eXBlID09PSAncG9pbnRlcmRvd24nKSB7XG4gICAgaWYgKGRhdGEucG9pbnRlcklkICE9PSBudWxsICYmIGRhdGEucG9pbnRlcklkICE9PSBlLnBvaW50ZXJJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkYXRhLnBvaW50ZXJJZCA9IGUucG9pbnRlcklkO1xuICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gJ3RvdWNoc3RhcnQnICYmIGUudGFyZ2V0VG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICBkYXRhLnRvdWNoSWQgPSBlLnRhcmdldFRvdWNoZXNbMF0uaWRlbnRpZmllcjtcbiAgfVxuICBpZiAoZS50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAvLyBkb24ndCBwcm9jZWVkIHRvdWNoIGV2ZW50XG4gICAgcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGUsIGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgdG91Y2hlcyxcbiAgICBlbmFibGVkXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICBpZiAoIXBhcmFtcy5zaW11bGF0ZVRvdWNoICYmIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHJldHVybjtcbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLmNzc01vZGUgJiYgcGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcEZpeCgpO1xuICB9XG4gIGxldCB0YXJnZXRFbCA9IGUudGFyZ2V0O1xuICBpZiAocGFyYW1zLnRvdWNoRXZlbnRzVGFyZ2V0ID09PSAnd3JhcHBlcicpIHtcbiAgICBpZiAoIWVsZW1lbnRJc0NoaWxkT2YodGFyZ2V0RWwsIHN3aXBlci53cmFwcGVyRWwpKSByZXR1cm47XG4gIH1cbiAgaWYgKCd3aGljaCcgaW4gZSAmJiBlLndoaWNoID09PSAzKSByZXR1cm47XG4gIGlmICgnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uID4gMCkgcmV0dXJuO1xuICBpZiAoZGF0YS5pc1RvdWNoZWQgJiYgZGF0YS5pc01vdmVkKSByZXR1cm47XG5cbiAgLy8gY2hhbmdlIHRhcmdldCBlbCBmb3Igc2hhZG93IHJvb3QgY29tcG9uZW50XG4gIGNvbnN0IHN3aXBpbmdDbGFzc0hhc1ZhbHVlID0gISFwYXJhbXMubm9Td2lwaW5nQ2xhc3MgJiYgcGFyYW1zLm5vU3dpcGluZ0NsYXNzICE9PSAnJztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IGV2ZW50UGF0aCA9IGUuY29tcG9zZWRQYXRoID8gZS5jb21wb3NlZFBhdGgoKSA6IGUucGF0aDtcbiAgaWYgKHN3aXBpbmdDbGFzc0hhc1ZhbHVlICYmIGUudGFyZ2V0ICYmIGUudGFyZ2V0LnNoYWRvd1Jvb3QgJiYgZXZlbnRQYXR
2oKSB7XG4gICAgdGFyZ2V0RWwgPSBldmVudFBhdGhbMF07XG4gIH1cbiAgY29uc3Qgbm9Td2lwaW5nU2VsZWN0b3IgPSBwYXJhbXMubm9Td2lwaW5nU2VsZWN0b3IgPyBwYXJhbXMubm9Td2lwaW5nU2VsZWN0b3IgOiBgLiR7cGFyYW1zLm5vU3dpcGluZ0NsYXNzfWA7XG4gIGNvbnN0IGlzVGFyZ2V0U2hhZG93ID0gISEoZS50YXJnZXQgJiYgZS50YXJnZXQuc2hhZG93Um9vdCk7XG5cbiAgLy8gdXNlIGNsb3Nlc3RFbGVtZW50IGZvciBzaGFkb3cgcm9vdCBlbGVtZW50IHRvIGdldCB0aGUgYWN0dWFsIGNsb3Nlc3QgZm9yIG5lc3RlZCBzaGFkb3cgcm9vdCBlbGVtZW50XG4gIGlmIChwYXJhbXMubm9Td2lwaW5nICYmIChpc1RhcmdldFNoYWRvdyA/IGNsb3Nlc3RFbGVtZW50KG5vU3dpcGluZ1NlbGVjdG9yLCB0YXJnZXRFbCkgOiB0YXJnZXRFbC5jbG9zZXN0KG5vU3dpcGluZ1NlbGVjdG9yKSkpIHtcbiAgICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwYXJhbXMuc3dpcGVIYW5kbGVyKSB7XG4gICAgaWYgKCF0YXJnZXRFbC5jbG9zZXN0KHBhcmFtcy5zd2lwZUhhbmRsZXIpKSByZXR1cm47XG4gIH1cbiAgdG91Y2hlcy5jdXJyZW50WCA9IGUucGFnZVg7XG4gIHRvdWNoZXMuY3VycmVudFkgPSBlLnBhZ2VZO1xuICBjb25zdCBzdGFydFggPSB0b3VjaGVzLmN1cnJlbnRYO1xuICBjb25zdCBzdGFydFkgPSB0b3VjaGVzLmN1cnJlbnRZO1xuXG4gIC8vIERvIE5PVCBzdGFydCBpZiBpT1MgZWRnZSBzd2lwZSBpcyBkZXRlY3RlZC4gT3RoZXJ3aXNlIGlPUyBhcHAgY2Fubm90IHN3aXBlLXRvLWdvLWJhY2sgYW55bW9yZVxuXG4gIGlmICghcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGUsIHN0YXJ0WCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihkYXRhLCB7XG4gICAgaXNUb3VjaGVkOiB0cnVlLFxuICAgIGlzTW92ZWQ6IGZhbHNlLFxuICAgIGFsbG93VG91Y2hDYWxsYmFja3M6IHRydWUsXG4gICAgaXNTY3JvbGxpbmc6IHVuZGVmaW5lZCxcbiAgICBzdGFydE1vdmluZzogdW5kZWZpbmVkXG4gIH0pO1xuICB0b3VjaGVzLnN0YXJ0WCA9IHN0YXJ0WDtcbiAgdG91Y2hlcy5zdGFydFkgPSBzdGFydFk7XG4gIGRhdGEudG91Y2hTdGFydFRpbWUgPSBub3coKTtcbiAgc3dpcGVyLmFsbG93Q2xpY2sgPSB0cnVlO1xuICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPSB1bmRlZmluZWQ7XG4gIGlmIChwYXJhbXMudGhyZXNob2xkID4gMCkgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgPSBmYWxzZTtcbiAgbGV0IHByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgaWYgKHRhcmdldEVsLm1hdGNoZXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykpIHtcbiAgICBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGlmICh0YXJnZXRFbC5ub2RlTmFtZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubWF0Y2hlcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0YXJnZXRFbCkge1xuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG4gIGNvbnN0IHNob3VsZFByZXZlbnREZWZhdWx0ID0gcHJldmVudERlZmF1bHQgJiYgc3dpcGVyLmFsbG93VG91Y2hNb3ZlICYmIHBhcmFtcy50b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ7XG4gIGlmICgocGFyYW1zLnRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0IHx8IHNob3VsZFByZXZlbnREZWZhdWx0KSAmJiAhdGFyZ2V0RWwuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBzd2lwZXIuZnJlZU1vZGUgJiYgc3dpcGVyLmFuaW1hdGluZyAmJiAhcGFyYW1zLmNzc01vZGUpIHtcbiAgICBzd2lwZXIuZnJlZU1vZGUub25Ub3VjaFN0YXJ0KCk7XG4gIH1cbiAgc3dpcGVyLmVtaXQoJ3RvdWNoU3RhcnQnLCBlKTtcbn1cblxuZnVuY3Rpb24gb25Ub3VjaE1vdmUoZXZlbnQpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICB0b3VjaGVzLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIGlmICghcGFyYW1zLnNpbXVsYXRlVG91Y2ggJiYgZXZlbnQucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHJldHVybjtcbiAgbGV0IGUgPSBldmVudDtcbiAgaWYgKGUub3JpZ2luYWxFdmVudCkgZSA9IGUub3JpZ2luYWxFdmVudDtcbiAgaWYgKGUudHlwZSA9PT0gJ3BvaW50ZXJtb3ZlJykge1xuICAgIGlmIChkYXRhLnRvdWNoSWQgIT09IG51bGwpIHJldHVybjsgLy8gcmV0dXJuIGZyb20gcG9pbnRlciBpZiB3ZSB1c2UgdG91Y2hcbiAgICBjb25zdCBpZCA9IGUucG9pbnRlcklkO1xuICAgIGlmIChpZCAhPT0gZGF0YS5wb2ludGVySWQpIHJldHVybjtcbiAgfVxuICBsZXQgdGFyZ2V0VG91Y2g7XG4gIGlmIChlLnR5cGUgPT09ICd0b3VjaG1vdmUnKSB7XG4gICAgdGFyZ2V0VG91Y2ggPSBbLi4uZS5jaGFuZ2VkVG91Y2hlc10uZmlsdGVyKHQgPT4gdC5pZGVudGlmaWVyID09PSBkYXRhLnRvdWNoSWQpWzBdO1xuICAgIGlmICghdGFyZ2V0VG91Y2ggfHwgdGFyZ2V0VG91Y2guaWRlbnRpZmllciAhPT0gZGF0YS50b3VjaElkKSByZXR1cm47XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VG91Y2ggPSBlO1xuICB9XG4gIGlmICghZGF0YS5pc1RvdWNoZWQpIHtcbiAgICBpZiAoZGF0YS5zdGFydE1vdmluZyAmJiBkYXRhLmlzU2Nyb2xsaW5nKSB7XG4gICAgICBzd2lwZXIuZW1pdCgndG91Y2hNb3ZlT3Bwb3NpdGUnLCBlKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBhZ2VYID0gdGFyZ2V0VG91Y2gucGFnZVg7XG4gIGNvbnN0IHBhZ2VZID0gdGFyZ2V0VG91Y2gucGFnZVk7XG4gIGlmIChlLnByZXZlbn
2RlZEJ5TmVzdGVkU3dpcGVyKSB7XG4gICAgdG91Y2hlcy5zdGFydFggPSBwYWdlWDtcbiAgICB0b3VjaGVzLnN0YXJ0WSA9IHBhZ2VZO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXN3aXBlci5hbGxvd1RvdWNoTW92ZSkge1xuICAgIGlmICghZS50YXJnZXQubWF0Y2hlcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSkge1xuICAgICAgc3dpcGVyLmFsbG93Q2xpY2sgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGRhdGEuaXNUb3VjaGVkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRvdWNoZXMsIHtcbiAgICAgICAgc3RhcnRYOiBwYWdlWCxcbiAgICAgICAgc3RhcnRZOiBwYWdlWSxcbiAgICAgICAgY3VycmVudFg6IHBhZ2VYLFxuICAgICAgICBjdXJyZW50WTogcGFnZVlcbiAgICAgIH0pO1xuICAgICAgZGF0YS50b3VjaFN0YXJ0VGltZSA9IG5vdygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHBhcmFtcy50b3VjaFJlbGVhc2VPbkVkZ2VzICYmICFwYXJhbXMubG9vcCkge1xuICAgIGlmIChzd2lwZXIuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICAvLyBWZXJ0aWNhbFxuICAgICAgaWYgKHBhZ2VZIDwgdG91Y2hlcy5zdGFydFkgJiYgc3dpcGVyLnRyYW5zbGF0ZSA8PSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgfHwgcGFnZVkgPiB0b3VjaGVzLnN0YXJ0WSAmJiBzd2lwZXIudHJhbnNsYXRlID49IHN3aXBlci5taW5UcmFuc2xhdGUoKSkge1xuICAgICAgICBkYXRhLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGFnZVggPCB0b3VjaGVzLnN0YXJ0WCAmJiBzd2lwZXIudHJhbnNsYXRlIDw9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSB8fCBwYWdlWCA+IHRvdWNoZXMuc3RhcnRYICYmIHN3aXBlci50cmFuc2xhdGUgPj0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfV
vendor: 4,599 bytes, line 2
2xuICB9XG4gIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGUudGFyZ2V0Lm1hdGNoZXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykpIHtcbiAgICAgIGRhdGEuaXNNb3ZlZCA9IHRydWU7XG4gICAgICBzd2lwZXIuYWxsb3dDbGljayA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAoZGF0YS5hbGxvd1RvdWNoQ2FsbGJhY2tzKSB7XG4gICAgc3dpcGVyLmVtaXQoJ3RvdWNoTW92ZScsIGUpO1xuICB9XG4gIHRvdWNoZXMucHJldmlvdXNYID0gdG91Y2hlcy5jdXJyZW50WDtcbiAgdG91Y2hlcy5wcmV2aW91c1kgPSB0b3VjaGVzLmN1cnJlbnRZO1xuICB0b3VjaGVzLmN1cnJlbnRYID0gcGFnZVg7XG4gIHRvdWNoZXMuY3VycmVudFkgPSBwYWdlWTtcbiAgY29uc3QgZGlmZlggPSB0b3VjaGVzLmN1cnJlbnRYIC0gdG91Y2hlcy5zdGFydFg7XG4gIGNvbnN0IGRpZmZZID0gdG91Y2hlcy5jdXJyZW50WSAtIHRvdWNoZXMuc3RhcnRZO1xuICBpZiAoc3dpcGVyLnBhcmFtcy50aHJlc2hvbGQgJiYgTWF0aC5zcXJ0KGRpZmZYICoqIDIgKyBkaWZmWSAqKiAyKSA8IHN3aXBlci5wYXJhbXMudGhyZXNob2xkKSByZXR1cm47XG4gIGlmICh0eXBlb2YgZGF0YS5pc1Njcm9sbGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBsZXQgdG91Y2hBbmdsZTtcbiAgICBpZiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpICYmIHRvdWNoZXMuY3VycmVudFkgPT09IHRvdWNoZXMuc3RhcnRZIHx8IHN3aXBlci5pc1ZlcnRpY2FsKCkgJiYgdG91Y2hlcy5jdXJyZW50WCA9PT0gdG91Y2hlcy5zdGFydFgpIHtcbiAgICAgIGRhdGEuaXNTY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBpZiAoZGlmZlggKiBkaWZmWCArIGRpZmZZICogZGlmZlkgPj0gMjUpIHtcbiAgICAgICAgdG91Y2hBbmdsZSA9IE1hdGguYXRhbjIoTWF0aC5hYnMoZGlmZlkpLCBNYXRoLmFicyhkaWZmWCkpICogMTgwIC8gTWF0aC5QSTtcbiAgICAgICAgZGF0YS5pc1Njcm9sbGluZyA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHRvdWNoQW5nbGUgPiBwYXJhbXMudG91Y2hBbmdsZSA6IDkwIC0gdG91Y2hBbmdsZSA+IHBhcmFtcy50b3VjaEFuZ2xlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZGF0YS5pc1Njcm9sbGluZykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaE1vdmVPcHBvc2l0ZScsIGUpO1xuICB9XG4gIGlmICh0eXBlb2YgZGF0YS5zdGFydE1vdmluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodG91Y2hlcy5jdXJyZW50WCAhPT0gdG91Y2hlcy5zdGFydFggfHwgdG91Y2hlcy5jdXJyZW50WSAhPT0gdG91Y2hlcy5zdGFydFkpIHtcbiAgICAgIGRhdGEuc3RhcnRNb3ZpbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoZGF0YS5pc1Njcm9sbGluZyB8fCBlLnR5cGUgPT09ICd0b3VjaG1vdmUnICYmIGRhdGEucHJldmVudFRvdWNoTW92ZUZyb21Qb2ludGVyTW92ZSkge1xuICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghZGF0YS5zdGFydE1vdmluZykge1xuICAgIHJldHVybjtcbiAgfVxuICBzd2lwZXIuYWxsb3dDbGljayA9IGZhbHNlO1xuICBpZiAoIXBhcmFtcy5jc3NNb2RlICYmIGUuY2FuY2VsYWJsZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBpZiAocGFyYW1zLnRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiAmJiAhcGFyYW1zLm5lc3RlZCkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbiAgbGV0IGRpZmYgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBkaWZmWCA6IGRpZmZZO1xuICBsZXQgdG91Y2hlc0RpZmYgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyB0b3VjaGVzLmN1cnJlbnRYIC0gdG91Y2hlcy5wcmV2aW91c1ggOiB0b3VjaGVzLmN1cnJlbnRZIC0gdG91Y2hlcy5wcmV2aW91c1k7XG4gIGlmIChwYXJhbXMub25lV2F5TW92ZW1lbnQpIHtcbiAgICBkaWZmID0gTWF0aC5hYnMoZGlmZikgKiAocnRsID8gMSA6IC0xKTtcbiAgICB0b3VjaGVzRGlmZiA9IE1hdGguYWJzKHRvdWNoZXNEaWZmKSAqIChydGwgPyAxIDogLTEpO1xuICB9XG4gIHRvdWNoZXMuZGlmZiA9IGRpZmY7XG4gIGRpZmYgKj0gcGFyYW1zLnRvdWNoUmF0aW87XG4gIGlmIChydGwpIHtcbiAgICBkaWZmID0gLWRpZmY7XG4gICAgdG91Y2hlc0RpZmYgPSAtdG91Y2hlc0RpZmY7XG4gIH1cbiAgY29uc3QgcHJldlRvdWNoZXNEaXJlY3Rpb24gPSBzd2lwZXIudG91Y2hlc0RpcmVjdGlvbjtcbiAgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID0gZGlmZiA+IDAgPyAncHJldicgOiAnbmV4dCc7XG4gIHN3aXBlci50b3VjaGVzRGlyZWN0aW9uID0gdG91Y2hlc0RpZmYgPiAwID8gJ3ByZXYnIDogJ25leHQnO1xuICBjb25zdCBpc0xvb3AgPSBzd2lwZXIucGFyYW1zLmxvb3AgJiYgIXBhcmFtcy5jc3NNb2RlO1xuICBjb25zdCBhbGxvd0xvb3BGaXggPSBzd2lwZXIudG91Y2hlc0RpcmVjdGlvbiA9PT0gJ25leHQnICYmIHN3aXBlci5hbGxvd1NsaWRlTmV4dCB8fCBzd2lwZXIudG91Y2hlc0RpcmVjdGlvbiA9PT0gJ3ByZXYnICYmIHN3aXBlci5hbGxvd1NsaWRlUHJldjtcbiAgaWYgKCFkYXRhLmlzTW92ZWQpIHtcbiAgICBpZiAoaXNMb29wICYmIGFsbG93TG9vcEZpeCkge1xuICAgICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgICBkaXJlY3Rpb246IHN3aXBlci5zd2lwZURpcmVjdGlvblxuICAgICAgfSk7XG4gICAgfVxuICAgIGRhdGEuc3RhcnRUcmFuc2xhdGUgPSBzd2lwZXIuZ2V0VHJhbnNsYXRlKCk7XG4gICAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG4gICAgaWYgKHN3aXBlci5hbmltYXRpbmcpIHtcbiAgICAgIGNvbnN0IGV2dCA9IG5ldyB3aW5kb3cuQ3VzdG9tRXZlbnQoJ3RyYW5zaXRpb25lbmQnLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGJ5U3dpcGVyVG91Y2hNb3ZlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gICAgfVxuICAgIGRhdGEuYWxsb3dNb21lbnR1bUJvdW5jZSA9IGZhbHNlO1xuICAgIC8vIEdyYWIgQ3Vyc29yXG4gICAgaWYgKHBhcmFtcy5ncmFiQ3Vyc29yICYmIChzd2lwZXIuYWxsb3dTbGlkZU5leHQgPT09IHRydWUgfHwgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID09PSB0cnVlKSkge1xuICAgICAgc3dpcGVyLnNldEdyYWJDdXJzb3IodHJ1ZSk7XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCdzbGlkZXJGaXJzdE1vdmUnLCBlKTtcbiAgfVxuICBsZXQgbG9vcEZpeGVkO1xuICBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgaWYgK
2GRhdGEuaXNNb3ZlZCAmJiBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSAmJiBwcmV2VG91Y2hlc0RpcmVjdGlvbiAhPT0gc3dpcGVyLnRvdWNoZXNEaXJlY3Rpb24gJiYgaXNMb29wICYmIGFsbG93TG9vcEZpeCAmJiBNYXRoLmFicyhkaWZmKSA+PSAxKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0b3VjaGVzLCB7XG4gICAgICBzdGFydFg6IHBhZ2VYLFxuICAgICAgc3RhcnRZOiBwYWdlWSxcbiAgICAgIGN1cnJlbnRYOiBwYWdlWCxcbiAgICAgIGN1cnJlbnRZOiBwYWdlWSxcbiAgICAgIHN0YXJ0VHJhbnNsYXRlOiBkYXRhLmN1cnJlbnRUcmFuc2xhdGVcbiAgICB9KTtcbiAgICBkYXRhLmxvb3BTd2FwUmVzZXQgPSB0cnVlO1xuICAgIGRhdGEuc3RhcnRUcmFuc2xhdGUgPSBkYXRhLmN1cnJlbnRUcmFuc2xhdGU7XG4gICAgcmV0dXJuO1xuICB9XG4gIHN3aXBlci5lbWl0KCdzbGlkZXJNb3ZlJywgZSk7XG4gIGRhdGEuaXNNb3ZlZCA9IHRydWU7XG4gIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRpZmYgKyBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICBsZXQgZGlzYWJsZVBhcmVudFN3aXBlciA9IHRydWU7XG4gIGxldCByZXNpc3RhbmNlUmF0aW8gPSBwYXJhbXMucmVzaXN0YW5jZVJhdGlvO1xuICBpZiAocGFyYW1zLnRvdWNoUmVsZWFzZU9uRWRnZXMpIHtcbiAgICByZXNpc3RhbmNlUmF0aW8gPSAwO1xuICB9XG4gIGlmIChkaWZmID4gMCkge1xuICAgIGlmIChpc0xvb3AgJiYgYWxsb3dMb29wRml4ICYmICFsb29wRml4ZWQgJiYgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlID4gKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHN3aXBlci5taW5UcmFuc2xhdGUoKSAtIHN3aXBlci5zbGlkZXNTaXplc0dyaWRbc3dpcGVyLmFjdGl2ZUluZGV4ICsgMV0gLSAocGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJyAmJiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIHBhcmFtcy5zbGlkZXNQZXJWaWV3ID49IDIgPyBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW3N3aXBlci5hY3RpdmVJbmRleCArIDFdICsgc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gOiAwKSAtIHN3aXBlci5wYXJhbXMuc3BhY2VCZXR3ZWVuIDogc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSkge1xuICAgICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgICBkaXJlY3Rpb246ICdwcmV2JyxcbiAgICAgICAgc2V0VHJhbnNsYXRlOiB0cnVlLFxuICAgICAgICBhY3RpdmVTbGlkZUluZGV4OiAwXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGRhdGEuY3VycmVudFRyYW5zbGF0ZSA+IHN3aXBlci5taW5UcmFuc2xhdGUoKSkge1xuICAgICAgZGlzYWJsZVBhcmVudFN3aXBlciA9IGZhbHNlO1xuICAgICAgaWYgKHBhcmFtcy5yZXNpc3RhbmNlKSB7XG4gICAgICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci5taW5UcmFuc2xhdGUoKSAtIDEgKyAoLXN3aXBlci5taW5UcmFuc2xhdGUoKSArIGRhdGEuc3RhcnRUcmFuc2xhdGUgKyBkaWZmKSAqKiByZXNpc3RhbmNlUmF0aW87XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7XG4gICAgaWYgKGlzTG9vcCAmJiBhbGxvd0xvb3BGaXggJiYgIWxvb3BGaXhlZCAmJiBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPCAocGFyYW1zLmNlbnRlcmVkU2xpZGVzID8gc3dpcGVyLm1heFRyYW5zbGF0ZSgpICsgc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkLmxlbmd0aCAtIDFdICsgc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gKyAocGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJyAmJiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIHBhcmFtcy5zbGlkZXNQZXJWaWV3ID49IDIgPyBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW3N3aXBlci5zbGlkZXNTaXplc0dyaWQubGVuZ3RoIC0gMV0gKyBzd2lwZXIucGFyYW1zLnNwYWNlQmV0d2VlbiA6IDApIDogc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSkge1xuICAgICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgICBkaXJlY3Rpb246ICduZXh0JyxcbiAgICAgICAgc2V0VHJhbnNsYXRlOiB0cnVlLFxuICAgICAgICBhY3RpdmVTbGlkZUluZGV4OiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIChwYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nID8gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBNYXRoLmNlaWwocGFyc2VGbG9hdChwYXJhbXMuc2xpZGVzUGVyVmlldywgMTApKSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGF0YS5jdXJyZW50VHJhbnNsYXRlIDwgc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSB7XG4gICAgICBkaXNhYmxlUGFyZW50U3dpcGVyID0gZmFsc2U7XG4gICAgICBpZiAocGFyYW1zLnJlc2lzdGFuY2UpIHtcbiAgICAgICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpICsgMSAtIChzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBkYXRhLnN0YXJ0VHJhbnNsYXRlIC0gZGlmZikgKiogcmVzaXN0YW5jZVJhdGlvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZGlzYWJsZVBhcmVudFN3aXBlcikge1xuICAgIGUucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIgPSB0cnVlO1xuICB9XG5cbiAgLy8gRGlyZWN0aW9ucyBsb2Nrc1xuICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlTmV4dCAmJiBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0JyAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPCBkYXRhLnN0YXJ0VHJhbnNsYXRlKSB7XG4gICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgfVxuICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlUHJldiAmJiBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICdwcmV2JyAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPiBkYXRhLnN0YXJ0VHJhbnNsYXRlKSB7XG4gICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgfVxuICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlUHJldiAmJiAhc3dpcGVyLmFsbG93U2xpZGVOZXh0KSB7XG4gICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgfVxuXG4gIC8vIFRocmVzaG9sZFxuICBpZiAocGFyYW1zLnRocmVzaG9sZCA+IDApIHtcbiAgICBpZiAoTWF0aC5hYnMoZGlmZikgPiBwYXJhbXMudGhyZXNob2xkIHx8IGRhdGEuYWxsb3dUaHJlc2hvbGRNb3ZlKSB7XG4gICAgICBpZiAoIWRhdGEuYWxsb3dUaHJlc2hvbGRNb3ZlKSB7XG4gICAgICAgIGRhdGEuYWxsb3dUaHJlc2hvbGRNb3ZlID0gdHJ1ZTtcbiAgICAgICAgdG91Y2hlcy5zdGFydFggPSB0b3VjaGVzLmN1cnJlbnRYO1xuICAgICAgICB0b3VjaGVzLnN0YXJ0WSA9IHRvdWNoZXMuY3VycmVudFk7XG4gICAgICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gICAgICAgI
2HRvdWNoZXMuZGlmZiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHRvdWNoZXMuY3VycmVudFggLSB0b3VjaGVzLnN0YXJ0WCA6IHRvdWNoZXMuY3VycmVudFkgLSB0b3VjaGVzLnN0YXJ0WTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAoIXBhcmFtcy5mb2xsb3dGaW5nZXIgfHwgcGFyYW1zLmNzc01vZGUpIHJldHVybjtcblxuICAvLyBVcGRhdGUgYWN0aXZlIGluZGV4IGluIGZyZWUgbW9kZVxuICBpZiAocGFyYW1zLmZyZWVNb2RlICYmIHBhcmFtcy5mcmVlTW9kZS5lbmFibGVkICYmIHN3aXBlci5mcmVlTW9kZSB8fCBwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBzd2lwZXIuZnJlZU1vZGUpIHtcbiAgICBzd2lwZXIuZnJlZU1vZGUub25Ub3VjaE1vdmUoKTtcbiAgfVxuICAvLyBVcGRhdGUgcHJvZ3Jlc3NcbiAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKGRhdGEuY3VycmVudFRyYW5zbGF0ZSk7XG4gIC8vIFVwZGF0ZSB0cmFuc2xhdGVcbiAgc3dpcGVyLnNldFRyYW5zbGF0ZShkYXRhLmN1cnJlbnRUcmFuc2xhdGUpO1xufVxuXG5mdW5jdGlvbiBvblRvdWNoRW5kKGV2ZW50KSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IGRhdGEgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhO1xuICBsZXQgZSA9IGV2ZW50O1xuICBpZiAoZS5vcmlnaW5hbEV2ZW50KSBlID0gZS5vcmlnaW5hbEV2ZW50O1xuICBsZXQgdGFyZ2V0VG91Y2g7XG4gIGNvbnN0IGlzVG91Y2hFdmVudCA9IGUudHlwZSA9PT0gJ3RvdWNoZW5kJyB8fCBlLnR5cGUgPT09ICd0b3VjaGNhbmNlbCc7XG4gIGlmICghaXNUb3VjaEV2ZW50KSB7XG4gICAgaWYgKGRhdGEudG91Y2hJZCAhPT0gbnVsbCkgcmV0dXJuOyAvLyByZXR1cm4gZnJvbSBwb2ludGVyIGlmIHdlIHVzZSB0b3VjaFxuICAgIGlmIChlLnBvaW50ZXJJZCAhPT0gZGF0YS5wb2ludGVySWQpIHJldHVybjtcbiAgICB0YXJnZXRUb3VjaCA9IGU7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VG91Y2ggPSBbLi4uZS5jaGFuZ2VkVG91Y2hlc10uZmlsdGVyKHQgPT4gdC5pZGVudGlmaWVyID09PSBkYXRhLnRvdWNoSWQpWzBd
vendor: 15,473 bytes, line 2
2O1xuICAgIGlmICghdGFyZ2V0VG91Y2ggfHwgdGFyZ2V0VG91Y2guaWRlbnRpZmllciAhPT0gZGF0YS50b3VjaElkKSByZXR1cm47XG4gIH1cbiAgaWYgKFsncG9pbnRlcmNhbmNlbCcsICdwb2ludGVyb3V0JywgJ3BvaW50ZXJsZWF2ZScsICdjb250ZXh0bWVudSddLmluY2x1ZGVzKGUudHlwZSkpIHtcbiAgICBjb25zdCBwcm9jZWVkID0gWydwb2ludGVyY2FuY2VsJywgJ2NvbnRleHRtZW51J10uaW5jbHVkZXMoZS50eXBlKSAmJiAoc3dpcGVyLmJyb3dzZXIuaXNTYWZhcmkgfHwgc3dpcGVyLmJyb3dzZXIuaXNXZWJWaWV3KTtcbiAgICBpZiAoIXByb2NlZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZGF0YS5wb2ludGVySWQgPSBudWxsO1xuICBkYXRhLnRvdWNoSWQgPSBudWxsO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHRvdWNoZXMsXG4gICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgc2xpZGVzR3JpZCxcbiAgICBlbmFibGVkXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICBpZiAoIXBhcmFtcy5zaW11bGF0ZVRvdWNoICYmIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHJldHVybjtcbiAgaWYgKGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaEVuZCcsIGUpO1xuICB9XG4gIGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcyA9IGZhbHNlO1xuICBpZiAoIWRhdGEuaXNUb3VjaGVkKSB7XG4gICAgaWYgKGRhdGEuaXNNb3ZlZCAmJiBwYXJhbXMuZ3JhYkN1cnNvcikge1xuICAgICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoZmFsc2UpO1xuICAgIH1cbiAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gUmV0dXJuIEdyYWIgQ3Vyc29yXG4gIGlmIChwYXJhbXMuZ3JhYkN1cnNvciAmJiBkYXRhLmlzTW92ZWQgJiYgZGF0YS5pc1RvdWNoZWQgJiYgKHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9PT0gdHJ1ZSB8fCBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPT09IHRydWUpKSB7XG4gICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoZmFsc2UpO1xuICB9XG5cbiAgLy8gVGltZSBkaWZmXG4gIGNvbnN0IHRvdWNoRW5kVGltZSA9IG5vdygpO1xuICBjb25zdCB0aW1lRGlmZiA9IHRvdWNoRW5kVGltZSAtIGRhdGEudG91Y2hTdGFydFRpbWU7XG5cbiAgLy8gVGFwLCBkb3VibGVUYXAsIENsaWNrXG4gIGlmIChzd2lwZXIuYWxsb3dDbGljaykge1xuICAgIGNvbnN0IHBhdGhUcmVlID0gZS5wYXRoIHx8IGUuY29tcG9zZWRQYXRoICYmIGUuY29tcG9zZWRQYXRoKCk7XG4gICAgc3dpcGVyLnVwZGF0ZUNsaWNrZWRTbGlkZShwYXRoVHJlZSAmJiBwYXRoVHJlZVswXSB8fCBlLnRhcmdldCwgcGF0aFRyZWUpO1xuICAgIHN3aXBlci5lbWl0KCd0YXAgY2xpY2snLCBlKTtcbiAgICBpZiAodGltZURpZmYgPCAzMDAgJiYgdG91Y2hFbmRUaW1lIC0gZGF0YS5sYXN0Q2xpY2tUaW1lIDwgMzAwKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnZG91YmxlVGFwIGRvdWJsZUNsaWNrJywgZSk7XG4gICAgfVxuICB9XG4gIGRhdGEubGFzdENsaWNrVGltZSA9IG5vdygpO1xuICBuZXh0VGljaygoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIuZGVzdHJveWVkKSBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gIH0pO1xuICBpZiAoIWRhdGEuaXNUb3VjaGVkIHx8ICFkYXRhLmlzTW92ZWQgfHwgIXN3aXBlci5zd2lwZURpcmVjdGlvbiB8fCB0b3VjaGVzLmRpZmYgPT09IDAgJiYgIWRhdGEubG9vcFN3YXBSZXNldCB8fCBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPT09IGRhdGEuc3RhcnRUcmFuc2xhdGUgJiYgIWRhdGEubG9vcFN3YXBSZXNldCkge1xuICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgZGF0YS5pc01vdmVkID0gZmFsc2U7XG4gICAgZGF0YS5zdGFydE1vdmluZyA9IGZhbHNlO1xuICAgIHJldHVybjtcbiAgfVxuICBkYXRhLmlzVG91Y2hlZCA9IGZhbHNlO1xuICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgZGF0YS5zdGFydE1vdmluZyA9IGZhbHNlO1xuICBsZXQgY3VycmVudFBvcztcbiAgaWYgKHBhcmFtcy5mb2xsb3dGaW5nZXIpIHtcbiAgICBjdXJyZW50UG9zID0gcnRsID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICB9IGVsc2Uge1xuICAgIGN1cnJlbnRQb3MgPSAtZGF0YS5jdXJyZW50VHJhbnNsYXRlO1xuICB9XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocGFyYW1zLmZyZWVNb2RlICYmIHBhcmFtcy5mcmVlTW9kZS5lbmFibGVkKSB7XG4gICAgc3dpcGVyLmZyZWVNb2RlLm9uVG91Y2hFbmQoe1xuICAgICAgY3VycmVudFBvc1xuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZpbmQgY3VycmVudCBzbGlkZVxuICBjb25zdCBzd2lwZVRvTGFzdCA9IGN1cnJlbnRQb3MgPj0gLXN3aXBlci5tYXhUcmFuc2xhdGUoKSAmJiAhc3dpcGVyLnBhcmFtcy5sb29wO1xuICBsZXQgc3RvcEluZGV4ID0gMDtcbiAgbGV0IGdyb3VwU2l6ZSA9IHN3aXBlci5zbGlkZXNTaXplc0dyaWRbMF07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzR3JpZC5sZW5ndGg7IGkgKz0gaSA8IHBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAgPyAxIDogcGFyYW1zLnNsaWRlc1Blckdyb3VwKSB7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gaSA8IHBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAgLSAxID8gMSA6IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgICBpZiAodHlwZW9mIHNsaWRlc0dyaWRbaSArIGluY3JlbWVudF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoc3dpcGVUb0xhc3QgfHwgY3VycmVudFBvcyA+PSBzbGlkZXNHcmlkW2ldICYmIGN1cnJlbnRQb3MgPCBzbGlkZXNHcmlkW2kgKyBpbmNyZW1lbnRdKSB7XG4gICAgICAgIHN0b3BJbmRleCA9IGk7XG4gICAgICAgIGdyb3VwU2l6ZSA9IHNsaWRlc0dyaWRbaSArIGluY3JlbWVudF0gLSBzbGlkZXNHcmlkW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3dpcGVUb0xhc3QgfHwgY3VycmVudFBvcyA+PSBzbGlkZXNHcmlkW2ldKSB7XG4gICAgICBzdG9wSW5kZXggPSBpO1xuICAgICAgZ3JvdXBTaXplID0gc2xpZGVzR3JpZFtzbGlkZXNHcmlkLmxlbmd0aCAtIDFdIC0gc2xpZGVzR3JpZFtzbGlkZXNHcmlkLmxlbmd0aCAtIDJdO1xuICAgIH1cbiAgfVxuICBsZXQgcmV3aW5kRmlyc3RJbmRleCA9IG51bGw7XG4gIGxldCByZXdpbmRMYXN0SW5kZXggPSBudWxsO1xuICBpZiAocGFyYW1zLnJld2luZCkge1xuICAgIGlmIChzd2lwZXIuaXNCZWdpbm5pbmcpIHtcbiAgICAgIHJld2luZExhc3RJbmRleCA9IHBhcmFtcy52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgc3dpcGVyLnZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIC0gMSA6IHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2UgaWYgKHN3aXBlci5pc0VuZCkge1xuICAgICAgcmV3aW5kRmlyc3RJbmRleCA9IDA7XG4gICAgfVxuICB9XG4gIC8vIEZpbmQgY3VycmVudCBzbGlkZSBzaXplXG4gIGNvbnN0IHJhdGlvID0gKGN1cnJlbnRQb3MgLSBzbGlkZXNHcmlkW3N0b3BJbmRleF0pIC8gZ3JvdXBTaXplO1xuICBjb25zdCBpbmNyZW1lbnQgPSBzdG9wSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG4gIGlmICh0aW1lRGlmZiA+IHBhcmFtcy5sb25nU3dpcGVzTXMpIHtcbiAgICAvLyBMb25nIHRvdWNoZXNcbiAgICBpZiAoIXBhcmFtcy5sb25nU3dpcGVzKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAnbmV4dCcpIHtcbiAgICAgIGlmIChyYXRpbyA+PSBwYXJhbXMubG9uZ1N3aXBlc1JhdGlvKSBzd2lwZXIuc2xpZGVUbyhwYXJhbXMucmV3aW5kICYmIHN3aXBlci5pc0VuZCA/IHJld2luZEZpcnN0SW5kZXggOiBzdG9wSW5kZXggKyBpbmNyZW1lbnQpO2Vsc2Ugc3dpcGVyLnNsaWRlVG8oc3RvcEluZGV4KTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgICBpZiAocmF0aW8gPiAxIC0gcGFyYW1zLmxvbmdTd2lwZXNSYXRpbykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXggKyBpbmNyZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChyZXdpbmRMYXN0SW5kZXggIT09IG51bGwgJiYgcmF0aW8gPCAwICYmIE1hdGguYWJzKHJhdGlvKSA+IHBhcmFtcy5sb25nU3dpcGVzUmF0aW8pIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8ocmV3aW5kTGFzdEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFNob3J0IHN3aXBlc1xuICAgIGlmICghcGFyYW1zLnNob3J0U3dpcGVzKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05hdkJ1dHRvblRhcmdldCA9IHN3aXBlci5uYXZpZ2F0aW9uICYmIChlLnRhcmdldCA9PT0gc3dpcGVyLm5hdmlnYXRpb24ubmV4dEVsIHx8IGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5wcmV2RWwpO1xuICAgIGlmICghaXNOYXZCdXR0b25UYXJnZXQpIHtcbiAgICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhyZXdpbmRGaXJzdEluZGV4ICE9PSBudWxsID8gcmV3aW5kRmlyc3RJbmRleCA6IHN0b3BJbmRleCArIGluY3JlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8ocmV3aW5kTGFzdEluZGV4ICE9PSBudWxsID8gcmV3aW5kTGFzdEluZGV4IDogc3RvcEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uUmVzaXplKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIGVsXG4gIH0gPSBzd2lwZXI7XG4gIGlmIChlbCAmJiBlbC5vZmZzZXRXaWR0aCA9PT0gMCkgcmV0dXJuO1xuXG4gIC8vIEJyZWFrcG9pbnRzXG4gIGlmIChwYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICBzd2lwZXIuc2V0QnJlYWtwb2ludCgpO1xuICB9XG5cbiAgLy8gU2F2ZSBsb2Nrc1xuICBjb25zdCB7XG4gICAgYWxsb3dTbGlkZU5leHQsXG4gICAgYWxsb3dTbGlkZVByZXYsXG4gICAgc25hcEdyaWRcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG5cbiAgLy8gRGlzYWJsZSBsb2NrcyBvbiByZXNpemVcbiAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gdHJ1ZTtcbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gdHJ1ZTtcbiAgc3dpcGVyLnVwZGF0ZVNpemUoKTtcbiAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICBjb25zdCBpc1ZpcnR1YWxMb29wID0gaXNWaXJ0dWFsICYmIHBhcmFtcy5sb29wO1xuICBpZiAoKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgfHwgcGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKSAmJiBzd2lwZXIuaXNFbmQgJiYgIXN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiAhaXNWaXJ0dWFsTG9vcCkge1xuICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMSwgMCwgZmFsc2UsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3AgJiYgIWlzVmlydHVhbCkge1xuICAgICAgc3dpcGVyLnNsaWRlVG9Mb29wKHN3aXBlci5yZWFsSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIGlmIChzd2lwZXIuYXV0b3BsYXkgJiYgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcgJiYgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCkge1xuICAgIGNsZWFyVGltZW91dChzd2lwZXIuYXV0b3BsYXkucmVzaXplVGltZW91dCk7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzd2lwZXIuYXV0b3BsYXkgJiYgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcgJiYgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCkge1xuICAgICAgICBzd2lwZXIuYXV0b3BsYXkucmVzdW1lKCk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuICAvLyBSZXR1cm4gbG9ja3MgYWZ0ZXIgcmVzaXplXG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IGFsbG93U2xpZGVQcmV2O1xuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSBhbGxvd1NsaWRlTmV4dDtcbiAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzbmFwR3JpZCAhPT0gc3dpcGVyLnNuYXBHcmlkKSB7XG4gICAgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKCFzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICBpZiAoIXN3aXBlci5hbGxvd0NsaWNrKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMucHJldmVudENsaWNrcykgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnByZXZlbnRDbGlja3NQcm9wYWdhdGlvbiAmJiBzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb25TY3JvbGwoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICB3cmFwcGVyRWwsXG4gICAgcnRsVHJhbnNsYXRlLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIHN3aXBlci5wcmV2aW91c1RyYW5zbGF0ZSA9IHN3aXBlci50cmFuc2xhdGU7XG4gIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICBzd2lwZXIudHJhbnNsYXRlID0gLXdyYXBwZXJFbC5zY3JvbGxMZWZ0O1xuICB9IGVsc2Uge1xuICAgIHN3aXBlci50cmFuc2xhdGUgPSAtd3JhcHBlckVsLnNjcm9sbFRvcDtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgaWYgKHN3aXBlci50cmFuc2xhdGUgPT09IDApIHN3aXBlci50cmFuc2xhdGUgPSAwO1xuICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgbGV0IG5ld1Byb2dyZXNzO1xuICBjb25zdCB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgaWYgKHRyYW5zbGF0ZXNEaWZmID09PSAwKSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAwO1xuICB9IGVsc2Uge1xuICAgIG5ld1Byb2dyZXNzID0gKHN3aXBlci50cmFuc2xhdGUgLSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIC8gdHJhbnNsYXRlc0RpZmY7XG4gIH1cbiAgaWYgKG5ld1Byb2dyZXNzICE9PSBzd2lwZXIucHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MocnRsVHJhbnNsYXRlID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlKTtcbiAgfVxuICBzd2lwZXIuZW1pdCgnc2V0VHJhbnNsYXRlJywgc3dpcGVyLnRyYW5zbGF0ZSwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBvbkxvYWQoZSkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBwcm9jZXNzTGF6eVByZWxvYWRlcihzd2lwZXIsIGUudGFyZ2V0KTtcbiAgaWYgKHN3aXBlci5wYXJhbXMuY3NzTW9kZSB8fCBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJyAmJiAhc3dpcGVyLnBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHN3aXBlci51cGRhdGUoKTtcbn1cblxuZnVuY3Rpb24gb25Eb2N1bWVudFRvdWNoU3RhcnQoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmIChzd2lwZXIuZG9jdW1lbnRUb3VjaEhhbmRsZXJQcm9jZWVkZWQpIHJldHVybjtcbiAgc3dpcGVyLmRvY3VtZW50VG91Y2hIYW5kbGVyUHJvY2VlZGVkID0gdHJ1ZTtcbiAgaWYgKHN3aXBlci5wYXJhbXMudG91Y2hSZWxlYXNlT25FZGdlcykge1xuICAgIHN3aXBlci5lbC5zdHlsZS50b3VjaEFjdGlvbiA9ICdhdXRvJztcbiAgfVxufVxuXG5jb25zdCBldmVudHMgPSAoc3dpcGVyLCBtZXRob2QpID0+IHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIGVsLFxuICAgIHdyYXBwZXJFbCxcbiAgICBkZXZpY2VcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgY2FwdHVyZSA9ICEhcGFyYW1zLm5lc3RlZDtcbiAgY29uc3QgZG9tTWV0aG9kID0gbWV0aG9kID09PSAnb24nID8gJ2FkZEV2ZW50TGlzdGVuZXInIDogJ3JlbW92ZUV2ZW50TGlzdGVuZXInO1xuICBjb25zdCBzd2lwZXJNZXRob2QgPSBtZXRob2Q7XG4gIGlmICghZWwgfHwgdHlwZW9mIGVsID09PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gIC8vIFRvdWNoIEV2ZW50c1xuICBkb2N1bWVudFtkb21NZXRob2RdKCd0b3VjaHN0YXJ0Jywgc3dpcGVyLm9uRG9jdW1lbnRUb3VjaFN0YXJ0LCB7XG4gICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgY2FwdHVyZVxuICB9KTtcbiAgZWxbZG9tTWV0aG9kXSgndG91Y2hzdGFydCcsIHN3aXBlci5vblRvdWNoU3RhcnQsIHtcbiAgICBwYXNzaXZlOiBmYWxzZVxuICB9KTtcbiAgZWxbZG9tTWV0aG9kXSgncG9pbnRlcmRvd24nLCBzd2lwZXIub25Ub3VjaFN0YXJ0LCB7XG4gICAgcGFzc2l2ZTogZmFsc2VcbiAgfSk7XG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3RvdWNobW92ZScsIHN3aXBlci5vblRvdWNoTW92ZSwge1xuICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgIGNhcHR1cmVcbiAgfSk7XG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3BvaW50ZXJtb3ZlJywgc3dpcGVyLm9uVG91Y2hNb3ZlLCB7XG4gICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgY2FwdHVyZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgndG91Y2hlbmQnLCBzd2lwZXIub25Ub3VjaEVuZCwge1xuICAgIHBhc3NpdmU6IHRydWVcbiAgfSk7XG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3BvaW50ZXJ1cCcsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgncG9pbnRlcmNhbmNlbCcsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgndG91Y2hjYW5jZWwnLCBzd2lwZXIub25Ub3VjaEVuZCwge1xuICAgIHBhc3NpdmU6IHRydWVcbiAgfSk7XG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3BvaW50ZXJvdXQnLCBzd2lwZXIub25Ub3VjaEVuZCwge1xuICAgIHBhc3NpdmU6IHRydWVcbiAgfSk7XG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3BvaW50ZXJsZWF2ZScsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgnY29udGV4dG1lbnUnLCBzd2lwZXIub25Ub3VjaEVuZCwge1xuICAgIHBhc3NpdmU6IHRydWVcbiAgfSk7XG5cbiAgLy8gUHJldmVudCBMaW5rcyBDbGlja3NcbiAgaWYgKHBhcmFtcy5wcmV2ZW50Q2xpY2tzIHx8IHBhcmFtcy5wcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24pIHtcbiAgICBlbFtkb21NZXRob2RdKCdjbGljaycsIHN3aXBlci5vbkNsaWNrLCB0cnVlKTtcbiAgfVxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICB3cmFwcGVyRWxbZG9tTWV0aG9kXSgnc2Nyb2xsJywgc3dpcGVyLm9uU2Nyb2xsKTtcbiAgfVxuXG4gIC8vIFJlc2l6ZSBoYW5kbGVyXG4gIGlmIChwYXJhbXMudXBkYXRlT25XaW5kb3dSZXNpemUpIHtcbiAgICBzd2lwZXJbc3dpcGVyTWV0aG9kXShkZXZpY2UuaW9zIHx8IGRldmljZS5hbmRyb2lkID8gJ3Jlc2l6ZSBvcmllbnRhdGlvbmNoYW5nZSBvYnNlcnZlclVwZGF0ZScgOiAncmVzaXplIG9ic2VydmVyVXBkYXRlJywgb25SZXNpemUsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN3aXBlcltzd2lwZXJNZXRob2RdKCdvYnNlcnZlclVwZGF0ZScsIG9uUmVzaXplLCB0cnVlKTtcbiAgfVxuXG4gIC8vIEltYWdlcyBsb2FkZXJcbiAgZWxbZG9tTWV0aG9kXSgnbG9hZCcsIHN3aXBlci5vbkxvYWQsIHtcbiAgICBjYXB0dXJlOiB0cnVlXG4gIH0pO1xufTtcbmZ1bmN0aW9uIGF0dGFjaEV2ZW50cygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBzd2lwZXIub25Ub3VjaFN0YXJ0ID0gb25Ub3VjaFN0YXJ0LmJpbmQoc3dpcGVyKTtcbiAgc3dpcGVyLm9uVG91Y2hNb3ZlID0gb25Ub3VjaE1vdmUuYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Ub3VjaEVuZCA9IG9uVG91Y2hFbmQuYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Eb2N1bWVudFRvdWNoU3RhcnQgPSBvbkRvY3VtZW50VG91Y2hTdGFydC5iaW5kKHN3aXBlcik7XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHN3aXBlci5vblNjcm9sbCA9IG9uU2Nyb2xsLmJpbmQoc3dpcGVyKTtcbiAgfVxuICBzd2lwZXIub25DbGljayA9IG9uQ2xpY2suYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Mb2FkID0gb25Mb2FkLmJpbmQoc3dpcGVyKTtcbiAgZXZlbnRzKHN3aXBlciwgJ29uJyk7XG59XG5mdW5jdGlvbiBkZXRhY2hFdmVudHMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGV2ZW50cyhzd2lwZXIsICdvZmYnKTtcbn1cbnZhciBldmVudHMkMSA9IHtcbiAgYXR0YWNoRXZlbnRzLFxuICBkZXRhY2hFdmVudHNcbn07XG5cbmNvbnN0IGlzR3JpZEVuYWJsZWQgPSAoc3dpcGVyLCBwYXJhbXMpID0+IHtcbiAgcmV0dXJuIHN3aXBlci5ncmlkICYmIHBhcmFtcy5ncmlkICYmIHBhcmFtcy5ncmlkLnJvd3MgPiAxO1xufTtcbmZ1bmN0aW9uIHNldEJyZWFrcG9pbnQoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICByZWFsSW5kZXgsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgcGFyYW1zLFxuICAgIGVsXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IGJyZWFrcG9pbnRzID0gcGFyYW1zLmJyZWFrcG9pbnRzO1xuICBpZiAoIWJyZWFrcG9pbnRzIHx8IGJyZWFrcG9pbnRzICYmIE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKS5sZW5ndGggPT09IDApIHJldHVybjtcb
2lxuICAvLyBHZXQgYnJlYWtwb2ludCBmb3Igd2luZG93IHdpZHRoIGFuZCB1cGRhdGUgcGFyYW1ldGVyc1xuICBjb25zdCBicmVha3BvaW50ID0gc3dpcGVyLmdldEJyZWFrcG9pbnQoYnJlYWtwb2ludHMsIHN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHNCYXNlLCBzd2lwZXIuZWwpO1xuICBpZiAoIWJyZWFrcG9pbnQgfHwgc3dpcGVyLmN1cnJlbnRCcmVha3BvaW50ID09PSBicmVha3BvaW50KSByZXR1cm47XG4gIGNvbnN0IGJyZWFrcG9pbnRPbmx5UGFyYW1zID0gYnJlYWtwb2ludCBpbiBicmVha3BvaW50cyA/IGJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdIDogdW5kZWZpbmVkO1xuICBjb25zdCBicmVha3BvaW50UGFyYW1zID0gYnJlYWtwb2ludE9ubHlQYXJhbXMgfHwgc3dpcGVyLm9yaWdpbmFsUGFyYW1zO1xuICBjb25zdCB3YXNNdWx0aVJvdyA9IGlzR3JpZEVuYWJsZWQoc3dpcGVyLCBwYXJhbXMpO1xuICBjb25zdCBpc011bHRpUm93ID0gaXNHcmlkRW5hYmxlZChzd2lwZXIsIGJyZWFrcG9pbnRQYXJhbXMpO1xuICBjb25zdCB3YXNHcmFiQ3Vyc29yID0gc3dpcGVyLnBhcmFtcy5ncmFiQ3Vyc29yO1xuICBjb25zdCBpc0dyYWJDdXJzb3IgPSBicmVha3BvaW50UGFyYW1zLmdyYWJDdXJzb3I7XG4gIGNvbnN0IHdhc0VuYWJsZWQgPSBwYXJhbXMuZW5hYmxlZDtcbiAgaWYgKHdhc011bHRpUm93ICYmICFpc011bHRpUm93KSB7XG4gICAgZWwuY2xhc3NMaXN0LnJlbW92ZShgJHtwYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkYCwgYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZC1jb2x1bW5gKTtcbiAgICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbiAgfSBlbHNlIGlmICghd2FzTXVsdGlSb3cgJiYgaXNNdWx0aVJvdykge1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZGApO1xuICAgIGlmIChicmVha3BvaW50UGFyYW1zLmdyaWQuZmlsbCAmJiBicmVha3BvaW50UGFyYW1zLmdyaWQuZmlsbCA9PT0gJ2NvbHVtbicgfHwgIWJyZWFrcG9pbnRQYXJhbXMuZ3JpZC5maWxsICYmIHBhcmFtcy5ncmlkLmZpbGwgPT09ICdjb2x1bW4nKSB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKGAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWQtY29sdW1uYCk7XG4gICAgfVxuICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICB9XG4gIGlmICh3YXNHcmFiQ3Vyc29yICYmICFpc0dyYWJDdXJzb3IpIHtcbiAgICBzd2lwZXIudW5zZXRHcmFiQ3Vyc29yKCk7XG4gIH0gZWxzZSBpZiAoIXdhc0dyYWJDdXJzb3IgJiYgaXNHcmFiQ3Vyc29yKSB7XG4gICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoKTtcbiAgfVxuXG4gIC8vIFRvZ2dsZSBuYXZpZ2F0aW9uLCBwYWdpbmF0aW9uLCBzY3JvbGxiYXJcbiAgWyduYXZpZ2F0aW9uJywgJ3BhZ2luYXRpb24nLCAnc2Nyb2xsYmFyJ10uZm9yRWFjaChwcm9wID0+IHtcbiAgICBpZiAodHlwZW9mIGJyZWFrcG9pbnRQYXJhbXNbcHJvcF0gPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgY29uc3Qgd2FzTW9kdWxlRW5hYmxlZCA9IHBhcmFtc1twcm9wXSAmJiBwYXJhbXNbcHJvcF0uZW5hYmxlZDtcbiAgICBjb25zdCBpc01vZHVsZUVuYWJsZWQgPSBicmVha3BvaW50UGFyYW1zW3Byb3BdICYmIGJyZWFrcG9pbnRQYXJhbXNbcHJvcF0uZW5hYmxlZDtcbiAgICBpZiAod2FzTW9kdWxlRW5hYmxlZCAmJiAhaXNNb2R1bGVFbmFibGVkKSB7XG4gICAgICBzd2lwZXJbcHJvcF0uZGlzYWJsZSgpO1xuICAgIH1cbiAgICBpZiAoIXdhc01vZHVsZUVuYWJsZWQgJiYgaXNNb2R1bGVFbmFibGVkKSB7XG4gICAgICBzd2lwZXJbcHJvcF0uZW5hYmxlKCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZGlyZWN0aW9uQ2hhbmdlZCA9IGJyZWFrcG9pbnRQYXJhbXMuZGlyZWN0aW9uICYmIGJyZWFrcG9pbnRQYXJhbXMuZGlyZWN0aW9uICE9PSBwYXJhbXMuZGlyZWN0aW9uO1xuICBjb25zdCBuZWVkc1JlTG9vcCA9IHBhcmFtcy5sb29wICYmIChicmVha3BvaW50UGFyYW1zLnNsaWRlc1BlclZpZXcgIT09IHBhcmFtcy5zbGlkZXNQZXJWaWV3IHx8IGRpcmVjdGlvbkNoYW5nZWQpO1xuICBjb25zdCB3YXNMb29wID0gcGFyYW1zLmxvb3A7XG4gIGlmIChkaXJlY3Rpb25DaGFuZ2VkICYmIGluaXRpYWxpemVkKSB7XG4gICAgc3dpcGVyLmNoYW5nZURpcmVjdGlvbigpO1xuICB9XG4gIGV4dGVuZChzd2lwZXIucGFyYW1zLCBicmVha3BvaW50UGFyYW1zKTtcbiAgY29uc3QgaXNFbmFibGVkID0gc3dpcGVyLnBhcmFtcy5lbmFibGVkO1xuICBjb25zdCBoYXNMb29wID0gc3dpcGVyLnBhcmFtcy5sb29wO1xuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIGFsbG93VG91Y2hNb3ZlOiBzd2lwZXIucGFyYW1zLmFsbG93VG91Y2hNb3ZlLFxuICAgIGFsbG93U2xpZGVOZXh0OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVOZXh0LFxuICAgIGFsbG93U2xpZGVQcmV2OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVQcmV2XG4gIH0pO1xuICBpZiAod2FzRW5hYmxlZCAmJiAhaXNFbmFibGVkKSB7XG4gICAgc3dpcGVyLmRpc2FibGUoKTtcbiAgfSBlbHNlIGlmICghd2FzRW5hYmxlZCAmJiBpc0VuYWJsZWQpIHtcbiAgICBzd2lwZXIuZW5hYmxlKCk7XG4gIH1cbiAgc3dpcGVyLmN1cnJlbnRCcmVha3BvaW50ID0gYnJlYWtwb2ludDtcbiAgc3dpcGVyLmVtaXQoJ19iZWZvcmVCcmVha3BvaW50JywgYnJlYWtwb2ludFBhcmFtcyk7XG4gIGlmIChpbml0aWFsaXplZCkge1xuICAgIGlmIChuZWVkc1JlTG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gICAgICBzd2lwZXIubG9vcENyZWF0ZShyZWFsSW5kZXgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIH0gZWxzZSBpZiAoIXdhc0xvb3AgJiYgaGFzTG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BDcmVhdGUocmVhbEluZGV4KTtcbiAgICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgICB9IGVsc2UgaWYgKHdhc0xvb3AgJiYgIWhhc0xvb3ApIHtcbiAgICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICAgIH1cbiAgfVxuICBzd2lwZXIuZW1pdCgnYnJlYWtwb2ludCcsIGJyZWFrcG9pbnRQYXJhbXMpO1xufVxuXG5mdW5jdGlvbiBnZXRCcmVha3BvaW50KGJyZWFrcG9pbnRzLCBiYXNlLCBjb250YWluZXJFbCkge1xuICBpZiAoYmFzZSA9PT0gdm9pZCAwKSB7XG4gICAgYmFzZSA9ICd3aW5kb3cnO1xuICB9XG4gIGlmICghYnJlYWtwb2ludHMgfHwgYmFzZSA9PT0gJ2Nvbn
2RhaW5lcicgJiYgIWNvbnRhaW5lckVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgYnJlYWtwb2ludCA9IGZhbHNlO1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgY3VycmVudEhlaWdodCA9IGJhc2UgPT09ICd3aW5kb3cnID8gd2luZG93LmlubmVySGVpZ2h0IDogY29udGFpbmVyRWwuY2xpZW50SGVpZ2h0O1xuICBjb25zdCBwb2ludHMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50cykubWFwKHBvaW50ID0+IHtcbiAgICBpZiAodHlwZW9mIHBvaW50ID09PSAnc3RyaW5nJyAmJiBwb2ludC5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgIGNvbnN0IG1pblJhdGlvID0gcGFyc2VGbG9hdChwb2ludC5zdWJzdHIoMSkpO1xuICAgICAgY29uc3QgdmFsdWUgPSBjdXJyZW50SGVpZ2h0ICogbWluUmF0aW87XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcG9pbnRcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogcG9pbnQsXG4gICAgICBwb2ludFxuICAgIH07XG4gIH0pO1xuICBwb2ludHMuc29ydCgoYSwgYikgPT4gcGFyc2VJbnQoYS52YWx1ZSwgMTApIC0gcGFyc2VJbnQoYi52YWx1ZSwgMTApKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCB7XG4gICAgICBwb2ludCxcbiAgICAgIHZhbHVlXG4gICAgfSA9IHBvaW50c1tpXTtcbiAgICBpZiAoYmFzZSA9PT0gJ3dpbmRvdycpIHtcbiAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYShgKG1pbi13aWR0aDogJHt2YWx1ZX1weClgKS5tYXRjaGVzKSB7XG4gICAgICAgIGJyZWFrcG9pbnQgPSBwb2ludDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IGNvbnRhaW5lckVsLmNsaWVudFdpZHRoKSB7XG4gICAgICBicmVha3BvaW50ID0gcG9pbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBicmVha3BvaW50IHx8ICdtYXgnO1xufVxuXG52YXIgYnJlYWtwb2ludHMgPSB7XG4gIHNldEJyZWFrcG9pbnQsXG4gIGdldEJyZWFrcG9pbnRcbn07XG5cbmZ1bmN0aW9uIHByZXBhcmVDbGFzc2VzKGVudHJpZXMsIHByZWZpeCkge1xuICBjb25zdCByZXN1bHRDbGFzc2VzID0gW107XG4gIGVudHJpZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGNsYXNzTmFtZXMgPT4ge1xuICAgICAgICBpZiAoaXRlbVtjbGFzc05hbWVzXSkge1xuICAgICAgICAgIHJlc3VsdENsYXNzZXMucHVzaChwcmVmaXggKyBjbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdENsYXNzZXMucHVzaChwcmVmaXggKyBpdGVtKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0Q2xhc3Nlcztcbn1cbmZ1bmN0aW9uIGFkZENsYXNzZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBjbGFzc05hbWVzLFxuICAgIHBhcmFtcyxcbiAgICBydGwsXG4gICAgZWwsXG4gICAgZGV2aWNlXG4gIH0gPSBzd2lwZXI7XG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBjb25zdCBzdWZmaXhlcyA9IHByZXBhcmVDbGFzc2VzKFsnaW5pdGlhbGl6ZWQnLCBwYXJhbXMuZGlyZWN0aW9uLCB7XG4gICAgJ2ZyZWUtbW9kZSc6IHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWRcbiAgfSwge1xuICAgICdhdXRvaGVpZ2h0JzogcGFyYW1zLmF1dG9IZWlnaHRcbiAgfSwge1xuICAgICdydGwnOiBydGxcbiAgfSwge1xuICAgICdncmlkJzogcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDFcbiAgfSwge1xuICAgICdncmlkLWNvbHVtbic6IHBhcmFtcy5ncmlkICYmIHBhcmFtcy5ncmlkLnJvd3MgPiAxICYmIHBhcmFtcy5ncmlkLmZpbGwgPT09ICdjb2x1bW4nXG4gIH0sIHtcbiAgICAnYW5kcm9pZCc6IGRldmljZS5hbmRyb2lkXG4gIH0sIHtcbiAgICAnaW9zJzogZGV2aWNlLmlvc1xuICB9LCB7XG4gICAgJ2Nzcy1tb2RlJzogcGFyYW1zLmNzc01vZGVcbiAgfSwge1xuICAgICdjZW50ZXJlZCc6IHBhcmFtcy5jc3NNb2RlICYmIHBhcmFtcy5jZW50ZXJlZFNsaWRlc1xuICB9LCB7XG4gICAgJ3dhdGNoLXByb2dyZXNzJzogcGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3NcbiAgfV0sIHBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzKTtcbiAgY2xhc3NOYW1lcy5wdXNoKC4uLnN1ZmZpeGVzKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc05hbWVzKTtcbiAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBlbCxcbiAgICBjbGFzc05hbWVzXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZWwgfHwgdHlwZW9mIGVsID09PSAnc3RyaW5nJykgcmV0dXJuO1xuICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzTmFtZXMpO1xuICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbn1cblxudmFyIGNsYXNzZXMgPSB7XG4gIGFkZENsYXNzZXMsXG4gIHJlbW92ZUNsYXNzZXNcbn07XG5cbmZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBpc0xvY2tlZDogd2FzTG9ja2VkLFxuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBjb25zdCB7XG4gICAgc2xpZGVzT2Zmc2V0QmVmb3JlXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChzbGlkZXNPZmZzZXRCZWZvcmUpIHtcbiAgICBjb25zdCBsYXN0U2xpZGVJbmRleCA9IHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBsYXN0U2xpZGVSaWdodEVkZ2UgPSBzd2lwZXIuc2xpZGVzR3JpZFtsYXN0U2xpZGVJbmRleF0gKyBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW2xhc3RTbGlkZUluZGV4XSArIHNsaWRlc09mZnNldEJlZm9yZSAqIDI7XG4gICAgc3dpcGVyLmlzTG9ja2VkID0gc3dpcGVyLnNpemUgPiBsYXN0U2xpZGVSaWdodEVkZ2U7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLmlzTG9ja2VkID0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aCA9PT0gMTtcbiAgfVxuICBpZiAocGFyYW1zLmFsbG93U2xpZGVOZXh0ID09PSB0cnVlKSB7XG4gICAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gIXN3aXBlci5pc0xvY2tlZDtcbiAgfVxuICBpZiAocGFyYW1zLmFsbG93U2xpZGVQcmV2ID09PSB0cnVlKSB7XG4gICAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gIXN3aXBlci5pc0xvY2tlZDtcbiAgfVxuICBpZiAod2FzTG9ja2VkICYmIHdhc0xvY2tlZCAhPT0gc3dpcGVyLmlzTG9ja2VkKSB7XG4gICAgc3dpcGVyLmlzRW5kID0gZmFsc2U7XG4gIH1cbiAgaWYgKHdhc0xvY2tlZCAhPT0gc3dpcGVyLmlzTG9ja2VkKSB7XG4gICAgc3dpcGVyLmVtaXQoc3dpcGVyLmlzTG9ja2VkID8gJ2xvY2snIDogJ3VubG9jaycpO1xuICB9XG59XG52YXIgY2hlY2tPdmVyZmxvdyQxID0ge1xuICBjaGVja092ZXJmbG93XG59O1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gIGluaXQ6IHRydWUsXG4gIGRpcmVjdGlvbj
2ogJ2hvcml6b250YWwnLFxuICBvbmVXYXlNb3ZlbWVudDogZmFsc2UsXG4gIHN3aXBlckVsZW1lbnROb2RlTmFtZTogJ1NXSVBFUi1DT05UQUlORVInLFxuICB0b3VjaEV2ZW50c1RhcmdldDogJ3dyYXBwZXInLFxuICBpbml0aWFsU2xpZGU6IDAsXG4gIHNwZWVkOiAzMDAsXG4gIGNzc01vZGU6IGZhbHNlLFxuICB1cGRhdGVPbldpbmRvd1Jlc2l6ZTogdHJ1ZSxcbiAgcmVzaXplT2JzZXJ2ZXI6IHRydWUsXG4gIG5lc3RlZDogZmFsc2UsXG4gIGNyZWF0ZUVsZW1lbnRzOiBmYWxzZSxcbiAgZXZlbnRzUHJlZml4OiAnc3dpcGVyJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgZm9jdXNhYmxlRWxlbWVudHM6ICdpbnB1dCwgc2VsZWN0LCBvcHRpb24sIHRleHRhcmVhLCBidXR0b24sIHZpZGVvLCBsYWJlbCcsXG4gIC8vIE92ZXJyaWRlc1xuICB3aWR0aDogbnVsbCxcbiAgaGVpZ2h0OiBudWxsLFxuICAvL1xuICBwcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb246IGZhbHNlLFxuICAvLyBzc3JcbiAgdXNlckFnZW50OiBudWxsLFxuICB1cmw6IG51bGwsXG4gIC8vIFRvIHN1cHBvcnQgaU9TJ3Mgc3dpcGUtdG8tZ28tYmFjayBnZXN0dXJlICh3aGVuIGJlaW5nIHVzZWQgaW4tYXBwKS5cbiAgZWRnZVN3aXBlRGV0ZWN0aW9uOiBmYWxzZSxcbiAgZWRnZVN3aXBlVGhyZXNob2xkOiAyMCxcbiAgLy8gQXV0b2hlaWdodFxuICBhdXRvSGVpZ2h0OiBmYWxzZSxcbiAgLy8gU2V0IHdyYXBwZXIgd2lkdGhcbiAgc2V0V3JhcHBlclNpemU6IGZhbHNlLFxuICAvLyBWaXJ0dWFsIFRyYW5zbGF0ZVxuICB2aXJ0dWFsVHJhbnNsYXRlOiBmYWxzZSxcbiAgLy8gRWZmZWN0c1xuICBlZmZlY3Q6ICdzbGlkZScsXG4gIC8vICdzbGlkZScgb3IgJ2ZhZGUnIG9yICdjdWJlJyBvciAnY292ZXJmbG93JyBvciAnZmxpcCdcblxuICAvLyBCcmVha3BvaW50c1xuICBicmVha3BvaW50czogdW5kZWZpbmVkLFxuICBicmVha3BvaW50c0Jhc2U6ICd3aW5kb3cnLFxuICAvLyBTbGlkZXMgZ3JpZFxuICBzcGFjZUJldHdlZW46IDAsXG4gIHNsaWRlc1BlclZpZXc6IDEsXG4gIHNsaWRlc1Blckdyb3VwOiAxLFxuICBzbGlkZXNQZXJHcm91cFNraXA6IDAsXG4gIHNsaWRlc1Blckdyb3VwQXV0bzogZmFsc2UsXG4gIGNlbnRlcmVkU2xpZGVzOiBmYWxzZSxcbiAgY2VudGVyZWRTbGlkZXNCb3VuZHM6IGZhbHNlLFxuICBzbGlkZXNPZmZzZXRCZWZvcmU6IDAsXG4gIC8vIGluIHB4XG4gIHNsaWRlc09mZnNldEFmdGVyOiAwLFxuICAvLyBpbiBweFxuICBub3JtYWxpemVTbGlkZUluZGV4OiB0cnVlLFxuICBjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXM6IGZhbHNlLFxuICAvLyBEaXNhYmxlIHN3aXBlciBhbmQgaGlkZSBuYXZpZ2F0aW9uIHdoZW4gY29udGFpbmVyIG5vdCBvdmVyZmxvd1xuICB3YXRjaE92ZXJmbG93OiB0cnVlLFxuICAvLyBSb3VuZCBsZW5ndGhcbiAgcm91bmRMZW5ndGhzOiBmYWxzZSxcbiAgLy8gVG91Y2hlc1xuICB0b3VjaFJhdGlvOiAxLFxuICB0b3VjaEFuZ2xlOiA0NSxcbiAgc2ltdWxhdGVUb3VjaDogdHJ1ZSxcbiAgc2hvcnRTd2lwZXM6IHRydWUsXG4gIGxvbmdTd2lwZXM6IHRydWUsXG4gIGxvbmdTd2lwZXNSYXRpbzogMC41LFxuICBsb25nU3dpcGVzTXM6IDMwMCxcbiAgZm9sbG93RmluZ2VyOiB0cnVlLFxuICBhbGxvd1RvdWNoTW92ZTogdHJ1ZSxcbiAgdGhyZXNob2xkOiA1LFxuICB0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb246IGZhbHNlLFxuICB0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ6IHRydWUsXG4gIHRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0OiBmYWxzZSxcbiAgdG91Y2hSZWxlYXNlT25FZGdlczogZmFsc2UsXG4gIC8vIFVuaXF1ZSBOYXZpZ2F0aW9uIEVsZW1lbnRzXG4gIHVuaXF1ZU
25hdkVsZW1lbnRzOiB0cnVlLFxuICAvLyBSZXNpc3RhbmNlXG4gIHJlc2lzdGFuY2U6IHRydWUsXG4gIHJlc2lzdGFuY2VSYXRpbzogMC44NSxcbiAgLy8gUHJvZ3Jlc3NcbiAgd2F0Y2hTbGlkZXNQcm9ncmVzczogZmFsc2UsXG4gIC8vIEN1cnNvclxuICBncmFiQ3Vyc29yOiBmYWxzZSxcbiAgLy8gQ2xpY2tzXG4gIHByZXZlbnRDbGlja3M6IHRydWUsXG4gIHByZXZlbnRDbGlja3NQcm9wYWdhdGlvbjogdHJ1ZSxcbiAgc2xpZGVUb0NsaWNrZWRTbGlkZTogZmFsc2UsXG4gIC8vIGxvb3BcbiAgbG9vcDogZmFsc2UsXG4gIGxvb3BBZGRCbGFua1NsaWRlczogdHJ1ZSxcbiAgbG9vcEFkZGl0aW9uYWxTbGlkZXM6IDAsXG4gIGxvb3BQcmV2ZW50c1NsaWRpbmc6IHRydWUsXG4gIC8vIHJld2luZFxuICByZXdpbmQ6IGZhbHNlLFxuICAvLyBTd2lwaW5nL25vIHN3aXBpbmdcbiAgYWxsb3dTbGlkZVByZXY6IHRydWUsXG4gIGFsbG93U2xpZGVOZXh0OiB0cnVlLFxuICBzd2lwZUhhbmRsZXI6IG51bGwsXG4gIC8vICcuc3dpcGUtaGFuZGxlcicsXG4gIG5vU3dpcGluZzogdHJ1ZSxcbiAgbm9Td2lwaW5nQ2xhc3M6ICdzd2lwZXItbm8tc3dpcGluZycsXG4gIG5vU3dpcGluZ1NlbGVjdG9yOiBudWxsLFxuICAvLyBQYXNzaXZlIExpc3RlbmVyc1xuICBwYXNzaXZlTGlzdGVuZXJzOiB0cnVlLFxuICBtYXhCYWNrZmFjZUhpZGRlblNsaWRlczogMTAsXG4gIC8vIE5TXG4gIGNvbnRhaW5lck1vZGlmaWVyQ2xhc3M6ICdzd2lwZXItJyxcbiAgLy8gTkVXXG4gIHNsaWRlQ2xhc3M6ICdzd2lwZXItc2xpZGUnLFxuICBzbGlkZUJsYW5rQ2xhc3M6ICdzd2lwZXItc2xpZGUtYmxhbmsnLFxuICBzbGlkZUFjdGl2ZUNsYXNzOiAnc3dpcGVyLXNsaWRlLWFjdGl2ZScsXG4gIHNsaWRlVmlzaWJsZUNsYXNzOiAnc3dpcGVyLXNsaWRlLXZpc2libGUnLFxuICBzbGlkZUZ1bGx5VmlzaWJsZUNsYXNzOiAnc3dpcGVyLXNsaWRlLWZ1bGx5LXZpc2libGUnLFxuICBzbGlkZU5leHRDbGFzczogJ3N3aXBlci1zbGlkZS1uZXh0JyxcbiAgc2xpZGVQcmV2Q2xhc3M6ICdzd2lwZXItc2xpZGUtcHJldicsXG4gIHdyYXBwZXJDbGFzczogJ3N3aXBlci13cmFwcGVyJyxcbiAgbGF6eVByZWxvYWRlckNsYXNzOiAnc3dpcGVyLWxhenktcHJlbG9hZGVyJyxcbiAgbGF6eVByZWxvYWRQcmV2TmV4dDogMCxcbiAgLy8gQ2FsbGJhY2tzXG4gI
2HJ1bkNhbGxiYWNrc09uSW5pdDogdHJ1ZSxcbiAgLy8gSW50ZXJuYWxzXG4gIF9lbWl0Q2xhc3NlczogZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIG1vZHVsZUV4dGVuZFBhcmFtcyhwYXJhbXMsIGFsbE1vZHVsZXNQYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGV4dGVuZFBhcmFtcyhvYmopIHtcbiAgICBpZiAob2JqID09PSB2b2lkIDApIHtcbiAgICAgIG9iaiA9IHt9O1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVQYXJhbU5hbWUgPSBPYmplY3Qua2V5cyhvYmopWzBdO1xuICAgIGNvbnN0IG1vZHVsZVBhcmFtcyA9IG9ialttb2R1bGVQYXJhbU5hbWVdO1xuICAgIGlmICh0eXBlb2YgbW9kdWxlUGFyYW1zICE9PSAnb2JqZWN0JyB8fCBtb2R1bGVQYXJhbXMgPT09IG51bGwpIHtcbiAgICAgIGV4dGVuZChhbGxNb2R1bGVzUGFyYW1zLCBvYmopO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPT09IHRydWUpIHtcbiAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID0ge1xuICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAobW9kdWxlUGFyYW1OYW1lID09PSAnbmF2aWdhdGlvbicgJiYgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gJiYgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uZW5hYmxlZCAmJiAhcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0ucHJldkVsICYmICFwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXS5uZXh0RWwpIHtcbiAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLmF1dG8gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoWydwYWdpbmF0aW9uJywgJ3Njcm9sbGJhciddLmluZGV4T2YobW9kdWxlUGFyYW1OYW1lKSA+PSAwICYmIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdICYmIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLmVuYWJsZWQgJiYgIXBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLmVsKSB7XG4gICAgICBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXS5hdXRvID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCEobW9kdWxlUGFyYW1OYW1lIGluIHBhcmFtcyAmJiAnZW5hYmxlZCcgaW4gbW9kdWxlUGFyYW1zKSkge1xuICAgICAgZXh0ZW5kKGFsbE1vZHVsZXNQYXJhbXMsIG9iaik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPT09ICdvYmplY3QnICYmICEoJ2VuYWJsZWQnIGluIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdKSkge1xuICAgICAgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmICghcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0pIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID0ge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9O1xuICAgIGV4dGVuZChhbGxNb2R1bGVzUGFyYW1zLCBvYmopO1xuICB9O1xufVxuXG4vKiBlc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246IFwib2ZmXCIgKi9cbmNvbnN0IHByb3RvdHlwZXMgPSB7XG4gIGV2ZW50c0VtaXR0ZXIsXG4gIHVwZGF0ZSxcbiAgdHJhbnNsYXRlLFxuICB0cmFuc2l0aW9uLFxuICBzbGlkZSxcbiAgbG9vcCxcbiAgZ3JhYkN1cnNvcixcbiAgZXZlbnRzOiBldmVudHMkMSxcbiAgYnJlYWtwb2ludHMsXG4gIGNoZWNrT3ZlcmZsb3c6IGNoZWNrT3ZlcmZsb3ckMSxcbiAgY2xhc3Nlc1xufTtcbmNvbnN0IGV4dGVuZGVkRGVmYXVsdHMgPSB7fTtcbmNsYXNzIFN3aXBlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBlbDtcbiAgICBsZXQgcGFyYW1zO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGFyZ3NbMF0uY29uc3RydWN0b3IgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3NbMF0pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCcpIHtcbiAgICAgIHBhcmFtcyA9IGFyZ3NbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtlbCwgcGFyYW1zXSA9IGFyZ3M7XG4gICAgfVxuICAgIGlmICghcGFyYW1zKSBwYXJhbXMgPSB7fTtcbiAgICBwYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcyk7XG4gICAgaWYgKGVsICYmICFwYXJhbXMuZWwpIHBhcmFtcy5lbCA9IGVsO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBpZiAocGFyYW1zLmVsICYmIHR5cGVvZiBwYXJhbXMuZWwgPT09ICdzdHJpbmcnICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGFyYW1zLmVsKS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBzd2lwZXJzID0gW107XG4gICAgICBkb2
2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhcmFtcy5lbCkuZm9yRWFjaChjb250YWluZXJFbCA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1BhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zLCB7XG4gICAgICAgICAgZWw6IGNvbnRhaW5lckVsXG4gICAgICAgIH0pO1xuICAgICAgICBzd2lwZXJzLnB1c2gobmV3IFN3aXBlcihuZXdQYXJhbXMpKTtcbiAgICAgIH0pO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0cnVjdG9yLXJldHVyblxuICAgICAgcmV0dXJuIHN3aXBlcnM7XG4gICAgfVxuXG4gICAgLy8gU3dpcGVyIEluc3RhbmNlXG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBzd2lwZXIuX19zd2lwZXJfXyA9IHRydWU7XG4gICAgc3dpcGVyLnN1cHBvcnQgPSBnZXRTdXBwb3J0KCk7XG4gICAgc3dpcGVyLmRldmljZSA9IGdldERldmljZSh7XG4gICAgICB1c2VyQWdlbnQ6IHBhcmFtcy51c2VyQWdlbnRcbiAgICB9KTtcbiAgICBzd2lwZXIuYnJvd3NlciA9IGdldEJyb3dzZXIoKTtcbiAgICBzd2lwZXIuZXZlbnRzTGlzdGVuZXJzID0ge307XG4gICAgc3dpcGVyLmV2ZW50c0FueUxpc3RlbmVycyA9IFtdO1xuICAgIHN3aXBlci5tb2R1bGVzID0gWy4uLnN3aXBlci5fX21vZHVsZXNfX107XG4gICAgaWYgKHBhcmFtcy5tb2R1bGVzICYmIEFycmF5LmlzQXJyYXkocGFyYW1zLm1vZHVsZXMpKSB7XG4gICAgICBzd2lwZXIubW9kdWxlcy5wdXNoKC4uLnBhcmFtcy5tb2R1bGVzKTtcbiAgICB9XG4gICAgY29uc3QgYWxsTW9kdWxlc1BhcmFtcyA9IHt9O1xuICAgIHN3aXBlci5tb2R1bGVzLmZvckVhY2gobW9kID0+IHtcbiAgICAgIG1vZCh7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc3dpcGVyLFxuICAgICAgICBleHRlbmRQYXJhbXM6IG1vZHVsZUV4dGVuZFBhcmFtcyhwYXJhbXMsIGFsbE1vZHVsZXNQYXJhbXMpLFxuICAgICAgICBvbjogc3dpcGVyLm9uLmJpbmQoc3dpcGVyKSxcbiAgICAgICAgb25jZTogc3dpcGVyLm9uY2UuYmluZChzd2lwZXIpLFxuICAgICAgICBvZmY6IHN3aXBlci5vZmYuYmluZChzd2lwZXIpLFxuICAgICAgICBlbWl0OiBzd2lwZXIuZW1pdC5iaW5kKHN3aXBlcilcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRXh0ZW5kIGRlZmF1bHRzIHdpdGggbW9kdWxlcyBwYXJhbXNcbiAgICBjb25zdCBzd2lwZXJQYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBhbGxNb2R1bGVzUGFyYW1zKTtcblxuICAgIC8vIEV4dGVuZCBkZWZhdWx0cyB3aXRoIHBhc3NlZCBwYXJhbXNcbiAgICBzd2lwZXIucGFyYW1zID0gZXh0ZW5kKHt9LCBzd2lwZXJQYXJhbXMsIGV4dGVuZGVkRGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgc3dpcGVyLm9yaWdpbmFsUGFyYW1zID0gZXh0ZW5kKHt9LCBzd2lwZXIucGFyYW1zKTtcbiAgICBzd2lwZXIucGFzc2VkUGFyYW1zID0gZXh0ZW5kKHt9LCBwYXJhbXMpO1xuXG4gICAgLy8gYWRkIGV2ZW50IGxpc3RlbmVyc1xuICAgIGlmIChzd2lwZXIucGFyYW1zICYmIHN3aXBlci5wYXJhbXMub24pIHtcbiAgICAgIE9iamVjdC5rZXlzKHN3aXBlci5wYXJhbXMub24pLmZvckVhY2goZXZlbnROYW1lID0+IHtcbiAgICAgICAgc3dpcGVyLm9uKGV2ZW50TmFtZSwgc3dpcGVyLnBhcmFtcy5vbltldmVudE5hbWVdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcyAmJiBzd2lwZXIucGFyYW1zLm9uQW55KSB7XG4gICAgICBzd2lwZXIub25Bbnkoc3dpcGVyLnBhcmFtcy5vbkFueSk7XG4gICAgfVxuXG4gICAgLy8gRXh0ZW5kIFN3aXBlclxuICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgICBlbmFibGVkOiBzd2lwZXIucGFyYW1zLmVuYWJsZWQsXG4gICAgICBlbCxcbiAgICAgIC8vIENsYXNzZXNcbiAgICAgIGNsYXNzTmFtZXM6IFtdLFxuICAgICAgLy8gU2xpZGVzXG4gICAgICBzbGlkZXM6IFtdLFxuICAgICAgc2xpZGVzR3JpZDogW10sXG4gICAgICBzbmFwR3JpZDogW10sXG4gICAgICBzbGlkZXNTaXplc0dyaWQ6IFtdLFxuICAgICAgLy8gaXNEaXJlY3Rpb25cbiAgICAgIGlzSG9yaXpvbnRhbCgpIHtcbiAgICAgICAgcmV0dXJuIHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCc7XG4gICAgICB9LFxuICAgICAgaXNWZXJ0aWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICAgICAgfSxcbiAgICAgIC8vIEluZGV4ZXNcbiAgICAgIGFjdGl2ZUluZGV4OiAwLFxuICAgICAgcmVhbEluZGV4OiAwLFxuICAgICAgLy9cbiAgICAgIGlzQmVnaW5uaW5nOiB0cnVlLFxuICAgICAgaXNFbmQ6IGZhbHNlLFxuICAgICAgLy8gUHJvcHNcbiAgICAgIHRyYW5zbGF0ZTogMCxcbiAgICAgIHByZXZpb3VzVHJhbnNsYXRlOiAwLFxuICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICB2ZWxvY2l0eTogMCxcbiAgICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgICBjc3NPdmVyZmxvd0FkanVzdG1lbnQoKSB7XG4gICAgICAgIC8vIFJldHVybnMgMCB1bmxlc3MgYHRyYW5zbGF0ZWAgaXMgPiAyKioyM1xuICAgICAgICAvLyBTaG91bGQgYmUgc3VidHJhY3RlZCBmcm9tIGNzcyB2YWx1ZXMgdG8gcHJldmVudCBvdmVyZmxvd1xuICAgICAgICByZXR1cm4gTWF0aC50cnVuYyh0aGlzLnRyYW5zbGF0ZSAvIDIgKiogMjMpICogMiAqKiAyMztcbiAgICAgIH0sXG4gICAgICAvLyBMb2Nrc1xuICAgICAgYWxsb3dTbGlkZU5leHQ6IHN3aXBlci5wYXJhbXMuYWxsb3dTbGlkZU5leHQsXG4gICAgICBhbGxvd1NsaWRlUHJldjogc3dpcGVyLnBhcmFtcy5hbGxvd1NsaWRlUHJldixcbiAgICAgIC8vIFRvdWNoIEV2ZW50c1xuICAgICAgdG91Y2hFdmVudHNEYXRhOiB7XG4gICAgICAgIGlzVG91Y2hlZDogdW5kZWZpbmVkLFxuICAgICAgICBpc01vdmVkOiB1bmRlZmluZWQsXG4gICAgICAgIGFsbG93VG91Y2hDYWxsYmFja3M6IHVuZGVmaW5lZCxcbiAgICAgICAgdG91Y2hTdGFydFRpbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgaXNTY3JvbGxpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudFRyYW5zbGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBzdGFydFRyYW5zbGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBhbGxvd1RocmVzaG9sZE1vdmU6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8gRm9ybSBlbGVtZW50cyB0byBtYXRjaFxuICAgICAgICBmb2N1c2FibGVFbGVtZW50czogc3dpcGVyLnBhcmFtcy5mb2N1c2FibGVFbGVtZW50cyxcbiAgICAgICAgLy8gTGFzdCBjbGljayB0aW1lXG4gICAgICAgIGxhc3RDbGlja1RpbWU6IDAsXG4gICAgICAgIGNsaWNrVGltZW91dDogdW5kZWZpbmVkLFxuICAgICAgICAvLyBWZWxvY2l0aWVzXG4gICAgICAgI
2HZlbG9jaXRpZXM6IFtdLFxuICAgICAgICBhbGxvd01vbWVudHVtQm91bmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0TW92aW5nOiB1bmRlZmluZWQsXG4gICAgICAgIHBvaW50ZXJJZDogbnVsbCxcbiAgICAgICAgdG91Y2hJZDogbnVsbFxuICAgICAgfSxcbiAgICAgIC8vIENsaWNrc1xuICAgICAgYWxsb3dDbGljazogdHJ1ZSxcbiAgICAgIC8vIFRvdWNoZXNcbiAgICAgIGFsbG93VG91Y2hNb3ZlOiBzd2lwZXIucGFyYW1zLmFsbG93VG91Y2hNb3ZlLFxuICAgICAgdG91Y2hlczoge1xuICAgICAgICBzdGFydFg6IDAsXG4gICAgICAgIHN0YXJ0WTogMCxcbiAgICAgICAgY3VycmVudFg6IDAsXG4gICAgICAgIGN1cnJlbnRZOiAwLFxuICAgICAgICBkaWZmOiAwXG4gICAgICB9LFxuICAgICAgLy8gSW1hZ2VzXG4gICAgICBpbWFnZXNUb0xvYWQ6IFtdLFxuICAgICAgaW1hZ2VzTG9hZGVkOiAwXG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ19zd2lwZXInKTtcblxuICAgIC8vIEluaXRcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5pbml0KSB7XG4gICAgICBzd2lwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhcHAgaW5zdGFuY2VcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RydWN0b3ItcmV0dXJuXG4gICAgcmV0dXJuIHN3aXBlcjtcbiAgfVxuICBnZXREaXJlY3Rpb25MYWJlbChwcm9wZXJ0eSkge1xuICAgIGlmICh0aGlzLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHJldHVybiB7XG4gICAgICAnd2lkdGgnOiAnaGVpZ2h0JyxcbiAgICAgICdtYXJnaW4tdG9wJzogJ21hcmdpbi1sZWZ0JyxcbiAgICAgICdtYXJnaW4tYm90dG9tICc6ICdtYXJnaW4tcmlnaHQnLFxuICAgICAgJ21hcmdpbi1sZWZ0JzogJ21hcmdpbi10b3AnLFxuICAgICAgJ21hcmdpbi1yaWdodCc6ICdtYXJnaW4tYm90dG9tJyxcbiAgICAgICdwYWRkaW5nLWxlZnQnOiAncGFkZGluZy10b3AnLFxuICAgICAgJ3BhZGRpbmctcmlnaHQnOiAncGFkZGluZy1ib3R0b20nLFxuICAgICAgJ21hcmdpblJpZ2h0JzogJ21hcmdpbkJvdHRvbSdcbiAgICB9W3Byb3BlcnR5XTtcbiAgfVxuICBnZXRTbGlkZUluZGV4KHNsaWRlRWwpIHtcbiAgICBjb25zdCB7XG4gICAgICBzbGlkZXNFbCxcbiAgICAgIHBhcmFtc1xuICAgIH0gPSB0aGlzO1xuICAgIGNvbnN0IHNsaWRlcyA9IGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3BhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCk7XG4gICAgY29uc3QgZmlyc3RTbGlkZUluZGV4ID0gZWxlbWVudEluZGV4KHNsaWRlc1swXSk7XG4gICAgcmV0dXJuIGVsZW1lbnRJbmRleChzbGlkZUVsKSAtIGZpcnN0U2xpZGVJbmRleDtcbiAgfVxuICBnZXRTbGlkZUluZGV4QnlEYXRhKGluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2xpZGVJbmRleCh0aGlzLnNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSAqIDEgPT09IGluZGV4KVswXSk7XG4gIH1cbiAgcmVjYWxjU2xpZGVzKCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3Qge1xuICAgICAgc2xpZGVzRWwsXG4gICAgICBwYXJhbXNcbiAgICB9ID0gc3dpcGVyO1xuICAgIHN3aXBlci5zbGlkZXMgPSBlbGVtZW50Q2hpbGRyZW4oc2xpZGVzRWwsIGAuJHtwYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICB9XG4gIGVuYWJsZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHN3aXBlci5lbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5ncmFiQ3Vyc29yKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcigpO1xuICAgIH1cbiAgICBzd2lwZXIuZW1pdCgnZW5hYmxlJyk7XG4gIH1cbiAgZGlzYWJsZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyLmVuYWJsZWQpIHJldHVybjtcbiAgICBzd2lwZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci51bnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG4gICAgc3dpcGVyLmVtaXQoJ2Rpc2FibGUnKTtcbiAgfVxuICBzZXRQcm9ncmVzcyhwcm9ncmVzcywgc3BlZWQpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIHByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgocHJvZ3Jlc3MsIDApLCAxKTtcbiAgICBjb25zdCBtaW4gPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gICAgY29uc3QgbWF4ID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSAobWF4IC0gbWluKSAqIHByb2dyZXNzICsgbWluO1xuICAgIHN3aXBlci50cmFuc2xhdGVUbyhjdXJyZW50LCB0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnID8gMCA6IHNwZWVkKTtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9XG4gIGVtaXRDb250YWluZXJDbGFzc2VzKCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLl9lbWl0Q2xhc3NlcyB8fCAhc3dpcGVyLmVsKSByZXR1cm47XG4gICAgY29uc3QgY2xzID0gc3dpcGVyLmVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihjbGFzc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXInKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpID09PSAwO1xuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdfY29udGFpbmVyQ2xhc3NlcycsIGNscy5qb2luKCcgJykpO1xuICB9XG4gIGdldFNsaWRlQ2xhc3NlcyhzbGlkZUVsKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBzbGlkZUVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihjbGFzc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItc2xpZGUnKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3MpID09PSAwO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuICBlbWl0U2xpZGVzQ2xhc3NlcygpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5fZW1pdENsYXNzZXMgfHwgIXN3aXBlci5lbCkgcmV0dXJuO1xuICAgIGNvbnN0IHVwZGF0ZXMgPSBbXTtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICBjb25zdCBjbGFzc05hbWVzID0gc3dpcGVyLmdldFNsaWRlQ2xhc3NlcyhzbGlkZUVsKTtcbiAgICAgIHVwZGF0ZXMucHVzaCh7XG4gICAgICAgI
2HNsaWRlRWwsXG4gICAgICAgIGNsYXNzTmFtZXNcbiAgICAgIH0pO1xuICAgICAgc3dpcGVyLmVtaXQoJ19zbGlkZUNsYXNzJywgc2xpZGVFbCwgY2xhc3NOYW1lcyk7XG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ19zbGlkZUNsYXNzZXMnLCB1cGRhdGVzKTtcbiAgfVxuICBzbGlkZXNQZXJWaWV3RHluYW1pYyh2aWV3LCBleGFjdCkge1xuICAgIGlmICh2aWV3ID09PSB2b2lkIDApIHtcbiAgICAgIHZpZXcgPSAnY3VycmVudCc7XG4gICAgfVxuICAgIGlmIChleGFjdCA9PT0gdm9pZCAwKSB7XG4gICAgICBleGFjdCA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGNvbnN0IHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIHNsaWRlcyxcbiAgICAgIHNsaWRlc0dyaWQsXG4gICAgICBzbGlkZXNTaXplc0dyaWQsXG4gICAgICBzaXplOiBzd2lwZXJTaXplLFxuICAgICAgYWN0aXZlSW5kZXhcbiAgICB9ID0gc3dpcGVyO1xuICAgIGxldCBzcHYgPSAxO1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdudW1iZXInKSByZXR1cm4gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgbGV0IHNsaWRlU2l6ZSA9IHNsaWRlc1thY3RpdmVJbmRleF0gPyBNYXRoLmNlaWwoc2xpZGVzW2FjdGl2ZUluZGV4XS5zd2lwZXJTbGlkZVNpemUpIDogMDtcbiAgICAgIGxldCBicmVha0xvb3A7XG4gICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggKyAxOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0gJiYgIWJyZWFrTG9vcCkge1xuICAgICAgICAgIHNsaWRlU2l6ZSArPSBNYXRoLmNlaWwoc2xpZGVzW2ldLnN3aXBlclNsaWRlU2l6ZSk7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgaWYgKHNsaWRlU2l6ZSA+IHN3aXBlclNpemUpIGJyZWFrTG9vcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSBhY3RpdmVJbmRleCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0gJiYgIWJyZWFrTG9vcCkge1xuICAgICAgICAgIHNsaWRlU2l6ZSArPSBzbGlkZXNbaV0uc3dpcGVyU2xpZGVTaXplO1xuICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIGlmIChzbGlkZVNpemUgPiBzd2lwZXJTaXplKSBicmVha0xvb3AgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgaWYgKHZpZXcgPT09ICdjdXJyZW50Jykge1xuICAgICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggKyAxOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3Qgc2xpZGVJblZpZXcgPSBleGFjdCA/IHNsaWRlc0dyaWRbaV0gKyBzbGlkZXNTaXplc0dyaWRbaV0gLSBzbGlkZXNHcmlkW2FjdGl2ZUluZGV4XSA8IHN3aXBlclNpemUgOiBzbGlkZXNHcmlkW2ldIC0gc2xpZGVzR3JpZFthY3RpdmVJbmRleF0gPCBzd2lwZXJTaXplO1xuICAgICAgICAgIGlmIChzbGlkZUluVmlldykge1xuICAgICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwcmV2aW91c1xuICAgICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgIGNvbnN0IHNsaWRlSW5WaWV3ID0gc2xpZGVzR3JpZFthY3RpdmVJbmRleF0gLSBzbGlkZXNHcmlkW2ldIDwgc3dpcGVyU2l6ZTtcbiAgICAgICAgICBpZiAoc2xpZGVJblZpZXcpIHtcbiAgICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3B2O1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBjb25zdCB7XG4gICAgICBzbmFwR3JpZCxcbiAgICAgIHBhcmFtc1xuICAgIH0gPSBzd2lwZXI7XG4gICAgLy8gQnJlYWtwb2ludHNcbiAgICBpZiAocGFyYW1zLmJyZWFrcG9pbnRzKSB7XG4gICAgICBzd2lwZXIuc2V0QnJlYWtwb2ludCgpO1xuICAgIH1cbiAgICBbLi4uc3dpcGVyLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tsb2FkaW5nPVwibGF6eVwiXScpXS5mb3JFYWNoKGltYWdlRWwgPT4ge1xuICAgICAgaWYgKGltYWdlRWwuY29tcGxldGUpIHtcbiAgICAgICAgcHJvY2Vzc0xhenlQcmVsb2FkZXIoc3dpcGVyLCBpbWFnZUVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIGZ1bmN0aW9uIHNldFRyYW5zbGF0ZSgpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZVZhbHVlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgKiAtMSA6IHN3aXBlci50cmFuc2xhdGU7XG4gICAgICBjb25zdCBuZXdUcmFuc2xhdGUgPSBNYXRoLm1pbihNYXRoLm1heCh0cmFuc2xhdGVWYWx1ZSwgc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSwgc3dpcGVyLm1pblRyYW5zbGF0ZSgpKTtcbiAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUobmV3VHJhbnNsYXRlKTtcbiAgICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICB9XG4gICAgbGV0IHRyYW5zbGF0ZWQ7XG4gICAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiAhcGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHNldFRyYW5zbGF0ZSgpO1xuICAgICAgaWYgKHBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldyA+IDEpICYmIHN3aXBlci5pc0VuZCAmJiAhcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlcyA9IHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMgOiBzd2lwZXIuc2xpZGVzO1xuICAgICAgICB0cmFuc2xhdGVkID0gc3dpcGVyLnNsaWRlVG8oc2xpZGVzLmxlbmd0aCAtIDEsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgI
2HRyYW5zbGF0ZWQgPSBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICghdHJhbnNsYXRlZCkge1xuICAgICAgICBzZXRUcmFuc2xhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHNuYXBHcmlkICE9PSBzd2lwZXIuc25hcEdyaWQpIHtcbiAgICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCd1cGRhdGUnKTtcbiAgfVxuICBjaGFuZ2VEaXJlY3Rpb24obmV3RGlyZWN0aW9uLCBuZWVkVXBkYXRlKSB7XG4gICAgaWYgKG5lZWRVcGRhdGUgPT09IHZvaWQgMCkge1xuICAgICAgbmVlZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3QgY3VycmVudERpcmVjdGlvbiA9IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uO1xuICAgIGlmICghbmV3RGlyZWN0aW9uKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIG5ld0RpcmVjdGlvbiA9IGN1cnJlbnREaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gICAgfVxuICAgIGlmIChuZXdEaXJlY3Rpb24gPT09IGN1cnJlbnREaXJlY3Rpb24gfHwgbmV3RGlyZWN0aW9uICE9PSAnaG9yaXpvbnRhbCcgJiYgbmV3RGlyZWN0aW9uICE9PSAndmVydGljYWwnKSB7XG4gICAgICByZXR1cm4gc3dpcGVyO1xuICAgIH1cbiAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShgJHtzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9JHtjdXJyZW50RGlyZWN0aW9ufWApO1xuICAgIHN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke25ld0RpcmVjdGlvbn1gKTtcbiAgICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbiAgICBzd2lwZXIucGFyYW1zLmRpcmVjdGlvbiA9IG5ld0RpcmVjdGlvbjtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICBpZiAobmV3RGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgIHNsaWRlRWwuc3R5bGUud2lkdGggPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsaWRlRWwuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ2NoYW5nZURpcmVjdGlvbicpO1xuICAgIGlmIChuZWVkVXBkYXRlKSBzd2lwZXIudXBkYXRlKCk7XG4gICAgcmV0dXJuIHN3aXBlcjtcbiAgfVxuICBjaGFuZ2VMYW5ndWFnZURpcmVjdGlvbihkaXJlY3Rpb24pIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIucnRsICYmIGRpcmVjdGlvbiA9PT0gJ3J0bCcgfHwgIXN3aXBlci5ydGwgJiYgZGlyZWN0aW9uID09PSAnbHRyJykgcmV0dXJuO1xuICAgIHN3aXBlci5ydGwgPSBkaXJlY3Rpb24gPT09ICdydGwnO1xuICAgIHN3aXBlci5ydGxUcmFuc2xhdGUgPSBzd2lwZXIucGFyYW1zLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHN3aXBlci5ydGw7XG4gICAgaWYgKHN3aXBlci5ydGwpIHtcbiAgICAgIHN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ydGxgKTtcbiAgICAgIHN3aXBlci5lbC5kaXIgPSAncnRsJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5yZW1vdmUoYCR7c3dpcGVyLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfXJ0bGApO1xuICAgICAgc3dpcGVyLmVsLmRpciA9ICdsdHInO1xuICAgIH1cbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cbiAgbW91bnQoZWxlbWVudCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKHN3aXBlci5tb3VudGVkKSByZXR1cm4gdHJ1ZTtcblxuICAgIC8vIEZpbmQgZWxcbiAgICBsZXQgZWwgPSBlbGVtZW50IHx8IHN3aXBlci5wYXJhbXMuZWw7XG4gICAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgfVxuICAgIGlmICghZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWwuc3dpcGVyID0gc3dpcGVyO1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuaG9zdCAmJiBlbC5wYXJlbnROb2RlLmhvc3Qubm9kZU5hbWUgPT09IHN3aXBlci5wYXJhbXMuc3dpcGVyRWxlbWVudE5vZGVOYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIHN3aXBlci5pc0VsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBnZXRXcmFwcGVyU2VsZWN0b3IgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gYC4keyhzd2lwZXIucGFyYW1zLndyYXBwZXJDbGFzcyB8fCAnJykudHJpbSgpLnNwbGl0KCcgJykuam9pbignLicpfWA7XG4gICAgfTtcbiAgICBjb25zdCBnZXRXcmFwcGVyID0gKCkgPT4ge1xuICAgICAgaWYgKGVsICYmIGVsLnNoYWRvd1Jvb3QgJiYgZWwuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihnZXRXcmFwcGVyU2VsZWN0b3IoKSk7XG4gICAgICAgIC8vIENoaWxkcmVuIG5lZWRzIHRvIHJldHVybiBzbG90IGl0ZW1zXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWxlbWVudENoaWxkcmVuKGVsLCBnZXRXcmFwcGVyU2VsZWN0b3IoKSlbMF07XG4gICAgfTtcbiAgICAvLyBGaW5kIFdyYXBwZXJcbiAgICBsZXQgd3JhcHBlckVsID0gZ2V0V3JhcHBlcigpO1xuICAgIGlmICghd3JhcHBlckVsICYmIHN3aXBlci5wYXJhbXMuY3JlYXRlRWxlbWVudHMpIHtcbiAgICAgIHdyYXBwZXJFbCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHN3aXBlci5wYXJhbXMud3JhcHBlckNsYXNzKTtcbiAgICAgIGVsLmFwcGVuZCh3cmFwcGVyRWwpO1xuICAgICAgZWxlbWVudENoaWxkcmVuKGVsLCBgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfWApLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgI
2HdyYXBwZXJFbC5hcHBlbmQoc2xpZGVFbCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICAgIGVsLFxuICAgICAgd3JhcHBlckVsLFxuICAgICAgc2xpZGVzRWw6IHN3aXBlci5pc0VsZW1lbnQgJiYgIWVsLnBhcmVudE5vZGUuaG9zdC5zbGlkZVNsb3RzID8gZWwucGFyZW50Tm9kZS5ob3N0IDogd3JhcHBlckVsLFxuICAgICAgaG9zdEVsOiBzd2lwZXIuaXNFbGVtZW50ID8gZWwucGFyZW50Tm9kZS5ob3N0IDogZWwsXG4gICAgICBtb3VudGVkOiB0cnVlLFxuICAgICAgLy8gUlRMXG4gICAgICBydGw6IGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCBlbGVtZW50U3R5bGUoZWwsICdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcsXG4gICAgICBydGxUcmFuc2xhdGU6IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgKGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCBlbGVtZW50U3R5bGUoZWwsICdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcpLFxuICAgICAgd3JvbmdSVEw6IGVsZW1lbnRTdHlsZSh3cmFwcGVyRWwsICdkaXNwbGF5JykgPT09ICctd2Via2l0LWJveCdcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbml0KGVsKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm4gc3dpcGVyO1xuICAgIGNvbnN0IG1vdW50ZWQgPSBzd2lwZXIubW91bnQoZWwpO1xuICAgIGlmIChtb3VudGVkID09PSBmYWxzZSkgcmV0dXJuIHN3aXBlcjtcbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlSW5pdCcpO1xuXG4gICAgLy8gU2V0IGJyZWFrcG9pbnRcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykge1xuICAgICAgc3dpcGVyLnNldEJyZWFrcG9pbnQoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQ2xhc3Nlc1xuICAgIHN3aXBlci5hZGRDbGFzc2VzKCk7XG5cbiAgICAvLyBVcGRhdGUgc2l6ZVxuICAgIHN3aXBlci51cGRhdGVTaXplKCk7XG5cbiAgICAvLyBVcGRhdGUgc2xpZGVzXG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cpIHtcbiAgICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IEdyYWIgQ3Vyc29yXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZ3JhYkN1cnNvciAmJiBzd2lwZXIuZW5hYmxlZCkge1xuICAgICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG5cbiAgICAvLyBTbGlkZSBUbyBJbml0aWFsIFNsaWRlXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCAmJiBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnBhcmFtcy5pbml0aWFsU2xpZGUgKyBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmUsIDAsIHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5wYXJhbXMuaW5pdGlhbFNsaWRlLCAwLCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBsb29wXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBBdHRhY2ggZXZlbnRzXG4gICAgc3dpcGVyLmF0dGFjaEV2ZW50cygpO1xuICAgIGNvbnN0IGxhenlFbGVtZW50cyA9IFsuLi5zd2lwZXIuZWwucXVlcnlTZWxlY3RvckFsbCgnW2xvYWRpbmc9XCJsYXp5XCJdJyldO1xuICAgIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICBsYXp5RWxlbWVudHMucHVzaCguLi5zd2lwZXIuaG9zdEVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tsb2FkaW5nPVwibGF6eVwiXScpKTtcbiAgICB9XG4gICAgbGF6eUVsZW1lbnRzLmZvckVhY2goaW1hZ2VFbCA9PiB7XG4gICAgICBpZiAoaW1hZ2VFbC5jb21wbGV0ZSkge1xuICAgICAgICBwcm9jZXNzTGF6eVByZWxvYWRlcihzd2lwZXIsIGltYWdlRWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW1hZ2VFbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZSA9PiB7XG4gICAgICAgICAgcHJvY2Vzc0xhenlQcmVsb2FkZXIoc3dpcGVyLCBlLnRhcmdldCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHByZWxvYWQoc3dpcGVyKTtcblxuICAgIC8vIEluaXQgRmxhZ1xuICAgIHN3aXBlci5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgcHJlbG9hZChzd2lwZXIpO1xuXG4gICAgLy8gRW1pdFxuICAgIHN3aXBlci5lbWl0KCdpbml0Jyk7XG4gICAgc3dpcGVyLmVtaXQoJ2FmdGVySW5pdCcpO1xuICAgIHJldHVybiBzd2lwZXI7XG4gIH1cbiAgZGVzdHJveShkZWxldGVJbnN0YW5jZSwgY2xlYW5TdHlsZXMpIHtcbiAgICBpZiAoZGVsZXRlSW5zdGFuY2UgPT09IHZvaWQgMCkge1xuICAgICAgZGVsZXRlSW5zdGFuY2UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoY2xlYW5TdHlsZXMgPT09IHZvaWQgMCkge1xuICAgICAgY2xlYW5TdHlsZXMgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGNvbnN0IHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGVsLFxuICAgICAgd3JhcHBlckVsLFxuICAgICAgc2xpZGVzXG4gICAgfSA9IHN3aXBlcjtcbiAgICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlci5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlRGVzdHJveScpO1xuXG4gICAgLy8gSW5pdCBGbGFnXG4gICAgc3dpcGVyLmluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICAvLyBEZXRhY2ggZXZlbnRzXG4gICAgc3dpcGVyLmRldGFjaEV2ZW50cygpO1xuXG4gICAgLy8gRGVzdHJveSBsb29wXG4gICAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhbnVwIHN0eWxlc1xuICAgIGlmIChjbGVhblN0eWxlcykge1xuICAgICAgc3dpcGVyLnJlbW92ZUNsYXNzZXMoKTtcbiAgICAgIGlmIChlbCAmJiB0eXBlb2YgZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICh3cmFwcGVyRWwpIHtcbiAgICAgICAgd3JhcHBlckVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzbGlkZXMgJiYgc2xpZGVzLmxlbmd0aCkge1xuICAgICAgICBzbGlkZXMuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICAgICAgICBzbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUocGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzLCBwYXJhbXMuc2xpZGVGdWxseVZpc2libGVDbGFzcywgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MsIHBhcmFtcy5zbGlkZU5leHRDbGFzcywgcGFyYW1zLnNsaWRlUHJldkNsYXNzKTtcbiAgICAgICAgICBzbGlkZUVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICBzbGlkZUVsLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCdkZXN0cm95Jyk7XG5cbiAgICAvLyBEZXRhY2ggZW1pdHRlciBldmVudHNcbiAgICBPYmplY3Qua2V5cyhzd2lwZXIuZXZlbnRzTGlzdGVuZXJzKS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICBzd2lwZXIub2ZmKGV2ZW50TmFtZSk7XG4gICAgfSk7XG4gICAgaWYgKGRlbGV0ZUluc3RhbmNlICE9PSBmYWxzZSkge1xuICAgICAgaWYgKHN3aXBlci5lbCAmJiB0eXBlb2Ygc3dpcGVyLmVsICE9PSAnc3RyaW5nJykge1xuICAgICAgICBzd2lwZXIuZWwuc3dpcGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZVByb3BzKHN3aXBlcik7XG4gICAgfVxuICAgIHN3aXBlci5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHJldHVybi
2BudWxsO1xuICB9XG4gIHN0YXRpYyBleHRlbmREZWZhdWx0cyhuZXdEZWZhdWx0cykge1xuICAgIGV4dGVuZChleHRlbmRlZERlZmF1bHRzLCBuZXdEZWZhdWx0cyk7XG4gIH1cbiAgc3RhdGljIGdldCBleHRlbmRlZERlZmF1bHRzKCkge1xuICAgIHJldHVybiBleHRlbmRlZERlZmF1bHRzO1xuICB9XG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRzO1xuICB9XG4gIHN0YXRpYyBpbnN0YWxsTW9kdWxlKG1vZCkge1xuICAgIGlmICghU3dpcGVyLnByb3RvdHlwZS5fX21vZHVsZXNfXykgU3dpcGVyLnByb3RvdHlwZS5fX21vZHVsZXNfXyA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZXMgPSBTd2lwZXIucHJvdG90eXBlLl9fbW9kdWxlc19fO1xuICAgIGlmICh0eXBlb2YgbW9kID09PSAnZnVuY3Rpb24nICYmIG1vZHVsZXMuaW5kZXhPZihtb2QpIDwgMCkge1xuICAgICAgbW9kdWxlcy5wdXNoKG1vZCk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyB1c2UobW9kdWxlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlKSkge1xuICAgICAgbW9kdWxlLmZvckVhY2gobSA9PiBTd2lwZXIuaW5zdGFsbE1vZHVsZShtKSk7XG4gICAgICByZXR1cm4gU3dpcGVyO1xuICAgIH1cbiAgICBTd2lwZXIuaW5zdGFsbE1vZHVsZShtb2R1bGUpO1xuICAgIHJldHVybiBTd2lwZXI7XG4gIH1cbn1cbk9iamVjdC5rZXlzKHByb3RvdHlwZXMpLmZvckVhY2gocHJvdG90eXBlR3JvdXAgPT4ge1xuICBPYmplY3Qua2V5cyhwcm90b3R5cGVzW3Byb3RvdHlwZUdyb3VwXSkuZm9yRWFjaChwcm90b01ldGhvZCA9PiB7XG4gICAgU3dpcGVyLnByb3RvdHlwZVtwcm90b01ldGhvZF0gPSBwcm90b3R5cGVzW3Byb3RvdHlwZUdyb3VwXVtwcm90b01ldGhvZF07XG4gIH0pO1xufSk7XG5Td2lwZXIudXNlKFtSZXNpemUsIE9ic2VydmVyXSk7XG5cbmV4cG9ydCB7IFN3aXBlciBhcyBTLCBkZWZhdWx0cyBhcyBkIH07XG4iXSwibmFtZXMiOlsib3B0aW9ucyIsImluaXQiLCJsb2NhbHMiLCJob21lQ2Fyb3VzZWwiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiU3dpcGVyIiwibW9kdWxlcyIsIkVmZmVjdEZhZGUiLCJBdXRvcGxheSIsImF1dG9wbGF5IiwiZWZmZWN0IiwibG9vcCIsInNwZWVkIiwic2xpZGVzUGVyVmlldyIsInNwYWNlQmV0d2VlbiIsIl9fX0NTU19MT0FERVJfRVhQT1JUX19fIiwicHVzaCIsIm1vZHVsZSIsImlkIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNvbnRlbnQiLCJjb25jYXQiLCJqb2luIiwiaSIsIm1lZGlhUXVlcnkiLCJkZWR1cGUiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiX2kiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl9hcnIiLCJfbiIsIl9kIiwiY2FsbCIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJlcnIiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwicHJvdG90eXBlIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIlR5cGVFcnJvciIsIl9ub25JdGVyYWJsZVJlc3QiLCJsZW4iLCJhcnIyIiwiX2l0ZW0iLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwibWVtbyIsImlzT2xkSUUiLCJCb29sZWFuIiwid2luZG93IiwiYWxsIiwiYXRvYiIsImdldFRhcmdldCIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZSIsInN0eWxlc0luRG9tIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXgiLCJvYmoiLCJjc3MiLCJtZWRpYSIsInNvdXJjZU1hcCIsInJlZmVyZW5jZXMiLCJ1cGRhdGVyIiwiYWRkU3R5bGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyaWJ1dGVzIiwibm9uY2UiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInNldEF0dHJpYnV0ZSIsImluc2VydCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlVGV4dCIsInJlcGxhY2VtZW50IiwiZmlsdGVyIiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInJlbW92ZSIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3NzTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwbHlUb1RhZyIsInJlbW92ZUF0dHJpYnV0ZSIsImZpcnN0Q2hpbGQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25Db3VudGVyIiwidXBkYXRlIiwic3R5bGVJbmRleCIsImJpbmQiLCJwYXJlbnROb2RlIiwicmVtb3ZlU3R5bGVFbGVtZW50IiwibmV3T2JqIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsIm5ld0xhc3RJZGVudGlmaWVycyIsIl9pbmRleCIsInNwbGljZSIsInN3aXBlciIsIm9yaWdpbmFsUGFyYW1zIiwicGFyYW1zIiwiY2hlY2tQcm9wcyIsImNyZWF0ZUVsZW1lbnRzIiwiYXV0byIsImVsZW1lbnQiLCJlbCIsImMiLCJjbGFzc05hbWUiLCJhcHBlbmQiLCJOYXZpZ2F0aW9uIiwiX3JlZiIsImV4dGVuZFBhcmFtcyIsIm9uIiwiZW1pdCIsImdldEVsIiwicmVzIiwiaXNFbGVtZW50IiwidW5pcXVlTmF2RWxlbWVudHMiLCJ0b2dnbGVFbCIsImRpc2FibGVkIiwibmF2aWdhdGlvbiIsIm0iLCJzdWJFbCIsImNsYXNzTGlzdCIsImRpc2FibGVkQ2xhc3MiLCJzcGxpdCIsInRhZ05hbWUiLCJ3YXRjaE92ZXJmbG93IiwiZW5hYmxlZCIsImlzTG9ja2VkIiwibG9ja0NsYXNzIiwibmV4dEVsIiwicHJldkVsIiwiaXNCZWdpbm5pbmciLCJyZXdpbmQiLCJpc0VuZCIsIm9uUHJldkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzbGlkZVByZXYiLCJvbk5leHRDbGljayIsInNsaWRlTmV4dCIsImFzc2lnbiIsImluaXRCdXR0b24iLCJkaXIiLCJhZGRFdmVudExpc3RlbmVyIiwiYWRkIiwiZGVzdHJveSIsImRlc3Ryb3lCdXR0b24iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGlkZU9uQ2xpY2siLCJoaWRkZW5DbGFzcyIsIm5hdmlnYXRpb25EaXNhYmxlZENsYXNzIiwiZGlzYWJsZSIsInRhcmdldEVsIiwidGFyZ2V0SXNCdXR0b24iLCJpbmNsdWRlcyIsInBhdGgiLCJjb21wb3NlZFBhdGgiLCJmaW5kIiwicGF0aEVsIiwicGFnaW5hdGlvbiIsImNsaWNrYWJsZSIsImNvbn
2RhaW5zIiwiaXNIaWRkZW4iLCJ0b2dnbGUiLCJlbmFibGUiLCJjbGFzc2VzIiwidHJpbSIsInJlcGxhY2UiLCJQYWdpbmF0aW9uIiwicGZ4IiwiYnVsbGV0U2l6ZSIsImJ1bGxldEVsZW1lbnQiLCJyZW5kZXJCdWxsZXQiLCJyZW5kZXJQcm9ncmVzc2JhciIsInJlbmRlckZyYWN0aW9uIiwicmVuZGVyQ3VzdG9tIiwicHJvZ3Jlc3NiYXJPcHBvc2l0ZSIsInR5cGUiLCJkeW5hbWljQnVsbGV0cyIsImR5bmFtaWNNYWluQnVsbGV0cyIsImZvcm1hdEZyYWN0aW9uQ3VycmVudCIsIm51bWJlciIsImZvcm1hdEZyYWN0aW9uVG90YWwiLCJidWxsZXRDbGFzcyIsImJ1bGxldEFjdGl2ZUNsYXNzIiwibW9kaWZpZXJDbGFzcyIsImN1cnJlbnRDbGFzcyIsInRvdGFsQ2xhc3MiLCJwcm9ncmVzc2JhckZpbGxDbGFzcyIsInByb2dyZXNzYmFyT3Bwb3NpdGVDbGFzcyIsImNsaWNrYWJsZUNsYXNzIiwiaG9yaXpvbnRhbENsYXNzIiwidmVydGljYWxDbGFzcyIsInBhZ2luYXRpb25EaXNhYmxlZENsYXNzIiwiYnVsbGV0cyIsImR5bmFtaWNCdWxsZXRJbmRleCIsImlzUGFnaW5hdGlvbkRpc2FibGVkIiwic2V0U2lkZUJ1bGxldHMiLCJidWxsZXRFbCIsInBvc2l0aW9uIiwib25CdWxsZXRDbGljayIsImNsb3Nlc3QiLCJzbGlkZXNQZXJHcm91cCIsInJlYWxJbmRleCIsIm1vdmVEaXJlY3Rpb24iLCJwcmV2SW5kZXgiLCJuZXh0SW5kZXgiLCJzbGlkZXMiLCJzbGlkZVRvTG9vcCIsInNsaWRlVG8iLCJydGwiLCJjdXJyZW50IiwicHJldmlvdXNJbmRleCIsInNsaWRlc0xlbmd0aCIsInZpcnR1YWwiLCJ0b3RhbCIsIk1hdGgiLCJjZWlsIiwic25hcEdyaWQiLCJwcmV2aW91c1JlYWxJbmRleCIsImZsb29yIiwic25hcEluZGV4IiwicHJldmlvdXNTbmFwSW5kZXgiLCJhY3RpdmVJbmRleCIsImZpcnN0SW5kZXgiLCJsYXN0SW5kZXgiLCJtaWRJbmRleCIsImlzSG9yaXpvbnRhbCIsInVuZGVmaW5lZCIsIm1heCIsIm1pbiIsImNsYXNzZXNUb1JlbW92ZSIsInN1ZmZpeCIsInMiLCJmbGF0IiwiYnVsbGV0IiwiYnVsbGV0SW5kZXgiLCJmaXJzdERpc3BsYXllZEJ1bGxldCIsImxhc3REaXNwbGF5ZWRCdWxsZXQiLCJkeW5hbWljQnVsbGV0c0xlbmd0aCIsImJ1bGxldHNPZmZzZXQiLCJvZmZzZXRQcm9wIiwic3ViRWxJbmRleCIsImZyYWN0aW9uRWwiLCJ0ZXh0Q29udGVudCIsInRvdGFsRWwiLCJwcm9ncmVzc2JhckRpcmVjdGlvbiIsInNjYWxlIiwic2NhbGVYIiwic2NhbGVZIiwicHJvZ3Jlc3NFbCIsInRyYW5zZm9ybSIsInRyYW5zaXRpb25EdXJhdGlvbiIsImlubmVySFRNTCIsInJlbmRlciIsImdyaWQiLCJyb3dzIiwicGFnaW5hdGlvbkhUTUwiLCJudW1iZXJPZkJ1bGxldHMiLCJmcmVlTW9kZSIsInRpbWVvdXQiLCJyYWYiLCJydW5uaW5nIiwicGF1c2VkIiwidGltZUxlZnQiLCJkZWxheSIsIndhaXRGb3JUcmFuc2l0aW9uIiwiZGlzYWJsZU9uSW50ZXJhY3Rpb24iLCJzdG9wT25MYXN0U2xpZGUiLCJyZXZlcnNlRGlyZWN0aW9uIiwicGF1c2VPbk1vdXNlRW50ZXIiLCJhdXRvcGxheVRpbWVMZWZ0Iiwid2FzUGF1c2VkIiwiaXNUb3VjaGVkIiwicGF1c2VkQnlUb3VjaCIsInRvdWNoU3RhcnRUaW1lb3V0Iiwic2xpZGVDaGFuZ2VkIiwicGF1c2VkQnlJbnRlcmFjdGlvbiIsInBhdXNlZEJ5UG9pbnRlckVudGVyIiwiYXV0b3BsYXlEZWxheVRvdGFsIiwiYXV0b3BsYXlEZWxheUN1cnJlbnQiLCJhdXRvcGxheVN0YXJ0VGltZSIsIkRhdGUiLCJnZXRUaW1lIiwib25UcmFuc2l0aW9uRW5kIiwiZGVzdHJveWVkIiwid3JhcHBlckVsIiwiZGV0YWlsIiwiYnlTd2lwZXJUb3VjaE1vdmUiLCJyZXN1bWUiLCJjYWxjVGltZUxlZnQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJydW4iLCJkZWxheUZvcmNlIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJjdXJyZW50U2xpZGVEZWxheSIsImFjdGl2ZVNsaWRlRWwiLCJzbGlkZUVsIiwicGFyc2VJbnQiLCJnZXRBdHRyaWJ1dGUiLCJnZXRTbGlkZURlbGF5IiwiTnVtYmVyIiwiaXNOYU4iLCJwcm9jZWVkIiwiY3NzTW9kZSIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJzdGFydCIsInN0b3AiLCJwYXVzZSIsImludGVybmFsIiwicmVzZXQiLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJnIiwidmlzaWJpbGl0eVN0YXRlIiwib25Qb2ludGVyRW50ZXIiLCJwb2ludGVyVHlwZSIsImFuaW1hdGluZyIsIm9uUG9pbnRlckxlYXZlIiwiZWZmZWN0UGFyYW1zIiwidHJhbnNmb3JtRWwiLCJiYWNrZmFjZVZpc2liaWxpdHkiLCJkdXJhdGlvbiIsInRyYW5zZm9ybUVsZW1lbnRzIiwiYWxsU2xpZGVzIiwidmlydHVhbFRyYW5zbGF0ZSIsInRyYW5zaXRpb25FbmRUYXJnZXQiLCJldmVudFRyaWdnZXJlZCIsInBhcmVudEVsZW1lbnQiLCJzaGFkb3dSb290IiwiZ2V0U2xpZGUiLCJnZXRTbGlkZUluZGV4IiwiZXZ0IiwiQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRpc3BhdGNoRXZlbnQiLCJmYWRlRWZmZWN0IiwiY3Jvc3NGYWRlIiwic2V0VHJhbnNsYXRlIiwic2V0VHJhbnNpdGlvbiIsIm92ZXJ3cml0ZVBhcmFtcyIsInBlcnNwZWN0aXZlIiwicmVjcmVhdGVTaGFkb3dzIiwiZ2V0RWZmZWN0UGFyYW1zIiwicmVxdWlyZVVwZGF0ZU9uVmlydHVhbCIsImNsYXNzTmFtZXMiLCJjb250YWluZXJNb2RpZmllckNsYXNzIiwib3ZlcndyaXRlUGFyYW1zUmVzdWx0Iiwic2xpZGVTaGFkb3dzIiwic2hhZG93RWwiLCJ0eCIsInN3aXBlclNsaWRlT2Zmc2V0IiwidHJhbnNsYXRlIiwidHkiLCJzbGlkZU9wYWNpdHkiLCJhYnMiLCJwcm9ncmVzcyIsIm9wYWNpdHkiLCJ3YXRjaFNsaWRlc1Byb2dyZXNzIiwiaXNPYmplY3QiLCJleHRlbmQiLCJzcmMiLCJzc3JEb2N1bWVudCIsImJvZHkiLCJhY3RpdmVFbGVtZW50IiwiYmx1ciIsIm5vZGVOYW1lIiwiZ2V0RWxlbWVudEJ5SWQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImNoaWxkcmVuIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJjcmVhdGVFbGVtZW50TlMiLCJpbXBvcnROb2RlIiwibG9jYXRpb24iLCJoYXNoIiwiaG9zdCIsImhvc3RuYW1lIiwiaHJlZiIsIm9yaWdpbiIsInBhdGhuYW1lIiwicHJvdG9jb2wiLCJzZWFyY2giLCJnZXREb2N1bWVudCIsImRvYyIsInNzcldpbmRvdyIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJwdXNoU3RhdGUiLCJnbyIsImJhY2siLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsIkltYWdlIiwic2NyZWVuIiwibWF0Y2hNZWRpYSIsImNhbGxiYWNrIiwiZ2V0V2luZG93Iiwid2luIiwiZGVsZXRlUHJvcHMiLCJvYmplY3QiLCJuZXh0VGljayIsIm5vdyIsImdldFRyYW5zbGF0ZSIsImF4aXMiLCJtYXRyaXgiLCJjdXJUcmFuc2Zvcm0iLCJ0cmFuc2Zvcm1NYXRyaXgiLCJjdXJTdHlsZSIsImN1cnJlbnRTdHlsZSIsIldlYktpdENTU01hdHJpeCIsIndlYmtpdFRyYW5zZm9ybSIsImEiLCJNb3pUcmFuc2Zvcm0iLCJPVHJhbnNmb3JtIiwiTXNUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSIsIm00MSIsInBhcnNlRmxvYXQiLCJtNDIiLCJ0byIsImFyZ3VtZW50cyIsIm5vRXh0ZW5kIiwibmV4dFNvdXJjZSIsIm5vZGUiLCJIVE1MRWxlbWVudCIsIm5vZGVUeXBlIiwia2V5c0FycmF
25IiwiaW5kZXhPZiIsIm5leHRLZXkiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsIl9fc3dpcGVyX18iLCJzZXRDU1NQcm9wZXJ0eSIsInZhck5hbWUiLCJ2YXJWYWx1ZSIsInNldFByb3BlcnR5IiwiYW5pbWF0ZUNTU01vZGVTY3JvbGwiLCJ0YXJnZXRQb3NpdGlvbiIsInNpZGUiLCJzdGFydFBvc2l0aW9uIiwidGltZSIsInN0YXJ0VGltZSIsInNjcm9sbFNuYXBUeXBlIiwiY3NzTW9kZUZyYW1lSUQiLCJpc091dE9mQm91bmQiLCJhbmltYXRlIiwiZWFzZVByb2dyZXNzIiwiY29zIiwiUEkiLCJjdXJyZW50UG9zaXRpb24iLCJzY3JvbGxUbyIsIm92ZXJmbG93IiwiZ2V0U2xpZGVUcmFuc2Zvcm1FbCIsImVsZW1lbnRDaGlsZHJlbiIsInNlbGVjdG9yIiwiSFRNTFNsb3RFbGVtZW50IiwiYXNzaWduZWRFbGVtZW50cyIsIm1hdGNoZXMiLCJlbGVtZW50SXNDaGlsZE9mIiwicGFyZW50IiwiaXNDaGlsZCIsInNob3dXYXJuaW5nIiwidGV4dCIsImNvbnNvbGUiLCJ3YXJuIiwidGFnIiwiY2xhc3Nlc1RvVG9rZW5zIiwiZWxlbWVudFByZXZBbGwiLCJwcmV2RWxzIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInByZXYiLCJlbGVtZW50TmV4dEFsbCIsIm5leHRFbHMiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJlbGVtZW50U3R5bGUiLCJwcm9wIiwiZWxlbWVudEluZGV4IiwiY2hpbGQiLCJwcmV2aW91c1NpYmxpbmciLCJlbGVtZW50UGFyZW50cyIsInBhcmVudHMiLCJlbGVtZW50VHJhbnNpdGlvbkVuZCIsImZpcmVDYWxsQmFjayIsImVsZW1lbnRPdXRlclNpemUiLCJzaXplIiwiaW5jbHVkZU1hcmdpbnMiLCJvZmZzZXRXaWR0aCIsIm1ha2VFbGVtZW50c0FycmF5Iiwic3VwcG9ydCIsImRldmljZUNhY2hlZCIsImJyb3dzZXIiLCJnZXRTdXBwb3J0Iiwic21vb3RoU2Nyb2xsIiwiZG9jdW1lbnRFbGVtZW50IiwidG91Y2giLCJEb2N1bWVudFRvdWNoIiwiY2FsY1N1cHBvcnQiLCJnZXREZXZpY2UiLCJvdmVycmlkZXMiLCJfdGVtcCIsInBsYXRmb3JtIiwidWEiLCJkZXZpY2UiLCJpb3MiLCJhbmRyb2lkIiwic2NyZWVuV2lkdGgiLCJ3aWR0aCIsInNjcmVlbkhlaWdodCIsImhlaWdodCIsIm1hdGNoIiwiaXBhZCIsImlwb2QiLCJpcGhvbmUiLCJ3aW5kb3dzIiwibWFjb3MiLCJvcyIsImNhbGNEZXZpY2UiLCJnZXRCcm93c2VyIiwibmVlZFBlcnNwZWN0aXZlRml4IiwiaXNTYWZhcmkiLCJ0b0xvd2VyQ2FzZSIsIlN0cmluZyIsIm1ham9yIiwibWlub3IiLCJudW0iLCJpc1dlYlZpZXciLCJpc1NhZmFyaUJyb3dzZXIiLCJuZWVkM2RGaXgiLCJjYWxjQnJvd3NlciIsImV2ZW50c0VtaXR0ZXIiLCJldmVudHMiLCJoYW5kbGVyIiwicHJpb3JpdHkiLCJzZWxmIiwiZXZlbnRzTGlzdGVuZXJzIiwibWV0aG9kIiwiZXZlbnQiLCJvbmNlIiwib25jZUhhbmRsZXIiLCJvZmYiLCJfX2VtaXR0ZXJQcm94eSIsIl9sZW4iLCJhcmdzIiwiX2tleSIsImFwcGx5Iiwib25BbnkiLCJldmVudHNBbnlMaXN0ZW5lcnMiLCJvZmZBbnkiLCJldmVudEhhbmRsZXIiLCJjb250ZXh0IiwiX2xlbjIiLCJfa2V5MiIsInVuc2hpZnQiLCJ0b2dnbGVTbGlkZUNsYXNzZXMkMSIsImNvbmRpdGlvbiIsInRvZ2dsZVNsaWRlQ2xhc3NlcyIsInByb2Nlc3NMYXp5UHJlbG9hZGVyIiwiaW1hZ2VFbCIsInNsaWRlQ2xhc3MiLCJsYXp5RWwiLCJsYXp5UHJlbG9hZGVyQ2xhc3MiLCJ1bmxhenkiLCJwcmVsb2FkIiwiYW1vdW50IiwibGF6eVByZWxvYWRQcmV2TmV4dCIsInNsaWRlc1BlclZpZXdEeW5hbWljIiwiYWN0aXZlQ29sdW1uIiwicHJlbG9hZENvbHVtbnMiLCJfIiwiY29sdW1uIiwic2xpZGVJbmRleExhc3RJblZpZXciLCJ1cGRhdGVTaXplIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJpc1ZlcnRpY2FsIiwidXBkYXRlU2xpZGVzIiwiZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZSIsImxhYmVsIiwiZ2V0RGlyZWN0aW9uTGFiZWwiLCJzbGlkZXNFbCIsInN3aXBlclNpemUiLCJydGxUcmFuc2xhdGUiLCJ3cm9uZ1JUTCIsImlzVmlydHVhbCIsInByZXZpb3VzU2xpZGVzTGVuZ3RoIiwic2xpZGVzR3JpZCIsInNsaWRlc1NpemVzR3JpZCIsIm9mZnNldEJlZm9yZSIsInNsaWRlc09mZnNldEJlZm9yZSIsIm9mZnNldEFmdGVyIiwic2xpZGVzT2Zmc2V0QWZ0ZXIiLCJwcmV2aW91c1NuYXBHcmlkTGVuZ3RoIiwicHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoIiwic2xpZGVQb3NpdGlvbiIsInByZXZTbGlkZVNpemUiLCJ2aXJ0dWFsU2l6ZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImNlbnRlcmVkU2xpZGVzIiwiZ3JpZEVuYWJsZWQiLCJzbGlkZVNpemUiLCJpbml0U2xpZGVzIiwidW5zZXRTbGlkZXMiLCJzaG91bGRSZXNldFNsaWRlU2l6ZSIsImJyZWFrcG9pbnRzIiwic2xpZGUiLCJ1cGRhdGVTbGlkZSIsInNsaWRlU3R5bGVzIiwiY3VycmVudFRyYW5zZm9ybSIsImN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0iLCJyb3VuZExlbmd0aHMiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImJveFNpemluZyIsInN3aXBlclNsaWRlU2l6ZSIsInNsaWRlc1Blckdyb3VwU2tpcCIsInNldFdyYXBwZXJTaXplIiwidXBkYXRlV3JhcHBlclNpemUiLCJuZXdTbGlkZXNHcmlkIiwic2xpZGVzR3JpZEl0ZW0iLCJncm91cHMiLCJzbGlkZXNCZWZvcmUiLCJzbGlkZXNBZnRlciIsImdyb3VwU2l6ZSIsInNsaWRlSW5kZXgiLCJjZW50ZXJlZFNsaWRlc0JvdW5kcyIsImFsbFNsaWRlc1NpemUiLCJzbGlkZVNpemVWYWx1ZSIsIm1heFNuYXAiLCJzbmFwIiwiY2VudGVySW5zdWZmaWNpZW50U2xpZGVzIiwib2Zmc2V0U2l6ZSIsImFsbFNsaWRlc09mZnNldCIsImFkZFRvU25hcEdyaWQiLCJhZGRUb1NsaWRlc0dyaWQiLCJ2IiwiY2hlY2tPdmVyZmxvdyIsInVwZGF0ZVNsaWRlc09mZnNldCIsImJhY2tGYWNlSGlkZGVuQ2xhc3MiLCJoYXNDbGFzc0JhY2tmYWNlQ2xhc3NBZGRlZCIsIm1heEJhY2tmYWNlSGlkZGVuU2xpZGVzIiwidXBkYXRlQXV0b0hlaWdodCIsImFjdGl2ZVNsaWRlcyIsIm5ld0hlaWdodCIsImdldFNsaWRlQnlJbmRleCIsImdldFNsaWRlSW5kZXhCeURhdGEiLCJ2aXNpYmxlU2xpZGVzIiwib2Zmc2V0SGVpZ2h0IiwibWludXNPZmZzZXQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwiY3NzT3ZlcmZsb3dBZGp1c3RtZW50IiwidXBkYXRlU2xpZGVzUHJvZ3Jlc3MiLCJvZmZzZXRDZW50ZXIiLCJ2aXNpYmxlU2xpZGVzSW5kZX
2hlcyIsInNsaWRlT2Zmc2V0Iiwic2xpZGVQcm9ncmVzcyIsIm1pblRyYW5zbGF0ZSIsIm9yaWdpbmFsU2xpZGVQcm9ncmVzcyIsInNsaWRlQmVmb3JlIiwic2xpZGVBZnRlciIsImlzRnVsbHlWaXNpYmxlIiwiaXNWaXNpYmxlIiwic2xpZGVWaXNpYmxlQ2xhc3MiLCJzbGlkZUZ1bGx5VmlzaWJsZUNsYXNzIiwib3JpZ2luYWxQcm9ncmVzcyIsInVwZGF0ZVByb2dyZXNzIiwibXVsdGlwbGllciIsInRyYW5zbGF0ZXNEaWZmIiwibWF4VHJhbnNsYXRlIiwicHJvZ3Jlc3NMb29wIiwid2FzQmVnaW5uaW5nIiwid2FzRW5kIiwiaXNCZWdpbm5pbmdSb3VuZGVkIiwiaXNFbmRSb3VuZGVkIiwiZmlyc3RTbGlkZUluZGV4IiwibGFzdFNsaWRlSW5kZXgiLCJmaXJzdFNsaWRlVHJhbnNsYXRlIiwibGFzdFNsaWRlVHJhbnNsYXRlIiwidHJhbnNsYXRlTWF4IiwidHJhbnNsYXRlQWJzIiwiYXV0b0hlaWdodCIsInVwZGF0ZVNsaWRlc0NsYXNzZXMiLCJnZXRGaWx0ZXJlZFNsaWRlIiwiYWN0aXZlU2xpZGUiLCJwcmV2U2xpZGUiLCJuZXh0U2xpZGUiLCJzbGlkZUFjdGl2ZUNsYXNzIiwic2xpZGVOZXh0Q2xhc3MiLCJzbGlkZVByZXZDbGFzcyIsImVtaXRTbGlkZXNDbGFzc2VzIiwidXBkYXRlQWN0aXZlSW5kZXgiLCJuZXdBY3RpdmVJbmRleCIsImdldFZpcnR1YWxSZWFsSW5kZXgiLCJhSW5kZXgiLCJub3JtYWxpemVTbGlkZUluZGV4IiwiZ2V0QWN0aXZlSW5kZXhCeVRyYW5zbGF0ZSIsInNraXAiLCJmaXJzdFNsaWRlSW5Db2x1bW4iLCJhY3RpdmVTbGlkZUluZGV4IiwiaW5pdGlhbGl6ZWQiLCJydW5DYWxsYmFja3NPbkluaXQiLCJ1cGRhdGVDbGlja2VkU2xpZGUiLCJzbGlkZUZvdW5kIiwiY2xpY2tlZFNsaWRlIiwiY2xpY2tlZEluZGV4Iiwic2xpZGVUb0NsaWNrZWRTbGlkZSIsImN1cnJlbnRUcmFuc2xhdGUiLCJieUNvbnRyb2xsZXIiLCJuZXdQcm9ncmVzcyIsIngiLCJ5IiwicHJldmlvdXNUcmFuc2xhdGUiLCJ0cmFuc2xhdGVUbyIsInJ1bkNhbGxiYWNrcyIsInRyYW5zbGF0ZUJvdW5kcyIsInByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbiIsIm5ld1RyYW5zbGF0ZSIsImlzSCIsImJlaGF2aW9yIiwib25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIiwidHJhbnNpdGlvbkVtaXQiLCJkaXJlY3Rpb24iLCJzdGVwIiwiaW5pdGlhbCIsIm5vcm1hbGl6ZWRUcmFuc2xhdGUiLCJub3JtYWxpemVkR3JpZCIsIm5vcm1hbGl6ZWRHcmlkTmV4dCIsImFsbG93U2xpZGVOZXh0IiwiYWxsb3dTbGlkZVByZXYiLCJ0cmFuc2l0aW9uU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidCIsIl9pbW1lZGlhdGVWaXJ0dWFsIiwiX2Nzc01vZGVWaXJ0dWFsSW5pdGlhbFNldCIsImluaXRpYWxTbGlkZSIsIm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIiwibmV3SW5kZXgiLCJ0YXJnZXRTbGlkZUluZGV4IiwiY29scyIsIm5lZWRMb29wRml4IiwibG9vcEZpeCIsInNsaWRlUmVhbEluZGV4IiwicGVyR3JvdXAiLCJzbGlkZXNQZXJHcm91cEF1dG8iLCJpbmNyZW1lbnQiLCJsb29wUHJldmVudHNTbGlkaW5nIiwiX2NsaWVudExlZnQiLCJjbGllbnRMZWZ0Iiwibm9ybWFsaXplIiwidmFsIiwibm9ybWFsaXplZFNuYXBHcmlkIiwicHJldlNuYXAiLCJwcmV2U25hcEluZGV4Iiwic2xpZGVSZXNldCIsInNsaWRlVG9DbG9zZXN0IiwidGhyZXNob2xkIiwiY3VycmVudFNuYXAiLCJzbGlkZVRvSW5kZXgiLCJzbGlkZVNlbGVjdG9yIiwibG9vcGVkU2xpZGVzIiwibG9vcENyZWF0ZSIsInNob3VsZEZpbGxHcm91cCIsInNob3VsZEZpbGxHcmlkIiwiYWRkQmxhbmtTbGlkZXMiLCJhbW91bnRPZlNsaWRlcyIsInNsaWRlQmxhbmtDbGFzcyIsImxvb3BBZGRCbGFua1NsaWRlcyIsInJlY2FsY1NsaWRlcyIsImJ5TW91c2V3aGVlbCIsImxvb3BBZGRpdGlvbmFsU2xpZGVzIiwiZmlsbCIsInByZXBlbmRTbGlkZXNJbmRleGVzIiwiYXBwZW5kU2xpZGVzSW5kZXhlcyIsImlzTmV4dCIsImlzUHJldiIsInNsaWRlc1ByZXBlbmRlZCIsInNsaWRlc0FwcGVuZGVkIiwiYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQiLCJjb2xJbmRleFRvUHJlcGVuZCIsIl9fcHJldmVudE9ic2VydmVyX18iLCJzd2lwZXJMb29wTW92ZURPTSIsInByZXBlbmQiLCJjdXJyZW50U2xpZGVUcmFuc2xhdGUiLCJkaWZmIiwidG91Y2hFdmVudHNEYXRhIiwic3RhcnRUcmFuc2xhdGUiLCJzaGlmdCIsImNvbnRyb2xsZXIiLCJjb250cm9sIiwibG9vcFBhcmFtcyIsImxvb3BEZXN0cm95IiwibmV3U2xpZGVzT3JkZXIiLCJzd2lwZXJTbGlkZUluZGV4IiwicHJldmVudEVkZ2VTd2lwZSIsInN0YXJ0WCIsImVkZ2VTd2lwZURldGVjdGlvbiIsImVkZ2VTd2lwZVRocmVzaG9sZCIsImlubmVyV2lkdGgiLCJvblRvdWNoU3RhcnQiLCJvcmlnaW5hbEV2ZW50IiwicG9pbnRlcklkIiwidGFyZ2V0VG91Y2hlcyIsInRvdWNoSWQiLCJwYWdlWCIsInRvdWNoZXMiLCJzaW11bGF0ZVRvdWNoIiwidG91Y2hFdmVudHNUYXJnZXQiLCJ3aGljaCIsImJ1dHRvbiIsImlzTW92ZWQiLCJzd2lwaW5nQ2xhc3NIYXNWYWx1ZSIsIm5vU3dpcGluZ0NsYXNzIiwiZXZlbnRQYXRoIiwibm9Td2lwaW5nU2VsZWN0b3IiLCJpc1RhcmdldFNoYWRvdyIsIm5vU3dpcGluZyIsIl9fY2xvc2VzdEZyb20iLCJhc3NpZ25lZFNsb3QiLCJmb3VuZCIsImdldFJvb3ROb2RlIiwiY2xvc2VzdEVsZW1lbnQiLCJhbGxvd0NsaWNrIiwic3dpcGVIYW5kbGVyIiwiY3VycmVudFgiLCJjdXJyZW50WSIsInBhZ2VZIiwic3RhcnRZIiwiYWxsb3dUb3VjaENhbGxiYWNrcyIsImlzU2Nyb2xsaW5nIiwic3RhcnRNb3ZpbmciLCJ0b3VjaFN0YXJ0VGltZSIsInN3aXBlRGlyZWN0aW9uIiwiYWxsb3dUaHJlc2hvbGRNb3ZlIiwiZm9jdXNhYmxlRWxlbWVudHMiLCJzaG91bGRQcmV2ZW50RGVmYXVsdCIsImFsbG93VG91Y2hNb3ZlIiwidG91Y2hTdGFydFByZXZlbnREZWZhdWx0IiwidG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQiLCJpc0NvbnRlbnRFZGl0YWJsZSIsIm9uVG91Y2hNb3ZlIiwidGFyZ2V0VG91Y2giLCJjaGFuZ2VkVG91Y2hlcyIsInByZXZlbnRlZEJ5TmVzdGVkU3dpcGVyIiwidG91Y2hSZWxlYXNlT25FZGdlcyIsInByZXZpb3VzWCIsInByZXZpb3VzWSIsImRpZmZYIiwiZGlmZlkiLCJzcXJ0IiwidG91Y2hBbmdsZSIsImF0YW4yIiwicHJldmVudFRvdWNoTW92ZUZyb21Qb2ludGVyTW92ZSIsInRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiIsIm5lc3RlZCIsInN0b3BQcm9wYWdhdGlvbiIsInRvdWNoZXNEaWZmIiwib25lV2F5TW92ZW1lbnQiLCJ0b3VjaFJhdGlvIiwicHJldlRvdWNoZXNEaXJlY3Rpb24iLCJ0b3VjaGVzRGlyZWN0aW9uIiwiaXNMb29wIiwiYWxsb3dMb29wRml4IiwiYWxsb3dNb21lbnR1bUJvdW5jZSIsImdyYWJDdXJzb3IiLCJzZXRHcmFiQ3Vyc29yIiwibG9vcFN3YXBSZXNldCIsImRpc2FibGVQYXJlbnRTd2lwZXIiLCJyZXNpc3RhbmNlUmF0aW8iLCJyZXNpc3RhbmNlIiwiZm9sbG93RmluZ2VyIiwib25Ub3VjaEVuZCIsInRvdWNoRW5kVGltZSIsInRpbWVEaWZmIiwicGF0aFRyZWUiLCJsYXN0Q2xpY2tUaW1lIiwiY3VycmVudFBvcyIsInN3aXBlVG9MYXN0Iiwic3RvcEluZGV4IiwicmV3aW5kRmlyc3RJbmRleCIsInJld2luZExhc3RJbmRleCIsInJhdGlvIiwibG9uZ1N3aXBlc01zIiwibG9uZ1N3aXBlcyIsImxvbmdTd2lwZXNSYXRpbyIsInNob3J0U3dpcGVzIiwib25SZXNpemUiLCJzZXRCcmVha3BvaW50IiwiaXNWaXJ0dWFsTG9vcCIsInJlc2l6ZVRpbWVvdXQiLCJvbkNsaWNrIiwicHJldmVudENsaWNrcyIsInByZXZlbn
2RDbGlja3NQcm9wYWdhdGlvbiIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm9uU2Nyb2xsIiwic2Nyb2xsTGVmdCIsInNjcm9sbFRvcCIsIm9uTG9hZCIsIm9uRG9jdW1lbnRUb3VjaFN0YXJ0IiwiZG9jdW1lbnRUb3VjaEhhbmRsZXJQcm9jZWVkZWQiLCJ0b3VjaEFjdGlvbiIsImNhcHR1cmUiLCJkb21NZXRob2QiLCJzd2lwZXJNZXRob2QiLCJwYXNzaXZlIiwidXBkYXRlT25XaW5kb3dSZXNpemUiLCJpc0dyaWRFbmFibGVkIiwiZGVmYXVsdHMiLCJzd2lwZXJFbGVtZW50Tm9kZU5hbWUiLCJyZXNpemVPYnNlcnZlciIsImV2ZW50c1ByZWZpeCIsInVybCIsImJyZWFrcG9pbnRzQmFzZSIsInBhc3NpdmVMaXN0ZW5lcnMiLCJ3cmFwcGVyQ2xhc3MiLCJfZW1pdENsYXNzZXMiLCJtb2R1bGVFeHRlbmRQYXJhbXMiLCJhbGxNb2R1bGVzUGFyYW1zIiwibW9kdWxlUGFyYW1OYW1lIiwibW9kdWxlUGFyYW1zIiwicHJvdG90eXBlcyIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uRGVsYXkiLCJtb3ZpbmciLCJjdXJzb3IiLCJ1bnNldEdyYWJDdXJzb3IiLCJhdHRhY2hFdmVudHMiLCJkZXRhY2hFdmVudHMiLCJicmVha3BvaW50IiwiZ2V0QnJlYWtwb2ludCIsImN1cnJlbnRCcmVha3BvaW50IiwiYnJlYWtwb2ludFBhcmFtcyIsIndhc011bHRpUm93IiwiaXNNdWx0aVJvdyIsIndhc0dyYWJDdXJzb3IiLCJpc0dyYWJDdXJzb3IiLCJ3YXNFbmFibGVkIiwiZW1pdENvbnRhaW5lckNsYXNzZXMiLCJ3YXNNb2R1bGVFbmFibGVkIiwiaXNNb2R1bGVFbmFibGVkIiwiZGlyZWN0aW9uQ2hhbmdlZCIsIm5lZWRzUmVMb29wIiwid2FzTG9vcCIsImNoYW5nZURpcmVjdGlvbiIsImlzRW5hYmxlZCIsImhhc0xvb3AiLCJjb250YWluZXJFbCIsImN1cnJlbnRIZWlnaHQiLCJpbm5lckhlaWdodCIsInBvaW50cyIsInBvaW50IiwibWluUmF0aW8iLCJzdWJzdHIiLCJzb3J0IiwiYiIsIndhc0xvY2tlZCIsImxhc3RTbGlkZVJpZ2h0RWRnZSIsImFkZENsYXNzZXMiLCJzdWZmaXhlcyIsImVudHJpZXMiLCJwcmVmaXgiLCJyZXN1bHRDbGFzc2VzIiwicHJlcGFyZUNsYXNzZXMiLCJyZW1vdmVDbGFzc2VzIiwiZXh0ZW5kZWREZWZhdWx0cyIsInN3aXBlcnMiLCJuZXdQYXJhbXMiLCJfX21vZHVsZXNfXyIsIm1vZCIsInN3aXBlclBhcmFtcyIsInBhc3NlZFBhcmFtcyIsImV2ZW50TmFtZSIsInZlbG9jaXR5IiwidHJ1bmMiLCJjbGlja1RpbWVvdXQiLCJ2ZWxvY2l0aWVzIiwiaW1hZ2VzVG9Mb2FkIiwiaW1hZ2VzTG9h
2ZGVkIiwicHJvcGVydHkiLCJzZXRQcm9ncmVzcyIsImNscyIsImdldFNsaWRlQ2xhc3NlcyIsInVwZGF0ZXMiLCJ2aWV3IiwiZXhhY3QiLCJzcHYiLCJicmVha0xvb3AiLCJ0cmFuc2xhdGVWYWx1ZSIsInRyYW5zbGF0ZWQiLCJjb21wbGV0ZSIsIm5ld0RpcmVjdGlvbiIsIm5lZWRVcGRhdGUiLCJjdXJyZW50RGlyZWN0aW9uIiwiY2hhbmdlTGFuZ3VhZ2VEaXJlY3Rpb24iLCJtb3VudCIsIm1vdW50ZWQiLCJ0b1VwcGVyQ2FzZSIsImdldFdyYXBwZXJTZWxlY3RvciIsImdldFdyYXBwZXIiLCJzbGlkZVNsb3RzIiwiaG9zdEVsIiwibGF6eUVsZW1lbnRzIiwiZGVsZXRlSW5zdGFuY2UiLCJjbGVhblN0eWxlcyIsImV4dGVuZERlZmF1bHRzIiwibmV3RGVmYXVsdHMiLCJpbnN0YWxsTW9kdWxlIiwidXNlIiwicHJvdG90eXBlR3JvdXAiLCJwcm90b01ldGhvZCIsIm9ic2VydmVyIiwiYW5pbWF0aW9uRnJhbWUiLCJyZXNpemVIYW5kbGVyIiwib3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJuZXdXaWR0aCIsIl9yZWYyIiwiY29udGVudEJveFNpemUiLCJjb250ZW50UmVjdCIsImlubGluZVNpemUiLCJibG9ja1NpemUiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwib2JzZXJ2ZXJzIiwiYXR0YWNoIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYmtpdE11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJvYnNlcnZlclVwZGF0ZSIsImNoaWxkTGlzdCIsImNoYXJhY3RlckRhdGEiLCJvYnNlcnZlUGFyZW50cyIsIm9ic2VydmVTbGlkZUNoaWxkcmVuIiwiY29udGFpbmVyUGFyZW50cyIsImRpc2Nvbm5lY3QiXSwic291cmNlUm9vdCI6IiJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.